From 332bfbe612e5513340cf86da37b4563b9b95ae1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 13:34:11 +0200 Subject: [PATCH 01/60] design: adopt the Protocol at 5e29c03, the pin The merged pull request 27 of the Protocol: the entry address, checked prose mentions, authored entry order, recipe 24 and graph schema 0.6.0. The graph keeps its shape (237 Specs, 384 nodes, 1251 edges). validate now reports 83 conformance/prose-mentions warnings, which check.py refuses until the next commit triages them. npm test passed 1,050 and typecheck is clean. Co-Authored-By: Claude Opus 5.5 --- package-lock.json | 7 ++++--- package.json | 2 +- ...oftware-delivery-protocol-0.0.0-5993da7.tgz | Bin 393472 -> 0 bytes ...oftware-delivery-protocol-0.0.0-5e29c03.tgz | Bin 0 -> 408437 bytes 4 files changed, 5 insertions(+), 4 deletions(-) delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz diff --git a/package-lock.json b/package-lock.json index 5ff4802..b93f387 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,12 +7,13 @@ "": { "name": "libar-platform", "version": "0.0.0", + "license": "Apache-2.0", "devDependencies": { "@convex-dev/eslint-plugin": "5.0.0", "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -800,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz", - "integrity": "sha512-NR0Cyq7AIepjToh1uR/2D4BwmCGDDWeIHXDh2yb60+sBvdRpdYZTrOmBs/p0S2HPxnpZzSLxtP/fkfoLoW48ng==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", + "integrity": "sha512-kca7vIg/z6L5f6KPcbF+lC4em1VJvoXOTGuCddxbIFh2TAATifN2KQ9r/tfCfaPR1UcodR4er7sjDc/0En9xoA==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 8b33f28..aed6492 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz deleted file mode 100644 index b2790b0628f1b72a941e7673bcf367ddbec521dc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 393472 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

JXZvnmZaLF(U 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%0Av5hoZqdu|YIi{%aH4g%VM2&b!u^B2VxqH17 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�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

nM{%U@#pa^h>|+@8a{MlFhfYR|t0w=Tsw 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

_8o^7cpOq)f#ek2ICtMmsT&u$>JB`pYo zyr$6fc93kFN^T(l!pE{t)rvlQM7G~d3FN$>zZ~pkqxD{)Oj*hD? z(2$)h;C$p7R=U|>aBinGg4*%`a|;;i!PVDlhHOPeKZ2@Hs>Iqpt)r7Vv6?QSsPo;~ zg5>n;gB(^W@hY3E^+h`tnyAkockPz-ImmUFo$gi3dv$2W zq2?k1a%C?QhH^}uVGpiNa-kZ8bD0kFOC-7!i99B|Vr7D1$*tW3Mb=iN7waZtn?=?v zmf)U(!T7;o3W{U>jBroZ#^?RM{LSpcwqLs_d%u=1>OJ6(x70acR?&?`uRAz2>m7L# zNBHX)X#5{_BQk0zlxJ>*A8EA~HhA1L@VQBy#B`DpHn%`^TnITOm!WI7#$H9=8on=% zmoOf+lBwxZ`eV7as!a2uYgl!J8~k9MS&ig#w)y1a8Dn3qWJY-JC60q47F}!5cu4H2 zIh+6t7}iZaP29*lxUXyMSaMhVA-bWR@%^QC$L9GVMtB=zuo+7_!zX)ly4rD1qYI5co=O|J8m6o&O;o@NeyOU7(Yg4A z2k?aA*Lkr38rcs~6X2%xu!8%Vh-;^l@MVk)#EN=?h~!U3%(_ek{fBD%Ozd3|PWhY3 zC$r+-2oZl#rA~B5zP^IwC~#3kNiK!zvne%bh7xwwJCXdNFOTq8)gUxX@~%Q zBzaTx?l>Ulj$KIbJeZ#4m>j97KZH7Dp>Bm|-ki`*=eW+wM!g9RAQA((-#O;Kpm)Jq z)3UfJAoPY!hckx_gEKcFNylNy#^4gt5L2fBAh$a3xB%fEJ|$EP6YxcK;@aS{Z1Y5V zwPHcXp1aub*V!f7twHZlNyvF3@%sc1K#Jao7JY%*1EQ*JXkZR25n}BRn!0rjWN6B! zr$(oBo}Xe|f-quyCS8q2gd;PX(N5qC?8+$~6jG3z#Hr=kYL=*CA~7FbF$aZsA2El< zG>%3{khsl=ToZtLBTCzlG{;-fH%KG6JUizh`>YWYc!=}8_Ma&~tSETcOUA-#RheX2 z5hEMCK^>PA@u+7GP~0p7hyysIDm#G;lAFf9Y%dPRMRPi(up&$qaU)DTKL1W^7>_9S z#*yX{DokU1M`8wB*+w+8aSLv6yi<2w)11oLl-aF^gP(`EDr&h8e0VCQVckjf)4-!E zoRpHwm1Bk!Sn(msdqV*mY;Y?SBM%szuDX+MZVH1BX0rC;&{xNMbY3;u=H&5O%=+O7 zC(fFJhn+?dreSWQWLoptKEsS}NN*+wSDJXnI4%IifunGH7ROe}7?@rz@5>J(zcg3r zAdzCO3Ad<5ma)X^fg@R*4n=&`D#|-16y~aPWBOm(5N5UP?yQGt6#S>blaAj_dJIT- znbtf#R0%8UeF%URE_Op=*1SJxxp)m?Y=9c{L_?^7G1RJ2qcTQL9XicC;>$}2gYnt4JI`^E zZWG>&K&;TIXdxLUNQ^*rMmGQAWHyy3w$+J!PQHAvbM=H)oz-1cqiE$}* zt8}xT&9B@LGN;IOpFT?V*t=lOEyH&2TL)#R{1?Xrw*f>i2WNOK!@qikQ1(QI1y2$+ z1!<>Duc3oEx_?nuY9c!v_?IoyIO;D)5ao~G*zrUL{KFsY_amx)Oj>6eQoaeZ!#zse z+?CmlRjcGje=fedd$!!lT3IVR=cxfW0b(03yb#ktR`Eqe zbTYah-PH<#G*86c_vORy_I`Q#;>D}I1GoPTL!Q8~+#ukI@@yOw2l;R|AN@&kOp43> z1|H=2W?kpsuD#nML=*Fpm7Wszv8`vswNrzDX%|kXpYH6H+s{N-mEQh-eaYm^HA4a7 z>=~zdJzhIrmRQGlze2BS*Lpj)_2Feu9m6|Ng>q&{_Pq3$_NSl@1{Ot6)kjcd zuTlpCRQR{=p1=txIRJv)PL6UAv~g!%_C z4o}7X!XC_*Q12v}kJS;U^ltD_=?!a;hdo8NQn>Ks%CQCGAtwGzU;~l|L_td_BpeM_ zxLp;Q!wf=QaGNMQ7z;)?lsPIsDI8a*9EvN%PgjX$Qem8Znh8`Dgn05ML%fZd0VG;T z08Wg*qbf<-k=VcwY!FoyC2owTk(epBg7V{z_!O@iaA`y0Sta&VY$^3 zwbSZ?!!QF}AD-Y{EV~hJLsjU>lRI~UrPZA~0z!x*DP2XjR1mck<2;ri$~kr+rexAp zwlxKg0$n0b+_nr(xZSwOmeY%T(E;*@VO_a7L||Q=NVqhgIRa)w_DMGIp=bFkW^OJ3 z0uObQoGqrguNZ(EguF1SyKmGKZ2;-h@w{042rE?^Wo(L%?wNd`-BsZkSo*$W982O<&kc%R zWPy{FFTJSo-LhZ392-ZFt2+>a(CSc_t%9()&+$^`jWIh23vljTkJQm zg*PLmR42C!!9W?I;SE`u7_bY)r@9|~&`+i*Tc}gfm*k~GNP6#TgL9q_c}CY|(gd37 zIgI1Bh#zo^wd(R8KT0P(KIvxr2KEBjz9XBClcynQd$E$k_Ri|gofF^urwFH_hSpx& zwA}mk5>r?}c0mW-ocEeK5Fn&nN@%sPYym;&x7E!KC{DXZ7w8iX5S*1aaDYt0Wf?2- zbg56MhAGz}L5GDOWn(WtfeOB2`qAWY@mnbSMoG(*uM}UkwRfj!?yt;*|CUt5$N$tY z?W6h;P>1D&K0ji~FpE0s`(WIVzSDSk5?Hot_ng$o^6DP>%|B6<;|-Z12&(UhbxX+1*R?2Q7^>Y-5l3!d&V}> zXpM~LSE%{C#vHh+5*oZk%>T&|rk;=%xRHQW{$Y!ju3qm{-HyXAM+XQFG;0M-GkMAT zVg^!eMcT6!1Z;QiKpq(C3OM^B&;848C#5!(=rqN{>4=`QtNBZnA4-UdcKg+NH66NE zRNS8iKUU6H0ZUnU@7WLpq>csk^UnUj@A8n0G0)Ctm!;HYdziWaX@)y719T-(Jc$VpzRVSl2Msw+z78-hrR4co*FTfWT|?<5ik!&I&jZ`s29)A6ACum(c|2 zb-7mZW(yJ5MRHo7O7IplnC-Twq+TWFa~!4&$i)X0=+#p%GNUzJ3-b~(VyIl{*;g6q z>#s6*4G*T_q6dU>7d?lm>$RdV?VduW1~a+9AD`#LH#z}$_HXVMfkfa?v)k>O|F`1k z-x3oK&Vq%9OywPRw;Q78C73==xb4$a#jkh5LI6rYwZEyX;AoJb{$9@mnySDBo@kHg z1j7ay%7T$YDIYm!K5L!bfSclSVn}mk|y_iTaku;Ss@qTPOUc2rxQIqt|n50M;uo zm;;4_?FIZ~CK-O>^JD9{Q)2)?t6}GBNFwq3!SQiWLxykV_kT|jz4 z^KtP8kL#c)mKT>qjiLpFXI*U|QMC|x!Yu>3b}hkCRaJs8Oz9WllPv32^6F5@tv?w^ zdUlyl|8?mI9fv;jFV(c3o+(%M5@@il%NnXtUbr^d-=tB6E`>aXfU&TnTP2FaIefE9 zn3B-^s6sjoc8NtvKn~k?jL&eDkC8kX`pZ_E7ucCmRRKYme`x%mC#4ARR{LTwfs4s? z3jpc*w$yRU_Wau2?{A3d*IkCs?6i$`AYNRN;yZVOX-HEz`PqV=kozf}w@QhXwd(o# z;O*EkL$CSAMl{hks-TL}d+RzhFs7rCl?TMti;02Er-y~XvIPEWcu)?YZlL4Tlro?$ zC!9aKYD2JwoOorALdpqq%>7KIFgoM%x#6riJl@)a9Y*^vai%e}rK*^mUe!1nj$MIZ zKLkrq@Vh)86clizbvAyRPXWx1X~BON@b7Wip{ZEpmoa{ZxgKGc$B`=%wn<)DF`VJv z!M7pkW~J|~^4&$fQl3cnQ!cLRt4s3j<(Et$T_bgqrCsj=zMoDgGk5Z2Vxd2o_*X+5 ze+qTO$)u*ZD)?D{GOs_RS{h|mQDP}I$Ql+cCUP`Ck?pz};Hle>;o$XhGMHcW2|YspH5XzW zC(>#Y;!MGqd1l}kv_iN`eOZ=ubgDr)n=<9Pbm9*teTA1x_nVWcfN(k}mUGMs{Q62I zQ!a_8qWww|dp${&&x|LPpsR2Py*II&hE8m=k(+`v$CpLuQMhpAo>;`Kmo}mMc8k+n zvouKG3IU7#yg&%qZxA_xhk59&(a7z+sxR1_(PW9qmsIpIyK3Y*@fFRb#!i)O)E{lhQ2%0cffLc z`XoOcPsa!wtB^^G#ORR(K@eb=lt$93A25Yltdn3Y#?8XiZV~p5((Z zB#?v3g>=8foMccV;x+$(=jw9M`MVC`jk4 zlXyPoj=P*Drc;6e*K9H!0ea1RurocK3hf5JVBn=SfXAOH2IfL;25RR{l$#FohAIzP z)U}l!{-$p!7u*xC2RXWT3?ayVyu6eUWaQ+$;&S%Q0;f4|DirrtqcT~mFiF4tU;ExB zvjft-v*`i-QF+{Si;NU98=X8e$jzU=3v%QZk0do1X3_B@V!id44vZjFB~4z*O9ZD)Lsa`FZEHUi9QXb%(z(sOd-yh`OVYxtIvlas#|kcbjG{+GiS&wJ$j z2T2N`k1h0T+{(5);+zX9-l<`$DTC^xF(w>CLcDYTlu@m zm8NC>NF+b4^z%cja?L6EHemvAx>QMG7wpuukg7*XTp^P*SgiCx71seoi%`)>!mOkR zOYo>%ecg~{<~bTzUq$J`lh?Fqwr&#DtVNx)a?~Ob0SL%)9P@my2WQFYvTPEVJ*b#c z$l58|3(2+Vta%_YknfK+&>uRyya2iJ6}MsP3+=s;>G~qXto_*l2m}n%c-O zGG^nEaD5vfNn!hHU_pFMfXY!t5MAejmbI$->txTijX$E4&Vq-wCGLax8 z@aaUCjT?(X0*|#GIW0v!pfEKlr_Au9Gcf)r44*0iM@AxeOb0P6<@Xqe1mn_Nu8Z9w zF0wwu`*k=9(!Nbz(8YWL*Uy^?aqlEOJDX-_faJlK&>XG_A$C*4R?x}M$RNd~QJ+2@ zvx&KJN*>weI_%fUl73N5T8|AiPHUSty2$sG0HSKOha)cecLGO)`OmKKYPRCTvv0i^ z)_>PTgqas%tXG4TKeYIVDb;zGsR$U(V4)MM-wG0h#NA>3jpvR{@v*9FwHXf=Tkns7 zcF$0^v>I6uJW9Xhr{B5Rh28dC{BMCU~y(%br5^XD9r* z56Jx@JH?r@+!miK^|WSV?%(Yt2MBt$Y9ro>+3U2d7`e_U=}s6{26&nMBIuhTR&Tgd zf($(a;OnO3K@upX04yTkSb;s}nBtZWe3>KO7=6E>%IxSpA1!$*K3WwYtKYr!hd6gP zEB+x;Mw9%91^!1#en>?W{U~sSB)>8u^|c6O^rym&zrM@GIp>+94nux%$}w^{S1^;;H?O1`g;}KLT3#Oelf&W zD=8}X!24CC9xk_%%!6frZHWgPsmeR}*jicKBWvkUr2-D`-h4C}rY@eW>ZOFLSDhOs zR0ETZ)rBXaC_9hvwbgyrjuF*gtH|`4kZv2`w#wq-aBWkNqx!6e0xwlRFX5X*<_)VHjKqao zYy9KN%Oq(AWD);F%HX{RqVae>vbC$aTf5nz@ptfTy!N z#ML>C0*3$>eb~ad0fC9|0dFAca(RFyhAWd)Jx@nLET!w&%3yz$25(+|)bXe++IUyF zAObk)4}Z2jm{Llye%LIHYA8L?cfQ4J8cCZX+U@)|G-k1-B%C%~OwO(1h#Z)%FzY0U~=?tZS` z^(~>flmt-GyR-VRIguiKMPf-;75Kb8#;@7c1_L;(vvy2isJV2cx?T2$cv3<*%#%NJ z&IA0x;EnF>*Zy00c_&0TZ3NkOTXjDEI~OwDpO#?yDCV=tdCKD90fP?!$ONc0L*2@8e6Pqvre(Z^J=J*MdCW5k(u51*>S!btS$#-!LfHilW@h0`+d>U8ORcnhClmGjQVAeQSIz;0&X!?&%;NbuvhL%IU=p_d_X#pDF=x)bWX&s&Ds zEX~1r1m7jOc?LZ+lfQ=#9@7hn@lLpPj<@F;eS+$>fjIPVtA!h8L144cqLJ0>2Y8qJ z&GxU$^J0{h=_vcV+2^k^Z0EYdh^>p5#*}Ic1+?Q)UIH)*qL=v6NLu1l*?N*$23a-I z=~d5WB1jl-8zUZ8lUbVjwYKnLm}5m~G28$om5`NHm>(SrmIYOX9pFRNr#l`rIM^Uw zUARgpZwY)zc}rYr_!iC=Qx@}%a0mO-qA2cW-cbS!FM$)l_ILuo zA(eXu(-CwnTD@MXIdJNvdO9d61+TE@Uj8>8tk7R)sA@^JjilGZUiT31WILH%7HB#L zA1*N1iN3>N%R`NnhTrFKb&p&*n_lGO96(|EZ^kW`ZYman$GfWSO(3MJG&44zmZq_7 zj8@09`hQmLb0`T6Jf)% zFU}o4&Z!+PYnwTydR8w2`THa@r&k#jyu)l~U-`;_%8>xiMIX?rfM@|C-UP1H>F_0= z(nC;R$~GJr4$9~jK?Blyz*ixnH)m?mT-fU5NBVp!b2PNu!@ZJ>#l`hNxAdB)4`3O> zg)gjVz~w9L>TAy79;acSd_PG;!Wg)kd)m6lQ8!w9>ORn&<-ER7b2Y(mUfO(5ZI3%5 zo!Z|1Hv;mg%)E~=cd_@KQb=`lJehpSHSgzat4-nnR`2CFdGiJYgUwc_8|3LkX$j^- z_{cr%oaGxE)pWEA-^raugllIfs^qRZVbrcuX*<30}~b za&1i86L!awQGQ){nfEw!vWH@2Tu?>>9u}39!T2cqWirZ7%mzZPLInom+pwZ!ta@;x z;_wr!_nHDRee6VG`n{GAeBYIpnNl0FK@6tSTKhF!ZIl@IH;*Fkx42J+cSItFnI#-S|oT()h`zfNDB*n#-$2HYS( z^OP+Uq1RSuY`q_<(%j4_mS{O3WAMhgDdpuRssEp#z}!-&1y#~b8dVkMa-p&k-wx}j zD_q063JVh`%458w-Fl?4;x{?&%GMv|r6( z%I;r7E4#O@R(8Lwx9Zw@Sw**1=gbP4nK}*sLv=G=&+05&uAiNqXVZ82IF^3cly({t z*fia*`ygY*vlHVhEmTv6V)xq?P+zN`_vm#zzcGCqWH^2R51Vrw-``j@$MFL{$MM6i zRWPV0^!L4$QXf0WUP>evXutFEjC@n^&#i7!ngs_Q%V8>8UW!z#1Kw6rasg&@cxq$S z@p80PwxTH`pV}T#4!;23_t(3CLH$nEyF#e=ns+r)3wh;zogCi!arf2p{pa5uiKiZ< zGIIpbE){%YIkaWDwPBaB{uf_}f92PSm1SuGr0gw;-r77HG^?(ET}zS$`ons~^f&BS@;4M)O37>ew!=mebwe~$fxDW?(-MV_n+)Od;7Qj=T8p|VK%=={_^(i%O76t zy?vW}v6+ms%j6)NwGUeo6ApS8gUGdxv?3Ym{C~VzLl^l!eCH;!CU0>y`zu*S-k5)W z{#OJmFmG<(zU{xb-D%95$f6#Y&#Ha? z!yl5(e;n@i{&(8@*PY&^rDiqyUhP}gN0^tOriHiE(SLe+1x`w(K<>DN=FeUn9Q>c#)@vtR zwfs@#^rGRX#LccR%KiSpfuN%<P-zfln`P055M12RX zFV8IyKmB2!YcQp*kF9hRi2@-cw=U4(2%Qf-(O;SP=D^N8$a@9dZ>Vj)+2YhgUuM1u-2A(m8Nv|jEv3tI4|Fj78l_(r_)D8*__AeIe zYs0Vm%K_|g8ud5m(B80kD`0u? zNwv^$Fso5eyXKW;zpw9#hd!r+jbtC|Rz1|XaBJ5TY>rpb>&2TgRReUsuJ)DIj0J{4 zAm+CHx#gCNdlp!8-HW~%>qWa0Aj^5niGQeX2ySij&G^lDbKa56UelB;@+Y@#J1nn-x$5uQ8%r3hurbFcN5I;*0dyg4A+{lT$<6+A) z^&t#5GHv*9Q9C9^?0%+{ z_3<1*Gg~WRe)on7>8E6wSJF9FP5$(p0z;FI8&}bXqK> zVd-PABY11pG~r8o1xP6;#o0Lj7oz5PU4)FIxV5b%mpH+)UPU5qlf-J!K_hr)vC{a9S1ThE)(5b zN(53TDCySm(`G>xis*)cJOmermkexam3FjO8!t=UGt1??&aJ_YYDZGfiC_uVaH0An zH7oF<@YCyUvFmNJ>us}zmS1>VRf557Ah;)(#PhRYy|HhD8yv&9Gl<lI@cPygAG0*K?FHJM2xoiXZ&Jk&sn1O(P^H8&gHyG8 z!Rb?}v2Icn%y0!{kq>24O`QBTQz@6o)&(6G168NRd|gqY0PUx{&1~mt|kd6 zU`g3e+|%F`TsBDiA@soh2*;<*bS~$G*8`mkW8F@uZ=oCNXG2F+vJI~zItjBhYmJJzNSKkvu zUw!40UUvK&WVgk4Dr&H@MJpwko@y0Xb2)0ntG03^{$TVg_QtSXFN0GNE*|jUT>p4f zl{a4X=QioDwvx4u?A`7y?t(wR%cos+pq~zhZRb>=5R28|lIj=gv~5}6u%HZsf7HB{ z1zr(Ug5(lHRh3RUnGUpc6By2zbL*?2a>lG#AV(EsTL1Z;5Bu zcYob`^|$@!=w|Zv+5X{AG7d)4e7R_WnBrLL*3?*4qd?XY{T^M& zzNH)fRs#~fV6TuJ2vL^dXNWBZptwy8)_x+oGx3em_~0&-EyOw_ptBgJC4$$K-K2_1bnQ*vssZ}1_?%X-E``2NEqmxE&oz6X zpCNllo+G~Ppl_%xj(~%HwHpLyAl%4)3$`j1qRSfdX9OL|tc)gh?ZF!! z`H8|W(&;;l4#PSs>a7KyMayn009F#nzA7H1ECvB00?;IC%HkdUPL{4iM_qTds)H^9 zpvBvuilOCu&8+G!lUwf>Krrf`8X4vL$ck7S8;Yr6ztAf{&KrDnBzJZ0hD~o;8Lr*8 zUF9`It2Yo&I!8@dOEqMu#G=Mfu^3-w$emj~+Hfd^35LgnU;KgFZsQ_m)Ll`OV|K;~;KoRjwBO z?X7e_2HeMGTOUVB=JCekz+J^Rg>CggqgWvh{9{8{txEd;upscQ)uO*M@;V=r%@rKS<(H*PK+0isPTP@zi)>v6-S!S4!L}KD-$${s{ECMd7FW z>81GlbYp#D_>5qy+bB}%_Xpv`Qx!3Ycu9qWxm~CjcNxK5C7WGyx0$lnl&AH0WyWZh zHz5~xFFiSdkSJ{%$jf~!@YKAI#Hg-$jd&||UFqL=HnkS(%wulG396OaYT|3x3ddQs zoieMU5E`O3R-mXxe|AZ$W2d`3jq$~-Bp z+m-XvWUHRqA{^(oNy67B+fAsYnt5>lL)JPk z+D?(tJvSrsBJXfs@Q=q}IFvUy5S*l=(2~cS6|Ba?;&R+O%^^F`?8@W*dHFQUCU6Lz z%uv9x%z8e{M=fG?-*Xjv7kLSH$aHuab~j2(I5K7sWy?pJT>;?YSWLZ0VGfd&XSDWa z=Q*g_d}T_1s5c1VVYXYe4=qP-`fRb|uTDt1eea{NqVk6^<|WW2bc;)CkU9NZb`|Aj z!C)RM@DSnv6bbz1PWV`2c`@5v7|`umweH@zS!3=P;Lb<+zcQP-xeZ5$+E)SD;B8;; zE_>I|@Au)Qi$8^|H%FwdNg=ru!h*alU15IVsy|xKMr(+prw9#oU2oRdUxADSq)RGd zoaWPV_LOv}@eJfo-DFpcwyl;5mJK(j?-(9>n z7wIo#@1)0K@nmUPX(wQB;z%dc75?+jT$}v<@=Gj<|9A3lm-$ zS^h8#z&ILsI3r>Fr1-$)fj}YSkfm`l3=2-rGb8Zx7yz{;owmKU8gG-JGrzXHQ5j)qbW?_#qkxIPQZ(P2-ng^8J(ij zso!}stjAU*rX+xr@9`3qN+e-x(Frp9t+XKVlgP0o6NAT7x2_ZqkV;AB?qy5&!zgSN zdwH^`q4KcEh|cHV2=(?vSQKr1s>I`Ri(N-N#Fdr>T%n&H z#EO()Ko$Dw;ih;Euc_hIMLIS|AY6w~0tg1fwb|0Z-z__tQxaRQ>cmKo zBXc%G4V(WsOnd)Qh&u?kqXb6w7eWvgvkteq+JC*9Uv$KhF%Q9y^H5835hcs(mC^^T0NiaDA2%2xK zr{ny&hH#bz)7EYeEg6?BO3V#$~6a>qerMxn;%M`~sI>JwUv#br2W z+p!mtE!nBE(GZE{&{`A>j6!{3Y!_!3At&X)E@Dww+#aUZANSegIJ5xIvzUnlGm@h# zGQuoCvBf~S{8(4?j5DO$$<_-}nnsWnc6{dj29x5TRk#7?4;iaPA*aOZ^6^rnMww3^ z4h1OgYp~LYhmHbjX$&>RO@dSyb+x(jd5A5$(>!7L>EnJ-yl%$K?v$8N`tEpCoVu(6Z)yxwJ<7 zy%J7{d~7Eu6n1&Errp+O=KOe}L1ao!xNBOokK)bYm~gwfF4wl?igf*cI`{xNgvbhp zwc|>_ztmYI!j-^nFk@)#ON@prKktO5-d5Z}aT@uZKH`pi9wgq$!iC7*AWuDUAEQY9 zv&0WE)tTTiY`Uf}zSLg)6kebu3b0wA@3T71F2|*gqXp@Pj_B6e<*cW1IFfjXt!Eew z1DR}i3P>u|w!kt8WAy24p5kEqBQI{CsAz0P`6!B>Z9c-0oKHcIG&<`t2@+4e`o6}bNd9D* z6p6(=DKgyGPgGc7mn-XHHI^XTD5~2acs%rl0Kr7#jjv2G{?Jn_!R~4rvCLx%d{@U4 z>YxCKM_*Ki8AKd%AiSmWAv^%x`!pZt(3hiCq;^+)b&36pFDPVw@x>P|<8)Pa52=oK z{)XN>{D_gjBP&S42NlyoWeW+_>N*@yjRR{P)!t=SU0PX3@py)CM`2l?SYYx+wyYs8 z(F4mGQV5>d6lA>75YN+J%K}Wm<(kMEkY+huC8E{JYy8_omNqq#tajMqSPDY$W3;DQ1p(7Rg!pSfmwZgflNvE3bYH9*H2Y<7k+q$}0^K+|mx)IN zD$=PDpkrdvK*w@Ab_Ugm)yMC4MRf8UQ@o-Ali67&Rs}$cC+X>FVRS;4IQ~joyzRr> z#1s!Nl-{91@wkmfn^?7=Nf_22SQ)rZgx7^pWN(sIbzv)=MkPuxLzlw|IU}hnfZ27u z#!O{B_UE&{9bmloJ;>k*MQ*5z0=})8UFKuFBuvE{iSG%Tqcu2S)3tw1&ocSg57vMV zOIM*U?#8W{hzaWb!owRkG6>(f$=yvgran}q@wwu-vPMl&Zl~`afy>R5u(%L9hw5DW zil-I7+o9^(c7CRY5$02KTA6A2>s@-?Y58cf@T{MYPe$`0z;dC9A1qqobE8eKc>&ej z$&2}DmiG`C5TBS%PBV(^mk4Z-mpiT4rJQn-C>tO+D(GGO8C+odIz`|oVh&mV37XqF z4JSE@uh!XW$G@znXd3NA^SH*j=5gP{*O#kUH(G)p$gY%U`ZX7e8(VughlndUCoF}? znJ;j&*8Kns5a>sIVxDnexPRT}WFzv13tbAyi4Fw)xI3LcC+t(F5YFkVCLrL7OFMtV zmom)tSk%FNw1h>FQVZOL1 zee56w&9qc;CVgvucmW#NZ7WzT&LZRx70ViH$Rx1iJW3+)qcQ7FjTL)cQ?s0fEV=<8 zo1Bhje^q*?yVNZGMGQX{&xzM>*tHPyB)BvT=3Vek>@6aF6n6RX<8X{rZV8#2&4Xbh z6}*v%O$|G(Q5C7AXOs!YNJg3t45F>)#YwE>#SiyYMo=Zgg(W?=pzRYz!7B4JP_M$K zhWJA8JVM>OTAFq7roLG%oV#b0yRe5bWi4#cQ{G}D`(Zyas(DWNORRH*Q*E3VF!yCg zCAwijTEPMKF>70F49JhpJ=pmCz5P(%NSUG*Y)oh-lEd2mX@M)cJde1D(|^S0 zhkkua&RF|+*-nnYr}Hue)q=m`2gs()HhA~LxSUT&nQ(>RMQ`rjU}-ut_b}AR6{V*= zia^40>boc6QtryDw>|4|j^E{DjMO?nK&h9EQo=)}S3Lro>S06@d@?SmwCc~e;8N6? z>|!#za&Pfx%Xc`}gp&Zy0`u;$Hyaq}0*HBsObznYGt9q0&3u>_7b&E(v>GBP z?!Tpu&L^_%IO^%NN#K}v`BVuH;JpJ*bdUSsElBCW(9;zV4FgwpQI*6YblcufCc!3C zLA@c{>Q}gc1`=t3WyB4{u3N&OyO^UqJ*3Q^(oOxn9+3}}2gPSSEy2E{h zS2gY(8?|er((&M|k^#3cqLxYz61z`vOY)G)o#dtYI5FHfKh4S+89|CU0%DgZpnIv< zctsNV0Iub(VDFF8%hUNNnPk)6{!=zQ+4WUfTh<&Nt^g1I>}wZRvD)-&N_VfZ!D7dA z(;kzBL83}&MB6F&DjQY@FlE;Mc>OH~pdOZ$>GQ=tr z1G}?P3c$^qfb9}Hc2*TauS?AtWfI!r%mqI0&qV7T#}*03V3v8j?|P`5}3%?2m~Fafi3 z;4m@(%xQpF0~9JLCYZ*h;}(xBAEuy~7|E82^@dRe6xYnw=TJ>$<`f z>JzEd5(uHdo9#Qy#!WHv<`l}Ncm=sa)O@Uk8ws8#iXeI*Qw077N1Yrfe{FHoRMMMB zEj~r?@UnJ6AV@Zz<|pU9eB8r5mmuEfnh*##MiHIE{30_-PCgXUe82nOZ@=Gr_5JSt z)3?uGJl#8Z`*QEq+o$`x-@V%X-Vo{G{hdm=y{F$*%H7@iBNgQOKO`SISJ99U{TN_O zCFaHupm$zOknAKjWEaP#)OkKhhB;)UyC_$LN2|7c1F6vK!+`Jp8ad3rr!hPOl2skZ z_zVC8MQL+9-)`MD#Qnoh^J2CmFr>Fz@aVI9f3i;w>B*n&+9yZ+7&3^LDVhLc!&YS!8O{+c?t@$IUywCT@En$=*veQ{SWOIm`23@3Jgm8 zweLcfo}B07>~--j8`~uB(7zcxf!>YZy8hLK3mYy_A2Cc7eTj+Up=YpacV`^*+n*JD z<8b$3$8hrD0VJPp-#5aGXnL(P(8S+)GwvUry#@yO&dABb?F8ZZof1Dsg z#7GM`o)vEWSXH9BU@9=Yi7}X^JA@m2r|Syp8>C`*wQ?P<6r{u3vB^(uU(C1FVgBI{ z5QFH#58a>r&w3b)NX~W8mCz&t=Hsx!#pdVlq3ps4$%9~V*Om7+C=aT`6?i_sqY>KT zUy+vI#?8{DklHRI*LhoHAgA#6yHEbQ|9tQ5>lc69d;a#xi)YXF5B6U?r|tIW^Y{4Q z1=VDJ1~8}ixU=9Es_(hwATvFlyV6xYTfyv#&jI+|tfX#I9AkKF*l#+QvfK#1my$*NaZUA^7%sxB~^p*Yuf_RHL zdKBAn_0LR~@N12uC?#XC0CtS%;UGm->P`LHcER3eY#Da=sCKnWb=|~%$;ihx!=USW zDP7m4{Z0AaU7|?)P`KPyQ{{t(%*Xjp^X!`|BhMmfjUAg$Y)b z%k`6~opQS{lW;W0S3pmBB}Aom2=aL>PLUNVP$}P05V-2MfEI+{w+MOp9J<7R@0s&e z{&xFA69WeTbb`Z#w}PvN{5R;xdh~U2=$(5<9?-&&pgvu*e#jb$2Br?^Y0Y75B?R$m z92MiU@^wKugGpw&z}7govnRzGJs=9HbhfokIoz-oXL8<$8ma3d6z8#8d>YlCTKZ2XQ@KFSTunUaMw%V5ieQNH!WlM{s*Zcb4W(3&YqV?}+QNyVg zgJ=T2I!%e@9RSj+lg^G;H1vjJq!k#AQ2o)CrB+pYp*oq9_)#bTz`%ASypF3bOaW=I zw;8Q3zIe6w?GFcgPrvvg$i3sW6eOZ~eV$oqIxq1K^*kF5`^o;ehg;g3zmjs6k46GO z-%sF6m0E0!Nr1}SY|Yu|3S6EW4LJ53KK z>hb*~D_C@>n7=A6@#L^vY%5?*fG;2!idbT*WGG@oz@jtQ(WsYlQ0WzjHKHRF{I!sg z@d`s2DEcf=kW`kOEy-<#H^D2VxC+#}^21YEefAmM!Br9?DV}rP{8UcTuv6stvLtX} zI(5PXP^M%0PEZXoesK=nzz?V!ROrLI@#`*dBzNaV^HA{;iR7T-tO=3@3V-hSZ=D3! zEKXwK{y3tISOsgxyU2$6l=_E**OiFJqF+y)4Q&mLA(AdjNbWo|Zlrf`(A{LmfNTfA znK9?N+f}v`R?nn$tU4?|vbd%hjNUe)_RNhoLJL#HfqG0(^l&>|25}-ugLER&huk@( zWK~~ESaj_Dx*OUJRY?1Wd|14keX12FDs?=56)%F$y6df&Sdu2oJ;YWZ1gC*dBqPb8 zO_$*3H8|>cP|M;@xG4dG7S5jEnE90`!ScG-kFKhoZKmQ}D88bbl&$oN9Z5M|#mN=k zM)H|Pm%q(-kgn1G?6Tlg8CWME_+9TRQaNAh+hCQaKmhfev3xxfjfa=!^ zF?TWX6h=X5Gc=~P8NSvnhPn7AE~k`!=^Tq<+OSZ-StfA;SX2oTgwR8qmgK#8U^biS z`!=U2=_aS66nG>jNm9&>1^!pdtII4QBt-Td#fe|4yYSY4*vU9 znEa;R>t^d_y>2}Bckw-(Sik(b@RRM89qF$fqOwhXu97&?NGHI6jI?4l3=vGQ%s)l&4Ed*aJx~`oOrENoCCB&IF+yG$+{NL+uf}xKW*ZzC0U!V z(QsXJ5@HYO7J$e{t>}8!?)zElEA(K+l*p{{{tx@E+2-87|DgF9VETNMX;k;{qy&h5|}}1FwB15wrW3p zWgc}F+veNwg?Z#5l!z!jeuEG_NPjv=nGx8Yt!j$ zbwmQwF>;X!5y7lEot7CL%e&LFvTbzWQj{Jqzl3+3!r~oHuU^g3Z$)$;c#1v3 z6da=~{Z4TP(*z+Fm_-Q9d9GgG_eMamh0#ji>$Tj(1Wk!1+9Uuit=sRa zKwfYNTBAj*$1UAsXTyQ)T`7oI!%`8Nw{vwhwksur7z*WYZb+s#9 z-OXr|E=Ha(pVATNHdma`7R}z5;A_AJ8c-5|rn7A9=~-?}8a~0|0(>|ofN!w}%dNN( z!IcnnQ_LZyMhKV{Jv%}|2_U2O$3X)y3@r>AGCP(?Qb|T1*Dlc9rL>BnHk^Bjg%yUM zS|#>dm9N-*sqz&oBf9j>M=G#Y#9$1dve6j&C;db$yHBMSsxXf7i4R`o@fuPwe(&=o+5eKw7`)?z}7wNiA^tHjG` zcC-`8(ay>DxF`opKkid%I;SA1!hY&oy+1TJu2-6tuwf= zkCp3}3_aL|STU)FC5F4c421lYq>xV2^&eGSmFmnG+&G}U$mJ&VV?&->bn*Z{6FcXn zRK2y@m2utpRv1Qf5I>rOIExKqqvDo&Csahn*<}x7#FZ-IF4gtDhW)YCO)lQ4s}TF+ zLAUV|<$l))&hDPR`BMI2&F#r?T4rQ2HjQHTXY(ch`LLVhrcp#g#K`QDFj4_@v)dHdJBXD{Er-uv&@;0poKy09oI|`N-YUWpnYeJO*S#Fmb z;Hy0pusp29%(MA`LI3H7XI#LgmFcl5%3HFpGm9Xk^@hM1bP0%m4N?X*H(rw z*W6}*u)_&0QB4|tJ4)%OZow2nP5_!h`b#E|eqlTGr{tGA(vmO=?{>2?%ccEX%UWd_ z0dwUqXft~{*Sie*`FF5Ww81-pb0hf10^mzw+5yLayuJ;LKxL{~=o^2^503VkQE1xs`({cDH0QoVo8TxAtgW% zdGb(MwfM;Hk?WMN)&}V)RN~=vRsqnc%Mxr?Nv~ZIT}i~UeQ#bGI`7hJrcw3CR#Fu= zp*WbX;)SJQv=W!^m;drA!rNut6OU9u19g~yvEhM13(%JTM#~A0I*|Pj(B9LW*T({^ z;{oDTv{Za!HG>1uP*^weRBHP}reQ48{`|e_7Dd3AS??@5%>sizz+JZ;ur{O6?7#lu z>E0>>wW$HZ!R}UkIm^B|a$30WF2EBCXxy#WIQks3fVH0fYy~#J4v<0^P9Z?M$ET0#% zZy|njOAlL|QaPtGnxD`*S75?A0zJT|a4wGLqY*r5!EH&)oaX#a3iVGUcDc3p{Kek$ z*R4Qmot?A2(|Pr|Ng72RfL3ywMP6JPVFl{ZUamGkAnMGS;M|uDLH5YUTW-5_F`C@J zA8`PTHc!aU*?oq@a2w5wvsB+;_Ue8g>Fon9EBR;8?*sJw1oD+&L1jQ`2Y|zRAfuwp zO0pZ9HL?p(inC(6r6vJ=E69%-I9k4>OGDl;LoHt&!GX=-$Y4JJQDPnw z8Giy7w2ezvjwJWNQhDh^XcCG{%5_~&s6Pl8B)RCS>6Moq?Nt-98C`=TSiRmuVj}SD!~8^3;S4?2^c2<9(7mIz%mn4}c z(Wni8m!`qZmfei@gMK*~<+C=tQ?@5_wyn@@Kv=IakHY|XuO$6`Qf6lece$K^w_MKx zA7MbJ#!IeP0R%smQY+54%&dl;UxnCa#Bj1`=C6YanO8lsHy~|Oq$|_n6|E6Ns61Ds z(h;m6XW;d$u2v)!^P*P%`1mtz3CWDN=_Ho%+tPl**O~)N$k&xtEXQcnIqf-5Uq@4{ zKIQB_e0}OmmZTL4sxBlx+Exg5+X-K}<~A1sX&C(YomDWjioq{aPs5;yZ_fVKf*T?W zOTx+re>QX4098P$zlTdyh%oJ4Yv-f8^Y>0Y;cvyn!5-eC8&!rOfiu=Ur)!acwv)R8 zo-1Iswb@7CTN>La7;gsBlap*RI|%1N(k*op-#^M1S1^j3H)ei%B|VUIAYmo_iN9MR zI+HH^AGyk$M-l1hYj{$~vUc^}@)ovhqY7+N6Mv|>sKH<;0*t*i>?NnD@<>wi;`l0| zNHJ^{5(8tXvaPePybP6Nf_pDlYlEE{1zi?X#c#T4C+bvMg5xd=Ae(*=kb7yX@f`)_ zdAaZ*~p`?ib0&PG`(jZ~ygt&dKF50s_qcB`M76!5JfFDm;Dh14Q&W6=GxCzr#W zz=9&rD~fi@3X4{#J~tDhsQi03u0)s{&;p?NfX>zUCwbFAi#i*eKi~*6{MA+YM*di5 zD3K9cf&63JNW4B0k0{39VC18)&L3fOKJK?W)d>sED!m~(*GId!$umpMN;qa`8TH)) zyRWI7W zD@rKbD0MqWQe9;J<`0Cz2E>;@1o5YF(I2TB=_UVSeJ? zz4*!t&0!c6yEmmk946%fy@o^By_H||GC=P7s=JXaaTES(Bkm?#bq@Zj>mjfFG42rj zV0A#2dp8Tn0+f2`pl;5x@?P8B0#Z!Bn>kn07cP6ro(%D;EZ5W@g@ zuqFn`DkvcL>QO-K_FVx9LI@KPH}Dlo`$&T0Ur0FbwwPfyd6?Bk`T zi<^oBl{acC^6lFI-Kk)n^Dtj(?!(q6+T<<4EXEK5 z0a{nKS`RJ`qDjE<-&RV{iK4GsL^M(bzM1EvKy!_iAlCxu62f#o8D;4>c^o}=RLd^i z!S4Z6jysn07;5wc2C*&bG6oS_Lfb{%w$|HDzaE25jk)X3hK8Ke5c#q|8jT!+W=hed zf9GG7WveQ7F~aO0i(m8^Y&v57_>~4?TQ*|H3>c$7FbLrj3L8Z8m- z%mgW?PH;RC6KIpc>=nWi2bAx0bk3=8ABAEF8J-i%Ku*s7pD~G*FHTrIVo@AdprJt{D7$;#*$>XfsNILSqh=7lT;H zNfR_?L8)yIoetL)ZHVoloqA(%#r7iK_*mCg_}qz*!Q0R)5Js{N7EIwv08*6ueVpSjva0pzSA|p!b^o8D(Y#H%`&TvLwz(1UW>@y5`P+Lt z261m@U(aXxh(l!g)r-lDlOF)B44VNB=sp@5(qB;Ie}?n0oowB?!;fj2V2}4tkg68Kp#qjC?kj&dOU+HCPWZIXezj+C$^k`mh z2M(=93N?g*PZ{PxOO)?9>U0ho<94zutr#*qN?xE_GvpV02?8wmJ-;|@`#lK}=4}n_ z))|P0co4KO2!jD`xf5O|huLX5AI)BP?Q#)wp+IONK!O?@C`QLae0#c#c ztsRC2{;#hezh|8Pun`OO$WN7KjFs8aeB++g4gMXixnoF zT!#v;*QY4uLfSQFaV0Jrs1LXmr^Q3(qM*`fv%%vM7;HM}SGAP8@)K!~cHL-r=h z;9VK^O@>7_&De(_qd^BSS6PhkYY`o5v18G+uWg)@q=k`_m_D6I>?;)fPz(7o6>T*w zo#vpDinOp#Sgiax$S!*;-c%X#GmvXyxds_TTYO7`QsJVt%2ZSWS3+;mSF}9&=N|cB zL6ThaoGqJnmVRpaaVfe6?e@igY;!urZLeroDBi`X>JqbE#N4m(EN!q1DIKn6xmlB; zEu=ku+YA(Dk6theRnFs1yAyMvh+g}*cml@-twS3h4fm)eR7kKGq;;huv!q|9C0&~Z zQV%VC^aOLbj?-k4Pcld-0A8U`9}3?PVtg^durJ(5w|U%W8Q8k`+KY?dy1+{ItzP3DPR0!`cKC{U(S3vbi3En)%Yu37kMl!nvm16>I8ExT@Yy zP?v9e1tx`$Vb2zvX~PWEC`UA_Wbc8Wc1t%#W9EX)%@22TR?9q$r17kQC5bilk|l983!~k~4^n z7)J)w#sFSmK0Ev{kvvRQh)vIB&gP8^ja3$ht}WPxSRDZy;-8(ia7xeG%#6}LmBS!n zXVAE93`9nYsb58LTOY$sV`0SVULVbE6?tG=ZJ=R3WP=rKEtxPolb0#kv&`CzNeQ06 zfJ^s>L$TAgKJU7QU!@fTtBV9ExG9j!{NIuF$FqsQYT|7KqUC?UD3hSJ(^J z-}xvbtsEg(_bdFH5Kb7!hZi=80G?0iuiQg+=$1RXzcXF^n>=+aP@V0b#YvbTC2=# z3T`~Af`tcnl$_(%$GJl;)^FT@=KRf3#t&}V+;fCU*9$`kLX+7|R^3B!zfd*b-Z0o8 z55wq5XVT+Q)+7iuxq~7qh8on`tFf8L^+#dN>T-RNl~f01DEzN?2?SmN$gnZ16Qm8q ziK;V<#(@U!`EEvkin|#-jG+oX*?skDfA7`XgCD;AcK^Tk4iJCN<~2%eNTK|BcAkNs z9Dv2Z=W@6BBlMa;>?Qc;WCXf`kr^QTknPbhnPc*eZqN`GsZ0POj1-@{EIoB4&;cSm(-DH z*Hoyt+W4Ufp2rsUS=q_?i?&2cK2W#K-U!;ki$t`D2VpCGO{{&U78PidS@9AAcwh16 zW$Q-vvv~R|rNx?pVBEGub6~SV*|^tswFdf&tGN>R$vmafuexSE)E3E&^>Uh>=D&DR zwpNkwb^~_R8Cb((&{?@YyIk4fH zu6MWdt4t}uL##BNE3AxAzL74^Ph%X!K_zg3=tbspERTyvyZesvat00_9^<;KEfuWA zr&)PoT2E=wa7>p5S<(!jk~Th4Y`9w9yYI#FG^L2KL{EZc)e7;K?zO30rv`M3Qur#J zf@ACuFY80$w;pTsE$t5|KujSj7i=2u;p?aSuUZj_>06snSjnF4d>l9nQ(-mPW=vS9 zUwz|@%<8GiwhfXTK4YFi^#qS0`?ggR+{d_tz)5IH)-}8|0r?yV7KIO-i6GeSCE*?7eHNcSjv?)cs~VuyHZSVTR$OaQ})Ai z^9@R#wu@)ktnD)ZlAHPUFf)^!MM_Xjk4aN$`y#1c13wT+K|JD{I8n}mNDk|lRI6bP zzzF7PYnaQe)na3@`CM!gE?M{hRDDvA@uC{cK(LSC#{$i&lH}U70jY7uMKUVJXJ*MA z^M~0`!74bD#KL#N9-rh&0*o#nr(?%f)CyS*{mma)pKC$PX;vJj5eaf@)G2Ce!_@YM z@9Qh;9Coyui?9R1x>>P59xr>`Z@dJ8y5*YO;=~(HWuFp@1E027xzh zTHQFW^WXoLOizW--7NQ7G|z)ifu@wsAuvMt81~N-EN_?s8@-oal9^b`l z?BrSzCN^Js#vJAGjAKiW=Fd?M8;l@+@>L2|ju)?+!LjVU^N*dE77k*cI^yZ9iBbYy>0^|f+Ftx_93(*e^?fFIe`S*mVU zrI&SBr!ThL`T)5FO%)VjUp<(j*Z>b>9j(I%xPeJu0~26Pj*ln-%UC`Zay)+pECGMB zHlGFrR1j|B=-OGHjuQJ8`4mlm9)tlriCW@gf-3c?PDX8#^HH3s$oV)swYUX7^>lw) zEv>tFcd3RWjI&>qwC42*9JkF|?_RSQ)9Dv{=3C6vXY5L>?Pc+p0bZ$WQ40-zQL|eZ z833(D1zzquTa0|0SVi2cxfm8}qrOFM?2p=iEU20dXgLmLwDC6pvuV$;rBI&aQ;5%; zw!^#Fsw=7Ivk>RH>s0!fLw; z$WLhi+tseCw_TU*!U~4o7yhdaISa+c4gL#O@9=yY)cH4~p!WA}?F~5+kD51AG)6Ek z^-Q}@crQ+hbOeUk1K>RKQBc(hbYUMtShkZpU2Bw_Pc!8fqRwXQP2dI~0+slHG@X9B zoVO=v;rL6K$kivmjX+2!#=FPhF64JbeZG)8JvBKgd~%SVjiX?P0uKd_;qBJJ{&)M& zUqgN)YKc9}tbQG@mi~4$&>hkNMs;5ghkKflwp;kt^#Trl=$~(+Q9cr8Rnh5!^#tUp zdfIq%;3kq+7$$4dGvARK%rllsp+?-y&_tggezQc^s= z)1Qy0*{NDKyco?PN4ozt7dwgvKV!s~r@`PshVut<0v6ErH}CbWsMO%IO{`(U0qUB? zH438PTH*0`JOa>}9la7;Z_7(^`bZFWt#=*YjT(UwE=TH$c?Y-NZvkZM&)LF{<+RHu}syA3nUkDwe#^$JOsW=5ot2~+{deE?szr#T_Y%pcyxNG zC`w-VD??)bX#4o2fN&=4r)T1z!z1jv)>kFYe_J|dBmZkrwW?&U?DeQyqG3=CUWcpP zI?60DzsP5vz!X3eHgs~WqsJXSWCwBlKY9#RqE%~-6RNEFMDfB&^!C}%+g!Hqt(AP1 z(W6>c7>h>%PVCYtI2+Z~@L0jhwStHXAFPu_rHc>!|4@Z>r0UvPy3#5 zK<44?KSOlK*SE35c+-x(t?NF7YaDHCJR$gx5|#?B4E)DYx^NhqRrLk?mUsEDiy;LQ zexbd~lR3htVasjytJwy8TEJu<%}dWjO5vy!Gl`5o1*bPt2?m~+|CyS~XXPgR&o82e zf%(1!OTw)1EBiAv`t_zo>egT4By9A9445_rSI>p$p zJ{@0SY7CYwRMeUz#YhD;D*;YnxP7mf_PDyf4|Wt(JsjqsL*oHqmM}yWGhCI%fpSry zhAccD#8ffmfE|_z{mtc#E`Kt zgQV=oe)T|Im(SDZ7#4}c*H%l<~<7#?qoF0CODp%C+_7-K{u zbpA`uq;ZvChfBn;rlmZV@WQtF)9)iUAn7R0Fn8&Dp396@!A^3PP6#Hum`=K>K)G2j_z@3 zCXj4z9Nsf2ZkL)+l=};}J}=6k-+W$}PkXrFplAt3Ry!FuiQp7SqCT4*HtAYnldfwv z>AoS{C_~KjWGFep7@JeDT}XK8PEt%@;T90HS4@&N2`U|)ggbrPH9`;!7Beh|i(|m* zMmx5@t8g*F$>&Xb#_LHq0FL!(RvJ;qEO#ugCIun1ewodUxCN&49wtLSpBt(ss;J+q zIG-6}6J~F~cbnkg>=s60_^VM%%}V4jUG&X@D=A;YL-FM%VjB3JEi=Qcp)xzjWOgy>&59na6%F0C zV(+WVi*U@#V25SHUOsl6B)qm&Amjk!iba?P>Nrrk)a=}gI?`}WzaQFI;66MGN~Xv% zf{3iqK#(-~jtcckfY2Hyul9DIs%r552gMppa<^k+i?veZ86eV*VFs5O6F|fX3Mj(m$AWI0xNfSb%WR zff=$oR+32alNGX^rI7kPnjIB{O(UF*E{*gMqom4J2$l2pv$+W0FLrne?aY<(Bp?5b z;XZKV84Qw9Gy5D?Yfj-Ax0jiZMg{n9QTjt{aG!w8VI|PA1wZQ9rQwyO+s!|@>S1#k zUNlB5m@%Z|0*FGVA+a1tN*ybdzFG(B8ryk@2M4r)t35ftElLq#4w?Q=rZAvOfS}1| zY!2Z)FUTqQA*PZKcxX|wVq$TNx(P~d0Q7^~zycv*8bAw%w8NCia!@h5h91l&{RXg5 zYM3z`)nHi09`mwK%zik>{g{r?u!efn{)}LkCL<7+{*UzMl)09F9~sDvFi@8A%xn>_ zHH&_NS0m<$<9;OZnYxT5B%eU1-Y{yzn*g?wBonS!G~@O!vPdowtD zGw8DL4iFzsk)ee#6lJEOLZg(f(Lw0UNl)GZ4QWWFVKSx(sKGWP=tSnMFuOiYDB5VJ zy60h_P>Fo0v?qE2*q2rhJJkb3^dvlJL5%h0FA#;!V7)SRSv{hCdL|1Qk)zPQgG<#a zOG2MQSg-?Y!j1(E{nPNf9;HakI7zRm#C0^6%cId1A0?n+1RA}0Q(nS(Pj-`t3TV_X z5J`5d`5-T?9%$IT*(y_Wio7785A*IA-13Fg=)QujADc9DIR?~Hb9Wgasi zxKA{-9GvHq38q8SOVJ!!X7c3pWkzo*)vMKI6MFf#@49f)asqPjdI|nx z>8Lo{MrQ-uVL!oQ%#rgydGQ=f?9~b)|DaAWvYXv?HY&<81$Qi3C3Ylbm4hw)#{&T+ z0M-H!cXPEbgIbqytQ7<%<|;feqx4njOrwLM$typpRtH%6kpBe%%`j7^3|2yXmXZ=;l$9!gNBBL zr6gvWH!m82{|*_vyh|?Ea z_8!~o>gpRve^Yr%hOO#zNpMklA&5Vf7bIg=pO0hB{?v?~RUym94-D$dwP3g?{aJq# z8qSk+u@j`@fE)iUNlmklWe`>z<~_*v>tV8P`N*-5Pt7bms(>8{wgPv+K6Rl}+eM(3 z-@n7Lk#cYyns={wDMHuW^*NM?uDRM(_k8ciw+Aoxp2U`(zxcF|j%}w77kRB#R?1P` z;;YSV2LcW(q@U0=^sjRB=`w6AP1uSQ!4(Z1Xswxm`}aOLT5m>NXGm$gyncoC72S-S zj2(9)_h$VK>1TA`^069Yd+?`b4&m|+T#rF$0NM(FKt-(+=1-iG7byOLiD)X#cZD-r zh!**3B`{iV{B*Pg#ZAYt<*J7i6&LrYN~)$x_4bI016|W)*yEM`s~J;!drdd475bSg zUhJp<>F^p*fTLCMDO;`V3BFiTokciNHQMv}@d}yfkT!gG(b#zF@>HN!bspjeUX6s2?7s&q?+>q@y)K}@R@?Q-1G%hg zUX8UF69-dnl3g?)sL?s_8N!o!x&Ly{PAHUZ-|<+09is-ZUu=*=o=;kFX*2TW&xd!9 zx@@lNUu3hiKc7kpW+_IO3(c`+(Gj(w`<}mCOd*plGk}O;6elrl%R>$%m z#{01!qI5IAIL@Z6(2-oWqN$yWSNy+7*cf1N(Ns`UYWY|ABpaXQ2xEQ<_9{#ijh7gx>+y!{jm*!H1d`F6I=Mc%>Nx|Xd6`d9iRK#* zFkI#{_M;$cW9enUgv-})0U6Ht8tvptn~YrxY!(AmY=gQ%XH-i25J5!_P_rj|JX$~oOuo1E6zt<*sFq?OXXTS*2xwvPMg3* zdt@GhI#fO{Yn-9C9xfbhK%?W)I|(_Hs`FtfzPry}{J8h($?n14+vmIA?;X6{eX{q~ zs0Oe1UOfjyuzwt;y?-6S|J>>Qsdx0n=bLjf8iD%o_F(V3@Asa+_CMI|{ckFM*9Ru}b=>a=|zB zgv-`+;%+bwog?9bQgJjdEuno469G}N_#->f|4J7I?e*>&T@AatP2XB7*m4~Y+o8S| zo1;qAvUGhlpQS+o8t|AU^dH9F|*R~{!=51?0*Xo&k-5-t&(uxDhc=b58r~}_8pOo#H1?-^Be1?y0GFd;5?1qiA zm4veJxnzV^Y!n`I-dMV5c&~05R?Der(Gm~_0KeI>5If*gi(A2_Z*}kT@&B3^2(h5z zH3^pom{d;{1zR-LFHd=RTz_#8a{&v=5$m={D$Ow7kC^K*bgP^v-VATD+lGDlPyHNlE(^5 z9T%&9XJO^xO<*AR^I3XAuB{sBbr&)B72psHq$~ztqk*VcrNG{Je(}TD{H%_C0{w@T z07@{Hc`=`Xdp%N(;aK%;)2vjqSYcEI(BmiDc1?q=iA(7r7MkFG3<~OUfv~aRa)P+tt_-f#247eG$JjoSnqS3M*Edt zzc+z^TT-1?+?cHu8;jJp2$>3VqHw9AaM{KaOfOeFKMm>eMIV2uMH?~mP?6Bg<193Y z-mg9oTLU$;&ELl?H=SU&+^P!U&idAT+@aTr#q@pq7FD0OZ>wYm?SEU@0a|1o>XP_D zM1cr^g?}X<46m-*<8+!Wtuf}C0enRhDlkQ@?3;0o0s2l9=p96>4R$!%Gq_3&2(s1D z&gZXY2;CgEfMyS&40znzk9l?T*J9wWbdZ#9QP`gN>fkDVs}WsTYV&%(U~S2b$dXgDy>pY!AEy4wbI>uw_fOX@UhjTD-}>DDkf6mTMDWA0e8 z<%mC;ua)3eySE!F%B!=Y$VPhsTVzX*bLr({$82h76Qy_sqp0^ zt?dvUaJP`E&@miBbzx^i>41;0n5n3ec2DZAR_z%}AT}YJZX);hZY5z={mndn1}m`* zT*EWVI5u*Y|D25xa``*@Yg@g9z&L#O<2k)*y@o#mgDCX%35Scpl4(QZUUQIY)$0)a zLSEKc;3c59+5nFg{2uYXAiXH5G!UYTE@gF?YL2?^JcMmHYbIZj&0(WXvxI0Egy3`-eNMp58?F@EGGPJ1I?PmJZS=NhILY1 zHH=eWX{gY0&gmdd`uu56*AEep+vrWd7MD4)oR=$og>_z+^~QQ;dG82tPspVP-OYg6 z;%2wBNYBz7RRnPDNk^k>db><6iz#?LUY|5;GhzAIXTi|_J*vJf!I)heh8b}(z`nV- zP54Qx72Sr_8wvqt__l0P>W|?YjEd;fgG^A~IqrVNc=4i$|{PM~<$ z13=TGs+yt3$q9ncgJ9g>l4lrkGo(&8@i61VTj=Vi-dDa0VeJ1z;U16BC&M&50|3TpiT8y_ ziAgqftQfGWE*Zb+befgtv|W=?ewrbu=0|18{#060uYM98`OF-+T9uhIUlW$sC4?!@ zs%V%JY_{gJ0CtPGvO(HopVKdrwt58QT66|oAHaInZrM|EhIk6Gb28O4)9Nx%fsa+p zSp=cnk2ryksJH_iCRQ5d(C)LKG!o`hJ^Q^ZegLPOF<}Gn{vNvvn!C=O@m|FAc zh@X6UKARauVsq2{eLg?#n2oljyD4m{wbLPnmA)IZ=l_5BqKB!=8G!(7?WdK!=kb>qc zbhBv60)_h&6(R7^|18}kFz}B1q;LP^DJoSBWO*7If!ZeMl4$I(&_7iXb_=SMIia4| z5FYcEC8~x#ct)@#UGd6R8)M)9hQ>loVo7_|xRbC+cntT84Q+Cf)kf$Sw(Yt3#mFZ$ zzkpB!-+%pR>yBFn#O+iuiUx&yhH^fUl?XjWUPCWVl3s6I>;b}VZ<3hbh5_Ygc=A@h z*kwv;!mctbwT(fiP?l%5>um$BAlwVC(DqOD#gd;Cy0F@XO7AgsUp<0uY#O~6I7Ye20A7=Hn$NDJ;ZZ)u@nt3amGtE~GIM-mROi_&N0>DX z>P>^^wDXG&~NF2F+)7_?rSx)cg5v zr7k=W&kNZFjTQEPEs_&4e$%e_xSjPK>jAP@S(&eD5j}I>mb=ch#d`-PoKb#uKJ%*N zXO;G`(BuLEvHjHt9wzbz*Sz|zSG0ak*z@W^bVWrAh+?bWS-uo~XqlC~MFWN^SvO71 zWvXu@J##d+%-IN4PZ`wpB-gzBFT^r7|B374AAhp)E4;&FWmDMwKeq1ZxAbB4tFuvY zoQ|lvyASjm;Vk&-o_>QT1U&tt_Y|7PQw85Wh`;Npj(DHjqq+5u`~AE9yXvf(WZ5)M z5BHHd-ReL1-pJsQkL-b5Ob9%(MOmkU6LlD$ij(;Xx}pdeF!bWS5wZK01-c?^S4A@4 zyWih(WoD&O4yF@4!~U-=k0Mv;1+wj}zL~KWTaQ2K{h|I(s=&}l^CTf7uwKt7T0H=H zDOqv&HT3_x_wQ8n|A!Cmev1G7DF1rB-Ue8%(LijczaLEh2Hk4O`wfBI*-lQg6i(?4 zh1CmxUTrv_Uc8$)g_qona|%&hegk^)nX?gKy8@GcnqK6iJe@k+=wkZrbW~g-fM~g~ z@!4k#)Vt9WoP_P&ZoG^w=># zWPS!cWn%Osi@G*68S4QXg z&>V-^1a1KU;dzKa*eH6GebbW6z&7IZ*>PcS&371MLtx}XpOAzz2vSTbZBtsR9uEpj zxS^h$bRSWbP3469Ta1dcD@Y+g*opuMNMR3lcCZDQMKBj-A)KPJybug8 z8q^K3`b5(b(6%v);cL@gX@gQBxxG17GXOzNFOKuGc`;|4OmO?TN(2D52hGmQo`A?g zcjgG)4iFbJGoP~==1cg*|D*gr1JG``k(#E{vS)#E*F6lH`TzYpfc4<<|E;@Q_aA=Z z|Gzc=ubKXvJq*;Pq+rPQ7zvn3gP3)lLL^bwvG_6Yeflm#tYCqK2Ei3DW^L*a zTVZ0QRKWTN2rQdNBK`rOQd`F~6l zVG7GZT;OE~V`t;S;gydmpkR)Bc8;080>xj>r;}-p;quZ$UbnOiig9I~B7#289SI2F z#_Q+{iY7zm6I~tbKR}+rw?iW#oStsWOrl`MUsKkVbT}+|%NmI%FEf^S7+5mJP@?=a z$C)xu(-9bx&M?mn_X*l&T<;6Ojxf{p4n7qE%R+OMLWC)p#wmcit0g|cxurC36=7!J z8Holqql{Y}Q=wds(z#9Z(^=P%V#}`2qe;A)&-qeP8KbJ z=yL)u6mO{mJ+nMDmmy4d%t>68%%BG(CwmJNvoMVd9~v6d+vI0Vq?1vaU+myo7{F2R z+B7|o_RL(FWjsd6c_X9Z60-SPq)Tcw=!s%p?y)>% zjz;i4fg}xAkXgkn#dk)RFh>Tsw_TtUB=S^VA>(k7z~Z*&1z^wzjI+|~C%CS|UUS># z|2fU!3FZtebF_XPGjq^eNm18~7(o;`bJYYcY|9zVzuPALPqvUx_8%+%TWE5Y|EEST z>rK;($**Ytd9Zc=Zq@#C@00(>$Cv*VGQB_jEb<>`=jqRRF;yae3H}dS;2)xNKWq~D zRWovXZyQSZcr9Oyx6y#xqi_ouia&bIozr6Q*Wh7&8Mh=h4Nsu9s54aH7dr6`~bj2iSCyA|&W^nvS|8 z1C`lq2Aw)Zm&+8oh%y1Eal$hmgo-J=gl=S*SjrrWkYvoPt5JcjotRI;ChxjPr|&Y9 zCg3-a4A7#+!`{1WGE1zlEQ>I76;A_t$Ckefyou;*ZSXbbt;7EzLIMdTnT-sdd`7w` z%#Oe~M#=6_keZcbWs*cKl!nMrlx<#SVS~jB7lKqzb4I~!Flq>u2fYQS=^NQxJ?t1+ z_*_mH%HuMFj-Wg%GeF4`k4FWGVTIWh2_~rnApnVictZ&#RO=y<5JcpjoxyBC0_kL6 zx7>gd(IC})Ar^as8;#OJQpOM%6ed}M8N7swaPtqG8I>oI=E!Ju;KA+^yMbt)I7OsGG)$zKLrFPA zaw>jCX$Gkc)PKq4O|ng4;zeLuBN*|(whSC>(6u>}WOSs35WQsNNKyoLj1EyYIvD_v zf^M(Vc!kM%>x63Oe0l@RRtLn%aI-OSGHC*nj+W7GQ0qivv!Fz^KfXc?V_qv*Xuw*8 znK>ZW;5;pRqF4<4bYq|(lPbU(3FsX({ahtyX0q+Eb=l_86rI59GsUH1Nb5P~WF*r8 z`83+Zi3oYZ&|1WWFiHjkB2Gwc!|}+1o{;_$5Bw#~R!cGRc9_r0e)1fsjJe_f$boex z!;LaGbnGD|ffz7XjU5`*^jL1M1<9laBz6yw(jNn=>Fu4%x5WaPgF!DRVf(xD5+#KBB- zW&M2-ChP>c79$)$G^dtq&0cC&$wcl>rGN-F|0xTJC@{Dr_Uu(b`Hrz-6-HFRN@uQML6*&vyd!O zDxFNHT&BFeEZ$)LU23)K@+(XH-|*@--g5O&IvsKhZg2_nBC`JQx?)_&^jbF&s{-?Z zJ;4wY6cAI&M|hczMsj75verum6f;*sPj<>6bFy6poPL>RuS+y~=d@ZlkEuV_9fcH( zX+~b8&?9P|B)pWDnY&(N1y}Ou(&x0A9=_Tb$ zH;knyMgfy4O@EGyU)VS!6+;qI(C^D)MEQYF(s6s9)G_GX z<=K`{Ulz^NsoNkpB#P~|3OA-)#mqD0 zIr3lhxLsQmT;l(E@BW?8|L4wEUw!ib{O#qxxU}_AL_s!ylVC&bQ+oQmL=R5tN?ck4 zj3$!RN>!96L0^Mxu ze6&I%)IGp=k9c}|qGst)!ZJ3Sp4bu$tbdqueRO3H$rSFC$0A5sp5;j_yH30_s8vZr!f4z${cTXqrzU!O;OZorZivQ=s zukL^1|G(w^Z}ar8aUcAlCxBI)MU7!Ip+gH`z9e0Xp9#C9gqT9}DOPs@XI0J_>g5hV zHFA9Alq;nudP44S7*)|LH+e6ODpOdrD)QlS=?*iw*22pc)Sb_|?#}7tT$Ji`d}YC) z=i`fP#)VEsaAW10Z|#WE`7occ`x0LTIm{Y6EjG}AZ(z{eQU zI{kbAFdz9<_m+yMJt?~qppO^q`-QmETmW!o7sFP2;Ea)djwbm zy!E)moBEBxU~qOh+d!;Zx&xOO3pBulO^G?w89|eR3|r20#+A*ijomqbfEPPB@V}50YI?GH0^B_7VIhF(SX9YG*ZL#4vo7ZL!c#e1Q>E^~ zx32ohG&g$daZ$X($~S&I_c|}mLMbho_wc_6zlX7KXDhCq)}m(eHeO3}iprF;_`T!= z-cIf;*di#zP6}Npo{V(S7O1hBmV1yNw zT^;`iT7`9HGE4?6SK_E*^qF(*&`8+W zN%u?rsKQFa*Iny+{!orC$YCq~Q0((XBh-$nbUTNxvN9eWWN50U1Fyk7)hD9#l}N{j zsPD&kOd6rPbhQ4Cr=#>N)DF$TZw3=6oob3sjW7e>QhS#YeugbfF{%x2)yb#S`fPT! zziT({7O7kk*+~&+j=VjcrcSPAL@vAL{ocwfks3}Nr5i^hJ;^On4i28vDY<>&l@xjT zB?RYRP*SY~gt`Is&-~SMmg+%r3ahhZufSn}-g|P(RT$C6Ng)ojMVnFH79T(GK91LA70C+VjKrsJh`cZYXKN|oO^Ie zZ%?OL_Ad#sQVt5_IWd!d6=uhuaM)Nn^;d|v3Zh%D#TU+Ow^O@Ln1|rD8WtyWOx8hO z3gUBa*$^z!{9kZw@pGmK#&2B@e)Ohr3e)mSevytSO1C&oei-L?8$8MoD}mO0eulo% znD-5ad1A!j(Ua8B<$Nywg&d^lTv{NF_zw6V%*}CeSxgB=!Y(EvnYc&;8DKX6wv#yL zgDVCKf&k+V8v>?Gt(vBtH={^BvK5(Oh0EP+$8I2wW6?4j!Lni-AT4-`2f-j!VOH8j zH>?`hCvuKtlIBxxX2gmWB9zL~wKqk5LwDZ4L;R}j(tqgV=vIbnksPg)bm?Pv8+~|8 zp`rw|aYdflblzM$dC19!juY&)v_2AAY z`TzGL|3|0)_h$m!b>2Q~38e673^eZrxAI->w|9JH9r{+V{n06aY45F5D8|l^`43EN zUEigv>u!*`Y*=HTC2=i8*GI4So&gY;H`}1_G)_s2`2W~@x8+8%>`L&RU*SfXDM<)U z#yv`;m8v5%B2ytnUMv_Tb(>5kH~}Z=6#yIs2ZD)=sCsPEy!H>w(@a0iyz61!>QnS3 zbM{($?{nM%kc>-SO2syHR*(eT&voDTTJw4=X&RU!L12reP)oDMj~oG{0!%t$7|Cg_ z58z0k6owXhYSIi7xGjJkL9LXxy8dq%z@v%h9Z3!IYHL}npC)jJO3~8mA1m~&X)VU~ z;?eA_evb~|6{~rGmj}CYu3#Ci(0#&x`j2euw^45wzdc<``laEv_5FHlzxpTr&6PW! zye%v~4>2qsdns!@^n`CX0NGpn{mtGN*GAq~qbPE58v*=K{r?f&|JUx^t!vNdcvszH37ofxh76Q$upGd2)ZyS9!&M#7cZV4 zQ+)>qd{S6p;S~jiu@1)S3cIn4c6&zSwUC@N)=8`}X;7%A^<;%k+dg~B&0d?0Wlg&^ zg$}YtAe&e+iQq>!QsuRUr}JubUTRJ@c+sHBP_RhLJT<69*XqO8{vG4<`B*C5TMeUH zWNyWY`EvStDh(8P{908azye}fB6HMn$Y1DTDbLQTVTI79s^rP6nxi^?UN+0|;z+_L zWfAtiv;a%h1WRpFtfZe<05@gX@#pqAgnfEeUZUnxi}5w;qXqkX9AW2*%bcgzfIO+5 zf#)`VW6_XB(Y%&+)$&b&wkR24oYdDg&hm{E^h?>N#(r`jKX7iotR7Uf9HY11#!>mpC#B|tgS5Au}()9wM z1>*E9pE#0voZ!;~?{Cs}lteZbO}Kel5v>_(^WUUcBy1;{bP*auFu95AV(f)-iBXf$ znozS?o}Nnjn{?Lr#L&?f;qD;}Ixc|XFf3-pX(e!VamL>j=sAf;z{Op9Y|iHb>T3={XVnY}kFdBu1u?+*+dY9%Xc^A|NmV+l=setQF#7UD-V)#3J z(=>)%V@*6aBxybO=v>39il;tQwz{C>#Vnzdo8&=$9)Fit>BC*y_o%GVSFP35`0qbW z4UInTMo#yQeeQQZZF$WUoB=XG(2ejS)hZlCpL)sjO^-zqf*MdoMwrq;=2gU)e>HoO9&j0xM7XRVr z@c-H4wsreIVZ^`nru8^~`_C5LH~IYBuA2Yg&i#2&xCB!(%v(wpc_Q?^+7p1 zo&_Dp0PiB%qaxQR20|E)w26zGF+qV%i*G`o*Q`b4ljo_8j06B6Z7E~%Ro3fpGNudP z>O)WP;iGJ~*uF5z5t(T61l( zXl|wNpN;&VU91`jKIGbvzxr|H|Gl;T@4Js5-?{Do__^i(+V=n4@_!_yiVlyaNZShM z01qBLK%bd6XLTM1m07_#F*3<L9aQ27ZCAk_LA ze4U0gk*Rq8w4Y2`Rb8Lpq#7q57pJA7gP|a{lyT~lSW#-V*}Wdim|8=ec9tnW8y9ad zcN=C4z0Fmjgp0x#8ZjWUa&%szG*@zB(xK0>1s`pS`r#>%kb_>FhS&TC%p3go6Flqr zXrMt<>0w9EP-y0=-!H@WB#HJLo_ECIB+zJI`1=cU@xt8 zw!zC|z6t+7U(~t%I~z<&31EJErWOD4?g3`k*aGUnTk9MVSAFB-bdQ`~C9ao5O$BpL zKwIl(k;_d9rr1z3DA;>ui3k2Ajw9xa_3`Q%w}vCh-h=GK?;B^J3^5X(yg=ftsk5)2 z=J)S7@5^$k2_a54URav}3W~xBjMIz@riYt3)PWqTF!S)8K{2bszkH2lVP*b$I8j8^ zS}ptJv4*UZVd!@(^`jweT^1ggKCAe3G#3Tn%w&=Ers;c(g2x|?{C(^>su~679tpS9 zq!=JhN>m{cJr65SaqX9;I1g-4gl3Fc#2uA-e0Xmt^Q^s(Gv{M@RTsT6#l z%V0e^c`6ZgL3AAwZ%aOc6*Z8_1YR{F!|ND0G?JZ8li5^q%w4fs6|(OJ*y}YZ*fgcJ z*%^YlHx-HQs}E$gdZur~C)^{(KKl-T{ZHQ|(4v%(%`tLz#ATO} z|HH}CdWh${j9O0P-UN@Ae29h9`SyBio_PCwJn`SFEAK5jvt_s)!|2JYBd5G7-3S0< z3j6_my!vO{!X@?!n50q^GqU=g1o3we4Dx}skkYOy-VzU4I%9<_S<4<`;DYzacgG4+0@H^wt6 z1R4l&AVa)2;3^$V%0+RooR0@oz>fHNS*-RIB2*XAQrrlG#PkEs_Pn%8Bpr~k2omd_ zBjQn5PHlj?=WAyGXENPNinDCnAvyxdu_i@eX|+0R-TI16jcLS*O{2h@C4EXac%-s4 zVq1f#kUW!ELaPZ>$%dqC!oe~yhNaIr+!G;c_)^XUEZ(7%kqj5#wLc`(9YUNiA0Fz} zI&`8YN2v;D^t}p3K3(|j2HBW*9~Gf{x9hhbJl|ab@CieBRzmUqVLbchZ7A>0EB=?@ z|IUXO!B)^9iFktW7=)^QE|8!3Y+eN;R_xMiOt-^-;bP{#B;a8_)6he3_# z(f~!I2*%907JA}AeZrcXTToBiUBbfOKq)*bK1DzlRDmK~@Oq9drI(fKrJ`Jy3TbO{%tXah5^YFY>yLTSawX5!k=v3T39-RNKzGv5s7~mfx?jfiI$KpTccRv%yS5Qwu$h%SlXYY>>@BHWg{9k{(_elQQ z?3)`Ciz*eEQmWObL_kU7Byl2p40;WL+Fvd9JA~-l&tvKv3emy(!4w_~q9q(;UkcfJ z|BAEc#e#}=5S9Z+Nv`%m_QgeAE69!f0wwvvYZ&$c%xnNdiTy!v$mYQes6d_3ge__+ zR4`XEENnSGqosyTKRVE?)yLfyUZcEsUZSIi*rb!P5F7`Da^jHzY(;nz7NctXk{56V!wEsliSw6c zLMS+IE#Wb`hDIRgi-CFu(%{=@%#vsP{=O`EH3w152&9@MDuZ0@Mwi3oYRyin)Q`0B zgCTDr5=XdqJ)j+1D=ZdKdTGAOwNKp~I}pZ0|h^ zv;8vo1H#`1L|mjyBCQ9U_-aH<+^URxY;l6#YalMzW%eD=c)~?KTWAM)>-r9b_hW81 zpq!p_r^jc`mR>cHsZJmIt&jml|6&#IInM);mu~HzW+E+vIB@PN{2@xi zeVt)>&WJ%&h%pmljsKRokkQ&1D5qifhaTxZOOU)Zxg-89u1SzMmdTY5ITg~ViaAm%V`)QV;lPDI?QFdl!)$f9{C{F zCh$>03XM?PWt8^G#zRa+=UEaB4>QMk{D>yHWcpcAEmZ3m$~Kh z@UR!k2hIakO*L71i%<1|@t+_LJD?9~2&nw1ILRYeJqbS74JzuV?hp2 zs*&F;voHK@82flEO|)JG1v5_u7bZRxYi`Gp0<_Eaz7qXa%04A5^Qa+i5sgGb4GEC^ zGqbwX|6#o@#RkTx!i~)C?(BRe{}WbTToKqMUB6l^QEEnH-Amvj(ur*sRngfXYQ)Ii zwWE~XFt}SLq8$jW=Nc&w7Sh12Q;~pq(B~=D;o>oJUQ;n#%nqK?18+UY^T>)xD}E#P zD*P>|iL>R{DwDz+gHs@rKj0}%pad!o0u9uXF8Xid>a>{Wqw-A@YXiwlO14%aoMCSd z@7^)nREh2;EC$;dsFX~?;(46!Apz%o`iK7(4tLO0Edi=eL|`NMIml3n4b7SD1dE^q z*QsJ9FhG&8g~PIw*)Z}lw)W*p@nmHU-eq4wF~^Sa>|M+cwbRepyYTTm&oljR`01PV zgGIg;G=PU=FDb%cHoOaWQ5kC%)j|MAo~zj@AAZWsak$skxnzjq{GbgsfVYe1<3^*D z-)$PrJ3us84a{0Wn&!@mnH-I|FnGo=7GCnDUaj=FM=67|E3dHUCpC9KIZeY4Fm_?e z_w7-RBS%IcdEr-j6WUf;RbI-Al8Uw2c&QAeIl^Ye`S~0Mzbv75$JX;I*ki#g!pk`> z#;Z!sPZ!_4Y3!AI2Wd#f)~g%H;8V1s2a&z-j1wg$^7<#0FG&eka0D#6(JBZE^ITIQ zYr%CG#C`P_KPU+?=`MfGih0)5XNyY_04CGa@K+{Okc71$Bc91k z93XNSuGFu8{p)NOMW^m&b|y#BFV!~Wmo#Hw2h~(sktVmvs>Oi-kUm05Usi;TUZ2^Q zuv;Wr?8R8kV2ARtvS<>kFtI%?kbzDR*&@>@yI7ur92+x0M03I$5WL782?sfk80zLE ztH&Y=eKz5pM;)mf`K%dCwa>zS2pVoDa!w*@&6>637>Xnl*bJ^K#V@>^CBwX3!7$2e3X8ruxN<$8a zx9g1BGAf9bkwOq@rp=!c4*lY?EE8~S0eY60l#iu}iJh=1;V?Ao1LgI9xtvZFszhQU z`Pn=?P{5Q7TBa=o=)XfID)P+x-goUH%;$LVw)yiLkWJ(j z9s>@;A4>%9tVH3kn+F_mn0Isxs70IhHu0zo+E=+f?pz-h804)�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ⅈ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

Sw$jz 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

6WvM>n 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 B@U;K{ diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ac9896503e15b5c8b3db31c1cbcc908ce585ba97 GIT binary patch literal 408437 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≪_MhX1I~R*gu0IW8lqF{1OSGw^aIBBj5xp(~2>$e*>$Nvl3*@hPi4WA=pM zxr!zS$BQ)k6wv2&^Hn(}n)>Uns-8L%(1scvhj0~)hRgP$g^A}Pfrt9Q9Mp%HfAUDW0tk`p{kwre z;1A$#{6IJ32fi0S#J6HoXjDYS!0|EY#RZqp_PpMZ~_iYS{Hs++_<$fwly)kM7H zd0#{G*x8I6A;HRYC)x?Ie z1Vb<;6$@2(3i!$GZc6dWh)0IfQ+K7+KDmrR;#WPpSjytYn+GtUQPL{$anbq+vPEvmT39MmJYN05(7Sk(pccvwQ+ zDuAWZyW>^FTVZuP%5M;fBUaRad1*a2D@mxo zeC`P$tNLSuI7;M@pA|w~Mu3i%+}&PJfzXW|oFWI7e!tI3bExv$p+$FNf$=@n?_tS| zGZaRj>LpioV2Ez$M#Dh!v;38Rtp(Oh7#?ZV=f!#1DdE4@FRFTF{`=M&H>nBbk$iV5 zzvldlbS^q_Dv}mqz91svyoD@adw0J02$b(e=#2zz`mE*x<-L;C25^VlY=C_L$d93Q z|KW4TWd8N#R!Hj!LqHvHT!IQZH!;?Y`o8}VSbrY?(34;^Ffe(8?K)6eI@C#HR@)s@$^-w163gptjr{ENa(_@N9&+?Ji z!J^nAQ0U}S4ci^Kql^BTVLJ3JkKP?bt*ee1e zWFkhf=2HWaj(-kzblL7>g9A<>C6f;d`w*F|uFfbruYz~F8yjEl$pybv=^wsBrrtfU z^h#Wc%4|gphzWWBc(+-|zFN$r?d`m;s!yn;omMduIQy!uFr@22V#g%??l?hd5C(8o72{-*ZcD{yx)*7-}=w-$MF7%77Eaemx;U)Q`!8mbL@@jInk&}H)Y4=s*Rc4y{4hQ_UvpS+ z_Hl-WRx>q#M3AjZ?{G)z0fP{}j$Qp++WPL^z6>`(GpS}KAhSJYM!W{bA>|M-*Q4eR zt`ZGui0&aQ6C?a!0_=h+bT&g|8S!zfb(Rd8Q<+=qs5l-# z9G;NA(rp-A9w3bk5CknK%g}-XXtS0R$Iqwbh-wCmFSc7)ezjF#(7UIeN5u*1&S!(s z82Sm|BbcrO#NQMh!E~k#5z5evOC!_TN8L{)f84P?(DRx5VlcbN$PJDh6cb1def5NZ zv)OR8pRdHEqyKK0TMT0XqnuTBSDfckIO(;YiVlVTJ@YrACP+OaV^ln=d76wjNF-@1 z30wBB-_+soH^u`6AZpO@*{x%ME(?QP;=RPrjij3uIqM=WCak+|O^4B0kbLlZ1^>%0JA8_AAN|DV7Csg@} zV=06rh7oK>+0q4>X2Bbq3!~i#<;^PkY++8AP^6^Yi(*TYFTJyJ99);Q49?6^;EsQQ z%)wU6oFRGVa7_EdN=yr%6BO*5?;O^bLA_^CT06)z{cG*EF`~@+J;NrRaj*$_Ocea zM*H{|N>`qHR;AJY__7Vxsa}i+uF*ACLflI$6>72vzW27VvZNePV>^qgB$0!Z_HRJ( z>aJ2zgl|{KCuwBji+Di99v}U{EowE?nF1TtwJ_4gcvAU}bwBZXt+$B;sHE5$n?}+W zpU^-OEws*7vKke&-(AtFSB*u+=p0(EYcTQHw?~zBYs_tS*=wWZo=?5Rtmr@eli6s4 zUG{~Z;%cKxK-UWS|3+>b1!@YYy-eaRz1&!I)5U(YENBj*SCg6IJoQ0qS`@#eFpxy3 zt*XtNP9nbReO=4D!O4xtOx`PvF0kN^R-#pvi{WU1eu3a6`TDP~AO8IC=cf;LUidO= zKRvm>`%F3s7yG1mx9c`P?sa$gJx$XQtkL9nhWU`;E?3tf8_sD0Npe4a%aD9DJzkvQ z=7cI3s?|@U@Qn_@1xy8+IeR#N^(-bnuFt54LuaZf#uG8-mst8*Hz zU2Q%s+;Ua*TCkpqFOh=_f$9xmMUr%{Svj1l0_82W1${zT&#;9W7k9FSS`MlcGY%O& z(p}|mDmM3x#V)mLggf`*7GbYt$a{TBvUK;lw>)Bt4UAiNIK^cgsX$s~$DIw_L+#)r zqIe?!D?SU7t5;Nwt0Y7MtiG=$7rziKP=<2FeB4c~eSu_hjhU!@{Utv>kmX955Ura^ zre_h`=z&6LS)&Y^ms3$?PW>8ZK3kCUc)A!5@zfs`ExL)ZaLd)?;Iv`4Rb=5#y*ewc zi!PV>yiDrdZmukN`w6Ptt|)7Z-|+>mv4rPzHK0#at{j5$crY3RavLyNyiTV?V2Y47 zLfI5y{g#B-vKY`FFB{>bg_%aKJZjm>uLrUbz}xb8F9KjL%iVHM8w$pG{bUAX|EiNC^)G|hHRohQkBvv8 z!JEmnoR5wVRF7{8aOHqoyVHd~kRUrq9*5>q&hoMKc8xl%(N%&QI3$d-AHZmQRA9y- zSH*R(pqs0B(7^I#7|;sFlgkXz@-RO*dM`s|A$+!l|0L^NLUn}Ocm5f9R3s7`^Ql9O z!G!yE5ICOx0tJ(gE?RFE1*SWK-3?qVJKqKB<1T~I{1kFzU*Lfp%}eB{fMdK23!K@k zCq8Pm({0ZDYL-PIZa}Hp^SF{#$=n$?n(uLL{q+}{+f?>Zr`c#%hLi;$G6x(0P;;F- zMUnA0ByemlMpuLn<9NDyiOE=+wQs$-1A@LHYdM#J}r-ojQ1c#w9JJS?nNij1ETT zHJ3b|IoMGEC!$kX%wafw9F5lFp0u_quAvM8?I8~(YOd&`uC`S{D}<0)OkjwkSzw+U z>IPF$bhAM%+}wJVj*j2%(W=W1sOL89z`sm=J{UP1Z*f_?IB|>=sDDix zeyDsGT<_x-#Yt(~`NwPG0~AcEMTL*rBfq5hBY6>hX73KarY?RHR$jM}6&pk1Kz?gb zjIrRvN8(z>osS2f0 zEygH%?&}vUD_z1W5r*Ixp-eROOH4dJ?aZXTcuU**JqUr9m1|Q$QUqFhQzFkyi6WsC zuIHCouq}~WKKhK}D|`)sSWa%KU#P0EShl+dR_s-v?8M?ZbZ9bt0xraULB;S*k*%t&D^ z9X6z=ycOl(##5kc0O?ogvKd|`)K}!8h%L+k7dNXKxb{jiaHZOGPQIywEAO3wDL%`? zQ~HFN`TiThQ(DLHY`a4_btmlQv~8i8ZotQY(I9&UkjWKdKuH_=cvOss{whhX49Mo_ zNd%;IOxr;oDQxHcdqEG1cVF2~2Q=5#zM8~A(6-3^%^xUg{84DG2D95zh1>p`$ZSgH zroEZmv~_Mco=n<{+&@mhp+2}Oh_nfVpPxi{>W5kvCbTpRwXHdz@IE@9_(}G74h!&9 zD<;Q?^Yp3CuFTL;&GO)>08llEJdj|_wt4PA6vi`Nm=#cJsfq%E^J zKi>W8&K@ut?S45tcLRcA3xA#s{ZBRzwhy?2=Rd!AxRdLGKcAPsO4~;}51-tBai3KX z{sTxz)gMB8YPR#&hfjWfwDaioqum!f4_`ii@i$Vb)N0~zsg90=TN;cD70BUV@pr)m zARq^C3RKm>P=DEd_UQRv_Fg}F0mb2;?7V!r^WydW2Yb(-{QPp~^-uR-{s4piegFQ( ze+)MM>tO5Ety}crF4ZaAA>}P7Da9|u9jX$vx^s8nO4d+%{ti5o9s7Lly?0tv^tE&7 zv)FN$rLToZ8sd@yp693FeG30B+lP#|^V1P%P{F?oTZq^pzq#ICyJF5@>7zvns)6pe zyfoX-oos-hQO1@mTw)oP#MvR_qYF6k5g=N(?8LfFMFG~Vmse}WO6J$$aV#6pjfQc` z^aB0+YtyBx>jZbz-4{Frc(?2yXeA(RJCMaTMT5zoegC(qsnx&L?)n#iq4Zck)y?_& z>SIC)Itj0(BcIx&{pywO|9m`}W7q6ZUKVe_O9ClB|5i&fPx_`37+R_kb`_{i6N=fO zo3II}^TgMozp!iKTd(R`;YX0|IOEL5!Xkydec$K%N{J_qMeKPnV&587dv3M7 zb=al&A~nHxgYnyd2!o??ItC_9o&@8bdgOYaGiY-%obo3X{sWcH!_jQ-VshNgjq)DT zD#G3Y3s;Iwy=$vE*!8DV6M`UYIA;ksgo@Qs)8#D(7vE@k7(|oGEyHE|`=VPf5CutU zR0jBVEuUX|D8uaHstws}_jV)WJwWyjYaL|4uf|H;&v3I>MGf7QwW4vj0c=v1GChi6 zR_TFMCM?_*xYqIFmk3>1C9Gnrbye_CGEddY5<-;SNSZatR1c;8x?VsCYr3k1WZjsu zx*4sx*GyGsHl5Br?J^cmSdI_PC_Hys%?AY|7j_+dL2@vGw-R??5uIk#ZfitM+{w6) z7*k3I#g4tBx^;7?*|S_%qA8DMwGz@)15Au(VSEXGlU|otm&rYJoPc^-%?)7N@2G8- zDe!J$yXa^Vc^|~ttmSRLBKLr|(5d%Zt?XCJUef7+LWncn;TzQvwaj$knDV1>ahC0b z->Gh-b*7`~V(zvhAECtWR7cV}(@_$v74mgcQLw0GrVGxjp6LSLs4l2w4zxPadJe$h zy#}-TDhH$UV)DNhRQo31t!bg*rJtit$K&C1^{SgO@Mar!{^7q+Xv;b@c^4bN{BsHZ zk_TJ;~kXVUduJ? z<8LOK`;-TqUcgWPd>)>|PavZQib%5a2q+A9xV9^g3O2xbG3$t}RxV_yQKftZyZO~T z;P9%?N>ey~K6iE&MA2=_Oc#=HBG-!zUDncAzRNEh->8{V%j$(U3)PIKneC+ZJU>Le*I?u>p=19uk22xCw%MfXgjZXw zv^B34FY`0j^!PUZX)iOJGTy|)N%oht^)lDfSurRVGe`pc;3C_fZeV&fUoN#V9>^*? zCp`y;wacpJpq~xi!3}hMv+6nY)S7{1-WQV5pP)S+O=TO7dYqB-TvKIS)!0|1mh<@b z=)&>Dqhp3wM5IL6EEnTYEV172&UfGyw&ZC@ov@>!GzzYUidmzU`P1>JI3AVhJU=Zl zMQ`L^^XSj-RAf=-hYwfl;FmjAPZl?DyasV zSJL0*VOJK88<-qd^s5_KD2DH9$mgF`^_S0zBvi>MN6@B2y$jeb2Pj|ACkG^csR1PI zYk=cDHpO#LpYjkXBL`i1&6a(x%ag`N`0x6@sA`2YC7sxuf%49Wq1O$e(k@goSfQ)@ zK;aH4Ysb>-H*r(0Y;SSQN{})Or|WfH^Np`kQA_G>}e1*b;0S=be_1d z;9LCNGf`LMKaOwZ&(I)vkYj^5TZ!=>#}-MJl9sqS^n+h=a(pN~iE6b>KlcveE31^* z)=Qg_i{IPyO)^F!r}C}LwPC*Q=B6LHx|rNNX@iP9E0MEErsJiJ&tlX9@9|HERadm( z+9^E|-RPZcrg*8ZvDL~yzk(IPx7>&FY0m+ey{$hzh=b#HyaE=*RI4V?Ay01lNW9OZ zwR*?+-~VcTzgPi2*R2JI-TY;i@b3&EEZqGk!&3Eg5MZO&c#b}7X|J%VwR^=ia=-8!-2*Dx;?lY89Ph@Owo~77 zYG>=sCgdcKzWbG&Jg0P4UUgd(M9{accEQVd3sW3Z8+>p;MjZ|Mu4R4U85@kyHBWbe z4{R3*=co&K){Qc19e(-#f9^eh)+cS?=;R_a?_q>zueI4--Z;$JmM~?hI05p*KZkS( z;NT^yk!^0nK302_AmFlEqu{H>nFg%V2-b2uZ-KRLL(GrLWoAndCU^4X6PO4b`*EVdnmA_7D6{J@U>d=vBBl9|Nmj?2><0`4PD?d|w-*;f6;t zi;#jRVc<{`U^FZ#*2sq*)nXqn3FC^?$XASlu+NYDTz7|MK1?X2A~NRr(HzZ4Igi4p zjvjTZVuk?2cpUeOhjPDov;*s(Gai+o2*J_Nby_^oyX2F&%@JkgT)Z@rn6o6_%)2H~ zuchj>hh4>W2*Q3g_n_Rz&NxR{d4SPUFr0Rx^sj|~|F*SR@8=Sxf-ZsHg(e+1=*iI?#xEWpi>Jw*sy=S|31fM&-dCtgSnm^uN}SFM zTr=>}R~vJAemt`k{7_kLvr*KPBn&9;YUbyYWrx!^>{d-=M~oGLeDb zG!g;r4hk8C<|qH79mQ!AO}g7kh=z*gkbo_SS;X8 zL)2s}&W=!#3a&B(Xa$jk{4<1K4^(QZ$L=5{0PX5LpokoF@j;q%0xL&iZ-?B3Nec=E z-@cJDaH^4K5bV`lo2u@guQ*km#%=OhZh*=;_t#H=)jF#f@l6ePRONI%9h7nzJ%H@8 z#cUU6W-!sDFRSP84dg6~p4Ja|jMsT(BES@Pbv8g>3Q0}wM&MWt{s2E&ksvVISQ;RN z-SbMc&~vj9liMUVJdh+2%GCm z=;079CZm5WiaoxLi1MWVmp7F}2@zLbyiR)hi7zptP#@FNeSh@{2rt(gvAlOpq7$|1 zo}PHmj-5L7V`q}&3XU+lR3~!DpS1=mWSFedtu2LdTTJFiHaT@AZ3xM;KJPQZRvt2R zwmg_vOR$W?0Eimif)oK8gJXBzN)rb#Dv2mPa_>8o?>Xbv930DiF2H~KCw_WU5&=TY znoU?B`J;7&THR>5$=u^%vgz5VHx#v+%w1$QnY%7}(r}zo4}>Hux8z7BraMlF_%!;7 zBP*Z|Q>d*kHkO;!8mXO043PTB?H@oE2zY)Vq5mdA@CE0i(F^e=4Z3ChsA?m&jlTl7 zv$b~AOnno!z%*%y4y?MVnK->J-K{GN09LIN>XWqQ-VY+PFCop(s=W!t7iE7)$!*Fw zDlmrUZe?kCNBrS-B}xN?n{*&5>FBVYF>}0eG6IwQ{34fUVKE<#bp{3aTQVpJcfE5q zDnS{&P96ZqDwNZS%>=;DRA@gv!SUgTdLxnj**UZWu<5hqw#7}zjrq+dAw=cRlx1AE z&?BzwL3Z@V;v!4SqQ%?;OB*XK>HH(YE??b_AJait9zqtNc5T%5zf{^$wQa}^y#WTF zl{O$BJ}1bnbB*Gmil7!H;Zk)ApcasO+0&(k_77|+A92UThBu-*MEm?g)qPbarv^r+ zf9dEAg4W%h*)#f-Ww68s&RQ-f*d2!nJr(}(Q)qkwO^%Y#Ex=PitoOCKII=+Z2o zFo?h^$5TO69_4@ue)n9MxH92ORO*UxE_zCxA9Ss?KA>%Cwc!8&_&NqTR=)Zvq*;lb zz2MU=58nQl@7)85K3`|sAcR0Rjeh%)uVI5ENpEIBZK+=ZInpSZj5@ULb}MG{_~v=c zw`hmOtDdjXk`2Jf>Zjz3UMt9GC>oxR2ggO{)+^9Ky>j>Tm$w!wL6H_oinGyt&LSxc zMY^5++rFMPKdvar=RZ#X8&ZyB?_8mnhq$?FyU#Ji+ZP(@ppAk@k)FU*0M-W(9nRs! z(FK|mAcAcu<$J(D5>4JM>z=Rb0T%wrv;~qER`XyGwwK+*Y;E^?guG$WqJ*nTHU_V( zUR5hzAhpt^((6$7;~@Oyd;erv0p(zD;&3Mfve%m<!ZMksL(e^4s6^7(}R^xpTy@WF+&ICiJV{~0Qg!(YfGmIe61+~BlY+L`((I5XkE z?X$teU4fAHYF7L*D&9#7tO+UNdtfvuju&%?IFk%r$Bv;Ky9;}h(q2K%E6#m&d*j~@ zzH$d{Tf1$MyY(qL55L*$X>WaZJi?! zcPkP7d|YT=@KXhG4gE=$%gPrB6*fRE<#P%nR#Xw9hbx-GE7j76$!8nSZDY3l-NpVD zjm6>ZrQ&F-v^K8PJl?7umW&j|d5D|_zdRfWQwYMl9`Q}MXYM*?{z@*j?=jB0g~^s3 zS#+2J-z*QAj2-?3fb`{inx>Qpa)Zbe8xHgGG(Sodq`luhJUnc-zHSk+fKLvr&K*v8 zexNYZN>pfpmUsvHtJm^D$l8cjj4}W0ejAf3z_I7_2=J2^1wRo3-H2XOLRpp~MF|Uq z`V7^CT8c6qgK-1Zml{(vkLp>dn?(5O5S zWqvqZ6CSrP<;syllb)TYKgs?QBDEOyj+lVIY`saXHI$pVP4SBDUQ5u=+|V@Jcz(2v z{7zqS2T=+*4oVa%L^=o`s;Jq0O4eZR5@|>I859UP!9l(;zEq8YYDOG|)Y8zm*}F-p zi=YE{LsxYB&Aa)=FVo|}(PBK9Ifl#6KT2?*HKkmS28YHYAZ4S0Q%T1HRb^U8+daj_ z*efrupQsqFnO4sM1+?&X(cBs&gr#Eo(JV5PcsHHBg&9}C@GtVZ0Sv1El7(JVfLB7#v+uPKeCV0{ zD~4i(nz|;X!g-+xGHS2&|Fie5-EACKqUiaoU(rImVn7CtZ)1W(<((`~!GLApLm*qJu_@KsjRk5o9DH zw{v@pSmzNtlKcHd9uzWYl^xY_nJm%d;7x66?sxeB3V`=Mnan0Im%}DhyRY7yV!w0e ziz^sxedmtY+NNmtc-MbG%gJuW%TEXif^9X?Zj5N5bcJNsswN!m8nrjOhH+aEWXk&` z7QVrbVcl@EK;-){&Pj)<_*9TWfsrw}8hX=k#}%*)B4dC+u2;9M(bjCNEspbo!PL3xb=X5``(MH!`oT3gOp;CX(PTF8ioQb|7$(Us`tMuxYQw^$ zdNtouTxfjtB-}%*oB1)qcML=hbm}2H6#|cyG3u*kgE$x3n(%VqD_SkC$0i7a~hBh*VM`zHDNPWU-mq@3;QYEM=v1>Y;$g0Q> z_IPx1GIu;7QyhP$D~{x!SAC`!54UT+m2s$QgpwZ5;p%8pt%W>AIe}Xu zbz7(AB}ejAt*>@MUA?OnncF<7u(x^S4Q{;gwq0!^kL@*q#jmZcCaivk$hxo93DaSl zd4N|Z%p-j;;Dc3Yn0it7dD@7~<6;{_vZ@0@KW$$Zo(UV-nZ#PuDy<_C58Nnu8Mk4j zjJNPAcXb~mQrzx#K#mPF_Q^v^jH)6!#YKlmjA1gp3xot?qxcMtSq@!6{nB6_qPX1r#mBT^bh=gy%Fy%v!g#Z!Lt zC|)Dg+px{`;=ydN*h{@6o$%?q)xnNLOE=0 zpBCAsOL@X(oc;+7#l4$62PsRzn%d2{&RgEE z8am1*)&(>{@yNRk`?Km{RnjaRA0ldW(V zuiQ&-=c~P>jD5G*NO2jBI_p;KbZL7T{dY@SDZotDx~>u$YA&LDLzVjkFUE5puE5UG zx-mxP9k(iBqcrj8t&#<|hVGcT_At|XidRx%PwZsi^qDzqJUPjWB?&?1t0hKZLVs@) zvc+tPGyt{SCEWe#=;O(1nqB0J-rh47JSlvYU`xf}F$7p=Pj~$Hw>y5j)7@)au+;Nh zcgF-Uh*T*YX}bVhWryk@fQQN-uYbj0J03(Z6C28NovIK-pejHYw#ZSUUSBP$q zR1n{>lDrsCR@S=imSNwn-)$^L!bS?ph7rI5_XfM0>PRkkuai=`Ql@T`^F49dYCz%| z_bQ`kQz&)N~M+60WVEf5>&u7No% zeMDmBz*)R)QccJQ4yS^m6*ZR)0yl6(73lP?yZMemMvsx;8s^3E2;{D_v4gPjb1(*J zgMCEkIt_v87&||nPBHVf!^`j9K?dyL!*8Mdx1;lmo#?}m8VsZ2PgMLVD*g=>|0XK_ z7JHvA3{}{HtMEuVK*@i{h-^Aa$W_2i+E>j!SF|evE@Wx;w^>(UOr6p?CMg{u#u^x9G!CkxOI z(L_SJ9OQaBh&Ma8^E4yF_roecKF-~{SO^B9U)M!F)Vg;uI*srSO^g)h6#r$+Lm?7c ztY*u}xuaS~zszUz^UKUnu%0h>3s{}Ij>{u&jgQQpYzqGT&CUAwW3U+#k%pOxFbK^S zL3>HIDlr*MP%h{P1Lxw0F4V`O(_EvpP$cKC9J3RrLcyw0;14>cH}j80o6qhi9I~6u zkI-3iEWZ%~UY$HhE{s+lHnC<~)b)NY;m|;x9gJrcFW`9(T#Ef38`cEA_>^xzXZWaZ z-0S>_ma`HJKV|Pg?wmkq)WQ1QF#F`ybQPPu&OV_8yJ>Gp1PZf*o*Io7Yf>HPV05`L7BZlR(aVJ+go-eNO z(|W5@Fpcc2w%%J4njK*hF*9#<>alpsx5=1lZgr<*JXY&QPOYT(Wo|aTVXaRY_Uu;r z6c(6$Lgy=A`fTE!_0c7tny&E>DdQe3qlML_Y2^Qe{qOY-(kuoHC^*Ca=v0?0#wk^gQ%MPR(NWO^U)6twsQaV z?$h^gb{{|6d%3&6@ApzXSwEq@5%I&T#Rx(eyO|uHg`gisq}yU!Iz9^cr(xxBF?$a| zVEE79C7@eA^~;JK`66nZxLCr3bGC!*Y*M?4Lr6~IZ7@D{)MwcRn4;l(3?cjfg13wm^OayS*z6j&(B9mwETKXmke zAN|)~owQqnR_JaZwZ3J~_V8t&&HWhg7Py{@>Et+v08QF9;sg~VQGOzm?}rC9iFSNU zN=(iK{HEkwVvCI&Vxhk}K_lqs8)!$9*Kc2^@I)>mAn81COT+Qu`H1FAH7WAAA-bk) z6zCz|kD>v%W8i-*VMm6tjv+EmLzwz7ldN4l7f_!p7$&k&p)<>OfC0ONiJasMI1@=P zmz|8<4Vo|f8`N)wz`|l&-0QmA@2(WCkS={uURs8h2oV-wj{sa-aW=Wws;ll7)wCV z8SC3)wpJUN{k01w2Bu?Hg=V_?(;TsuVYJ|FSnXgEek6asLC1IqTGq`D^lzU9+$N(j zRe6Dj>BY);rZH7A)#CtVg{(E6BtRUs2>>qR76ftOHdd{by6JMuD5(lFpQG8{Y}1Zw z)mN+Q+&)DDiG50+pxFw4w`ey^QXZU7e5h?MKDEWMU`6yhTTeu>KroHHS!x!pw813c ze~7B-VC6Xi#~YcD$6jS>%+~_Kix8RoMS`6gIt;j#O;?*_5^}Q+tHcadC>5FuE~`MV z;RYR41_1n~v!lsY>~3Xs!W-YY(0+osX6(-h22AHJju=bZ5A4&vCycPaw;B2LT+T z`4}6R@+I2Ht#f2z?$U7V&3X2181QXa?VID##WEy)r!C8k9}-M!^0FI#bu|7@M~u&o zFPjlxK#3DpXzE~CNquowNRG#xOX(YC|4q5Y>HHH^TJ01wb!aOO;yW#Dr(J2{kHdlc zEdOP>r{S1=s0nwb$D6qb$@}>6#boxOVeMi$qM&BRKWaYP=hE6$OY)8R>LN~G_4A~d zV2U1PyVzih7J^#=pSpg0kb^E%6? zMUFF*ov4`DwPqlTt(kz~ODNB2sVjIHZAVxtUZwV$BAh9h(RCrBj((5lx*ld!9|}~= zFWN!iYW|*%S}i*@&fN&P(82z&a2^C{(KlXg_VH|j9@u^q1A7>k6ua?_e+n(a`tgkC%14Udu3fLLLRxg*U`x;%446j=Cpxme85*`^?_ zR{l_B)m>CeDj90^M;-61hUKCpo%8rqvseGEu}_a`8du0VU6UK7^gb%D-DI3jymD2Q0jcMDV}Ci5u4y1JMB;u z;~4YPdB6m2*4G3Ww6FQHJza?*6dF) z2GQ=~b7gB_s-vp+BB%&22be=Ov&$+qji0sZX1e=zs&uTVJFYr(H)0?ogK7wi8(yr8 z?OG)`Wu#-ZA0f#Gh(ToE5#6D#@M5|uFu(WSGlKxI6s%@E+OtQNc(h(>kM3{n=Tr8? zG^@4vsWhZ&^pfcxvl=a}`+RS^SMDj=;U=CpNwmyQ0sd?!vP0UZqFQO5(Kykr4j)4n zXh%Ik%p_w&3`iUfQxjT4=!CQUd{hZ|^iol!pYjF9TyWsmF~L{t%dDbx{F%M`<;fr7 zidJ*(DiUQ9Rw%l@dF8M*d!FPuqB_+!PEp0@;b)`L5xcTG-{-S@ffo)5`4HzG zU1sPDPOch5d4Zs}-h4K_+;M-NatGORo~$v0jbUqVVaJ6|HBz`d#Z@yJ$eb;<4y&>!G z)-()*^G+OD=D6WYH-yY7Fo}~wam2dY>iA)M_d_E9RY0o0H>mvQMSjwT(|V18RF-r2 zH%JZRzCDv+A$_x%g0wU5ICQX}@O9XgnaB={&x^AWk@YA$XE_`fejAP_Bn+fMu;m9- z{g7fw(vVW7c~YrIkv^}3(`fbkcUv6Aww)ZZ#~pOmUtIABypvqcz~vUU4iAZh39cg=Y>_$mc8=fPD!l zMrJn?@RwEmrh>+&0GEz8#DI9>^85Pn_q*?(zk2m{_YGv~Y=$u4T5f?Zc5L!N${+dr zI7ReLjB6^W)zCRhC+M0_`lZ{{eJbBOp1pg+`$FXM=Hmc(lrb7Vl8sv|!g2BH8zLyAsI zAAH=OpxD;W()FSE5!`#uYHU%H&UFomN^vS{2}x~Be7#}PwaFo;^l4~n@6>@caA{8A ztrRRgyL3$Yim$ zz$BpFr^GVpV<(m2zIumv@`1B8x8xiNfT9Hj;KXbWU1>+t!$byPD1?H@#1y$YX0GiV zcH*q-)#Mqc8xVix*zxGeXf_kNcYFV3?yaZnV($q1OFJ_c5pS6txtWeBPpA>8oJ{8! z6MPK9i8J@SnJ~o1c|-r^`kCFNvoo#EbFjSOq4zyGtg+|)FUykuSC!;uc;}AR8Qi%e zTL@wp=_=y0LFk8KlG2W{lNu&-l?eqNh%+E1FuCi{9m{CQ?IuOGnw{s%4&XhMigI%h zU{WyLC~eO8&1eR87NN{QY5j_s2biC>hq_757G1?F2H*zXtjcuvt(jsc%Am6-mOsKu z%|YQ7JReP_t3~ePJu@#e9j!3)s%;tUDDGJH93yGt9&#I!5c_6*D&8C8=}FFnv>}wX zv4IsN@OQ#WOgZJ@cbS1EbEWzYu-=}zV}?6K+f!@;v7^;8eQ(7T(sfq_XAUdOKQfFZ zVXE(j#tm6V_L`NJT(lQQIVGRS7o0dkM5+J;QquomQK;7K0C zv@z>3|HSW?R%+cIK~C)X^k?`1J!jN2-kR2(I~Wj&TD$FTL$tAzlb&R9$cB=Rct}zX z27<|wosTf$mdr{9?X+wVt$5DSlH45Z`03eV&mhU46dJI&6~Buz4hm8zT1CA12M)FCfD2@VwGD5=_vNSOu7m8o&eNp;NCnn`&s zjjYn=m!Nu&AoVV`l^m#)Go{LX@JZTdaM;WCg1wiG9bkek9)gY+D>-QItnb_zYV)5W zn2H*njf$R}X4G=`mkYE2=}CfUI&11cHi60#Z#FJlw!rt>>Sb>@PK*H;=o2mw+?5Y- zfdYR;87qXsqTU`EJ(j_~CEP!9W-glw2)v^API9=|Za|`6aLaxo#t1*PwQpz8T%SzO zzG_rdsfdp3sbSg&^&_D0%5i%-B6z$fIvS`h%hq<OYQ+xH59F3zUh4-FG^=0&^G+ zn&3H=s>f*NwuT~#*5Ur;g|1!215*>Q`T7tnp+b8E3l{>vO(8<8g<@Qnh4pt5A#v!-bz#A_R!Atp0oU3Z3QRkI0U2x~1el7I=O6T~ zr=Pln6|alEk_i_r0vH};#E*YHumFXuhKYGRYLTCh+;enXAOctl!||o30@0)ceePMJ zO_Cv?6-SVnl8h`0u$})IB0FYiWb<A?3B>Gn^?I(Jy91Ncvml$OAf4n01}K@;ItItP)OP77Z};fIx+iXs+3P=81A2uvnOC`@T7u!R`*{vRJe z%(WO*@hc2fBN8q>rhs?Vn5h92tHty2pj9^si+8P&-PfX@QjClu>dEMIHZR;uL0N#_ zpdkC&B5LieM>qp`-atfNC9Gz<`mvxOB?!P(8{wPgm(c`Cvs}x3vvEE|O-)Vf*W$g! z5amG>6$|cMoV;O+2vsu`tr&0P?5m7K_LrG^iAOX4)&oGfx1L=_`*AEAMUtt(0&m)< zXZi65>q49T)jcE_#md#}^?JeoXdH75#FZ58Lbx9?m5ok(^s-+|ddBH6Tv+d;mi{4}v9Zy9TvVg-HsivDUFT zAibc)r1*f>byO6qbIM>FFTksGt#L%vLPULA-ssx33_A%n7&AO3wZTJ5pP44tp^{sF z(mw-|y8X|ULv)-gP_@*wo__G%*h-+=s{PhblJd&6$^I^lD#R%`Wh5-Z(L*^324PQ| zk#IT=tdMpjEs-dRox}DXawK2IWVXsfuhKZ4Mjo0LgfpY6vITzrzVV~Je8mlKwa-UW zc$i$bupvEd%Xw1;t%$o-V=+lJ@` zlH5_#K5m5*6A3v3tf=YDuY&_)JQ`>HT}?~KKy#epM{iXEzZzZ?$eCW45bxNOe27+4 zlP*5#KeIxqdP9e4QIW})i+&iKiYqbJB=YyO~vH&s>ZSV*pnR` zco#ske-~$?f?U5_r<0#^$Sm4&L<|1AgntjC0dWEOMGT*Qt_RrVq1g^vi))j7vf_P) zcL&u&(9PPuTjjTldL=Il_h*>-ISI#Xsh(djhIEb0OJ+B5oeDKKCEwQM&BTv-Gx1kL z7=I3R{mrDNxGMOw{$^s0^34=)QV(D8y~NbGJ{&LBuaY|BS4l!H5gD!tMKv%4qr~8| z33&X}8o*Cn`8ptkwJgZQQ7_CO8%VSm$-*yTb<2(WOS~WPr6M>sLgpU^Tl})>=9*R!g8}y#y8#7wlGdD}0l_p<<*d5HfU4o;iG zDMcBpFLtYuG(PcIM&k|d+5ySlVTiT&de9Pq99I621;NIb*{&N1~#f5wA z99__+3(;EhcXr4EPdPOcihHY(m28xhr1k#Sez3{pfQ0UBc5pme)?GK-A|px6RyQvg zSRPe;Uhn;{)2K&VP0ypn4Oc3Hl03vfRH8`#iC$xcS<_{+xy%>q*@ zG*NhDZtF{Jd`j&ZfsKE06st;r^VJ0CHtL!-0via}o{UcMsZqb!t%NDk#>RDBjxa_; z*>A);gjh!rF5)Zb-9$v~OdcSxI}je{HW}aQ99m)a5lhU#Tsk*SjZpq1*s~hk1D`$W z8QwUpQn}0;x@9;V{$~N{@}T2?-+%S8Pac1hlS}NQi_VPQ>_NxoXrzX%rj+SElMpGV z5Fsy&8e5AZ+H@MQq#Tvh?elC5X{Or}YQ#pQJn_X%*fSFaC61rx#|A z)iV0xDYsLKoCrw?7oQ$5kXpi!T7A=?Woc=dJ`$GCO8azZ^W9QP+9nK%Y`!E;A)K1! zPVFd(CuEx5mXQ0PikmjX@=no6Lad|*OVFrXebbO-;yD`FK1J!llh1U}Y||vFNsBse z<)B3@0w9ppB&PX}MyJW?GH>FEJ*b$H#D-H0A0*eNvq3YknWX_8e2SkDCx;ZCf;Mhh z#!yDBw#PP|Lt z-z+Th4X`6j#_D7D#T86vO+O^kPT)Evh1x{zBOU*KP`^|%?MxbfhE+PT$x%fNB%fwi z+H2C=ICx3fpRuCP3dfE(XiEGLhF*heU#G;nPUIJAP+eU1j1e{}5AKM&cYOgK*#BQ&Ai%)@?{ZI~DJ zWck>d{40`KClT`&j1)g*@HDu89t*B!@jaA15Byg@Rd|CzGR5cu)QIK`wFb<59SECw7!A|Y5)}r25W2%kpo0oZ9#mC`ysRthm2$^E5Uue5`Lkb{F}H#+^fKizORPtXY`*lPWoY(9^CV zxFn0cPKuI{>vVKsCnPKV-W3a~f-2jKv;5^h219swDxjl;Y^xgYeL@ZXB^!(BwukDOMB z@+%TlpO1}bLrWchFrj$yXOM1Db|aC!t0p9G;5`sKqra8NZW{1S1G!;*H;+6nR*Ma> zd*2Po=?3JT?}m_MQe*iBf#!qoy;1buM0ow$AijwR_F*jFI8ZMp_Ju?FS0&wID-DdI z3cGDUDM|QHxYY)9k5p_#_9TM1{t8qNjZ!9h!Vt)|Oa&gcUWDn*r+*qTQ{_}vwo^hL ztjZ7*y1`S&{^B=L*q(<}PuZZYT}6ZD#zVcrwOjq%8o`-V1URc5KREXH((Iii zq}*arM6))C!MAJT$R!BGvt1*zu%=CBbHeZ2wPN=sNBaO$M`|Gi2ULk%m)fd0D**+3 zto@sAo^7N*B!AXe&9vV zzU53m_=AHv`mf)GU*Y4u+K8v#nVO<}1}aX>bVI@e{PTfZqoYDVq!b4jXXb^fb$}F> znro2OL#Y}QA-J}RRx*(9Go29ySdBcd*+y`&m@g<_%|oBAO$>d~nV!X!mtuWj4=piw zQP(5WZv$JNkE6xR^x>*F^s_g;Q~D6AC3ne-cAA346;-VdJo zRv|+Fj$|(wewV#o9Ze_2nZ!CDF*}RmG(HVFRX@M3Zpj)27C|+;PH^0ypRVc-%g=P0 z?oBv{=Co8$u+09EFXo3e^e7189&F}dHpqoCaG-ykYCT9dgiUw-*z_~FY| ztMz5-L+jn*9onA&*Asn67h`P{u&+}IIvzwBI*QzFA!d+FCg>24NDA)s(q!~QkZDC8 z75vR~>M&AI@uyAlp>@nSNAvMzljgpHM1@x$2AY9uR-W^3f1BO?kAug(|7XgXHtJ00OG+ zCzlj(O84Xh_;Ex=_!ndGaSjGe#jDu>tW@#u9+UE!H;&6)cLOq~=ij}fOYPx!GUf{W zxBn=?mIfy75`8IF7Y=LXWBlfSv_hjsSczMMU(f-pS(VxJ*-%lkxqqtKRLp1u;fpIi z(_RwUYC3~~8nrSf<#uA`=-^9tQt6oE^Q8l^J!_K%x5Z>RKn#y54QvIxPW(+ow%Nc` zDbWDKKSAxv>B~gi0{ChFlgJ1w+r-vWrmY5a-`F?~FD`w6(Rm^O7%#nJ2-pU>GUS z5c9}8Km`iuh`$wdA0RfVbq$ls;7T-GNh0dL7k6mbR~+O5h%3l|XWj?WloUPkgm2 zD%R_fEW89qW_p0hSM}ZqX4G;QUF6&P^MMB!UuFeukmOuHL|Ls^To8a0|1fRHALj16 z*}K`@RY$@uE=I_oOJsqnv(buaCWTJSCWl+*7qmo-bkL=c3IVYj#Wv`Y0YfQymb+yi zDR~hYI7pgbis~?cgvR4mn2;I%Mx+f5*OhDHSP7N+wRTM?iZ*A%z6v5zR9@y#+LC2| zV!pS>F%+bH|2TIiG?@>weM;kJe8ZLO@q5|&p5s?wH+_s|!PhQT`>$uFGDN(nsr%N} zUB-12iI6A7zD8Byos#G|sT^$*EI7_WC*?K|U6>(`YtU*t)!$)(HJ@Qk)mhXekWV{| z)MG;eZHKxoErWpDm8BlqfI#Xo*s-RgsXb%-mLyXw>YCtsv@Hb?@-N=Vz#QIcwd4Z=97)w4Oy%gmBP!wN;W!m|)Ya66O$DrW|xMNZ2>!9fg3muq~tP_-ryA zqhM`EQ-Fh&lwX2wTU9W}p}oy}n+G43yGY;l5dJr{;yWK)icM|ahHaMVHm%0~lj5%D z!)z#3v7LiyG3t{klI zGw{os{A5++W3XX+O2$R%v>78B@2m3C#>TF)|*CON4SK3WP8WFR4L@H0Qb(s8nN$74yACxGVfelu)?IcWFn1=aTGZ7OFDVT_jlCw35E4IeasTa|!2#N=MIJbWuP3N_${)vWTw^Fj!q3U*T z^Ay7K-F)n30{zi=-1bHV#--dWE-SY%uWd`yuSa#*9JAu90CP)z^DVk$%?lOaNCb zt_zSa)>G^j3WO0ECex9NG2Mfdjx&lmA?^s47|Y+Fp4-*>{?EH_{<8NH%}n0E*xQA? z!TYaX?jJxe213~~F{@WDs%d;W7>0@(%WM?TTEgF>3E6Yf@Ym$5%)W1G*uw@^kZ);T zfEUM($R&{NThPzNd^H>Q9Ee?9K%KrSR-4y}j7UJSkb&up|MDkI|_ z1WzKXIT+VLrD(?vRKvawJ8?HUmCj-4NtD!>ixaBYkPp4M7il;+W}`Tcr0z9gG_2k= zj_>qHLMDZ^0}W8QO`sFnwDa*xR_-pAs0^xkqPQ_PiDG=DUygL!uDP0qEQ?&f-g~%5 z6Tr}~?dUQa7UK&su2ailb(8}MoS4LA%XzlC0K5PG`%?0$gtv*0jbbz6uvk6ps8fv-Z@vmvycX=*YvQ41I_ zDes>+I^~BHRBUgt&-&)LPHUdtq zYb@S7b*Ap;`Qm&u8H-`@50C%X`yY1S{P1}1+54BTp6%|xf4%$W{j3fZ6Xg9XOjy|1-BTT7Y&V+ z%Ol^U?@xSu|MqJb7ym#@Ad7XwF)H^2Dsv!p3N^m`vh}6g+u#0uHDB%sZuqhVMZfvo zAGPFwO8$6XOAfi@cUp2qCHEirqO}zLUW?jP^z}V0>2Qhfd&qr%qa~lDqp!8-w^-z; zVlDX=OQwDu-(kV2FL?Kkdw$@H7TmR;wZm{!$7c>7zny=`XKH;7^IJj*%x?DH&ksJZ#exGF z{_|U~eP*{0E^_m`FLS1jzCsIbm>B@=<0Y#@`^!0N5$}J~aVTfJ4_2Y=uN|{}uf&mJ zPZFGhFW6h2rd@}*DB$1!m;AB~{|5Ks07@|0Z5J!C6(jvQ=RYuiL?y3I z+7NTV-i)6eKYfIJ8+^eC1yy--Qxza*uDg}^iCDV<{lM|;10e%F;@a?xg?~ubhvvDh zu)Y6XX&u)3p1a+`1iyamkJv;X=pb)l`(YpdYF7Krt@VQ&%!}%*6Gr;e zDGGX!sTxh&c$>P}$z)N0tDR$aMaLuq$}9cDCNvMI-RS*FTwFBmFgIk0RFlDgUasK^%@hD_&8 zs6n3WtTd$d2N6JiInMKO0XlH#dOe`NAF6o+{&W>(EdNDEkLC_s&JX5Pp32r24#Ng+ zckbttOF>~N2_%rA9jm=_J&h@>LzTd?BQMN?cJD#-x=bjafFmE>=!a=N)4xT2pUVW6 zZ7Y$hkwF{}zbepIN0!w;bu+@&#w%27rc^JwL=;a-Rbw+_KL<|2v|5J^A65dpbl3In z#SQ|dMea=l{L~AXx~(1F$txLlpyNa3Vqi`xT^e>FXnT1 zPm#@p-0%hey$f-7_-}tb>}KEsV4vVE;hW&QA+DWXEXU3q1kc`K$G%Nt@^JUViU6B9 zBccqzx53S{;w@GJfr^hP+xFWz8T%2*fS<4r2hW2{$%~-eJ^6|1z+^RKSpTgp6b;nu zbd|tinYdZF1H(GC29JFhn?^u~Xv_y&r2sT85I%HOa+_`Wavnv#qhL%AH{u#POb!^( zzRKhr2ObCzk3fyJT_Qr6f)6_kS76?m2b*%lfe!d7;{A7&I;BKx*4Fn^Iecs@Pcp#4?aqOtj3| zZ#U6W`@}>`b*PG+6;G5OnLt8Cm}y2xDJOhX!sbcY)H5O<+IX<({4b#R17>HLy?E2A zOsa+*^aE7Q9Z{TehEK%lVcZLF(j?Gb-|`VvAqa+WCBA9WtTUn;^&+efT4LlB@c&Z^ zaNashI#LMIpalh}BU(_oXIP8i*ENO)R@Q5MIBYa|#Y*d}*Zc01TLF%@ZhcBtb%<)6 z&c;>6CP{#b)4Y7>tofs**E}MvNTP(ij}<$$%B&0Z$(SS*9)i0z^T4fc5->SI2ud00 zg5A0EX7~Az`@7FHwt)zUgOMWHF~t89QhGu$M9(0BQ?@tj;gwd|SXL}2(`j}=(GvRE z+c1^^1rIGI?rJWlmk=m=b_`LY9rxj`ihHiyyRe*$rqjzVgm4@$<`)IO-|oRYnJoJy zIrA-wBoeAhe%JPgq4Ahl_lxU z(QvU@GAap*wI7H|3WLow(o99XUGe!Es8X;;fw9;W{~Br~Pig28dA!_Z^v?U#>6D{T za`?Y^i9rCtU>ewfra_fHe;U6ofVVUh`HiWL7(^0kBbu`6ZSdz#_|;Qz_2i_DJ{s~O z%3kf1qHr1J4;ODc5v!W8pDF=bbABPA;F28=L&|>kjaS!+>qm{!>pyH%u z@;{>7q+gW%<+{p9>Z3QoPC{)YSTyyfjy#(3NZHYJR4jXo(Ri{dwvEMTV{2}$b(F^S z3dcW|6^e-!*Wp@B6IwGD!ftZcLqKci8>LmgnSi^x)(-BDz9OA$z>Zn*kn(*EbV?5w- zy}((q6HmxewpVL+{#VrGC2v0W;16T1Jw$+^i>~bREi@QpRqfU#`krs!8^6y*rNTdb zQ=3JF`D1NVm`HEDJU&aOP$ zn{DiIQtE<;SzDRrKV+UjrvqcS&l@&~Kxfm+%8|Kso+qPek?({7un?e#Mk@K52YGN0 zjl)#QINfSIqA7CoE@e=}on^~-zmGf#R(OE%dQ#yb)sph;KX&95qo?#{B6{05y%fxw zX@)K0c-!u_58i!^K-@mm^)(`K2hp(|{7Cwh=* zqG)vvBf`~nw*>QU*Jqof!WjKK+cF)kCe!iv@RiIhsiNiJV4|yKKE~`8xZ(KwnN51p zuHp_&PowGdxzEuew*rUeQB_3c8_gZ@Kh05j`Q-Agc+u9{3nYZ|c0vYCPKq~3CAlGA z;W(6smngW1Of#r5F(=fRs|6Kk{Zf@qeWeaL;SsrbnDqEup>6mp-;ZGfC<6lRt7;C*0*}o);-_%;ijn!`_*@1rLPJC_cNT$s-D zT$u!!M~Qc25N??cC9yDhDEX-~38P(dEsd6GXC!Bsm`t3GXP_sp^9WK74dgng6^m2@ z=?YH*{oSIA%V zH(hIWKM-p!7B#uE97DJB;5tP2l^33Dikx<=fd!E@u%v766V=R2&1BNG7_nzOsdS- zs$3~dsA}WY;yjX1hrT^kuLeqP=zJuRFTQ^%37|fKB*BOumr5~|ygK2tW2Gs~0OPyTA3jG%W2hL-HyeeiulEeZ34-`A0+-xYFddt+lW*i8sG z(ZN=BWG!xf+hH>rNH7}x>I5J%LN1F_6OK{%#>wpV#t9OUA;#8W$gx5v4;6;jc$*i@ z2jXa#6%2}W+I6Pd?2OoNNXHwij?S4K3-eatZDce6h>;0jV{eS=a|Haq|nD}!9 zBtE2g5BnBPRkoOa9Jr1h-+9v0Lc)sf=LsC&Yz`uaQw$z<3;(q*+HtifQ#aroqG$9?N4&VfHDJ;1;|*Y$T0E1L(TILq$Km6`2zWIw ze-)~g6L(FEUHY4&snu;rH$oS2!Y&Wf8z7qCS)x+-@)}6y83%}&J9tz>bMujCxVn%R zv%RFLZagq)4Zl2YzaC2VJ0ob>Ak&B}38XY43~7i0OQ^U;z);4yUciFZGv$fIvXoSv zgL{W+id*j7b!i+9;smlKKX<5lwE#(P4jdiJYmw>4Y|4Q^$6KR# z{-ad3H=9OY4BFu6G4pVAd`sAn0EZ!hu1lv{e1CuAO3DcIeAn^Q}0n^)_vu(<` zu?g}GkWbZuzVM3Dh}%6(7-f;$CAd>_2PPru>~;RAX6(jNqJzV#2b3Tk4X+jEX$sXZ z8w}3vj6~2{9xNBDh=1Vf8zn6g-FHxuGj zHaF{wPRutk#h>@=mgPDzd-46~0z-JxWznm^@Bm%YpM5!LVDE2pSw$}NC_6Y^8hM#b z&+QPtxYJ2U?Qm&yRB1FEpL0c9a|G^=&LO#DWnDx7Ak)2U$x#G^L(M}1=qh|nc$Z`B z3}MPr$=dk7-LwBZ#c_k#+ycdM2Z#275Fh?}dlma?XkQ$kc`|NwQqj1t9lF5| zrXAq{KiXtg1D(KY(Fvph@r<#rmI*5ErAz3^tb-yHU2D*INbITkKB2>t!-iHhaU=8K zzOHd%$y3owbVDbj{iRMPObAVcFy>nhE$IR}SLXW)aZm?wyWNW_!s+lcxBaIts{D;@~tt}G-2unRcw+aq)xI4 z^pZbI1iMK<-3X?txxY?;ANjUHi{R_5BY4{q>G44%qdZjaR>F!Xt>@Fb7Dd$-6Qi;L z4e^R0VzZO9Aq7%sY@MPq$#u*_MAx1=hZFc5M#0)z04vE3Fng834gQ#>P0_pK4LNtX z%XfS>nw{ojxQj*oC4>>>=Gazv=Yt#C=^WNs*%+N5gbEvj{~`rJEjF2!#Z3XAw`_Vm zchE38brbq9n}3{@(8lNj67*`kWcOM@Dm4uDP5FfrfjWyN2B^6x+dPq6tyt2v=Pq{i zIlDl+wFyQQDwcxIOK1rZ4n|ff;~VSO|B$h28yWx!bc|Ds}u^>n1zCj_R%_3 zu#~wjDdbU493Z<{-XKaLKrv7gz`&mmL(TT`&7^3Kr)RU@O~*WHxTW4HU^GL7C!^?!o>k$OW!VE>~t5)${-HTZKdt>rnIuItc!qeHjry)LQqSA>|J(RsnYg7+a z%!<(u!Djh~JwP!V^beLV-T)X|fCi~(2sA+5Qv(`uwWPlMt_7#L0?xdn^XuHavLHGQ zON*x%5c`O^3jXe<-v3VA>NQy^Ct8_TPg@btc5fvK%7`5amVpd6#{;5ylD<8(1#Xjo zL8bXTE?ZM`3o+k~E5m#{Vx%kr{dR0Q>no@LpNfdG=D$4;<>$;gRzD>!5SLnU@)yUO zyJDMEh^Ie)napQT<sg%)(IbcjgD}FF($E$7lKRhaUEcc5c^l$@0#7>VL*XpuDH9G3=RH59CYYB|!kR zaBKG=5|jfeZk8_=V8fQRK8_YM5b(MNV5kO}RxoVLS)M(epP$cX|Gp1Vc-`ftFu_Ri z?C$>nHw6kO<^=$Y3Fz%4 zOI4Z&__i_b+{OrcKa3V1#_k60o=*x05wZ)5h7Ygbyn6fU>8ls-e|Yum#}~Wr!SjCa z`QGju_=s-!k6*mqd;8-vnx#7Chrc2>efF)&_M(#zvDBO+l>S78haq_+K z?k~sF6`ZkOckVE#Kmee6EK8+z@*ixJJScVxMk7@BsJv!^&rRo%Y*jET%BvbBRH!NghaeM>+$N&BBzt?|o zQyrOn7b)Mn>dP*1piI80>yL5o-o0-!J>ko}L}{r;PK_wRr6%{^D| z-u-XxJ-Fxo{by{z3W6fJseEofxEPo;|NDQ)e}965@5eC=Zv9ED=K3d;8}Zhk6ft9+ z%Uge9;-TkAZY06^b)|g0HaY>cMbzD|3lRYwBE8Z(BE!Ccsn){9rm@qBTyD#(Av zEzcb>7K6|J0&-AEmazGWcD0X>q;wdK%a-q`@1X1zz#Z%8lt>RZU0r#uj)Zcm=u;2N z9aAyS&gRoG^+2OgUQC#6FqGd%`mD}9*@!mluV>u9hEyp&f(Pb!> zrxJFFZ8_bdgE;ylI9E9)xTSb6L0L;fa`gm&YX2gn;`pZ+cj?N?yMno*oHqnks{14c zS=c3#q;m~qJ<@Z~ly1x30_3{0d~$krG+)ScNLW@e5mcgZ6`&at6QGYZ6G#k1pwodP4g`E`#Rr+WjRzUa<&?wnu_EokDD|C2i5D zfH6_*-E;l+CgaR8T_08#*~j_H^$sE%8WEO~9YGKXKQ{bDc;=(SIl7?9tp8v0{A4Yd zAWUM>y1_??Qg#in-=dHI^v*{!2RqlyO%5;?$9G9|*hBE@FN@YjGAbjX zKZB)hzRit5iYIv;Hd7OIGx)VgjPNp+#=I`wLERSNDFEwzK5lJ6jnvJq?oAVV^D|yG zC7hs|lV5VfUUeO0hjbTdYr9E82x%ML zNp=m@TbiO7ve6<3oJVgU-ZRJpK&SHG^6FlfEu#5cEGCXeKXP;g&E_VUq-+yY)P&~V zaCsXL;YzBrnS<=kJ|FN+e5Ts^K3i6h}TgxknzkCbf)@d40Qld;<> z@Bgr|!gu#>ixtvDg(%#tX6d@sKi}xTQiE8%4piGD#+1AdF8I zV8Ae)98Z?jh>s4GU?q9q{d9M+5)DbK=FaF~^a+GVp2z{JIW0Fb^0sW+}9dMka4Z4M!6EE^fV zc=gxaH%}k$?|KWg_pcwneY^YSCAcR1$HA!gkHZ7XBu{zd$%4++`Sbhz-S2VMh&TVfG@ zVtz7d6FeLS_zDp`Wx(JHK!bnRFc-E|vs!#kvIjVR!V z-RieACy>#MjzZk((L6224#l7)9 z*pFM}2J@lRMJb2W7-qq6S(vW!wYdAPxVxeSgh`U3Zaz9rl4n0b85jr^-So%t4LF`p z=QFtjG)uh!1CK#XwQsLAdG^-PJ(a=qs`wGGP2(dkC3Lp^nrQ=c%4(qIHirSw9xvr= zRGi7aVSl=9zi9fbHO0Re5oOX2SwMubqn&?`*xsYn4gev zNo!}RF5<{1Ll_8txh^}LHaL6t%acE3t4GF;DWY~f`O&caRozj3gzUpY| zzSa5>MXp2Crsr6Omh~5+VjyNA`SrQ$94EDiJ%UJ3j=W6V)z;2Gl7lNqt0b-h05r=Y zO0c;AGBb5GhLCC;zUn!y2T}yJ*F#DuUSH`q@{7la@{5bxian?5Te11r*}E$FXf~nr zN@S-zdMvUu&z|O6PosbXV$}{~uml%_1XNac15M&?0!Oyyouyg1PAPq52xr?&*06wK zx7PfBs~(|Y+*#q%tpm{NYK|qW7r%Xz*_Q)w}+qcjG&s-u2zz9cL(Uz67>F^On+wdbPC_vH(FqzQ6Tl5Y|U0dYk{;DTjs(dvL@S#;xW0wl`WG z&B4d3I9lYR51YHas_fQpQGM64HMDX5aDAp+>FGA|8!KxnnDWJF>Mr8ND!9N91^1kCL%=5!6&EiieHE(z+w1|#jHK8kT1Q~D z-@s=^ztmMh^bVn5|Jl$o0Qm9|0Ynl13(L{mVYNoh}Ue7$2b_~NJrR+D67$=Ou}IsZNCY9 zM2PQG1>$4=1@@Ci>BOVT(kmaZirKAiRd#P#vNG7eIV;+Wvm$-j-G}s5r*)FO5yr6$ z$~p0Rsr+a@pXQ@kE4mSsbCT08x4LL`G|*D%Va*Xsd{)>QW$lP=FW1)@Q?=Vwndj>V zZ{@CES4wa`;4w>6slAHvgrxH3DdDIx`anlnTY+mxu#x0dMr_#cOFTwx74{z-AcQ|I zA1hwWR>Q#({jFo9!k8!qRU|Ik_=1J`n`cNa;fFr{GC-S(035K$%# zG~o6r!Eh(KEw{@=xEJo%KX;<~qK$h09+`*t@5|c^Qka3!CACOs*(LIWHpTrJo@!}% zRo#Ns*Tx%h_D656ybMYvs+M{3RD( zmpPC6w$sK9ENIfqHKN_31k)mO%KQS%#lW1c;J^^qS<|(6_h?H(42AJLO5889OognZ?EP!+Y)ryj=iy{N6g`}K`ykS-aWSQ)HK&vSO zeec&_Xo`|e5llMKuO38WKl=zd5LrcRelq!n?WDP=P!+$=++Kyw1H9$H^=ZGanv)&unDuc9~Ynr%dSA3@(uzg!JHTbJ;h1^`Jjv%1P;~D zT^zFSl^mt}p5WcWP)laj_DMCf7egXfLdHtEg4=!tfk+%pbMFQr97JHb|91EF``3Sd zyw6r(r{H*l0pZT*U+@kHOu$CP8#F9WNb2GJcH4~~XglYaX&d*GN-=N1YC6Roe!N(W zF8h-L|CRn8am_)BBpnq5*+C04gSsAlQZ-dm@`O2jxZ$GUvcSt>Z84$@W1TNu5WM5_4aT8W3cueiiYSl6AnNk`{HGfd{tR z0|N-EPV?2oF*)3SoX7!oaahV71Yn6l$2Nz2_RJ;a#@y$(dqd`mt?qioeJ5%(N`@da zk1sc79ng=b_M=3SrrQX;9@+#7B(AlC1Z%~-3%;-F1TuJz5)xUSz(Im$==xQ3qkUah zP$JNEsOEF6|B_#}F*&-uW&gha>Sdp93Z$sT?X#52{M-yk?8Lc$ z`r*;T`w};F%)Sg&nXjO{$T+Ja1Y1Y6ZxQmk4GS6IuGnE+WiIys|-N)#h^YxWH3i|$kAq;LDOGP%Mn&>bh0A9`#^X2jPHjS?(_}a1T-6LaK7|P_T-qlS zF;`F_0b2pBJxdCdmUNzCRCRBaSp|Z{gg*}shAKg_Zu%X)CB8F^^KAuAT%JN_Ds|Fo z4nB$kg};(Cc3n$m1Av8*x-;zED>7;P>fQlg-j5t{1c}afoYNFvrS}+1zgT| z4iu;keHEz8DS9S8IJ#D@YtG!(YsgMEBmtWcfjW4Z64Zrw!9|%=iPKv6beJLJmC1KX zvg124583JY@D`BiIK}A>hvukkhx;8bK zc`p+eIx?$bSpI>w^)=S6dn#0>(BN(9^RnzwCnM40^VK74ZSBP7T97H8XAH; zddajwphh7jwQ${(;0X$GMSgm*0Z4uEcfs6psgU@<8Q91VQef9gU1c#UarZgWeQ_V;i!Dk4nXCQM}?F$!k*5gnrBu-VJLeZIjdlRsQHF|y; z5sc~cudy=D=eT8~8M>YrvX&&YuuW(|jPXn`Bm{k!z&#LlmM3_=nl2~kUBqNUFgg56 z(Z+f_3$t@{^AMyI_L=7J#G#L5362K8a9kYbzk+M2TgEizPXQAbZ5r1Jw$0TFz)k9- zKU2ZrL|b!o31Y4#1|TVN2{m#l(aw(NI8zE^1~nWVPyplrQUeruhf*CDmu}E=4Q%EG z4a-H2-h*(r&LEi1U;q5-#ctNd$WQFfJ6bF!5RC|Ze5cdie9_}TBs>CzG6dtO$!JPl zQn;d1h>;@ZRulpBDA$N{<4M7ZZ8}PYaN-&tWQK=uM1rFb=tL%qo$PcZVT&${Y#1ag z7=8)U1c+<@@T_PS(rskk)2Qh}Xx&|`z@CJo6ujNtf4lec`|I=r7C3-4siW_A-EKa zB!>Y+qDT4hXa!rqBYTQz9j4 z{5!~Sh96wZ`+xizNDIlpL{w4#)-a)~dk{NO-GrttRy$FchD}Cgf$-qLKShNX={X-X zRCN01hb0iNPLN*Rpz?drL>Q&QzMGIm1!AJIc$C6cp2(n~h>3!P1=FX!-7(hwRHdoy zht4K6%*PEM#OF_)_wl3J+{2Mn)r4D^%s~MERwC^$J0rSbL>x zL0CCzayom()NSAlfTz|WY@>J#fknDjQ7Y<~myEwBGq&|pEJnA~a)<}ex^mC0EN;DS z!2_oZ;D|UG_aehTyT4q3zbzPs`{k^&(Fu^Hr7E&^R|AO32@y>ZN0qf(M(Ej+r<0>9 zE>t&52A9A^W$n@V(d5*TT*x0x=PUPAzj)9YmKTV3y;RzY@h)D^R#dMO{I1B}y&(^J z)xp*uYU)6fTv@oZVZ5`!#wsh8K644|Hww5$yY+l7qf9wc!)&6>`(1jV@3Lb8#F`1E z1{ia|aXIKC>Imt-qh-HX;ukwAg0O5XvKP_Wmd|zbnVQ_Su}(U-DzK}vguJLTui(bP zgEJXp;0zL$KCo|0U^>s=OUCoubINL-n`8rRToL-j%m&W*HTbKfCS<~CMYE0~Yq3;( zgi>*7b)Z48SQy{S?qke}s4ufB=z+Vwd+;AVmf2T#R~;n-(cy~H-Yzs+*LMy*M}7<- ze|qXpE44BRPJxtDdHodCLI=UWG+0KbznuSgagi^uW3Y_GNw9NVN1|Q?M|Jl<4qy!u ztcQjM5^wmwzPO@a7>R-Y3{7ev7E;w3XoaXTD=pOw-=@#O5?(;~BC`ajpo=J(0~xek zvI>F%WB89wJZ@=N%*K+qpG?xb4UO!Gn5~d-A)hj&;kDa11l-Ebrin44ct|};5A4Qb zv)NQE3Y1_%{>?^1iIdhN|L34~M*8Q#du){#{Cu)3kX~S42Y&{_)Wru75slSTa9o}} zDfQ#@wyc(bF6{>Nl|Ct@ae|!R(e9a(glfJ&^MP7Mc4pB7`LoHZnw`6bBM6a8w7idS z7esCNIZVZxaT@3_M>OYeFDO?fe3XRA^g)KAS|pT!xap$b;H=ooGfA*L<%IE=tfUle z0_7a|G+{gjHlOGkqA1Op=$ji`CLCS9Bp<5=+Nh(;eNUh_RYxh8>8BW|qkN~R911n} zhSW9nfSL~Lbu-JGT1RrIMH~*1{=myOHh?(ru1JT%C|{y!U&#Q_a1OMkWMgExh6Wr% zbXcJDG44=Z(Z@#S4Qu1DPh%H6cGvf12v83UM6smm#AK;8zbkVm?4VWRPHvEZ-OQ1A zZe%M)gn1ChT}WuEzM*=LfTrc_h^~uD9;F|4Bc*s?uA7@;O8CCt6zLk9W!#F#@SsA! z{Vk;5aGzKRW=+s4O>#q6_#$ zu%q-yS{rkLkZ|!A2v&NaKl{-gJnUEl0$AiONhi$@N5LyJ)fk zhkqCIiwmoIK>!`5rbrh(@u7s^idLysCzihK#5>O*R^?C;15;CQvkyOPaZ{1u?OG5E zsu|a@e-=QMtsas#YDf0f%`ELPzgopy(&+n{xbN*=}ykp&6{H-^-aQ73xs za>)|`=7+0{Nvj%%+AEZB4(RaEl#rIWu2Aizo^o=!x~ibWXyt}6B@szGa7!~hBUwL& zghAjylvoA(9+kb;VeF@T4Q0BNMt-yWFL=9cTow$g{xA?JR@I$?PmGTj1-}TH#1nT8k=b!@sCvIPU)@~iB}8Js9uX1t<|j2eUSi>ug>W!>5t#{IF()s*0t z57BzcO;UO#WdkD()H#h7lhF**oMGCxUZg7NB361g1R2-6A!jzuFTO@<_4liA*W<_pyZ1e4Ff7@ZwA?#l0s8-7xxh8&Xd6EJIzsUzEOw7e_1&VSqbf+*%;cru{dB*#rY3Ifqb-Q*(V2h+7|^;`r;}Q6GuX;H7p%x zyw29cjyKy6`z?cW6Nnv(xhtVdfJltAW{`3llVsk-+?6b>;)BHur+B&;u{Ps;tL8M- zzQ8iMDc7ux$L^5Rc(P=XBUv_lOIyZfQs41%10U!_w+^S}l;the_tmgd^44wiKE(%O z04988QlJx47(2s2_Go)fLqOtStCy>Em8`a6<}lj<=QrG`tx3_9e8@NxCC;lE;BV9w z)b~ZN-lKspp}yS9kZLE$RuLZul8?2|MB@S86RmC<=a`wWc(if@)=lnL^)axyFiNL3 zoCJ{`RTE+C9~(Q1K|j$cd}S}@4&uP3Sd3zUy8%b>ob8aQ73;atLN$&3{p7I!LH3$D z{5El`zWdD0qiguZ6%rEbeKv4PZW--V38lt_$GV$p>~HlTI~aa0nOazhQNKcKIrQNN z4=kp*t~Rp^i4P7zw=1D0V?aSr$ygJR*s6%2UQ6t>QpK_Yz%P=&!P`ZPSgW?7W6ZUUFL9iJ$)(mL~Ts#vI zhH^-2l|AhMr?}ztDga&P0-xdR_;Oy6E@I-{6u+Z<4ViveX9P9to7#Vi-;zfl&zx9d z;3wLEcc51LDuaJROO^t{>N!MD`CLRHa249WT#}uqT`D`LU!q-S^20Lx5L$Lvd3tP{ z>w%%tl6R+MpVJ4CNjq8&1`ps02loz3iVO_q!MW(KI}JWJ?j_b0Xf-6lVxYhN_XM4DY^m~4oK}Ty)MO*%h#-rH}1_T z#Z?$}i8WLp$aL*T=dPb?DB8ERStLRu}60f(h0ik)& ze0A7g-~J;Bro)8E@*;<5lCih1abSkL=GL)p6NI%;3-xin0K|@epF2hwor<=%FfJNe z7dJn>0Z)2e?J$qK1lS)sjd&nsz{M(oJzIYYKeVB(F}bp~?tA-aGy#DwOXxGu zRfl7XM(%sRj*@YfwhCh;-A-CqO66Y*-Z!YzJh&mU5-Dx zZf1qI!N+k+2BGU;>!NIoT4*p<$>J2FvbaJYM#>G*_+Kyz_0wbB)Ba64nYmV9BV%+|6j%OyG<*iLax(xUUoYQz$6oGQhVsy@pU zrsL!$(-Dl$-$w35sFjH>zdvh(JLt$$VaHlYsdX##taH5dbS#1e(`}_#!R}`@o_dr< zR7}ECP{Rs*RgbRN@IG~|!6_uZt~UNqHmp*rP_U`BNJDnAz`0>~<*Ly>fkLDr2Dd6R znYV)byAgb=^p+B1X2<3y`THst!2HYrZOKguH$SE z*X0|l*AjPHyRM5QO&U=OsIN>+e@kUDPFdd_R3`I*Z&o6+kV~NLhBU}l0|vmHJ-qeB zReY9+5OnKM#0Yx8vg}(Gi7HuIayBgs#f?B#GdtiAT~(}>T4Jfl_NEMN^e*~U!mQ{nZP$xt>nKftLk|8@eJ7& z15!eaPvu)k@oz>VPcQD9)ocdRX^kC|cy_xYKUvrSGod#s0VG?=4;gZUCs@IF7>DhB zy_IniO(I{&Sn^xc7r~%?PDatTBXz;E5d`9i2J7KYX;rT=TXr_2_%6$Q>?5_^{o;x} zRJDV?eC+>cF^r-+H0r6O^6XPd(A^@Rjvyk_9zALgv-Wbda7egBT1rJ!7!;FV`clxQ zpX12_?oK;ATL<9OT|oCqQ=2;y+o9|C*mrA@-%JrE+#S3cj?DUu5)Q|_<~^6E z@md7Mf^UO~yR;ou0jQY8QiYHdB_t6O7@fr1ApIt>IYt;;=rh1pLrMHQnf*NfkjpLS z_oJJ(S)hBgxo*|EO2MD%7DgMEnn*N($K%n3n^w_nQ1`F%#dQ2@%^0{Bi|E#s2OM6` zw#6fz>+K0X^i?0|?cZYAH$Ojo#T3CB3zBYw+STyeZ~=;2le4cTv-B+leC1!2^|uH| z-?fJZlZ+S)U$|}ng=bnasDfDPrdzW)6+7`=cPOe{JFI4}eVE<9momV!mFrFFn#_Kf zw1dntd&$aQH$lS27Q6@P+TV54c9b1X26QzHBDzDwM>n=VGlbw>DF=hZ1OmDKx$Wq= z1!HeKxS;l?lWVqyf63F^sj`A)KTdf$ABG1h8N#0U@1HH9iTkV-YNWW;QU_JSoM3H# zp@8kQbM?%_U})RVFY*~jq!K=a4ALl09q_wFH{vC zeGHON{BoSG`e0&K(c+eY1I)3D) zA*vBz75Puw4ud3BH`Hb=FQF+-E^Qb6#g*Teb=DrLpfbh>nMb?bx>^^OXh~IJ=o2}i z4~iCVT$2g&@qO;JlXFUp?swi?`#}~>>WeGBDC=RMf8^Fyp;(@7s_{Asdy&Kx$?ejC zV2TQSYY4ImjmX&ptSQdjzl#YbeMQfa<3;XD@KN#pbIRVb$JX#xps6!wnYxpe=jrD) z`Z$6Bswv*a;I^I32Niak=Bq4Xyh_7H&`YMd%Q0|hqZSRtNsaody;(usb*IK(!7)1? zo2=K}s;7HxY)LKq`|YmZwvwE(l1dLB{MYP|h-pcU;2g4iVB?y;(XmyvP>B(FqOs4q)_M1Dl(|6tPW#b^OMsk znYzhwC!O>tj5a5mSrzD9z=YKn3GTXEGzl}FXWOT>$+APu|L&6;$m3O9Kj&ao+CMph zF@{kuh_`|;`(X+~p9;Ve1h_r_{Jet-LAp_L;6KoLUw4zza1(D3?9IjMXgVn%U0Fi7 z%&o7vQRzv1<|e63Oo%uIsB)^L6VH!ZBMP5@3V6h1zNJ+Dq?^lav`spqjj4z>rXjMb ztm4TfW`k=Mj0!^%xMrfc-X@%0b;6@xCv_!yV}!e=8I(G(r>T$2c_+>zDLX{b`+N>2 zR0M@JPHhd%pUfTm?8)&i`koyHWzAw)_%IiP#=%C z?V&wj*gs7GDmU)hb{>J%TRF0R%6d3yGZh?o*Q`NPE=YintAu$QvYKBSRZGrRiz*D(+qt5jYKsjYM*^$bWV*~ADMwSt5 zarHndf@P1;Kk_f$8<#UP0Rl>S&rt|H8~C{tWmAIQYz#Q)9U^GaoDLWMHs8$sLkJv- zfP8Pfes|CDJhZg+kgY0`!W#rRY0hQ=dZJtqxBZ6oiYD&QGz;eVxU9Cz9b= zn?UcAns#UOgR}d_#O!Q6ks?P1sulwZag_r9OToFOZ7N zaFH*F23KOA5S)^A3ejA3^3980O@8A?aG4$ zX@b^3i#3CMagw2v2#s_*jg2vL3{|om{fw;o%3l0G~f;=wsD|$t(*% z{pAHQ@(253#rw;%jVRyuT}Je7cE`)rWHB;pDAq!a8GvGnpROq8?3LGt~`xGU6xWKzM$ zQ~jvoDCqRiD`fH|X2JcdK=woL9BMgk&1vgq9*mF*NvgGzSR@+GM<$KYiw8!NDP@p$ z-j5UJdU&Wws#2R+#Uxi5WWy-$F{l`2jm;5DUAkl-51V94HaU`0PSQS2GW7Iu0cnwE zO>-o7MZexxQyz;u<;9mvf=vN>sYhmaRrc9F0IJdf z?*WpPhn2+V{Z1t4#L?bZ=~-z=GvgZ=SAzrNN(Oel2F>UPKQ&LyQUqbh&08#v@3LOz zF6Ll!Sn`%yjf0~Zbi5BHNaALAQnYq_mDiL77{YV$pAWR=vgn=97Z+!)emoYvA4M?Q zOOW2Ue&F8+-RvibSnJU1GoNP!MK-QR#i!blk(|1#$(sQ_ad;Ew3t8fy-3Gy{MpV#G zK-XO&QAQdRM*{DS!{}evr3AIRNL^4tk3~VrcJb{Qiv%G#&n~~yKhd1V-g`XKviM0i zQM07N2*_<%Es&e2TAKl2s{5!`+eLM1B&Xr}+FTzcex%ly1AqQGiscY$LX9a%7gmna z(2=qeuR&f2L}?TjhKwpTQ?&wE<&Z71X&#>tzPGR*7cFZ^znWTIS>stH z0FRKJ!tl*uyQl6KyZ}ZTZ*~n$)n&Tzy8Q83K_20M#Y{e*jCC98Yw6LZEZPup1N;bQAb{=6x58&F1(`Ho?*o*wK&Ckmbi52 zT)2BkIEu5&>?#F%0Vqnp47KCJa;*pbf9XGHZI@rJinY`UP|3nMhkCz4u4e9B1$oTG zHgCuh>p?JY;jQrxAb`JLGThNrAmH9Ln~Wxz~FFVCl6jCdf1kM`q*$YM`M_& z7bCik+`?ZO)b@CF4u1pUsS~5R>-YPm)pfzf7mj`66+$@9hMDNuB)^`rG77qflnQTu z+JE`<&;rPEA+*E~L%%Mnonn7G6LN^Yzl$lY;0zmkDy3Z zE!9C7^r7rkPf*#Vi4A{?#6}+u%cZN6ak%&7X#dsAw=Z{J?70&HwPq};>(k=5vWT37 zBEJ~LP6ZK_Gr9)w$t-s#1QvhDQ@hnB+4boi0?uzhEHXC$XPfIrn-S@DE&E}EXEq#` z^vp3EPomP`f0xoAT2|H|3WkLi;NkYd#HOhhCxv*ryttVcFUO<3tLy0vdpI_cd2LZB zyU@P*ebw$%RoyUmD0@prdT;C1?AT6rc0k|{yJ9SGUg5qHBX<`F!k9GbB%IA5;h2}K z`Qs8We7;cK!4YJ;Yx+H=#w&G!$y6KmU{&>{PIj5tHSNd}$5Kc8NNQ|^^Wxt8sR(z( zQmu~JN-h-W>;@q_aY&-0RriI=hLmD0<9~pue#~S*>&HW)jZGsJncYw|`1t0Tky$BY zE^j9p)wM%U;DsdQQ73btZKS*epYDaD4V2G#!TD{pB(8lsD>d}Y< zHNJDkH#AGplIqC#~u>nK$*2g~v9{R&Cq&$8$w>ZZGBd|;b{!80D~ zNj4m|iD#V5Y1Z6KO~FB5S1eyV zm3$a~LlX?_2xT3h>yEzDuA~%f6PTG%mV>FrUiy#`&e-xy~_vYZ>MJ~fzy6kP(e60xITratT8 zeCVTO_())e=F;JIyk8CB2+o6}qdE(<3%PkzBCrY~qNT=GK}CEUDnHk$eh&$1YFknzo|=tD zz#=s`L$^FXuB$qxR^>eVFar*L%R&hTb=;RS2^6+7ef&H^Z+NQO4j6ugU#(x zdnuN#Tq%_Yx2}Ih_AJ=>7pWmxz!IexBUMuf(7~yG#1bnKDHX|O65(kHV`{j3%d4s!b4~)vkT)!mP<@T3LCI`lP3*RyUW|%`?#3tg5!czIp@K8EJt6kF?9| z?0rFr&!k$BZNCPP$@zH3^GaM_dDhq%TsMoQ)myLyI;uzd25J| z-6`|4l!ccTItta|=b|3gz?lWqq5}1)ZQtQsC;9%7IyI5Yj9q~jo#{rB zNPJ&y3@qn&1AIsxCDpEMRy--Y0F>V}bN5vMy{~6t`mEesC%()b4YK^zGmJX0@&Fra zhzZ`}bz2(*Swm0^?z$4x-2?^BZZe*TE8hix=P1eI+iR8_4HJ|g%7X#`dfRZZ=OoXV zwrQd;zh^pmpAEzSW&(znz-aXw=m(0njX!u%x5L2^j*H()G)kCVT_lr}q+P`!1#g?k zSFA;9EJ4GDku3@_zh*zc^0P5^vF-u*74&Vg3=ccQv*r^Axox$L=@4SZM&ks`tl1 zM_)vLIpPi0_yUYf;FvPjfG(?(ZRmk)o+F0hKEcPEoCD!Q2+LqBUlB#;;yras$?3moi1T zL&ol;-mKnaqk;M&p9o$gP)XK>jUsir#U7K=b%_mLFcnJ}Q(WC&3pC_o%OX*qu4&E| zmeLcU(a|w9cht*3?2+{N_{7=+WAlsMR!e}65L=H%$JQo=Ns}v*;CmAm;hC+A&8C3@ zK*NZAF`9tK1BdM8C<#}9#0%<6z#=+;M;?(bBQs~*T#RNQme3=ASeNg%*!tZM>A?l-_kB%6#;ubka2z%C>Y z!V*BVb917&PElfRf>AQY#*SYpY$#~OWCC@8hTg_T@^pMQiOUm4jXX+z$h&CV8* zcC&W_?r-2zqgdDt4gD^V`h(aAywNcIKpkMGLpyD*4jK74)nxkS6X%?rY4`P>vXH4*S9 z??<33<2bL1g+>e|i>}8|ozDaG%(3oi9F1HXD10z|?IuoP-qo5w@^N-rZ>v>ig62pE zk5;j?MJ9no#Emq~i}zu4W3|$bJn%PFFjqS4GD2C75pq>P%q`s4h43fzAqO4Z@W3gk zg2qnw9_8CsP7bfVi?w${e?~fap~CoKIt^nJaR} z&&9J+_9f@hMSUyt97RyM{ag__!sr3^?)NFeCSVrI2F*7tNGuMSpwMM#@s0#eKJ=7Q zBG&DW%*Kgp<}v-Qy)$FI*X~BRC^@SjWWp_bUJmteImul74HDG9`BY_AJU6#*2J%Xt z4uRRf;B;dmAK8Xz(#vfd3YeN*4{^1ozu+VHs+V)5I2tz(vun<}6tt(<$HKiP^2TcL zbVxKR9K^rx@imH{S;Ok{eDoeOq^XbWTQo45*Z2v=sK-Cx_;uO*Iz4;;WPAx=ISZS^ zJHul0OYZ&pG94AAe(@=F2sV-z0OWD09lq;b@k?w@te&|B4k5b8w7)cDyO`c=xEDQ) zJL0f5k*P-WIq3T!gA{R? zOR7b)k*Tb(j-$;ATV$C|&jt_Fg$8N!3`R$7*2qC z*;0LCRoi(tX}<+=Y&g53N`U;QyKM0S9)B=BKHSDXzI&92iPE!g9{C)beCf_6T;1i^ zG~nz!+}DeIlwZxDc&+&%>TAGj8lFbuzs-Ph-tM^^)H^?#PRRMOZGmx2?N2xs&n$ae zeFOO|C-x(rH-BTc;bG->#q3=Hdd-UQ^tZUV01A2xEm=GX(=Q_aqt`TFfpk%zg0^7_!0;iuP4r6qvbHv8sT4?@WVj@%K|d zw{Pw9Ddk#==Bc$=vwWQd8nuDi*m;4^&(4GT}GkG@lj6ufGN2GdqHp`6;Q=?+arv)K?is- zqR0%D;!Byu9!o%+CQr@JoAE5U%F+?ktnkg}t({ZruNULZS69!(nE06UFS!Iz9uv$y zmyHHo6~b^=kj#ec<92#yJ_CAlg-zvT)~2Aq)qt1eK?I8EB3VRsyj0w;Q7XQAC(OlF zeH0t=QDh5Oxur`YTt9{>Hco^wKK9bT*kVUtdlzjn1Y9P2HO2EwJ7{{MSuLXYbrv zDLFknwQZ+k)6&Qz7nG8MGMlE9t<$hHzyatgko~Vd#*e8enn#;9SBdP+{RS}z04Cp3 zrClGQYR0~wj@`?7w8+mAp3{HST|IE;mogvg{RPu!OKxr}@y-rR`m8EmZg>3-LUF?N z?4N>24qj`TJNM_WcBiEdi}z87Gyxfjk`Uau1tbIu)z#4Q9qz@N82Ur&V|v0QMM zJP{{rDwS({(`lF6?r|6!LZV$zD4>o_s2iIFw%KU9i5zs*nA@UU1vdW9@b&cvI(CGr z4$y+*Bh|XA)T#)Nj6X2@1ASb;nE-(>fXt%~@o3SVIpy0-+UeE1{9^lAmoY9h2uIq6#$#AG&iwHWr5!~qb@?y1M0y4Q zHBij(8L{_UGS#JdYI9`D=b&BoltbGSES58}b^Ts1({Us`^Qdgpq zYwd8xHg^xY3ZKBIA*7hce!5*swbgZA49JX##1-FFrU7p(!eqOel%J1c+m$OCTs1~|D5F$ zqM@i^hCgDF#XdNcn=FXjjU#)UXx#i#V ztkdISK`1yCSjj8BF3gD*SQn88?XK)dj8aziQnvLH!1q|I1q8AU9dhQ^=@|Y9Ho&2Q z4rRXYzUx~DaM#qyWDPV03pORPEoGg`S076w6aOUHB-$BQmw5$k|Ny0I^`?Met(GDez1DU_ zBSQliU(MAxhRW8Mg1?IzWT=i75Dad-6KV#0K6r4s64yTIw)nHM^Nl@G;fCTYJn}Es z!FnjvS04c&b0R|F_;Yek#yAMx*RMV@%;vYGGPqyGha74=h|Gvi&MY#S8eq$T!PEP; zXKlUdEg(HEe3gcd_4oNL5mIQms>w*{fetbTpvYl$YNMP z6H(3!m#l@Z=fp>zcQBmIWWA+EYn{D#mS=$F&t z3sT4>$DEvACDl6-pQvS!tr`RIfa<=x;lS&jP8T8wb2|+a3f***Q{l+$0vb*`t;Im~ z`Eh=~0CicbBp7{&19PV76k}JZsRme(puP!QM16%X0vLNt#EJtpb}@+j8ZZDWn{eG& ztXex38Oi`oM!ao~MQh(pJ=N5?Je`jxAJWO7hY-ymE6?;pmKpi&!#J|nW(~ns7xjBR z$j;N*aC%oeY|B;!bbeL0gp%8D%p*b6R4KYr8APfkPO)!GA#muX^ICA#hnspQ#OJhL z$Al*ue2t8WOBx363!Sugt9Mc<3IJ9Y?cbAbVI6`ON_w?AERMHtI~m2cb^@8Xa~xOT zr#EkP^sO8*d5sncrEv`*dwTq4P{NQEtCR_p+{bE?qO_o&B8pq8o4WyNJA_!L%uY$b zc_C<2mVC(=bAv3HochYDo7HxvVZBwM>TRka*JjCxYmYF;tD}@v=D{x?BhS6ApEXzJP#DZ1zeb_4bf zNgv)kkmuU}8qZJZxQT_J7li4fYk()7UeMFf0Yc~*P^bm~T8qXaQdd5X0acL%g%DPf zL60!n)=*@_^Pcxa4G1M%Ph(be!_`!O?q?$1Vapt>?RhRba<|2kWs{nn2FUAp#*{|qU(Ii`5A17xPxKXzPfLV4J__~0eCAP z;lOw;R-}4A59Z*xh!E?R2XGPkj1WLB|-n7SN#|^OAs@3*#Mx9AfIuvuVYJ z5B^l2@4|;It-Ig9OEzI|)x=Sjfj0FnHTs)$Fu-rNtL=L=Tdp@e*lx)IWVe!uKpSUM zJgDTg;q7KnT~~Wk$Hl|2fMXcM*6DiXE1hy4mR1JxqQ%-oF~QPTuAm zoVm~+ls&7?^GPv1(Hw-w34AN8@wYp#*jxR9b;k~FQ)q5?57ITcy(q8OY=XL!%x+*V za7!=K8`HzD87R!J#+*jXo%Y})N3NI^{FbeDFBD{`VnE4rl?`HXM@B_TXEFs)* z`^!i>Hdf6XVBXH6O}>H);}*hsTEVTWK3^c^fh(X(P9G#~xMijtpWPwIvqOPu-gaoy zGpigs)629oPZxLpm9uusj{h#7>QqE!2*^UZwlrG>TQK9LPw_tp_XI;1z1boU?pE zNQc3wT|dl?)J=JpL2>u$IpIaCh0A&40EGp!462RzDizI2?^Rz$HVM`;mG@vm{<|fj znC(ZtD%^cteDAKJ_X0Y$YSmTe^NyY%Q8p_Ac4azLoCEIk46cOgAYi_71 zSyR0~#YVxE*CD_H7#?`Vq|t4T@S1ZrI9MkH?u^E8!S~#>szR5pe$XV2gWqSLvbaOV$>Qhbw?v8oZ?Alg`MTQznVL=bK`c%?#O?XKZLC^MkJ zSM2@2V>7SjQ*Tf~i&S=^ztToVB53nLQW8RX96j&nG>G zett(BjlQQ}Nmw;Eja%uPuh_?&|FGV{LcV6*v{Ie3yNLOHrOr+OSU{)0g%(1Q zMyZmb>DjEWWL3ASRlL-vmqvyie;5_w{-xS6{j~?o6I!f#W5Oi)(l~_ql>@#@N6}ju zAP)cr9+jF%^d_SQ87@z%t@pLN51Ec0_>my8sV)UHUvH_<^U0_;QNOsm>+@0hUW7*1Mi{PhINIMoZ)6RdV+kfzrxFGe4jr$Xs zR-p1-QgwkDjXRnsFsl=U#EaN3V z*9dX0ZeFXpfIQWQ`NhcEaaPe>Kp(vVJJI-3%qHiC<13una0obZh_MeTsD6+}0IlPh zIFmzDbbO=((|La`WN9dyTk|7C7LBH8tb=G`#dJP1%%93Zv|~jhm!7t+ zg0^n$?^-?R_lxe?^$J;1y9-wuj@$?eJER08iKa6;k zPq#sh3G&%_Ivhe(L{Pk+`)o#3sB{G7JD`G3UKFzofa;DzmtF7EFKLqUcTKse6ss`55%1}Z`#NAdmCH5|9RXy{n-1@lg`G)jEs~o_Ff+Czk2!h_3qKp z-oZ;~-QM}`{_$?_-_zcIJm~#v@1%o=wY{@-{Es)+AAh;br`cOnC(Pfx{f6wvXG5mW7|NQ&>r1N!YqDKe2 z`_K1Z{$Rwnmrss<-i3!S>*IcRd+Ywr*Khyxv zIk^yp3K)3>9{K$2Ad8!Gi%p0*FOXGpgc;l0qAR|OE&gP#QkK~B2R&1c_PoIVg9JzT zt8Zw*UV3)fZkt13gnP#v`fLzMbUoDk6!_=q<-CHs5ItL6@O`p2RZ5v_LL?VLNO z^&4WFbrVGl^+D)6?Lj?mLgsH|H}l9Mjq zcY#m!>BZ@*WT^PWpJ4vB;t-ej%;q}is5bG9bA6w>%IJ2gP0qfCho=Q~P>W6jR*Yv^ zz_a#9`{Y*eN|9-LWaupX#_R49Q|Bx2FJ%1+iPyMh0!QQO%<12=lz=yx~hIC4uSq&C%V%2RrnlZyRnU z*2sXJNlWH6@IB!Cc)CxH|H=MS3JWkZnYRpIt#Wp8k9{-XWLo@^PcPfl1KjuSCGG(| zcSTUP?CX-A5=zAm1_pkHW7-2Objfs6daQEEjiU=pk3(B|pYPRMptLc1`ia(>O`OFSo0>j$cTO zWQ~hAPy)N4u#H@_p*&Fw{Iv1C$BE(iEVYP(uPm7W06m0)5)WM)EG^;5xoF*)`;Jbx zZx!jP3Y9Gr<*MasFH>`0fELlk|r?I{_GM6>$dnL#!Rd_uAM=`Rv{ku@~*>IdiMA^1? zd$Pc8t@|ey0BTy1Gz%BGi>METPZhI-G8|A>y8BNh|8A!q2|TLGLFPWuaYyU-DvD6O zHF_1TmdGE09^~;~DNFx$D5FU&h2atnx>m^3!i~#+jT0lMfD(r;x0K=xp)K5HF8#gS zl~A~lLWt!+KnaGIV~G#m)gRkvP1jW1X z)-(jRy2nsDEW0vB-2R=%POxYEVZ>6u#;vN^pW1pIw7m<;b@=LFt8E}^A9#y`KsApIYFBgl}WRy8#P@KqNHi+pk>5CuoljHMYYlhuh{N%M!7X zfks%WWy;F(G2VA5;?YyU^3iNKL>!N)z%84riy*Jc=h{%<9@h=#!pVVe{W%7j+lt8v zR!mNctJ%c`#s_k|pbINziP}|oY0Bt^ler64cUOU}ries(4Hl|HUgR?hW^cpNNmWaU zlN__RPW!Fi+K3s~!e>dhAw{?@jf~QxkqVUDs9ya*Z!?A}^O}j;wV2$wWNHCgfEdYL zITJ1KYf~Go;PV{3@5RY=19PrWF`cEOCxnw&Yk>aj8Y)_3ul06nZ8Nv5Pv`Avk)1RZ z@9^cvF*SrP9p;+m?zl+0Sw=#EfrjGSnS&bHZPRIlR?fE@nO=mpzlbm%+WfUvJ57a^ zMpM9uc_i*si5KsQFtu#PYPTg4BP#UsaSK7COf0hVsPRa7rl~shKhgnT8&waA-N)1! z9K9Tz=Io!dbco~ulsJvV~w7Ks``qBru<$*Fa^yy%cjL&1N;(t6KwRj0r>*!3Els z_N(9-TIeuMCzxP>rM{>A<&3ol{#t;0rMb83PeH?Cz?>l9*>GH!xb(}I0n{qs!9G0! zWfkaS?NecDU$Gc(*ni~q6Ll5WTY(oi?u+#Lc5eMPHA2tyw8*(X9o(>2KUitO+gUKv zE>VO#?}6*T8Q^#3@Bf3D(bA0anrHxMJ~c{H3(i(z-|8SVSEXWcyxT%nR=DKK^c$_u zSb!5SVp+}5a?br_Lc;L1ZU+9E3KN}xPyThc_@~P{!_b?a++kQ`N4d?dIFklaKT6URjPOBY- z>z;ja(uek(@J>z6$VSoGBPcMV59Cz!6EnhnjCa(qkAYzsCN&rG{`_W~ zFAfpadBDR}|&2@mbSE@x$)84A0gmXB&_ck_? zVsf^T{f3n=HYQnqe$$^8_YD7KJ~LxrS*qmlW;9KIqaxmaOD8#`-6B^uL?68T=al)p zH7$Bq5UFNlUE4iI;cmESH5dT+Lay{qj+Sqa{{DLJkTL)6VwePbWxe+fcwXqcVJ(vC zs^EBx8*3wyan$HYDr?P?5kL?|UQ0XDacK&E;fYHsFqcziNHptA04~~{f@HHU1K?N8 zl6Rx&EZycsyR*C5tT(^+(atj!v8xhC;aJgM2bV ztu*KpyUxGUHioZdbKtdpK6rjKeoanA)M_>vwkSsN^}(y7S5IC&fBWLq)1RO3y#-RU z|7?Hn06d`o=P-YlPI`mv*NtL)J~iBW<_$M?RooHe05JE{E5lVEo{ceE2E{$himAnu zU$e)wBQM5-*${T3(kb%ZTo9m91_=+RuW5*b@p#(4!X93`T0!9LYb*LavOtop95b_> zY$wXg-NC<&Dq8NP3$VoT`v0o{A+2OGN{_mvl598GdF6OK$s0N~P!%iD=&aWtp-;ys>&i+bRzeKKpqx1Wz->$Np6|P5TD< zf*3#F@_xh*kmphBKRXvO5DrPu6jZ_-bt2ksXmY5@Ip>Y*p~B+abT(!~2FUDtRuz#< zjA0PX5DN(R%?CgkTFmBDw;8^};xSXdTX?{0GOF)@*ZkU2{T|amoLkZkW`Q*7nVH6h z4UKypOtaJA)*#rgdS~$c5Nfk3X4*YV&mLjUf$j@aWeEYBu%o#?WwG1()Ky%wS`bXFwJ}RsCZD(%I z#A*HO-%cUq-1T)5xXn3~kRUp=vueBfnfddT7v6$iY2z9rO{u(g12SW_Fq6UEI8I*z zFRTaSfhGd>TK$a{838L^!~0<9^K@8bfi|fU8OrmLd)hC?X3GPbBi(Nt{Q;^_L5oyS zqW?fU;nF;65g!d|?t7xwn)Njef}N-JwkaDNINUedao5^wXRG(UX5;N~DDVC9i!bv3 z$RMT_+Hbsh2khXR;+x~vUr*lj-}HChY;4T>kn35@z7tEw5K>ES|15{F=6cw$Hpx(d zL9@Dj&b9sd*zDLc0gePLA%LTUftx94()YtAL9v(n3&}uf5a>2&^f&O7ZFd+noyImp zgc3~=b5q8KdgN4v8FzX3hk$R)^O zYfp8>_oL$W{Y~`4D5&_iL||-H`sVO9=}LOH$Tv; zXHMVfJ~9n@SEfbJetj+z!JCWfaB7h1Y;W{yHZ*`1Uz&Hl0$=trev995ML$q?y0-kR zmk+SXz-zumBlpxcGprH1{n#xQZS5=21mHV8-9vIKjn9^SPVtKwI9uTegD!-Q{&KMU`t9SN_n$xAJ2_9R+Zjpdt1Uve(b#l_h=WvbkbNJIepJeCd#!`YZ zZ{y_wUE4rR!R~xPF5BnSRmb5b@W8#LY}M*LJu)p^E-a_LW@yl4gtKNu$IYMOo1gYy zK7ISQ-RD1-KY~}P?e6oV{iC1Fy5sHbYxT{+-tN==mwShY6(70x@+0X`ZhjnvA8Chk z3y8zLgTL)PeQSWQ5C0pM@b%uo(f;0|d}aN9zvTS~J75UnnfZH|oEpZJ?MjnV)E|&{ z*Zb^U`YtePZzUQ2P`=2(vJZz~KhFzy@*xo5-PkajHh3m!AN2kONNPU4>GZ*HAjY+3 zhR{c}h3bF$(;5lc>cCDB{L9MQF$0B9u8lvr;KMzYBaOTl_S8ktRz_m$e;{g(pCj7} z=H{-q@JC9Kmr^n`&bUCo%vL?;j0xx&2|hJcXoYQu2HdAGnbVC^n9Zq~SvDLL=&S&R zF-L~~ge|x>v<8wE_LIGL^D~^ABX^ll z0G?~Goxo8!M9;P)EzFtpi7ZJAe3=!Tg52Qzs9@DFL@!(Whq?YfOwwz>3-h!Xj;DlC zol^w}YIWp05rEM8b$DK>P{(A}MryK?gG+Vqw`&ND1xt}tcMCzq^~-+&oW&OlOJDGa zyT#oNQ&#!UwXW#!G95rs^WEvsMb@4HhK|si*Ckp95L(IDyob>VMrLGw;bnns*Oa7s z(OAOTF8vu#M2H}ylR^KLppjT}sm-oohd%-Xj)(7{Ad?FraPo}inkow1xq z#PrV+b2#V{V?H)g^!vz`pr%2-jK-olei&6CcA}1r4#LpHuy!r3Y1?&0i?+W==9PLB z-h+XEh`TT-%kuGkh{B~Di(Y#O{9FZ!4ho|VF7C)qYE`9SNA0uKGChIx z!&YtAKEq#K=ZEXni@cV7Na;+9C~6zjWZ*jh9LlWqne;LjXc>YpO3DPDs{J&`a}d%x zJH=9G$&Tw{OPLY%J;CA@9db#*W6Oc40$a7x4_Kz+yo554TnD(*3MNwH0!m`nRIVuo z0oSmbM8DY)Q)P4t0TLKn%jm%f0ocK8(z{5EI9=h_s9CMJ&aIjAz9VJBp@5(3A=F6g z`G&|hW&J{sHVB0CUSPwd+0zEmx_N^%3e;un*PHT(HExw!1`n z&h5(MWbo{XQuP4V3%s*duFdet|+yISVerC7f zr|ibBRWjHd(agMhWZ8U_I;9;pU1srZHliH(C3}jMM{h9do~1t_w*$#wsKQt z@~t|+cujE#a5By4WL!SuWKQnIq#ZFAtn*DxaWzxMtU z<5NKmoG=wFDeb1DVP&?IJ|c2m&u~Us9@e&OKo-F4h! z@jPeZMnBcG{9`WUh&jkzB}e!bsp42Q5V$=x7%9k4drAi+KH0fiA;1XKfks|z{!tau z?@JXBp}s9d>1?@$X9rh47>X|iF4Xg;l7p7aqvSx<=YC=~9LIJUMX0jH2W2erVW0oT zp->%!XZIj0X2YpH)^Z?Cg3Hq?+m1Q$Ogg!kfdG4=XWj?a84daTzOeF=oCze+=J$bj z(SoilvfXE7(-a{5*b;)4*HlvIIO;01-wdH2-eB}NP0p%BTX1ES>8YJEqYnAAW=7a% z$OJ1acMwo0#kJp;U-!rFLrTfKm{(8p11O`0DG#jW(}g;cwpw*-!;jGp;kY}XbrlWi zrO&D18IXJc3^QmC<#$NyL^5j#uY06vdP!}*t=xxWSw8m%Z5mE6uB#z2@?fO~GK(M5 zbw_;4T(H;8l(xcc1{=af(5VEt2RUC5v^H}?5W7%#;!2sv^ps3Hx;4J~7&-X!HpHWD z{!1rG4S#vfYWOmFEy18Oml;R+HDpovfWaxq6=5&{^3JY;|gQn;B4Ug;k`znCc0BG>v)xjhIA<0 zkr<_ETwo&HHlRvma5gX4{B^2{Q-rYuuWzPS^D5?nI813Ayru5zcgs49$pymTT@Ljc z>vsG+N+&l_O(4)^)#ocCZGizCb4jyu+=o8)U*w}%apa4i*c}2P4eXY&{VDf98aRb? zHCVXIPQ_tUVCiw=DyRguKFz)Gx7E^%n~4OlS{1;i46GwFMI%gq7*7U^cNTu=Eo?Bt zGoS>Ghd{a!MH5VU$bf62F%~D7vL%*ez;|KEQ!yHO7_K%PecNEXTZ#+Std2C&Mg#*; zlf?vs5*lkH6p4xLgeuaIp2F=9nV(y6M#Kudg7>zr45{-HaM_(~0#3M@Z;;_YM%$Ow zq!&YqQBT@0p7tI-0B`59k)8{R$+VS)&(aa7awa$w`13$&8Se75oGzyx5+yiDC^UkB zXU#z`l(JICrq(=-=I&UVW}|dMQgOuU?mC=hG)u!VR};>L83};q2A92}31(<*zEzdn z`D+R=i4-Q}6zV6Zx)?=Swju({-F0QZ!BJwabP`Hf;&@vr*&+r3fpXVOgoM+nVKXGtxTn#5<+|@l&0KXBV~`flQf37D6WahY>|Fw zffC)S%?TZu(!R?OvvbVPmrpOxXGSh;bzF51iQ^_%IZfNL6mbfO65NdDuoX{zb~~BJ ze^FgpYox;RwCIi#=}@s>swBXDSrWiVMZQn~lmuuHG01Tu_L`x|(L^YT)G>jG@?)bi z+#O+EJP-3Qm0>|jbem)etkggJa%7#V|L)w(s}0{5kf9VT-cTA0{-47C-f#WMs~=wO z|NGuk=gqy)VcU81;|h(?J+)y7Nv(r7wpR6%?ZXtj>HJS~Al{ja)ITt+o1t93(oqZH z?0-)3;(Z~yD~j3GHKn`oeOzawe>0aNJ;tXe7*S4M{O1gH zgZPM(4tMBEwsz~i5=1rW7I+^+ei2{U)%<-v9Dk4xsg!JK9A9D;W?e>-issZ?%?B>g z%XASu&WGu*xZaisPBHj~K~v~+k);I%Jw3kh3$Wq-jiF?nHt73%j8>d%Z~+>IeIaB1 z8_v#mVK#!3`~qZJDU?qgVYF$%-&iXsOvB?4dGm91#3dF45WtQnzzpRntj$H1?EZZ8 zpN+k& zbj;8fbtkI&ta902j%W33;HLMMIJ6vPT_4F#$;$^_9$Mew#qqsMG>stUBI2IiG7pW^ z_8N1)2F${yRWK&E$m!kP!n_K`7c}B}i2Y9l{ZM6r>xslE@^x&QeRjK=%s| zxl*ik&tX5B+2mKeL3~E=Mxd{hSx^9pcr9IfhovUvD%LLa{NA>Ap?tN(3CKqy1XEeR zFFGtM^{aHf*j@P^$ciZ^l?g6cY~R(u2_?F?h(>)15iQuMe!tI6@L>Z`G!#K==StUa zN%(9eV^+;Bf_@8;PodsKJ0VC?O!zlh?9MQ$c4R0E$h=OXA@jg(^=B&9apx88e8gf3 z+xH(C$G1z{r1MC-txw-VOAAc3PVDE?XoL*UHoB)q`pb$<@qB^$SiA4n=#Cw0${-qG zJ*^nLoI)6lDonr*Tn)zkZwm?|F&t=!%B)DrR8#XqCe_LYF()a_~|nvHOj! zRG5`1j;AGK93zk&`S>LC>v0~pTz}r29Lzw_-gtBTX7J6MlZ^`_CmF#-c(eJ`23B0C zRcfHqn)kJq{b1Eaf0II2&HTVEdY7i6U4P0WtNIe{S`pS%D^POg$uz_g6#VmkrEvFxnmir-TQLp`W z;@fsqi4+NDsmb0UFr?wJlv!uK=&sz6pi@26*=0T)RPhFiJtqDDKyspaW$U+0tgxf{ zmL0|s6jva(0#nFC1HlcHS(aA>|h7>BPt!%m5bL)4m8 zxJ=n6mNL#zIAS-M<*2bj6>Nfv?bERElKf4hYB$qTauV4Tj#o+HPf%IT%SDfaBqXJp*GRxn^Ea0@#F_P-C>9=7ZK3Q8iU(60cNI zs6ZV>itFQbaE;sdO1AO-_emoa5^-0 zQ7W7_AQA+_0x&8kcSZb+`g}Vo)vG2t_pT7s<95vRPLSugR`pBq@LSyBK8=l z!#}#*_icsEHY=+l_c>{lgIj$$I9g4Zzu<)l0-Wy`!`a|Uxs}TVS+xr`ZzN?Jqeu(9 zR|Wc^RHc81)$l(xce+ugtn3!)Y5u?%n7B;u2nN&A#9uDJs!ux|Ku- zpe^mTiRpym|VR!P^qohqi+%B&)c>=g% zH=mtnRVkXw#CM_05LeA58Y159|MLek$zbj#?w~Szr@|66DV04%9U)bzL=ajb%E%m` zb0H4fZ7N6nEV$`f$jiY+8mK+2w1GO2tz;SJ(3E{cL8tDVLoIWMDXu7zQ_DIPs;!qAYa&+RWoA_y&edU~Xx)s;IDGd(Tem{$SgN+T z+u^CUh&I7Hg-Ru*do#99sk~#noltbwF>_0?b1lpOQsUmK2yF}kp6I}Z2%7dsl1E#7 zT%kJ8Gt_K6D)D4}m|DAy!~pLz{HyO^9oXW1R}~=v&i1ew&BUbkKzlj(aJ_Aa>#0m{4<7G($8g^Ay%qd(I*jl|?1dSwsZHNGY6tiYZ^Z$%o7Q>@rY6fM{YTi(IbCT?C@Vz~3(%qe{00l1+Q()Q5h?pNZ^oRP%lYd$Hm*uJ64iBBOj`DA z^bsUgWM(lIj6k;yQGU0;1kuN5#Rfm_pBN!9!hvOVtdOyqcjAZStHUi&P5u>2#o3!n z1&^EC64*=A6(o{m*OiE;04$hbgL9s{F@ZcA1oLW6{ppu_yp zr+=KSzaK3%cc;6)(D$!w?M|waaH|4YuodKw)>f9G>*0(t2f9pCY^+ih^vbrXyY_1P zytwg&!|H|*LRS-2M~=0nXu5LPMTJ){c7lWSrO)?vjC*(8>Dws64^W2-okVmGRUW&3 z*u}oPYl{Gk!nGpuPhY(vR{@5z#qy)5xIiT<#;L_(da=wc9la%LZ)z(`LU%yq#Tx&r zI|+~G5{I+mcm@a5A5q0nts;~ycSz)(t$a%E8po@7bI+Gco?P+cVYqnH0MkZ6rp*FP z<@TJ!eA!AUqPT2l-xLN9n*|^4lw;EAS@WedI|?)5i86hZb<4I#3RBVA@I@Ng2FCP= zy2p-4xA&F75#X2?DsbLqd{SrV`tcz*E16BTM#pwt&OGL#D#h9Q^vRPbkuQp$eamV{ z`q8&#R*5bW$syNUZXjy5qEfOM(*ypA4eXdI`!X6+wtTd|Ij|N4kn5PWvoVAt#IE;S zops~(iEKYk8atr+S z8dzMM=U&X(;>KO4_l)awWseyHXhK|JVu^daz?MXg=#5r0cP&^0U5%O(9@rezSB=~_rO1y&UHR>9*Bl}8`;@WR6Ei@-%9u1A5gEVH~I6a zRhQ7H{=syi@+cnKjO%UUV3dTf5=K@Z`1-@{Mxa>*C;b$1sNrDqZL)OR=70`H$RkQi zDRXU?klko2$*-=BgjXc*#=n!^WD*zIa`ne!w?_(ftjvgfBmEVLAzzvG2FW5x%a7~ z-o*FR!UM!{Q7!T}6-B(cT6bY++4u@UxO;enOC~zS#kwC4fI1&n9QtGXu?b;r_Hy zaKC0M=j-8_IiOPW_s(nn%s4|sAnnFKcD6jxsp>|gIK=BgD-U7I!)GNuqoA`MR}G={ zWAe$ITHUdvxvb6EN8Ektv9ay?3e-QSDx%d9R=+@`hHy7Pgo*zUh7DeF8NUDsk^`^e zBP;m3IO$OKMX`mFNs+UxceSQ-P3UYchz9HP(cXArSTX?H31!##GBI3(S?f8Tm7LHh z)Q?cxw2rJ;IlJUk>N1~?+?NL?Mg}6pZmOzi> zWl-YsyRvE|$j`82BaOWlqt#I|aa2IJL9yi;<55~GClDf1zu&h4Z>+I!%prYiEX0LT z2}rLhPe;XyWOsADGKB{6Z9SM!y|oxj&gk^J0u$awYXZ~V(1hT~ET9Uf1bWEnqrW3t zgeT%9zAUZg%#aoKEMScOpVpI^`LdGl0+7YQ)s%dm1{WTXc!p19MnhFox+E7mnFNnr zm(Z%KB$WBRdm9@`F*(~{rfnld&aUWB3#ujb^2v{{4qPsnquqla_KtjB0^-dqPivS| z$6yk>X$C$r!rPXu3?!bvGQ$laMF7g^MeE+2su$4&_8ddHDmzX6^gL&)xoLiln3;|! zq>b5bBV?rY>@rT7M<~|9B@0;ZKPBhh*Sk;lVlaO4>gnEFZtELra38k}+dplcgup&- zjq$J6i3PXM^Q-dxEGid884%zvGNMzVC_72|ZKvaZ(KLd>P$XW`hgP~2&PmKV$>m>0(h1)39*I!lYv~N^ME- zAm3OpBLn8M;cSrAXB$(;I}wgy_f$S{vGH1s2Ggv)kFBN0CaNd>@2tqo{)IEXO0V0T zI{nf2@Wn``?=&ZsqcjX|w9I9Wj18uQLi3q(t0V3sxV)>Zxdi71n^(pPIyA!7%4IUr zK3AV7bu9YrNgo=EGOJ~f)joRl?wUHWtd14gTq<>JQu01iS!A{Dd68dPjnO4a?{4h| z>e9}xC*^Et@~Br?$9+9@Mr6(ifO)oTLWa5v=$O|d>zXX|#fx!YuA@6~(9@p)WQv;l zxxXWyzB@s~FW}PW!QyYq3c#>FAT!s0C5$XBfLaQ5a6&WT-#kxR^b0pUeNucTICcGu z-SV^|>*L(;LLdF&Sv;P9CV$Dzr5z?W|I2zzGJE;?eI}Xo{pm9K2X>iMw@kk=yfKhT``h!(&r0e0PzyOm=@KpcDhF z6{5$Y%uqOFtY>sI{<@a^vQAoy|CdmdcB zcd>O)EwZ$0^2VM4%wHI87cOSmRRS!gl(tJb99ntV7Si=iqe5jaa_46uUiBshn z?Az_O*vSVSS=hR2eu1i)4yZ0c?v8H9EXJSXEmeOGimnU5VOz7zE|)>e?K%50@Ee8?wT{ve7LYi zY?S|Vmh}TVMDxitYUy$d`bYTR!sO08A1g#m6MQ4f7v zgXP;i=8sD50r#pZQgx$mtRKMwhsd({7lgYixY^moy=ASpBKyi>(~8?m92bLad+FIF zBn33$V``29rEcA>paOaVu9*tt3oA%kLKt;`qr@e>&qtn`6 zn?c<09@j$yufZ-dMdoRJBy6kfo6#c2XCZk($gv2KOKsO~b2!9RMIc-D=c|w0YJR%t z;8r?KMcj{NC1H1uF7iF*fHv?w=1`!I5ZZ_K&N+t#O^cr4n6EF*ri7ngrIYuA@rO|_ z9|0HB17^tjG1H?b=E>o8Ix1FmDi%HW3g}2X6&HqqEU--Ek4G<_yA8TZr)QTKOFV#- zzwlX|cd-RS#b9gjG(On<h<6c z`{vVkZ+13j!fV&ih=cUQkJGE+D_W(4EfwJqtleZb@}e>9BDUxwRCdiZvvK;(#>LD~ zy*55VGR)2t1)$m%0kBUw+t}}5pq?h*(68eMCoCy5H;aF7g)b39g%8fi%;)jVa~84d zU2xb9Za6No$wGe}W=K zN?eVaFYv1~-^)d!Y-_&dsYvrXG?tewuM};@oHY;H@F%L%LUr1u^>kE*KEf5GAju<= zfjE5|pA{8sDIw?J^PL2uefUjNp!w|slFWVEHD1^?cB&u@cdq_;0r0u8or?TcY@=&c z*&D-$E+0HU#V|k1+7hB&7^9D82HYHyR)3ORoBPRj-#5p`V4ZK&QGMH85v_TK0!()D zc2}Fst0Qj%OMChtiP~oDBHQY8V)ue0?8WRFt_4ffU+n(hZ=dbId}_EK2v~Ud;K4Q% zd-T+PHZc%1Cx4nv+!dTa=stJL&3fm)T}x0nJF4?pFNeu@WoQA)4wVDzumly7P!W#c zLJ_u{6Id(&B9O=Jtl@rUiMea!sPh6Uv%X7<3|?rjetu|ZD7EJud|b_w}9H&rZN^*$6nLdH`e)11#Dh8oPFm z%Wir{Pw6bZ4*D)i^IHvN>Y-&AY{yz{ar&fwzwh%}*d0|LncZWxS-9*-M8ZQC_Q1Uw zs9fbBKBmCjYy(`;0GST`T;RZhSd$GLS1Xq9Vi!(oPyM^`;HJmAdKZ^=_+)?o?a{&h z3%G*+ar|bQoP6_%{`<;s6XG1h=QZ1@pxkKtO9aHzCmR*i(r7V)Lk-#iOb3ttrOK)P z+K4;o73x(*aP_&zu@nS&_Q&Um=*(HEC;8PCO7!ruk5t(l77#qz9&lzMEpgBBM-_$! zXyK+~+k6i#{M_lF`c@qF(DJU6opAo+v`^gH#umG?giZof=Vq);W5TIMWQqMkHoh;6bZrmr&DIJdw2k z**D3MF$LCIrr}Ya^CWkX1obiVOwep@WOL9wu0gtym+^(U}#Z^PG z49BG6`qN-EZNPEXmY$@dDapHGI(iSN4gCKIbVj(RttHCzpxli&bo&Q@=%-%{AU_?! zKf5Et;I#YSbbyd$zh!4)tsW1tgPs2I=1J6tc>SOtG+^sqlG3hHQl;^T?Avh;|@x|`iFYqh%oz8r>&Jj;;l{Na})fS?Ozh5)l1X*}?7v_Em);}zsTjVy*q}6VTZEMnWz-{(ESyU- zgd@02^6^_DTEyLzMhQ_*A>=LGM`xbX_MYNf^ zl)WWGg3}#h#Pn_nv|S{wN0;stl&uNMLjrq+m^5Jby6mr@nFDjXKgY+C5yGo@XD4V% zoB#7^c2)8eAmSjIzRPc2z^BhOA)HU^ z6r_^(s@9My_AgW{)5}VAq+(*|+_to|c;8RELvSdukJZ$m#=6juBWg;soUtY^l9`wK z8c?iSDey=&yZ<`cj#Nz46kwFUp>FMmlItr*etTRBnhl~A+M zv8`TsJB^Ybzr_N8lN#5-R>Xf8RV!wez&OBCw;~#$4X-srm5`;WZU&aCSQ?bA^&C-& z;g?t_?m{B?ikRI?mOyM~(?w6HP~B7rj4wcO)$S}3>xeScAxu-?40Ag@%1}-2izuiF z&>$Y*#lxZM_(^G}&0Tyx%_cv7yOk)^cJbcTK(3TqVfFDH_|&R-`F-mTLpjw=_tCr6 zH@@+jvt(D*PzaL%gghCsBDlX2+iiYxUk^N!*#?}ho9mhOu$$I`gma>P=~k%x#tsaT zL2T?Yaqj}Y%@fG?Zmu(*@9ZZmb&0=JUOb%*uVn=FvDxIKG5xd&@l=+yyg10t zjKsFtroy#S1C3AcxQ=GSA&5>;l5%{`FOWNoZhimXG!at&3flZQrvapp%+ELf%Wuw{l?GOeltw8dB*Gl9v2$^vk1&F4}DV3}$@{c}nOf_kRMmL;5SQhsZ9< z_!q+`Ks5ZT4_54(b{oz+y7n+`!f*CZ$IgSTFR*T33<}!LtEDdM&FI!2vS-anZS5I2 zjRZnfuw|!$Na8gd><9OIT&1+a;G!CJLB7}=J`l=)b!G`lYm=KoXl5-Sp3_}@HCJrbuH)9TPfTT#cRdj ziafga#jWD3fg&{4ri(N19Hdk95H_DFI}CT{+Vua)3sH1I+-JV!JCL%iNwW2BJRWB0 zsAXMGl|Rh&J}GMo(%o#@P$k-4r@kR|QdEhfq}oO*pl$Lqkw?J~&thuDnJA7Q2yNBF zNMTYb0~Zn1sI!IQ7G=Msz~x|>ujrRfaj4$nEPO9us_m@A09Qb$zm1oUR$b+z(hNKt z?uA+A$<_yJOZK@&PkIA~5Dz0*WwD=DRT6)d#Yw2)HoYdnO(c*8Cuu$u)^hZ-X%n9h zC&)|A-*cCJR!Lgxtg`*V)+ssCcE29oLfr<$0-Ejckx=FqmBk{UI|!5HiT)b7Ih#-z zX$&bcF|>}i2G8q)VCNvM7MEG((H^NFPBwxtaD}2=&X?>Xstr7nO{V20q&W9MlBEg& z_A+=RcygjBeftjBtKbn_rKP@jaXOy_A%UjZj`-Uzgz`WcoGn`jHs{heZak7pEidQ? zE`0(MGi;*$*|j~0$%gBEtptL0rU_5iO(vjN;c3c6bJ?(aFn&b>Kq+uQ6D1XbG~oi`_%rGt(_ z`?&3iI6DnZ`wqCYs@U@T*ePp$#3gX~?M{Rkk(QOTGd)eIQ;IWX`YM&xL9?Uf->~LYl9DbMgr95E27Hlxsfk;}#Z` zgj71$lkvMDl;$!BKbxM7ufXlQg=~52#Am|BmG;d(I;zjovF9mW6Z@wUmBm^D(+eqv zEi|D6LikBuK>ZZfMfh>>MbT2DEa)mNirLjQRbYs8=wH`#TdN?CYl*~~1^h@=spW&m zd|!!Kp~w{o2!9~aKwqp?jQ{s*kdv#*T>4wYPPY+nZx~E-**ac=OkRU=Cbe@3o5LoW zzhCt(UQ8y#ay@XjF3=1LjB92ATNa1w2n<0D&z?o?z&4Ma?TFJpGXi4tv_loe=&=mX zyXfuQ@cz->;6+_;cgs>(Sd_>(R@?w|!g+`6#N01b0QQ&h=DkZWMT+;{l5SfuSNB$RHh=ABU8`fECZg}aAG=E6uNC#{gnVS@9rv9Hyam;~ zn@3~IB=zLVXPp_&aQG9@1@Hg}b@pFDL^TC0PP2<_@;rZ^*~aY$pN=1zM#rSx|4Id4 znh$Zo26A)3Uvw7Xud6IAW)sMW^!TPin!7uR zRboL|Y!%r;P=akHyt2^gF=SP-)2ab|Pko=+>d{>o@k&>{0+0m^6=ky9Dvk#0IM2j4 zkCJ2m^CUDmy#N=E{{o!PAD0Z`4lFM^T6ez*x@fOJ|Gb(0&DU?fZXf^S>yvLf@F&*v zTd2=n#!TP2E8;=03(3aUUmxuqy!iTSn>py|-n0Fe`$zk)UbbSEH7Wri`5N*Jw4MZ= zJDWcGPw^f~r%0YnZ)m1dIb|yP1-H(t52H4A(oLGo*`RT)VQE8I?6cgxLk|f_9wC{ z2@#mAKQd5nW(J~tt;o3JVqgatNyL_8&AOtECQ`0 z&)>4fd@fA}YbV<7@GL7lhoq3g38;klpXBfhl0&%>ObH9FlxQGgC{~_gGT6`0RmCht zc1k5v%Uv178)&x+<$4UV0z7rv=a|hr=2RP4(yS|$0%A@M7mu9JoOk1;SIwMw>08#` zxIXERn1zDeGn~=X?85<=^18wtMyex9s4A3txS)<+#O*x=rE`LPy}&s^ExFPuue@xr zBgz8Qx`Q<-^PpeXoh?Y{`rLAsGNCjW19c_=ut>^RNKA@Be9>sZwhR2f!88o<&o4&E zHHfD_?*}upltxdkk?b$0cZ_4`95Wyu*ghIf*zz)Jf|kY66LfNgeccF#qA&Yr?Zi|Z zs=78<^VJFt`meH$ny|Y4WwZK;%a(`&kV%cEhH=O7S?OfHy!c>l@@E+c3$6ic)x4hM z=J^eh|JoSKB}ge}rWVZABg|uI?+1*G^xeTP>Ja|&UEWJXr}#@#Guyz?1AIV-7ysk~ z#D6nx;xBWE?wy3QbTF`M_OEzF65=opnhsi5>1dV?0R)rm*F5`>acMm}b1+(FXR|4o zk6JuxF}t`RFUeP&4F~{)wY%+@U3yR&vu|**jbsM{6i#FK^VLUqKR@ljD$AjuUn&MP zEza`%2%_psnHO~$gK`p3&TuI@gE9l7;&PhhqxLX6hm6Vj#U=NON!(yN#Kb6{^GCZ3EtByFNKd?te|+~SfstKy7I;?9&Ems5k4*y>nOuiw zZ}c8bMQ@?_>J~|E~VP z9Jq{WlADeUKm@RCxmVw)bRNhcLX|iAJ{Vi}!ozO`ZA#r0vv=lTO=sNWyGU0wp?9_e zL?752TpKn;_{$ZWuONi-p%?yX78HK*BAs6LuX4D|2oznvs;-(*M@%L`G zBto2kJVZmLzqJJhb`{>}FB?Hb+~`D z|F^xj`!CUM_xC`u<*9FC(ItJ;RFNi0O>Hq;yDBSr+iq7{p7bR{hXEe?JGVYT+C-$O z9n_vX0S$3vd`yxh0_W#B=DBxWX$6?;#t_?0gAb?M=FuRz8PCiGmyRGD+^!=yrKK-Q=&t+4a=%#5-u-mCEV_9wNb~@FTA6=#w zM-5k?u=JELmZluA2Dnd)ypN3_@WUj%GQU@?qN8<77u1=qq?17*1W1VoF{GH_SLEoy z1j+WZCY5w*2E1i89i1NVg@92T#_}Z>q=rge0{~=TIY7Q*8VN;lT2O2OJpyklVa);0zPorzwhIVok)T&AqlG-jY%?ozeULa zx`DoTD>)AF*n~b3I z;2_7EV$K8T^j3K^!}ZcgL%(9XELmHZQVm0DOv?K$!>cKY(_dO8lbvJO<+hHki0X4o zic63(NMfqK+U$}KzgTw3SUy5OV}Jd)B&AP zP4qW66uPD)rFajDIwCfMvX@tAyy`#|OuQ%^AF+zIXOJIJpTPx*)yWr?VkQkCD!&h@ zYQ4TN<@q(T5@EN#7TGDnsUt|Ok4lMc9l`1ArIX46jO|kKj<3Y$m_Wl%Zap#v_3yHz zlcPxw{V)VW-Z(XFEcK39EL1BNps*WSv*=E+A2M~TvruDE^~8T=|7NVLH6Cjf!5LWU z2dE-gT)VWR_yJOA-@Y1j@N(Bok+3>i`Wl3_L*c>yqdFDIPqBfMxmaJDL zSRc>M&&~GQ3asz&r>vAWF%-u_V~=~_+H+oKNWJvm-Apqo7wM|gwPw@v|H}}{?~~2{ z@h{2O$-@Vm|GguHiWbXphLD|Q*?@#XX!}$CIDrnS6j{rX09(dR(Aqb%XM4|{5jDO~ z!hWyUfznG<)6NO|Jni`SqIg3(rIG(5n~a0nGp1*%J>w*eHhs?WiG2PH zrIIHH<`14*(UPT9KQQO-2H#0&Bv6OF8Hu)5_O<(kLN0d@)LIR*ZD9>cO1V`szF>$h zC)y(R-t346imbKSdsyBB7xD@lz*i@KQrcOX5HYw9ySAMKXTRSM;VJ4(#(XnrNb{X} zc{YPkq#k56uN>D-?i(Y4iGgv=df*a<8hGJZLSb9$%p7qS`z0rCH>13EEUPAWk%uo6 z0MVbM0^e>j5x~%MF{V8JrcrSEf%H+F8luydoGx8(R?)DPZ1Mx7rs=C21A2QPedrUZmGX1foASyUBAbR6QFZR8XyC4(n4!g~E~HoAhc}R|Fg0_pZlg zRW~teZU&^kHp_%v%x!m=r;xoL<_7;Ao~6Tdf`4WI4Cf+hukH_OORnYvZax~1D7Wlu z@Wi9u3krbV*@8>&6JBJWz`pb8KR-PfA3x~*pC{jZdhi1Yfv$h}4KP3Of+GgPD#MnL-pHSADaTmB}b(T}o!#)h$HgTBBDxd5te zVmXm$ecWh8U7qm>Jt}q*_`g3%M;F+ zk=|S6O2xK)Xh$ls*UxwNU!q6Y{pe{UmIObd)xqp-DP}+85#Z6(P8(KVv?t^7v<$sk zx8`ib`k~{GxQMNUIvJST?{W(qD!i5wh~TCz6An+{gXci(4>G=`gan3WPw1tx1s6@^ zIYct2h6YaC@_KyTj+h~p6l|E__crq_&f6A73>2afB(zd;1u}|(sb|9|XWwEb_Yy!> zRVdUs?^NEwo81Qw9^j_%6< z@&cm>7h9pFWOA>Y1#Z<&{qMUko+l~v3}x~rnaX1Cw7U|-L>Uqo2_o7BwPr0S}pqG3S?M)ewe8DKw z`hHaZZC8MoG_>OYB}dSy2o7C9_Px7=G&MpmKcNaQ_f7j**E@$_HR^w^RP2n0hN1ba zJ3*=6o9+Yy15?OXfC1h$0>Hc+M8y{-TK1pkhFNjZY}s(ol>eY?w}LfXKEYPQv_+8{ zo+n(o+WkkT@)B~@CGd}V%iF*cq+XE6=d?QE7F&9~+A<#$u@dqWh-B-;#DbZsc^3S( zmRY%9!Q|qXox8ZmPc6V))SiVKT^viJ;>66 zd|aXBEz`c5As)*no1|=&036x9nj_ z+I<_(l$u?M74ukiXA%tt{i=paMhkmXyN|4VKZTf6cRjUqbrr%iPofnn)Qsp!FAoV; zznrSg_}PHk)s1JzqWa!tl>6)#=Bnth{KXpVPvr@o>l=t6wu~i(wD5dE8Su+!yu;Uf zPu?EvJ>P{iWp9uE{(A3_!}0({n(FLZIY#HbM+=&l;O7fbpPev z;bBMF`p;)YI%KXS76(}2e{dYXAhwaC>=~eZbRbD?zbal(YIh zDq8~E&RN4AT}wWG%_aqwH)%cWZ#w?AIJ?ZQQuFXU&4)#Lp0$L7a(*^tClh`~xv2nW z^>czt`T6@SyFMh?j^Aga;H_9KoqDy*l0Ujze?Eao@?Q-Wa8||k&elIZy_xL18Fl^- z8x$76p%d-l)%kgmflfc{(+7|B9vT9sU-#L&Ie2{h;6!Rw948iz_WdKTT%DkPxQ>p; z`B9d(gRKrm@)+5VajB>@aGyl9o@MQyL%mWCbN2>Qt*{SO;Q$$|H*|`680g#a-e$KK zm1Nxcz|-V;&{p((z_yB6l~bEHxwK1FwxJMT8R3U_sPcsUkJHq8B|3j+*Nvg%_VDX4{Jgxmes3`t);y# zZEQtO2?`TM7pEt~6mNTCvP-y(dUb=vFrZcn*2|kt&rW%v=ttidrv?Vc?LyV}AsZe_ z4p#9`4f$W`=?5&=7I;>Ni-i|0+l?^S>Y7=KSJPcQvYjM5WyWr+#8E0-C7&`QFkua> zx}G&3h^4<);6D|WWasMncHoD+(BGNEgQ#?+GiNtMl|>q4Z+2OX(@KI{h<{STt~lEf z%dbk!8R#Dx$8NBDx5oZ3;hpg6Zame~V5$vkPcNSLsM_=Teir)fRLyyT(qfU`wtjJu z!t6Z9s4G&ls_f+hh{O;sFWN(RM8Sr#FYCZ2CfuyX`%)?qKLdZHCDh$1Fn5`#nufJpD{PakE|NGN$_N%Vq>8ATUmifI0UZ*$+rfd9>%1WXHBxn)ECpKeA); zGgn#(JU_Bcbki!gO)gArpXHs+k(chfW&pj9v7MBAX)}9>-CARFr+#FdnZUS06+ z)Zu`k3gy|<6F}A1lJL;5016p_#df?7uh-XC*--Aq*3ar>^)5uw_)EwAEl>#CU6C5w zPINAXHQ(;!o4W%M8nIW3H!VfSK+)4`0Di+gW`rx8#6=f zpPGdH`gU|n4U?1X`M^Rj_noWdNSrFNs*98pE%;}pJ3bIOI}Z*8bgqA>;cqO{&QRQdGQ9_vu3LT6K_ zT^C;Joi#JMIGp2YWwt{!S-rPz`lUreVQ?r-l%Kg6y;eoxYrQ@vEV?y10d`{uXYTzi7cyUgB#!F4Ki%lD1E3^*H$Pp*(&QDkh8 zhLccoJ9Mxj<`uZrEt@w9eGIrCS*{-VUE4kKtaJ09_O+U1`T33Ho}Nv{SJLN7z z6{+xk&0eR|OUYf~z5J*FTc$d2Yy~np@Q)oPkGZt5m)TBcEu`jV-lIUE*AS2~U(Zjpr-4q!XKL zLgr-!*zTeh+_buNW>$bsFSXt2+^m2rIj3fIDWLGmxk^X*c}Den#`qpQd2C{pYqRp@ z(zV8Bam$3QRU(b`B()5uEh4chByB%ESJOek5RXN{$ya8E=@HqqR5-HL1T=wL#h7=J z;#Sax%?c^YrlW7{#%WO+DIVqfy3DUv-2v={D_5CrLL5#9MUYXL9f(lRI=i?`awrgn z%r14(Xb*x>dlM*9ves>ovT9VuEhicNT}!$#G{JQ#*{@O*6e|u%;`+$p0!rxc$hBJ+ z1za!j)At4Ff!1(QKsVJF1mM4*ZLEFDN7u9IvUhboQ3{3_!s-5CiI>HL&-O)PQy>S^PvEPhgl-gaijXX-KCW(4q zXyez#L<&E=A4w7sXr4+upyUHjx+T#hLd6spSMm_G)}7fX{WZ;pSiFffP)VZP@0dHT zrR91orf?2f*1{l{KxF%Hu=p4l4kMg#HJ2P^mCMX>72{mbI>(sj3P#%70NpN^wmsml zlLor`5NM4$Z=w*YTJS@q5W><3E^*{+IIw}IM1Q?8ppl_9GzBCd(t=FRqt^Viqz+OE z_{)}pi_2_cFji%ryT}Yvluol3G^kHy_dm~OXIP}hekO9znf~_&KhT$B%;QH2|Me8xh*u0K0Awqf%mlQoP$K1UB8mD)IhT*Z z2q3XZVgv#VHei_}VXgBJ=Lye~oUUtE_wKy`P_*Jq)`~^+?rU{*cXf5uuN?X0Pf@!; zteCMoX0q?8dNNlBRqL~S2+9MowsSKvl&gTg|H7#W2dVo9aGNJ%@a003(IfmaoWRb3 zB5Sd{atAEn2ToCmC2=vkP?%)aGmUr0!MEv0Hbp>~tKr$DE7*Y=VaHNm++lWnmQRQC z@eCs30B->=K!s>&(_@Ppt_I`XW^UnKQKJ%SvFGDeb50Iz{Xmi*XgKi)HZpkDM8)*- zItMEWaCu%_4i`#3)xt>Uh~gK^ad9c5#tH8ExO!P}Ih@P2OG1gB53k0P8;tL@n2m-v z+3C`^!gWhy!->lY3)fHAy_FFtn3uqe;Q2UbV-hco^S)8VRVR?Mzf-@QEL(cd#@+9Q zC+GP&Xwp#(!@mS35MWt~&TQJ~>90c$ZKynvk2Zb8ILX_!oZ^7{Q)F z6a>ORXOH%e_mBRvzXzRs`=|Zgy<-XOh!(e4cVG`a1pW*X0Z6xHM#$^u7J# zr$+~`aGCvi|L@AY?rz~WO9tVbEf?BQG(3yD^0BCj)Bj|=9$Vc|A$^M!+d z%TF84vjbbMGUV~W%kO`9zI*ic;N|Q6m#?LNunlncyc;HW(I;Rx{ZH(w|7p5QiL#v4 zg_s-4ug7P;*g5T+KA~{6-h?%%UoqF*m7d>SRsG^P3iAYIg6pG~@GKH;KF7@8hnre}uVRo?p5DPloP1b7BjYIdQ4K zausxa8!vYM_Eye-Kbp@p@+D3+)Hou4fZ!qbYR zTw9v-(Rggq+B}CBi|LuzauqqS>;gWbn90e~CgqW~+KDK5qTlxCDuwK-H5p0wUPjL+ zsUlVsT|QGemf2d8gh6SqVc(MOfP|LA@@YE>C$==FKEREB~Z^Oi@Mx?_b55T zEfcf3z5=+(CwZh}AK^=-@uf7px%k^jnUIUw?8R_;!-DR!(z_mBR74C`RoHwsTAqQ# zIGe#Ty>VRQ{s9MC>BkP6o}oIekS8-I0)F{{Q5BQaSq-Y3X1}S%;_(lKX=+SKH)>g6 zG!pT6&+nC_wWbIa@S4jxh}bsTjeNn&vi#`snN);LjY{?NHfwdfKFk+?j3I=als`d3 zK>psvgn2%-&)t~TJ$2H;#T?!x0_)}=T2GYGB8}oF8B%oA7h16K z-`&ZK1R_-PSVJ|lSgPF30N1ot6||>%u|;M}&;bflA9~yR@-ixlHe)`-F*_X=yqYV#(I@*3W^BY7}{|*AJq*fT(({%E)-PrdCO_p0MjQ;zO@2N2Fy57Rrt> zE?MaC5r`4|j%26}f&ucsN(YI>(OUV4D_5x46>2ddqACoNt#;V_Y=TY=`A-NR7CI!S zoL_tuNszQv(#4CXzPyguSW*MIf74Dazn%XD^W@qD)qtx3jB#C+(M;WPIwl)V1pU_@ zCf&jvOcLFYmVRVkCf79xPMOaS*dW% zR)Lp-E>YB)WH&Jwk~@k311Xi^H!MA`N_R6f+092rKH+791v%E5l@cs72zfAXHz4D>LVcg*+b z)RRYSC?H1ZoZF^F*-b@00%ZQQZBd*lu?M4tX>e6_sV8`EpC-Lu^%Nq&a*LTq{w6(QRZX$w5<;taj4 ziAx|#m$mSIJazk;hV#*CvzPde+kJI-eDM02lxD?#*~%=)^)?`ij|>ftk!@^&NLJdbvor`9dcGIZi&PbOq6x0z@oy z8YZicAqD`@j<{Q@@ClBkU~m@q?{I2n3mpF3c8Caz@LJ;mbWX|5iuLq^dx0NKdOG3# zx!Z{KV`Bf{2$?jCnEDkgRmg!A!sLGf2~8(-g1~`#9c6oJ%I7UVvZfe?yjec{<_{0m zf~4*3WcUlK@mt`0{khuOaeSb|T~*8*?=gfm$ooz>m+0B;=khafagTjRaya0@W*)x5 z^=5?5T*8ongULp0=?xk__keuMI2LjW46KeG@U-cB*pIHM)8%A1zlp}ixHY^y;mD+o z3lC4-juck`&koKdq8|AYn;K{+mF6s@btglKY=z<){K<&1Mv_5=y!?{ein|^B8!HkX z-s6D~w3z8!dB2P$wMRAmqZ@OngCvuiX6|es8F+1i95K=KFEIe0Y@*m3_t6sFWrDX( zh#Bm7VWu6;&~vdfd=Hzk6ttsQH2~O$>GHTsb}Alj*KKER(|4r2nJwKaatA`=k5L8P z#$&{RXvF(M^;wFFJA%nVK<}n&a{`tFtUK`PgtT3J36Y7)w<4qTintF3nm5v4CbXBT zyWB+QfxhrnF(Z05XhdkXZBb%31d$So1t?ORMFy$yt=VjtA@EcK?gU4O2;$v<-;r4{z2%S@nmeQ0 z-cZ1bm4S`NqYC2>xv>(2O#rZK8k28gC@8}mAhy4$3?3wFk%??_l6n55{%VjRTMiG3lq!3s?6 z!*)aW_BpuqQP)))9Bh1DRzAF~)Px?6OMzD0cJW93igvf4H z3}fuGxCLI10mM{5xg>}};v&mSEnw|n{lyF(eEip8bH#J3VRMW5_L;a_5GDiG^^+36 zhr$G?{VK%uU#+e~HynF)?n z!j)Qe2Rkt~q+QKap!A55CAx3TmexrlhAXKBVaGNJ94wBPX1qeOxVIsiHF^;8eXtkE zAN8o#$mF+^GD@LGEbclJFZD!Z^mn1_ijh3hYb~+Ts@GY(%4*kGxWaHF~#xwLQ{O z+gIK;nvxhoO<~(!3RE51bOlkc4N#pZTF|0Ml2hszfhL?-D{X})Ok4KyVMvt*uyno$ zbRha%|2-Q|n~ltX36{H6x@!C4A-tlu3HbD`h_Z>P`jEs2DN1?YOvOr`=hbJAjqRCd zdL~O*^KEVRj4_~yAt^;*$pdXmoghP869$!p>tfN}cz{Nqz>Cx~6YHndpEUl$o~6Sm z8P+0N0RG=OvV5p*7h#GWpU<*{m_{KMe5k4*vF!dqnC;O+{Hy+@Z`&* z9)>T9Yief?&3*9ayn6Y0sJnAn<6DmF<^BmTU1)6pk7AK%jup0b`nQYO*&Iegf*h2spw0sbD%E4OGJCWm?>0%@DdcgtQCo zFMK~J^Vu(EYbaAV-UZe?1SAkMtasDTsI1$T$ShP7Ambs?oI&OlP?SGy7rz$`*>Gw3iz)WW!e2TQ6{`em|u!LA=|1g z959Z#a>$<*m%79SIvR3oXFCN#D>iV73|P9|E-TF;_-~U2-HI=aA1KZb-^>`vFe++? zTvb7^>H2Cc4XixNrS!ACuqNE_NTa^UuZv~@|NZ%|s;bQYkX^V=O$l%E{iXc1;J--c zVm+s#+amNAu87!g*%mOrTVK2ciuYr*MuI%ucOL7{+|^v(7zwcZ^w0^Fe|z2YaGy{m zgagMe8z=L?r#e~J?o&AG6IH>Gx2oyzhu2RJU+gEUT5MaD8{mKb@G|Nd>Ri-I?Voro z;%wEt(8W74y)zNgp-cX6A709F2;Ak&?DO?|m2omC4B(x0cRG6TWXaZje zn7QgW+A8d%W4GfO^@tFWyT~)}Ns>lPL^Oc}5YW#{L}~VphzN+ocrE$dM5N`Pq8%NU zCzzqn5Kz*2uWX98qb-yk{CmG=x(~UAFt=GY$s|&s~mfiofs?WAR z)|+2!$TZf&gpHqMBp@-NVMbIHC?O`3*?Y@2Yd1l;gX;1XIRaO!dafNV7cdg^Kr2Dt z1vkmNe<9cQDu^1B6#aTktTlh1!t*B@C{QyVCdx*<(-!D)$^5*b{e-rG*Q4aC!sjGV zV-3%t*bR(#gGfI)!1usL1if!;IbsWjRt7`)83td6@1o#(o6~~P!gxN_uxIzqZKMh6NwqKm$n=P8_%jF&WeEYX8m)A2muyh8=?-9+=%EK4 zU=vc=XA^rXWT#b+A^JM7*KWA*131c`nenl$ZH5e*Pw88Bnx759k50C}!c7<)9&j5Q zA_+1GtB^sUvw7yO?qUkn7{6*~} z2uHdhLj`-rt(j@-rLJ8`FL#UsbU1e&pDEEZ_K;9`%AupyF9C(pk zh?aD`cIyP7+tMHfoL90_qub3I%(+O4@#C%=(;!+4g6D2WU<||(GE2DbNO1W%I@e;SypLD8Lac7vD~%ztwp%9J$aeh-UitupFrw`^8G0a* z&0AA*0JM8Pj9EpU8DhHlAR~=-H%5*eZ!`gggI*S_A^GNb%-XYx zPYT15z=NY4RK4s3`MhsY#LIF31JyJGQ1IZ)_vl!HJTCyF1o@Cp8+RI5Z42eI!5%Fm zr3RW7dHL6_yG<${PIPG6_-vwWhByXvIxc2eK3x-6&7-9Aj)sq|Hd0+X*wT7#D_U(M zCdmj=Qj(4?AtdpnSIJ0scU%efdg-tbd?Ygsw>qmZN?L3sE%zF0qn{gHc`B_+qy6b& z7k*ClV%%_zuCbEhdRwVblReSe8^J3}SpwSloyA0gNKwk#C*bw!kx^0jvTN=qWzWK+ zxIyF|^oqRr zBX6We+f3T3j1DkwPF6AbzCe(Hg*wBu?0xi4m70YHpGRy?WK9dycCV?Irz7h?8BdjE zpw4+9X(!l<<_BX&3CCA)8rj{gFisrfZ|+Jk`P)W)mr%J;RQfpXyU5BqEYKDS;GvcU zgUT5S$*@IhT(IHda-+cT6@9tW(C|Ev+eL=Yr$6SC*)>X+ap>b_u7@(KyEO!L1|2mxHL>RqPauZKC07a3By#!H-A)@HPugQx#M^GgHtdhE(Cp$D8;j z88oF|4U#xw_9)LPm#LWCi;%m_tP$@#j&u0AmL?x}1@P$6&pqXlh#Sy2`-b5rW3K_y z5Iae0=n}25j$ErZBCwH}0O-6Tf?MTABgE=zT(|gxXmk=gQ!JBxVKpfL?6$E$bYe?# za$klkAv>&|snorYu>+lsck|i^&GL5Yro^h>V$COmW1h{HlM$}^(>$Y76@#eU4IXCb z0$a5$d{eKQD#s|7gLzSuV$VKY8+`UNM4Vj{ViwEs`E0p_`*b&?FR4%29pu??JOSno z$Q1H*xl2T*h-o91EiKjs~@!}}TJ zRFDdf@eZ<1RBdOc)b-=D*>x3k^Lz$Z7mi2tiheaefGOO;^hJI(o8LThYw7r=SZIK8 z9E3}pA71mF>VxB#=i^fey{_0<_V9vg&{+bT=sKCy$;ik0shQf@UweaThC@SRi@ovi zVmd1pG|m+SCiwcB-=Ro~dqQV1bBr;Z za@~#sXR{w6R`KagcCpM6X$WT53$biB=QkU-_m3Bs08f2`>u+-Z{*P(YMH4h@L6m6v0O6W!%;)1*`%i^s-oD&@v43n$O1Ltm7`u}e zbi+&q{YsDodtwP{!1qzH8DDYr9WyjC2RruUUf04!Y$im)AZ!T1e5Mdm7|z~@J8Q7 z^E-7NeNFZr+Ie|gj!it;D)#;vwZ*1?pgyM0USVuLhst83DmHl{HF3Awm2;4&79NBj zI2qNrtGGzy*&URtaO*bpz)2`w^LH0lyC-=d${x6_8MEhH_H8$z7!}k6GkIMp;dXA z@393+%cuXu+bWa>A1ZfmsUN5bZdf#0{qUA+NZE{U<4|D$vI)EpoAl(Pi#!?J1g8#N zPN7;^Fjxh>C08G*!7bDpa)x_EaJXQnNe(pF+lf*%O2;9U%cJX+ock^T|k$lG2d@K#ICW z0HR_!A3!)^J~hn+wI`l^MWftcaBQ8JPV~LDMb2+7V0PnAVsq12I4xDYt;a-SQW7Wa z7p0T7&Voj_$?zc8X>Y4@>CG0nnX$@XtNQdI}-W!0t3nlDrF{Ez$#eSGDte`z`49Y!Qkq8 zxybiyauXMLn}!h>)}pt4K6=R~9c=^{wGsZr2UUN`g`}4`sM60zZ(9pZ#14C-%QV(poh{^;~X|H%>lTx5MvkqeW-cRLS+Xf zJXBdcJ9xhT_V|Zq&kp{!e+(i(~27Z+D*@A3p!#_5Rye zyRZKQjsDlkZs-3FJO9(~y?O9}3La2!z09+5O*?Fe4RYaQF2IeF2kz+D`oJ>+`cF2Jt4C6cz%A;iyh?wfE%%>1PO>CKUOnrTk*b9km5UtBJN*2+VNoZaw235x}3t!RM$T?+Kvgu{J^Hf=QdYy%~WcRpAGOJ%nij zIjxX~^HvxwAslMC7qa$6)@CpM0Yrq3vaTLD5@@E?z~4VAX9q{9M?(BQtj*5^(lMm+%rM48IO|2#4F`U75{ySgDsPL_K11gl|#Pa&`y(+IV^CE>4 z0B1Fx=He?Wql8iPvh7E1E-O`IDD5N3$)WzyW$3BIEVo_tu0-2+IcZpwRG(Pox|M#K z^Vw{nn@sR1xuBr))WKZE$ZCPbze8cw-drO!diW|<{UMuDj~Wfjd?f=ft|OlP!rfDv z;bGFM>qE`#q^c5Sc6^;G0K^$+64?61r`2!E=Nd*Wa*6K9HmTLeHs<|~@+MDjHQYKt zTad^=AjW!@uiXmIetkqU-+NiI)T&*obVv@miR$o+sfcnWs&LZt=_J2OR>I#*HIh3~ z(QLVJ(~%9$dqg&|K7*nhWVHlHGJK=EeJk-BmdjDO}^Q3nvV_-OgObF82(VTf-iJKE_m2&P?s-~-aSS;rNvHavFS)a`i)Ebmr+4pkTR@r{& z5NyhBt3!i&Iy{3Nv`!24XlP6|hsSdbvtoZ8MfPo*YR#(JzAOEi^4s2x zlZnS?Os{B@lB;5|ocK_J^`>!JfofLC7?3JqTR_R=tpSa&Mmf`~V=q4&7v+9_-pv#Z zhJQ-4KYufoN$x~NBOXmf*XU!=FV3IZ;fI8SnBJoFtKI3fL`qVE6K{$le1)iFGFVy3 zmP^yF$elDWJ*%kKW(cY1%hhb3e=)I9{;5ntagI_O+H7QJ0rRB@rQvQ;MBuSi+irbV_5+d@+H+Ax^Yr=pUR0>$Ws&qsC z3@K{cvia2ZIw&5B?Ed6Vw~I$XZHtuSk;+rXMw7nXid9o(SMACs;H*k7P5jbZcXR~x zwB*e?NfENxuO$g*d9=P&%Gs)Dh&Rsqrers+K5u+g>4t*POm&S#k$7wOudv#5!^?4P zbMEs7BwUV5P_I%Xy`i9m5LpU9ixOKYFck2eDROHt(5v!e0V}=+DBrx&D93>2pOso;Q-gLOMd2>ya&1B#GPb5dVjv!k zRc+V*^+&7qVtn*ewIMme$zLTm{{0a+YPs^%m1~7jZCxvlk?V!O@g2V+FAkmaF7Rxu$ve}W zv#_`NY(jSIXkK3_$unTGF?{Qhoqsp9hVzENJp>S@Jebg@M;%N0Rw(*H8b27J^_;B& z6T&Kx&QTSR){5||248;o&*Q_FUD5`Q&u@J8HacNKnEKVdLF#P@0YSy3loS8r0Sdqp zOH?B}oQI8}j>%>Jwpt@^RK>pkq0$J(a<<6ewXP%2kH)raJiT5nP{ndOb0?$M2nmuv z@z1rpikbCypW$&1ScmgNY!NL73SdWF{28IL;3WFbQe zpZJD7;{JG4kg=+I2i0;P4+&j=Ov`u7f-ui}+Sh|ok@n>A;6TCi{CI)SNGa357j8dl zRk`&5hjBaZFK){H#jW*2>zc{907VG4hStquB;F$9!5wz`Di&gSQF03_xrC`{0@YfW zTH9DvjPmd2b8}P26ReC;yNW(KG(mIL+EG7?{QhnBu-oK6RA{KlUSQwP*MbBCA|nMkXE4J8gP|vgt3xBSgAx+6|Z=|M7Drj zNipCW=8J(eZjC$D``?DI5*;d43u0hBW|;xtN4E?}Lae+VjwSF2VYG*pl@XtYN7E)} z?mD+sIcZ<<*FdVvhgY|Er)7s&K6o}cQ%&Jbi!hhx+m%9H!gfU*D>1+pm}cOiZzksU z@_1q@IMKY^CLNs#whMON^}^3*LFwY;=IpxkeuIu4;8_*eDRRaxSqI85F+DUM5$NR_ zdP$&=6Q!}Z6QwE!b;2&y^C&Cr55~VjoT$Kq5RsN%4Cn7gv-e40-cm(?xw5u)@ypUCYM_6UEmYvJRl;vp z?1z8`L#*_~07X4>Yo=(V`fdNZ7$T558URhQ%nN$`CPvIm^ z+`~HpinDA>hQ}LlY09$oZW-3Xcaik7;ba-C)XQNZN6HgGZO!Kg=y4b@S%4E(FQo@W z3I**l#{M%rlq(VU%4}(2_cUCP>D)apcLuBhQeg!WUo?l*fcJ0bk=U!t7aNJHn>bgIrR%c+yfV}5E(#lnXN-uU2Cb% zJmzMSIA~NGUYIuNyWG5_?=~>VhV2x#A>6W3Lym5?bex%sI<LE7~g)) z7%5-ifnTWu*(o+hFSMCq3Oycb35IpGf`I;wd(+Tii% z-#qSLbDSvCXk<@iOsX1Xiv%8{qloL5O42orVWh# zWzy(xZTV-IAVI!O45%S7Kmd4*a9Ygrbmv$;U&Lq3Gd?k!e3fczoRg%>L{iNpCEA(4 zkKr}&dNMrAn-AWAD(Q_olfQhhG}u4(`jKCa7Yn|ALQ|xoIr&=SJ9BbHh&nA^BCJRA zNS>~;Hx6)e&2(R*`?Ut^Y2vE_w<0xxav$Cc;F@p^A5L%Z5deJ7MiK%Co;0G)yJ0=n z$QbY@Kb>W8%fg5lOv1*hHAu!fuV=`60pf^1lw@M?aB5fO;sH`F8#=s>bw7>5Uw+V( zRRxv(6A?QoA(2(njg-S457MygEF?m`9g!5pl4fpXdH&-#e=q1#Q&OF` zLCv3^Ef?S;Cg4|RPIR2Oqxm5rN&%b{!%BVK`9uG{TW~wp(25MCFVWoh;$hp`*SE9r zBEJe$@YnNMk%u>`7-}8Sf+$;fV}ZJY{i#(x#^pva_|>l*A4soOgEqC?4r`%HCnW(a zLbLG(^wM(w?5pC#9T_Cwz#o=jwHOo(MHg_yX(CK^R=Vb?CujPSX9C0q`%h`OtY`t} z-hilu6eq`DvnztXZ$(!4WOAxwdouGP%*=0fkFb8T$71v0q2l&d$sHI!b9?J%STH2= zYwzm}mUP$<;_|__HpxvmXYM#=`AQD8@6j_lLj+^DEjmttGOGb^V}ri}k-q#u-IOpp zt`X_thRwXbOt%ubRi88lgFz$vO-9TDRx~g=w>TlaZ#Xl&JK>wLcqq`XcBXE__Sq|+ zAgJp}1K|*0*)yO4{KehN0Ha7L!q-2$hN<<(-4iI#57i?HTm#aN3_6Y^ zh=&7vHfCE5`W}=};-)vY?&mLa8SL^L3aNxAI7q;wGaz%rG|^2Kz_a!5L@GV5grNG zN<1M_SSKhJc6qd}-Nvun`2n~QK68VRV+^uGk!}vhgv-r$xw0jnr5*NDSF#>Lqyod* zkrVK*FlM9G5X#BiAP>VvI}`Q`PH5_F+&`K|{$`K3euS>ZZiKQ6k+wmd3$3_M@Cw0M zBKZhW!H|$43DTMIqsa`rW+YKafC_t>y`L5~C^$$rbVN5U-Y+^o&d!FX%gJ!=1TO7= z1W91Eq8#J}o5m#|VU$5qDYpe`$#P(6mx_Z4kG!;gqN2H0A~sI5@kE0<`>_PGe&T%_ zsb7h0b2-V&+a?yFPM3>7dbBUPov~H!KGdD=Iycfdf*kq=ni_*Rom6x`>P4ax?`QLO z(Bldk{#8D2K*K76B&oM4!7Hh!;(ILxpQ@05$5f11)5di)JTE(fwA#+_Eq?57OE*sv z`-5MATQAI@Q@$1}aOi%k)645KE1-%-s&}?n1qb-%`mwi+dO!;y%1=F-rz9w-vO2yU zILW$Yp2q@2HI4vmA9l2b#~!Ri8Ojt|f5jlPDD;;(X%ILH9EhYPhrcY=$XW^VoPqHx z`kIm=xyU*x60-$TWW27u4>}y_R9PFVF(@w}s`C%HJA&xX1c)XYZTMu0@kbEmhaAQ2 zG-95|?E3BLi+4~6OI3C)$6>NYli`+{RNPbf1QOuxeLkL!p)dVSq;{WubBX=_{VzX2 zW2^i3#X2@6yT??2fwqqAjEA345(H#5_%uefP+CGlwWyU+CJ+^6a&G);wdXM z8OK$v73jUu+e^6eSZjp+M5n+iCCDmhGp%)ERphyPHatI{ zxjP|C9DkxEj^dwx3rGz;(A|wT(`!MUFl-B`3|u9`+sr7k*Ga23vr4B) zi4xS%#ps$Wk<1gotu5SLWgVI-Ro8bwc^{d)Ux70Qyabqs0)DMoydO{Tk#H!cNc>Jv zYw<3D+I{=CGliOe^$|%Uotw!om&e%v4TR11$_+{apq8t@1 z5f80ZbCRR@s+Lwe;ak1S6&cn%uCT0m>`iODp|%}uA~@_VnZ=K-sphJlLS)I;XoWGR zO+Ua76Z(;!81R}Z6c%2d`@C#Krf{)6Az9FYpr5v-3+IFl>P)mMDwTdC5ue#8A{dw9 zM;UL+Rj%qA&`5E)F9LCFkg*pXN@A47iDD?E`A>9Hl8W)zqaP3H;DgpXTK=Is{z}4J zKK(JDIO+e$#P|y+UeZ)HjJeW>RRjBE(i$w$m@4|^=2UiUbUGc@m<-@hQQpOg8IM{b z7YyDZTvGTQ4{6QeF_XevlJ0XF@T4%SerTCjs1l9ZrLM!{C+;~bc)+gEQ+uE|v%s<0 z039xPu`EAoNZ!W^WD9#stf?s?ZGQX!8tH9AA;#6`H9`&5j29K!kn2c~^T-S}sT5kH z#okucEN3B$ZeZOnr=we6rQX>t)k}W~#g7jOeGm#(bvSQ?V!a`OVjknww)ej^Re`SrjNl3h}27`CD}`C?6D= z&e(m-XPwSC7j-7Tx<-e6HJ5Tf8=t1gqFKXcWDgmTmAW)D2kGw=1= z5da>v)k7zAxS5Z}v#TLMT<8rEF7E%#J361p+Ht(6Tldq@y;+U?>s+WIYmqP(l)x02nF&!8IPF ziU3>T_gzU#Z|AGEq>O#HAf&j5MwPWIC|x2iZ~yHQDTSHITGwSlL(O>dV8>Nm%XO#@NF>uq&xd)l9Q(TgQ7O|6ogJR@uW}ta?*8(u~&dAT&9Zl$Md~2FfB-7;JVxm-#!`B72dr3O7wR+F^aaes89|>z+ zA=*I@KRm}u`eK|}8SAQD=6ySUM_9zJMhVJ724I3agWXDXB9~j&NiAI|{Iv*)( zEOCo4 zi#R0M=lW!{2LIj1%M%|y{X~nqZ!XG&ZftT?AR>F~$go1q-nY^-^mzB;VxC_(k@2=- zA>M?BQcEO0!>OX*d?Xn-Kl3?0p4N(e1i_zbVQayUft*n83nvm&t=R6j7L;8j zoogRb-ckgQUDap;LGtN*e0JFxPdm6*WX0w1I^TdQAcJ=dJk=*r#6NAqjvZHeZ1fC_ zL7HG65jsf&lpOEQyORk9m3I5`n>P?#I{5HwNdNWl>Ut;oFrWg1DET8Le~glUMajR4 zlE1~;CyTi9?=bxW(j!l57}hHobj6@JAU0@Si0tsTMZw+@gu#z7EHnPQ=U>sAd^QDd zls1Bg9A5V6eW&D+9tZufFcaom*QH)HTcJo|$8CL)SYutH&`VLNHdVR$Fp69)$uYdY zeuz2}%H^Qf(?-16x$UQE8NT zgyzfXVtnPK*5OaH>Fnwz^Bt_em%9NhuUy6Dmbc!I3{BR-HUIu@z4;MXhE$|sEFlD( z*#c&lbgP2CV6e8J9)!BZ4{gYgNf)^yvJm$2Z`@@k4qk#;Bajc8rlZ;WqRDgj7i_Yf z%}&u-awNZz0}jt0CI?0%4~tl{EvouB7gRHN&JNnM4=><(54RNiJvOWfeDNtlfcEfl z*SOdD87;>V7<|m$fZjQ=p-}~^H-qe>f2OM-_A2{`8thGLOKzahJE&=+*5a2`$2vL1 z1v;ne;#(=z{TF^d@ByAdbka`qzi(|q`@wPw_^21t@&CYWW-TEG<+*V)SDKzL zKj5d;Rzk>qbtk^zO^I*)+i#A2Y1k zjr1uDF#CwkS3Y%b?2h%}4bPg-wWiWer<37-ds?F=`49SLeXCtX#z(505^eYBtT~c5 zaspqody&-a0oDRIA-eqn`{G{=O6n_2*`%g(_9N#jHYUIaIyw;bCBG5QT4H|m!v>_p zaQ8?1yL$&O_m7V~Eya`dBib9$eRw$^0_d>o$=PMd`XTz<7G!C8-0qKq%IV_kJ;1&2 zpTA9Tw|wfBA9m!6JmbX40_@H43Bs><1psuuReLC}Pz**pGDkkHzy!mz8myK?Mx+76UArqm88#SSEJpLqx zQ-b@ZL`hv*a1)D$6dKR+M^|mREsA$SVZDNIC!CeQXf-}qEBI*ZDSSO` z`5xJ;>TS3%_pEyovQc=L!dNL8DPW}|V-TZ_NU3q(K)Dj^Egb8uC5HdpuxN|IO2;ET zdkkr{kfE;~FkN6;W>jdVt3S;YYZ@X0Z*$cSI^kRL^BYu*lb~ts>_q?eal38!7?YI; z*iR2u+B1bIlgS1!j7t#5g=DN6D^=6xl2I5GzI+a+2h(*F*Q|%j z+pIp_1QK*g&!8cNUt2^C6GjL76HjWBlP_#?tXPrvovk~fyFk#5gK4T4E_H)W!2fZp zriqo~2pn&uLw@%vOJhD42wt?2$zP<{sgc9rwz6(%lTJcbR=-NkP_?B(aoNi%w%3qA zCzSwzzi;hmcoa*mtWJ63D;L>McJ3HIk3~8s6-f@<3uP&S5L(p;=K;-#;7qx5HB<3=WZks{B=MSRCtm+LT~r1_PnDj zHqtJ+8Se=xjVK*GU;A|;bT4f&P81*2R^-E^F`A@KL6=o`=JxGx+^@+K$X>kz0LQ35 z#s;Rmh}PcL8H1RsG&lCm@9f)Lz_+<--`yQuEJM<3+FrTwL*mk!T%j-Dc)Q{t0 z3}UsvcCo=04FpL6pW1%JA_;NtYqEGE0WdYkMS>0!FHgn0Ka+vrte9lOQS5NYM|H>m z)OVEM)}Gt~j?UwQJ)J#GEg~|KMLz8KIFIEq6N12m8sweh{Zc-*~jy`^zzUVEa}K?;$QJR^hFHL2;;C8Y4}F zx+Dzm@Q7;y5rX#^O*6Ae3zB+BEmiTZxv@nXEjGi8g7?q0OQ5s>qJ9zc8&a$yb9+`R zK9Uh^Dh46Yy?^WwuzR1|M#W)FRiQhw;089#w3lI$FQ&z>goPOd;YCx%v zf)x4V#LZv%lRGfDn_3q-=tVmnkU@va@+4bM>20Iab2%!y{GU7k823M_oQUM#-Q*`lDX z*88FAs@wQ1sbZ*oKPo*8IpWdA^DzUpBPb%U0aAz8JqP)RAmQw?_xML~KY-e&@C+-z z(Un{Zu6c?kQ`zCUpnfPvm&YU$|gL`O;v2N_t(Cpu08;iB@Sr|hN$hv znpD+n!&a2ia)(hJ2m|9Jn3A?H*w%)^N8up2#Bx5ThX|N1JcbwXt!pQ;VP@CChm5Rp4T6Hm{e%(_#W>kvn8@g*T(2+qlpR%0!|sdvD%LiWCPS7LU-Km@U8HAvMewn_rado05BD-X8g8irz~-3z0?}r-&)Vd z?1?E>Yw=TQNVU;PrhiOpUTNLuueUqpo}wLY;&_wL$b1yw&t@VLq&+ICAI&prC!*?L z7veTM=?O5Cj14ht;xL&Sf*PO`F7vBlCF9XaMVbDR&k=LMv0ux8uh^4WRqOaOd-Kzi ze~&ZTmvfhqB$F_sbvtxf&>yWES@7xfs@0%q&(O64P$0bP8d`q+`QYW=vBpEiIw>|m zWWoji{WD;QNM1%1aT&Cpw|fW2ub%Jz{q6JJC;QKjPasF%nwG5Tp1|5fUEF>C`r!2s zd;6PoQ;~5tY<7XTkFjYTH|(wAHlPpIq!w=J_ABfS*Yy$upZYz<_Y!&MC2y5Qkjku= zcsAFqbu$u~#?L0h@m19NQ%u{iX{=zwcK599iEmU)Ql7a~+!w>S(Z`6g38F7oY&CS; zX%lo;p(Gr9uGgoOB)N6No6@|p*&3QB?;KH{Y8$60!#A!8=~G}5CyC;S^`O!6&33*CjocvfpXT{_6K3lb0;w!!@NW4KCq=Qva_C-^$7%5-Fh)#t_Kki>e_owFW}6Tc1H6A=c&AlUR1%HAg| zNorEkG$Jb1DB9;$FdL0-_d$bEY@5j@J6u6)_2ma{fho!9%v^3@t8kJCZ6YFU385zL zM3S!3ncrj&p&w95)EMGJKFueSvO`{_E28!Fd+?_C&4UZ@3eOy?kk47r0Q(XUMrJz` z_LouoszSymfJ=8bL_j=o`F*wf{r=l$hlj8Ck02)JW*Y`9%PqEx9UFX*;z#~l91i*} zqSVH5LLo5@AYBfCFr+#jZWze6KH&ARxP4IVl%HcwQ@}X;0Z6)SuNe=E>}fWPoz26z zgSgprQXNcT_lH|~Ii!NSDJvYjJ53j7m(2$QSOLc7OgSnfe7GdKT2a&xVHaPEFVbF3qWZE5!?Y zH|~-?K0^nZ1UKOJfGim96do1^Gkj46Y!Wm=RdAWe#+CyNU{k?TQPXP9P}vk`U=dK) zQ(~C(v6YHuUrizIeBf-&B{@a{Y|*j>V8?6>T`5Q1!$1aLD1?g0L>DGq4zyGtg+|)Pm7ZOSC!^waR0vM>D|9CBm^~# zR2AK`LFtETk`hJPNezR!N{0du#3_gp7~FN>re!$ba^oUfPOtJs3-&$KigIyKU=kQ^ z6gFpcG@OE+MW{1SS-+y^!Ol1nc*h0q`Ho=USGOthBZXwDb}&r>2i@?x8e%vs;lBNw=2xvGmj;Cs_U9Y zf~+EY%}PryqQz-W!6))L2aXVxDlmbhbblNVNyLK?GMyp4{l&tmWX`8>B#)rm81K31Vp0Jj@(T^8#_PmNF;}BAmNAyq~%~H7%$lQ z2oblWSJG&!VL`OwK1V}xeX#APdy6%LCVyNgU~wZp7o{Ckq$q~&1TJ}qp<5cP>w0|~ zn-2HqB_&&S7fYKNwYe<1)q@(R@=0*oM zN;nzGCz((jg#)F94Nu5Y$3R>tey;OTb!EJ#v{9K7hOx%*4Page3Qm5Rl;hIqDt&wj z%J&#T?_ybrfl4t`s@w;kqy%4sC0lK&enqJK0xV^Qye}ACG{}S<3RPb_G zbYwQ8lKVehqXkGu0z}hXQw2fD%XngP!fw9mgC$gGk6`&i_;*u|kR?&Y3%U&(X3#dO*gy}UTk=6z zzK#(z=hmDMlmu4rjjrW|AZsNvL@lJbL2Xf(ExZuKe^m2^P_SCGVg?H30puXD%&%r7 z-ptCEceaJ%y)Fy$?<62`=*w++!IoA|DDeU3+L{YYIp6_lY%K?vjFs~r)UC6hT7(s+ zi(Qfl7cF8KZe_@ae?7B+gsg^%dE9D|Uk%-HbXMR7u#gMKS6&K4lMeK`XN@*#hCo&v zLS#xZvM9iI{zpJ|=F|efjFA<&w-F<*zdpE>cdutm*nAqiSdAFW=MjA9&Rpl_ucH85 z8}eFMp1F-wS)(qA<2lBr@Ht-wmWT>zRe@w*|14cD_f9Xa8{ ziG$Vhr7^FRO+_Iu50?w;mg3m8BICi-8)CAt2Mh(xl3*`u$laq+i(uhHG5s0@ez>(X zLHTkyyDnM&?&F(3?ipji>~{G&E}vTil(if$B^|e`F*vEx z61$|^9-rj!65&QV1C^R~3r|J4534v8Ar=6rzY}?cClewRhO`vk!X5UTKRg7?wRo%I zQy8*FB3!ynVehIoQw`{@7Wc=qR$V9TzH5!_ekbo!x+9~CdOW; zMXj}UXwQH^B*y>~Au65)Y^TtOtg2XFa=&c4I6X-6T_u1>UqzFY~i^ z)`d3vt2;;##meREbUMNRsU5Qn#FZ4*LP!tk%6qKtQ3Plf9`_!DApLSDQk3zlMPmf> zd%YMKWCcOc$TJmg^$-bA3>-=xz3kVL?r|E1E32r|_~E(?NU^eeeJpRSf30FPSn4vS)WMGM-msnREN7-qBq(Ho0=zJK4Fg=|VE?JcMZxt`K`TZ3L8!5ua1 z<5qiOA|Pk5D{6T2+w6hyJ{m{;T~11yfyOw+kKU>Ter>o=AZB`DAl|Vk`4BB9CR}{d ze`bmI@>Xn%;sdqnGA~7Ajn=p%Z`kX7&c1G8`_}$ftZ9TuH5rrLt7^y6u_F}hc^5!K zzw66kL9XA8i}8;+L>6s0p#}e4z`y;dK^#DS9rLH}>j_rbH{_tPxH8EjE2cA?JNP^V z)vWBfRX)3@R`RlNe}<8tlYGpU>iISAkgkw9$t)39DX6&#`L-rkCVteFiN7}F@n?|N zuS_b6qk=!{S0?5tuT1eK_52mDOAL+c;dn8BmDU-*N)U2EWVj_4)$kCs60^@b=J8$I zfPdo5w_zd7WmzUhy)cce5z*pJj`}BeyG{mt>gMBYc)FYn=QkW*+}B@oAcmpVV{Jn0 zYv-dHi*#uZ%d(oz6e#;6l9vdeJArk~6(Ow|e5YZtoTFde>5XwmEL~4U0hZkCZ7014 zg>)*hufiGhVHFrDxoaD~sUuhcOuN6$@nPX>6e&DFWvabxLiNoCJBadakkSevOPEZM zDq-4{66?uLqqY7X8OTui zQ11ZQO3DakU!0{A$PqCvFw&>%B8r3(LPCT$HNbdk9|?kq_qSjpt@ZAOZq}H4Nm1JB zirs3YjZYkwQG0{?_n)#JzEYJSm9GYIe=eO^IZbq@L<7#bNq2p2}HK*&leypn4OR#{$gb8tTa8`#iC$#zEa_{GNwn*mcQHxWEC zm-VR@pHgc^X5(LsVpYj-KASMz+P9{)%mxa!C&LRoYSb@wD`kq5vAC{_A!0O?{YI=q zh;SwC$K9Vb+)%I!A=DU@Yv`h$zY`!FBA?%vHo!V9s zN5~{imhkpL8P^fS-kqYBL|92TmXJ|7`?@B}!gJKHJ&MweCy(i%*t$+sixzdam6HZt z5nuyZj$@hcba;{MF5gYOum>4an%J<5;eq7JwAQ=~tiRI08+__MBTf#feG1CBVHrai zwb~xpaFXMxb#Q~990u=sA|hnqUBo~-0;N@ZgD6$(Zh6g$+Q=p{rQ8u8eRYl`Uwt#M z$Tz^YFdnIo-IpJrJ1hDjNIQY+lq6~qwU2c7_mldel4)ns_%qDXicO9xFpzwhT`8|Y zZ)5P1vOi-*ofVE9F=$GB5QbiZYG0?q(pt+t?{GZX)JMU@t}fPw0PsdLp4MzEB8tmS zhjo|+rNM%j2;PdBGO+3ypp8`kwz9f6@L}E~2PClPL|ctJ^FYD??PRT#G=0J_@Qm{t zdS;;SQS3TZK*%id-kCv|tm!Y)2MNYyceyrpi*}LiH@u%`M?u;*$pU(|yoPt@2N~_& z+3@0Go?ifb2fseEt0uVD&E2+w)_qO}nZ0+{r_Z<9q)a%^=R-81U4MuDE?d(ts>$AC zYvQj+WSs=&Ef^_&%;0En|Ln?M&FXtddlvYweys2YgJ6o$0;o~%$EyAq71jrzlJQ1C zs1Sad($va2Z3jcBkeqeAu~~JN!Z_UEkAbzzFwe6q>p?L_|7|kEwLPmh#MPW=ifbP; zQa*y5`&KT3mCqW`^Hrd1=4KS8ry)-m{6XXntAP$OsCZD7A@Z`W%vXvX`&j${DO-i7 zV)!j`Ml3zK*u{*ugQNVs+9umgqrJ!a0%UiQpDXSh?zWh+*2J2Xxqs0|4iNOTY5XTd@i6)mV-agu*N zY71z@$gxN}TTZzjqgK!K+8UOc{mG3DHYXTj`DuGd(RAI%67MFRqzrgPqKpdcDT@@( zI#6L zryJ0Bz8OG}NyYLFfaU}E-Uz)n0k2;R;+sIQ53zh>pk55@3zPCo72RSh4Mb4|Y8zHc z3O)q4x`Esy88;Gp5+JTWgVaNG5&0**Qs@a)VV7 zo0Y*Ge7hn}Tmm4T?FyNJZCYeHqy2rmQtaO3WFOenQCbMu0iQ%}D{WQGm9PRH*8WU4 z$2Q6zf?@P&jBy9@6F~*uf%oNlM@#fvCLwz{oJ2mAzGoZb{*@ZMdvVhGrQRZR1HQt5 zBv>z;T2wu`{yf8YKUtHU+x59uP-VyV4Om}hrnC2Gu|Rn6ZV$FbJ@}V94DgIHA$Yh- zE?j!N8S8V+iTigGLlB`f+5oELD1jh~f>9X#y{!F{+&V(x{ zPD6zUmg)cG^O?W0N-&=kGhSTg^LOKE$I6Mos79r!M;ib=y(`K=qPeWLX04p4A3DSkp%Aa(nRz_mT5#D75vRq z>UN}#?w>ZuhvqTuoX$o!n-upM1QlL=7^nxXSh>%?{&n`?zfN{L|99B=pRYTA==(pr zzv}ewfB9h91>Djm^rD2Q8iaCiv!=ilVjpK4xU60J^`FH2^Mr$}5k2nMW?LP|G zQqSNn(U)R*?RKqvgx~y+MrhOsBXMK!13G~*>ti;3Hd2%j_m5RX#fU}#UtIB-Xh~wL zsSFz0sFay0M~SJEgKykSr7_263&&yy)+P&9i-~f8J3NLouo-YU@i$S~W<8UoBm)fo z2)Qe}FCB3M;G_MIq9d#<6I)N2vI^+Fwr~tDE_Hy>c>(~8hu$&*>;|zi>4fPnO!Ue{ zRg6r|%eZHfT|m}IWhpPFlcC0Pwrf)UmImdgBDIym48F^69QDhfDaKMa!Qw$&kA(HH zh{gJzabl57DyPFDMV>Vj48)F7?g&jMa_%JQZC~ybj-i5OyW#LV%LPGv?7k?4&*R={@~Zu|rBv zB<83c%q$E`cIGa3Gq6^7f6eD(CutM-)#L_74PCJ=>y^#|xJK7FJC!V)w_3Gv>F#8f#?!c@jy^iWROUqYxC2$Y2k3h1HZL5J>PrS4%GS9wPbdhiB&xf8}e416XL6CF(5Jk0ObwR*R{KJ$Xf0zevrf;SXmMwu@ zoDcDSF318^bE6s4mlT>Y8ys$tU(*l~>7Y%J3W2a2VH>o`fT0vT%dN8a6ugKG93;#y zp*r*+pz){?24sf6anpu^tI9DkRzhWbt$hPU(d1~@9|A;*%EcUNTe9qreDCcrhJvIY zpXF|b#^TGPY2jwc#Ydz%ub)|UC2a94|nb%>NMY>F5WB*BU*Yj{&?Tn&qe~3N* zwibtYX((P$og9$Lw7CqReT>fkRIT>xw~z!7G0FCpAeyQKCEGd{trt`wi)|RlL;hU& z$iSLbX~!bfFk9N5=`I&^Zj0@xawOF|5wKvzE>sO4w!vN$7rosQyWJwY-7;HQ`GuEN z$vj6*a{|F6jhsbMh!bU_;sfv&E1v3`aWTQIm*wMMLq%> zwx?uVq)wahM&sSJx7U`0PQ@u-;(Ax&#L6=$P~<$K{=(7gKWPt13&?r8l9qUVr%#X2 zHz~}XG(xk>)0Y4XLM+nDf{GLpstQz9oSQ?J=5-#;A>5Mzd9r9&hIRm);D}a6dLq?d zNo}`YD50J~B}T_XxJ0OTA|Ql8xJb>0NPVt5fl4{nDV)mPi%y?Xja8Fk{J=}z-y1l8 z+t1xP+k}eFYt>wq;#Y?CrAS*s5(*k!(^$}m{NY=%yP6;b0ZVBSpBkNl>jtR>p$GaS z9-mdyc~GLD2NtYo+fJCW&<*pmrXvOoDd>nrN!qp}rmSow{Ikrgq0r(k?C(IV!AL1S zSq-QobvF~#nQav3aJ$OO(OMIs;RC#SEcDu__ zBSE#LBk>1!zhY|)?RpWNitzA&2j}+3qp7_1sei0+>{d(G= zK3h&l9mitV*N~^H5AuF0$q793KI#~~Vu!}VuonZb|1*TPLSe#kz+dFph<^aCmU)5c!?y7YHb6s=JF%DN( zY60MG2|+OM{*Ke7_8ylz(E0)n zA3(i46{BD$2Q)?~kj)=X(_`s&Z2WxWOKlj6y@c0eAvja(`3x$_k{`$Ko=fH}{ZLin zl^Wte#s>LO@8R8Whow_=)MMB`Sg-`B}e;|P4bPAkfmHswqr2aAGyUP)qV+P zvuiyL4#6~b%)zyqIt*^1O1e1{O|nv zK@A5lMG{iUhlRVt`Th1{t;4%wd1bZ-yy%BcZRhj73#LWQp1Q}^1HNJA`o2rN(qmUN zqdaFf8;I=*A>Gljdop`%I9waP^U;0OoHfUw9>VH(Lc5`tW?Q75DeEkH*H90%~~Nt`d=ZYPnK~zna5CP?SHCg&kWD1eCYi#csfCyzitA8&u!4t!EFW*WvtnX}U@~QW6mn~Bo6!B%`6+qId3`n4;DRFV( z&%oL@Ij!h;7$rg+CHvODKgj(|Z0>aPe%yaew8#N+`S{p**}Ww$ZWB5(`g^D<#y+DF zqZ!(o_R+_8+Kxs`aAr)-D092?%c9ThO`Nh8r%g*mc-1f&uh?wh9gWS3Nt<~2L0-?O zXT-oe1B8|;@s>Wtr?7#g6XZ6pbnBjrZmmb1^bL2);(D#Pto9vFe7T#W=&AGkftc(6 zYTar|koq{4DX6s^`zIqj0fh@D(zpL*y_{;^lQt#es-xo zTJ-QzG1)=#P_jrmk-b@*tx8cQbj)M}jcRxPnJt8KZ~8P8^p<2INkHsw?0RZCpjZ0y zkCmd@ygx=qe~KIT%BhDPoamP9i^N~Yeh9m^8r!%Ve8!cCGsib9se*>N?3?b!!e8XD zv|jmI{{}@XV8D-;#4=YV@H;ItX4!Zcq898XqAwA%dj9=a8UoJTchnfqD+k&hKLCe{ zOZbq{1m6|2X4RuK$7Vbnj0UJQ_=tVgq-{4?O8;A1Qd)SHa73e(SDp#HtMNvz(oVU$cl(|ZHnH`Lf8Sx7U<7>U7{&yl4GoELuF2J^0(e|gG z!t861hi9-0giOY8Yl$bW42A&Hk?K|?$uv7*vkcb2Wgd~JboYyo(EnbP?@XL969S%m zm9qde#VWLZ^s8OaT))e+`YkAiv$kWN^1`|M{Z!Qds`@v6lE#*3lcd-|MLQ`p{|_%Z z$JzI_FnN)0wN@hNV`$*H;RI%G-g2>VlM?(x~siJr7iUjAaIPhgS0W&_K9_wGDReVBZPk|6e`e6?AS z3*Bd^zk3y~s_-MB^8_}VlFn3@2{3XZPD=dJbYYs}oLOA{>oO$N#OAI@qyY9Rn_+>f2ioy1cCT8qI?e;cO+OQ2Qj}zB$eFI2oJnOnQtszVa^>_0tpEgoKGoK2c0sFI=IQDK-MP!L4QThJ$FQMJB)>W zRz#*ln-)ap-bC-}b>QQ;+F=uP^TcMeG2ymCU&)M#mgGcL#;>NP=5ES_)xYmhVer;v zsC4Bm!8=qqVJ{mu7^Kev=528cNN3HBE)m8tK2Tnwta|x8w9Z-r$z*?%eiOxIK13Dt zY(6n0o}Wh7CjwcJssD1Kkm1R+7GF9uQln?T+B55-Zx}LYT2EE$;TGF}1|8s!17h=x z|JBAMw0GRgP}{3@3jS&%QHMIU(huX92ECF_!MHu?cXfd=e@wdl&J$h`CaqsL5QnN0 zYX=~@2hZQq>>9wv$?-EVg~4_Yfw&WJ@P>+uIExe>G-=Iio;nFSCrI^x%snV~0s2t= zVSZXmX%*4tm-q>SWZ&fWDcC8`^m_#(wNJT;eG}V#w?Ft&KfibH=dmxRCIxAN$4fae zLEKf;Y{VIPf>8N%WdVvYU1Z>%~irc7U zGrp?r7oU7WnzVOKpWLvdRXC;)q>jdk75VH$#dx*k9ZzjHk=#kaT_0bUBAZais}K#P z^n-0Ddx!L@vE02k^VkZe(TX8RzbPAzTvVDm3PJQf3VZ83QPIl}h2Reiokm2&zRG3* z!@J>=_mi$*kY}0Wwbx}=LUXK~s`g}!Bb9BKQ9fXgzhcv#wZ5Fr;Xxa02udUe&hPt3 zE(uXB6oG#fQ)v!(aNAHmc0q?P#vlP>sf%Xc`6Q*7xW#Tkr#3SW$mwhoa9X?W8|TfC zH{IZfEn)55;K*+Nu~)<`XZz{>i<_#b1Du>V7o^0LRXs>Ms2Mf-2%#kEPFy(fwHU~2 zRy@@xF+P8lk3B9Hgy+n6um5I}h|1BDPT0iP-Ux%RRA~S%WDLkS5zPzC8{ZOk&nvY2 zJz6Ro#>(iAKeKHzWYZ4DPQ6|vk5iN9ws-RiCq#JrPtnEgKf264fPpn0aJUDl=q}2$7skkW*IGJdIHk#U=rjgXf!r zk49{htfmS%*`+V)+L}-&x2PcA3f5s>3Wrwo=j^XL149WFA&AgrK@-&fKxMZAf!)N% zANkNNY={aA4EOB%Rga2>-+{!wNmghWsy*4p;BP5Zw{1;-&R9?4b4#)nOc0H2NlL`& zh%;D8)YCVUKNfR>&C{}^<``|_j1f?>BL;3CoQIq61xE98s3DsS6Rh)e_GEi=RRvTZ zjA_ivp@#Vk#k>a_sMk8C{nvCyWH=EO;UGz3xA=PCXE73j6- z?+M(T50~YfEb>l5_e25Sw;xg#AdgVQ@S@(W$`$#Ci_menl`_z=(70=Tjm&i`4SK6} zvzG<~0U-vcQCa|6lC#0C*k8_xuy&eP7}zOi8#mIsB5fZBlq%%bQ5C!XV$hS@*~)m% z-Y3v^XXSt1$^4qcMCG~s^GT@O@V&RvOu+?haoE`l(>{C_RaEnI#%&{De2de{SdX$7Y0b>ad1|TI;xAT+RD`KUswsW_>;H z3N%kxI=$F>@EhQA>0^Hgc+ zR{VRt^qEn)yv{zsl_}Dh`{WM$F?RDG*$3B zhN44VHyt>}k=68J<(WClh;X-V)40#g-y*nXtox8s*%7_jpbdkim;(}r_sNA)QobHp!wRPMv8k&lVZL{bp z;Cnu{eLHB@lti0N8Ztx;CGv`qOh!Ys^ew1r6zG$mwQKbSE;1a&40R+aXU0~1ScYiS zt|^(wW+R$8iJo&15?QeUt0Rwd!N)O(7$=TG zq{dXps8_~zKKma#Y(9PA8eeCH+`qwf-paxx?)ty9`DF{|{eZFSw0;x2lEF%9+hL5U zbUMRCzN=N53zz+iq2~dsU|`WufmFaNXhjKM2jhZ$*LUCorD498imf zAMV*2@XEhRMW|*W26=|te?us5TBXeD zNli!67I6K=s-|P%GT=8y4rbVPG?%~_9kY~G+qmY>H|Y5wK%+wU=p|5Xoadb1&|p#J zxj|WUWmfCT%Z(^ibRZ^48rL8Hb0ukvOHu3Oa;K=0z<*Kz_I!AoD|c@Q>Savl1$x{Y zy9N@uvH)|n;^1V{^sp#}*$N$F$tJw{RU`rz2hov7s=Q%lcx8H!yd$vLy*h@))KtK9 z_i((HZcRNV+wM$epk(RXPq(3RBm9iv<^D2K5u_>hpn9ZXRAtdW3;$Lpks7}~Cexbs zq48&1hVfjJbt&zA1LR}0g{2mXcZPDmg@%nMC!Ba(h@}ZxRrt(}SH}veqB$Ki1>XF$ z2GiEMISE~nped$WQIWJQ)+5$@L&Jp(El~5n`xqBfQN4XJ6)S} z7y$OWoNhTk`D(7ShOQvysof@SS%Bv+B3@?h!;<-PMuGoY)K0U>`N7;!o3A;cad~Fx z6mG3!DuhIaSf3QzK(pZpt5V#sE!Tb{-BiesBT}p0IB6_qwS$_JO$f+fS1)_`#uDIl z54p><<6zt1XwYL#{nwLsgGr037@tW)xuivftl~_ZT1fS#k9mXgR(FdhMnl}(dd1o% z163iKY#=a?(^A+tbmZOK*?LIoRfUA&d1!5+|7kW3pbEv?BSe{}Yyzh;&9@dEG0&## zNYeaqs-vY61=DTAE2J z4u)C4tQMctriWu@%{cTSS}$M{H*7&C|hyO$zZ^@nM5BvRFwxr(dYlNES+M^$|2 zcoa-1r0N~6Xh)711h##bs{j$Lsvp1~9 z@(kW0_ht)RApglK8o)}ha^o#YA;tcN>R&pg|L5n4{wY6p8lwBPox~UTK5OH6nqt+mrMm;FUJe*~>tu&Oy*h0ehRcAt$$s|id>V2jCeI(GF zwTe2Y-G5bR(gbM5=JM6DuUI>($e}Qv<*6B&-t0q1Auqa;ppWUkXUa`*PS({D*4!(j zNMFX9yJ2EwNlSR#;b3}dCl#G6lD`v8W99>)va5tFvHa1}BlOC9k6n3#OcpLx&Hfs7 zFa=gGLpivR+Y@cJP;(PY1Xh+m@!}OYo?^8{XOF{NVwf4Wx`<%C22W0MTr6njY(_ygNM0arz zfAqvB%=kPUDTjJ*UP$cbs#{<7+`zyUv{AoyS1VMG`?J06uZ^uVxo>Cpho__KsLunn z4!P$z17ei`tlbUGqSmH#H@eV!H=-8Pr`lm~f6q%Hw!MMM!hw~rpA4$U$KmC>;kib~ zhFGKE^z~9NVcESpv7N*~=~Er-$gr+&DeKM(L`?=@N=---Z$vmJIfg29R`pJFP1o6T zIP5EO86GWN45H?iD^j~;l8l8Fhs))9`MmuK^n6Ac9KY#W-`EOE!({LIe6zm+4j@d; zht9wE1onEqBUoBrc5U&@%IVtSUw3)Ep8;!cRMH?j=x!qhd0l6~(fJNPv|IzW$8LvxN$_T#xIoCKT_05#Y?@OV`XJb~C1ittC+ zHZnttBM*qdWglDVzWxlakokH7{PA9gLPqR8I08tS&UUTu6Z*_yJgyhA@KY#oAp6lX zh9T*ju-PjJxuRPdz$rQ?@W;~M>3A<7`(b=z^+a_C2AOj^iN<4zG~VJ$;4A(siboK+ zM$Nx>MV;Okf?{Nv&iU5l_LT4Zf&4O1T3E*)1FHpC+ziZf-utzoIr(7RsotnB!(D(g znerCW&d|}~EjofTIH2dO#5b^I939XzmM>;RuZ@0J%bjst{)U1c+>qBd3 z3JTKjq+rj=?AR}`(}y_$!N&yt!8QV@PQMFJB=(Gs$ocj??e3IZ1kIe0XFJ&4OD(u? z77fi@k}C4)5?A>Wuq3<_S;}Sv>44p^D$Hz61q0UR-V^qIeXa1Ve}f#sg*CG>|Jqr1 zMmRfP7B_#n`RE>Ye|tFlk$!{`KYg4nJlcH&uNn^heBMX+czm8N<@`J?*MEMlIKSSt zK=ct_-6xf=4HAz1B0isU5B(;S4EeWzYqwmEAyAi(gBp3rd0v?Kv?cTkcw+qPh_6k5 z-B`Kt-QMzR^QpT~FPFP%0RY^dcLG%}dt%?Rzd3jd{y-@A`=_%l9Mgp!yzEU~ZwP${ zslS4K7QgC$*XB06xjwGb$x$wG!<|7r@$0yYrP3o%_c9!7c1o3_s%5!I@dZfAq2CULEha4;>4&GKOU5s5%8B0ts0G`vB&V-D4; zkJz5K?)R;ehc_>2GwT(BWQarnw&Vfmmjgwgf%7A}MLy_|@%a>hvTp)MY&U8V3lkNS zWaB3mf1*Tu=cy~H`6CV5f-A{aL-5%M^{gT$49P)pGo*;O6lYa}p_5lkMbrL(zWq?{QZzjkxuO`qJXf>5uyp~r zZ7M>z%~_X)ZAU&ycna<9czXyLqWsh0=8bTwDJa>&8ND2y-Y;$ zk;N<*oOB*8rM_+E8pks^&W(-sHY$SSnrEM7#u~h0Yc5I01z?4Ao?((aHKJhIA2Bp-k(c>)Rn{ZH-|D0T1Va9@|%rjVAB_+o4QrwU`rv$Buf+ZMH(>efwKz}X^rWYZ{nBNR(>TO5PdhJwtDYXOD#TM@PE6Q~ z){-0&a6@?qRVXQa2SnCR(gt>H;}WAw*~+deN6>jRC+VMRa1GjegVGlCxyL9MV<6AL zUTHDkKD-%yXf{r2j#zTkUvmmF@Uo8IcgblZpJFSeo93+#WFkd4b7H!)L6$~&K$!#V znWhQZ2Zrx94LAVMi#`}&l-AmH9iuAdWX}srChGs$*}0MV6J~~2bfC{7?rt8pTbIu- z7jP^vv2Wj8T9m5N?K6NCYS<9usjO;)@>+c z9u%WRS-rd%+FpYAIikZePpidf6zwR!1} zShtW@glvOe;ReG6b)|Cn*QP@KlbNJKy ziHDPC&Iq8x1BvgvQP#;&R#8&gybx1X{5M@Lax7(`-Kqk*=Ib7l zbrE<1lGW2Yddr;e(esTBL2xfx3mU+*@K`_L3!PBGKoYfpk}*xDv+o0^+sHT#D1zZf zQ50kDTqe<($Z`bn?98QF%@1Y+d}bh#p<<_ri;`|tYE;p4D+nUx_jwCuTq>0lp%0>T z6QXdzF5)*wc^BYk@O$gfRM*vLA^WswZye!A(?5%ZP|kCiZ!x(h0qJ`Gh1&<#^eg2= z$T|omHWK+7IZ0>Z`t?SC1LB1 z2y+$AqBxk;B7nhr(OOfzgTd`L5odRSf$>mX8Ur$EF;C4BSU$+9{5SVh9VBItae(*m zQr|w4WlORc$)A{?uA+LEN#Gj%CNC zyUN(e!h@sna2G*nu*2_J-5Q5pZ>RWHxOP#`vaE%UfXG1A(iZgxR+S|xrpz6_m3f3d zP&wEL7#bnMMO0RN3M?Q8D--UIUTfa1-m0fP$+dR&$)%UlIjO&(D8!LHHag2hZ=M1D z;UnN{U7oIX`gLpOC_EEYR~(q+E{oO~g;@ALPQob3m6A6=12HMnLxkM+a}8ONck zzykmGpVH-1sHlr`-Tebq^|J1l?3WATkC2?C&da;wcth8#0~w|oWlJCJs_ZEV{bH-k zGLoZ{kPaH`dv-j=j2-pc1I&2noT8v(kKXSI+d4ASLMu`I7|9JQEAvtOD$*%)YQ%77*UpuZZG>V4 zzt4`gE-Xx4Y#9;OI<7|M*>JZnF1w+9D~$0@Kgjv`Af_mSe`L-$K&*Md$nzrCCn5=H zCC}HF2ah#& zlJH0H*}Gc5SP<-W3xkp3^K=aIai*K+zR4|i{6XHh!|&o9Aq2VOSsxFO%uceW{W<$p zpbhCGq`-RWLzuW&eVikyCkY`=;NO+MufCnmrMq9q~ABbqPcaavhe`k{;lbD#tm z8WdU7br2`sLi~=;`P&olO*R^4s&>5r+BpAxzrpwUIwJ@BmAmt0@!9u%&-U>B;I<7c zIV1txZobO?)$Mn{opk+Xg~UZ%GPIpETN|}c>)(U+bd3=CiKD;N09pcri=P zG*ZEwXAvXfTct~5QL+DVw=w>QZGL;kJT-IHN?LfyjH?Y0J+qTc{H$)wtMNm@eILXr z(@aQb(m_dFk$o#|a6Y#{gI5R~Q1!vEHq^9q9Jl_hJ5l-&RaA}#+KOJSo9T4a;OVez zy{d)mO5iK^^f--akPvRmq*(WB<1-rjCF?I+wPU=vMY3SWOyDw9dbMrCtiSkBKi4Jr zvs$m4uR9-EHWwAg>Bm#IEW6U}(j2Qs%C~spFCX@zrVkQaf$5_TWT;T-ldSgpy^*Aw zRTMd4P$faPvOG};mCYBU&H*0oDL*A-1BYI|vn;>u2e@enNAmwv4+_o4ACoC9&hRSZ3T~rX2y8zo2T}KlfuaWeL zw28wW{G~LT;q%Q<9aWtHDjeGu36#zvgY!CWz(m6>u*NB>N25=pCx{( zz5jzrE8wRI@8BqUErI9aL9b^*mgteMAsFJl$1_L1(jS=cw}LQzzXS3=ZMkTYXg?N# z@_74h&uwsm$hK>*QUd6$wv6_tI{{8sBk5Tran3<5!yvN6vO+V=W)5ZBKm1Ow4H7FUSI;R;lP5MyG4GgGOU$XewqKNd>+6wM5ieXU zQJL|m@9xu|l?_CIUvik#&q8UJ9k13P(|gTqi8>Df2<>zmHW!{`ClFWE4>BtjE`r9z z41?yk5$i!u;ILbBGtZwFb47qu@-9(gv~w`w8*aH$CMcY~_=J)a91YAuqq9fJxZkJ! z|Dgt;5>edw4M20U8({JHJbMcQ$F&pZ1+|?8#c1$` zR}|}Ub=7|v~n$4D*re1hRDZ3RSc2F#4OtADFU(A`h7}j~lWtADBZT^(~A^ zW5^(`q^PP|`pIjLa1)cB(x_)l1-)#W_*q#rguWh0%-gHnm^|fWWxqB)1e3abK%tm( zex|!mO5@7D`^i4kd7(mY0?^D|ZNrnVG~qDRe@#sHG{vL+2k)*?q@CnKuV05+ewFWR zPK%K4@16`lDs9z~R8x1{=6pn}=+T&qK&sR(dlq0N$kYgbTIvNqWZ#x$qLQ)Y2Bk=u zeF2bkaeegSF}zTRiD~(T^5;L444)vnMxn(6($3N0?M^LlHF{9J=dl=zo;u{=sKlLm*3|a zez#Bf_czVgGhN)u@vHMx9mS785>^%1q^TePi92RzZ~q@85ad5(YMK+@@43*Y+~ec( zrX7CVW59bYfDDlg0^b9$tRon3c1nodE5zy_W(@*Z1Nka%0Ik|l;`D#iItEks6NduE zBkmFs_6iC5hXsQGph3UrB%yZ229j?>74p7!GG+M3>)2F+i(=g`MB^YT6n3k(MutMU z1wUbIKmLh+|LJj$p6z%eoa_4}TOAUswzj~A&ij5`Q1g`fd+(+*p#X<8j{j~Gdei%pvdSv*k>QtXS+f*a z3m2vX8(^D@dpPv#6d29IKk`JNZM(+d5bZ9|Nwb~#Lz2V33UCNb(iYG39!tw{U)M+L z2?-Ke{0yt#@C+9FXnguwOXL4y9IqTYFh?0+!`nQxj^>`V{)*EIS@mqFG)EpF+@0p* zTs}tjvSXgzJo0tDvdiAgo71ssyoAkM%gfI_KmPE3Wgt`t1!{6SVvLT&wfiYvq}NO= zv0F-PC)u{l!DQcpx{{P_HAa`29R|qoAK-MmezxfpBDy@f1agI$w&uxQP1yFtaUsJm z01m8E+1{@X2e+C(54nC;)6Rn>7~aO7$0GJ%ax$cL;<%-Gq8nO-_b~~J zJ7Co#*vZp?Z#cXAKs#e;7ZPNR+{@ghX=a6FebD^Iz|t~whLypvqOO;RGn-kXmvVzt zGp7qxbt$4S*$Vh-*bGqgIRv0__}aSCWNVG$Pm&hs_5ND!L zr#AJQpPVsb=-|jyh1=Nnzd%0iMfVgZ#sXng=*m@bRo&JY8cIFEfJot%&=N89@-)$A z5doE%Mcch|Ce@7M%}H?3@q!`l;ZlxlY17nx_f(X0HsS+6VNZxXf(eh5=0~)V8a6ns zKHi;#p#d$%*${R~CQD}KbF|L6wmAEnIjX@PaZMGcvehhgwR{mI;)XHr(DMAzI(BKf z_xriaBXX~>87%)-Yx8v*;!q?U%!FpCo^pad`fS-QwqrK?nb=F&1`SVtJ!XqW*Zt03 zckgqD%BUC$^X<~D&4{zke<=6ev(UGa)Jk}R-ZW2Dl6KmWIZ|R~EB}TSino4>ymtn^k`y`3m$&Usp}ny7 zFpSpftxlq=0v{5yU$F>LB>s!ICt~k>ZQE!$FHWUw2P>-c$b9r$s!mQ%-WcvlZp0wz5*FRS5!XS>l5rx@|cC47|Xem zk!s${R@Rj<%m`t#j}bnHaP1>++S&RDn}ufLqqL9t6YOOA;=k4 z!UA)m$c|k&W0rAEg^$59|H2UdEzA>!Z`k(@-(JYiJ>@y$CA>1jt&0yFEulj^ z=qN-JeRKOyv7`<8>i5HlK9F5t`FL=1LFjH8cv`SpnEr?Q#liSGHD;S zvQxsUajMJgW2?X{?bHijBh&)PWY@iZoj0W3NrQJ{h-B$gQ_Mi{7?h8ew;?uSv+!LA z@iv*R^0R9iUNT#!4K#eGxd(Ow*w5ORourFDbY*5LTNc5ncb9u%19oJS`nqAP&t$i^ zV@HTgG2E7$$rHh*-u)uIBqcFZ>FHFW7Iv5PM?lG*8{~Ol9YD zrqPZJ5{ZaVJcv!~pz2`6%8<6Q5T8k}Wqe)3hqC_0r^=V+Hxi!P--(2>>I4dvv?KG! zS~?a*2T$y?bH2nj&BSM?0Wtc6P@I-}!$X6?Us+D(XePcvKA3aGh<(HRt)}TBi2n#Y zfFlt&1{fpN@*Pm-5wU+su21dW(qyhw!xWdf!(Ph3x(6w{R)etiX=KM?ZyMd-Btdd` zXj0{{J#)Y#GTYXgv3&TWF^DN0>1G}#(A%b4&X@&jN5+k(Jf(QTTT~z3U46;{U{}P& zyhgR6ZLq9=(#$rh3vhdzh!r?puMD`W_D3FmFPM6iQjfX?-9+J?HB7=mzcr_wteLMC zDdMC*%5|pk97S3<)fodMKKtOKi0Kv?DXw1o&t^H~k@y?13OGpYnVEnk<%;CRK}aVi zgXo~Ft!)&^v+K@pqdT7V{s2B^#acMDn86r2MT&Zta~ckoW-+MA!>*s{h=<)ETU&O$ z|1KJqLN|2~&X86cHG?0+Wx!c-b&}!$e~mI^A#dI~`0)FO zVkbzflPL`u5V`COQ@@j;D0kuJHE@cSiZG+7I3{@P`jXPq>dTU?y_*p{*S=P#0%sGL zDqbED&aV^U@K@;%zq^U7)bM|zv9g5-4U$P{3%bvae|3!YGgundvG=pg5215;Fu(<1 z({2j8(MYtzNAw0(WLd#vr8wgxtkIiQEx|%boW>ryV)8|g@eXN&ItE>i9q-yS`tC6~ z8qP5`;H-CEv$zL@w&bFx`gLlI{}FF>ypEe8!%nLHm>9X602zdhk^EWPTY)!4iob?; z#%9@au2$c;E1Mj(noinvWZEi7Vb#N+8-p-71UeAO`Y<$7rt%nex}J!kj?vcKVEpW} zGn*#j1Z#`_CQW}j3us9g@s_X&*(cQWb(ayX2V7nH^ zs0E!=Qcj;+W?@7rig}|Mo-yjG2vSD z^eF+ut#XVgKGo-HzSZjSHDt+yevuTAC~#8VSb?oh*O6JZyKVGKi20`lDaTa`%rixx z-h+fKAg$?(%fg$N>6E5UK~{fzs(Fqv6i|KJwf|Su_Gh>bfnd0`m$qhH%E@X)0;zct z{7l{0BbSS|JSGknbm|5D%ZTH4*ed`wBNvR6jMsR!%yLsCYp8JOPph@2vzs{D=2@1j z+*R(TTm9o+@WwQ0MX}f*b=i6!^16h9__`<`J@v5-B-tA8u0FxOoq>i`&%4e)8AgT@ zfSA;O>#B9eMSIT?b-qSNV5)y&2+75aM>?$#p(KCBg!q9Yp#)X9@3K5sfPEe?l=PL0 zBb4u32LvrdpW_K?F*T!wB}CcE%EH^l!-=BE0}CG8v$bW&blf zbN9&pnUqsxv}EUZUe}4Fl|I^Lt%IXz+p~h8GB2vD>bs_3ndcQY8lyDl(0%WG-+wE< z8QCYIVrJaRiTw;X-FN0~0ZEH>-Pm(GvKRN3geOdjERAN%Ue~TJW)`zd%LuhtNnmT{ zB{agzX%>_IvC=XXcB>fc6GAA80`UUj(N}Sr{rdZG+{BlJfL0nsf=d}4UPP@SG@Q1- zL1Wi0_y`L%a9EwLzF|4+5qd?`CDz z3(Y*IPlfY1+8|gkS|J5~3I3N6u-r6=1V_rQ1QmF01UmqE=+D8w=r8<5+qc>I+Jv<@ z+n6Otm0e)KD#M^ckX3!Z$bWXy)9KZf$(*k;-p2L5py3L$5EPtKs9?qjE=7*|zKf)< z>hpj+{zi0;+zRcl$JgR3rk2Dp%lF3}k)LVu&M64q?w;OM3cES=VN{XF4gT4lqjb&>dj$YnWx{(mCf-Kpv;}Ua>u&-`eL5#N9O+;Z0%! zuj>}r%9o2JI^0W=Yu3Ol&?PucjcR<7V|Y$4RIxjp$&Or#gjGQ+X_PLhJ7`KROKM}! z>mkH=bLr>)?&|i9^51%47}U>FoK14Z!Zuck-tyhp8Qk4rI({LXBAj#Z+`i#l7RQAaL6JK4FFpFqN0? z=4xjK#+h4^e0KI<1?U`0CIS;Rk3i17xUigJ#d9LkwGi>MpVRN9<8R*6PW79wGwjyR zJ^xs(PK47O&)`=M>wr0mgJkayn&8a?*!!afzfZ6_bZ%}3{Aya^Wprzo3j>Je_qxRp zQ?l`~&dH8(CA_L{Qqs=e={DVk*|Qq_W&Tbs5nq>xF}to<#&OE`YaxuI@`%WD1&P`} zzdHzYA{Vdf7RXj@DO=nu6<479r-z^A#r*Ap-{rF1Zi`)bdpPOrpl_@PG(?2lSLTm+ zo64n1)D8EJvTdb4e0%|3c$yw7J%Jf)@Qo)@joue7G+h@HGF?>Z9#$4$J+T&QsI`+- zJZ63*JINR2!?V7`Q&OlN`%kFpQPmWy7YbMj7_+LeyFj8t>Po&UMZ-?V?ZC| zB-RcFq(YsSe_`0Otqd#G)V2ZwA*vvkNyJ9B#xG{iX;R|L(0KE<9IzE5TGoH8*l7IA zC&MjZh%1WL&F+xI-rsZPZiBEvM zk|;Teb;14fZ=G4I%X~n@kxw-!DJH98tVh7Fy`9-19qsvhnaaRfL+VJ3zHRhpm)D&3 zPwNoYGv&-)+sNN{o#S1Bd{2euVd-13$;B6MvA5o%uReWIo1}eI?Q!>HW1*j|#4~Mw z;V*B!pfD7>DHcRV%xP8BgnfT!0sdaDoayDn_q&uYj-e_6mU-GQs8wDHF(NZfy?dGlQ zplkD012lgz*F}-Hf>Hd_0m1}Aj)UP9YD~@p8N%EMxigCCmgkJ?1s#LF{}KS~I^Zw5 zCLgW475iv$U98FBQCq56l7*>k+W6Qg&5XY{?enFEzXAX^%-&-zhgI%;0EgqG_B!#4D5#cm<)tfEY7tg%fg6^hHb}* zPZN;!>!%o{`!~mOrbe%^;?CbLP?x7TO?996DElE8x*t73E_DOXhFotakLxUMBP3*; z7dw~+EGX2(hQ$od%xy;7)B+b(9Db_FiyEFjrC zx^Yon$PkJZHky}`wv6U!wYSS4|IdoWW!8voM>i_id3*qSs(R)>>3oN?V4@V5`7s{G zx(O0wvY0C3@H#ldBG_`FITh_2Xka7Jtbm>nMlqx0%8h8werSg6wG{c@y{}%C)oJQ2 zInF>nOd54_Y2Byz19jDZ3$*6Nv>YLY>P7aZ6FWiRrDG=QvxkZW_5w=AH0v&$=egO% z117TSeW2ciiwd5^l`)+BqphuA|55S$lJ)w9 zha2=X)5Q~eYES9HqhJF-pgPC(`KPwfAMA;Flnrm2(#hox#_l3jc0wLG4z9qNm(wRo zt8h|AC-ul7{*6;`QBOldugax^%-^eCwf zEx#9d(%T*k;fcW-O!S#88%ZD<0DM##7% z!sc@e7Jg9yhp$$Uz5?f^)IVhBFE3IXMy{ArfMT#=ooLT8BY!Ja>F~FwERNJQ{YItLbs*uudt4B7GTv z+?F@B^GrucZ_>Aq;Z`g|(przhMCsi7Xm5yxjyM*Pfsy5|dlXlxo`7b|>82nEwChEF zH5FDRCtp8x5*yDtt(piC|1TZChS9kCffAN?_|!-;Gpr`KaZ)70g3dLiBNCrMHd?jj zKPANk=B_$s5~lV<(vWcGG>pRhmnd(JTLlPiXI8xXali1rh_eS)^zRGzb10F zf?}y6MhzHGBb;iF{|Rgh-B2(|oTWs=OEb?NFXo#1{1EMq|1rXkWcMo1i&i|;Lvq%{ z@wC@Y9@x!tl|P5a`5I{3i#g^*^g4if<~1x}p5n@y-VitdssT`wzedb${yLl>Fq*zl z$HA`=osc0eN6Sn3QlDA|`*I&oEq18Y=Mc#S=tvK97i-MqrQf|!og zY9ArI7g!6*+5Td2$ZOQ>op%_HGM=;IXz}UU`NO%=x0=)1f!y|A^kA}4BsrTONNGe< zE|Q42#t^m_IPK3}sCD$L7hSI2=~m+xxaMd~h$+pMt58XzZJ$3k9~GUCI&YJ*P(r~py$#9S z(Q$OQMaqipwF;TlTyVty4LAsPqsEp#4}ptkCPHxzajUZ99bgxi>|P0?%Us|!>>VG@ z8?r@YE==)zD$bnP7mI|jW^rHe*YqvA1#-=aCkDPE0DJ_q+V2ziH^>JM`Q;3ur{e8m z5V-OEU#`i|Q!kZ+)34F5Gx}oYzwkXfv_3ub&2`97>dCuV@XzUj%A^@A2a^YIgQKU% z1w#fV^BAOKbB|4KI}P49?j^Jp*k;JM*+$MV0C|qXO^|lg$scRD3V#*Tf=vdta%wAI z%M~pLvm`KCAX7BDi>yuA707WwTDR$T$zNQ*XM4N~Z;lzR{H#lCp#nvw`M!T)`niRn zeN{hRnS5afR`A8Oc`eMO>$v&e$#*xJ(WhRxJX>&Iu)UBbT&k(Z5@Z%H?@DvyLXvRS8H@D(s8LHjm7#RN1M%{vS~^?L}OcrzxaW z45NKj05jBx)PZ%&Fsy-AsH@2o2s{3LVFYCiDq7vcIIrnlTz~gAc+!jVfO&)xP=Dw& zkb$fKE?x;7+4__Jq6yzB*Q?UIPwV!>zE{si<1y&6gf1gpc{;XWvS(1UA;(vyn{n=Z@NwLNL+Ijb9h9Y6 z3l+sGc${KZ7AO&KliX2tc=*{WtwL3epX9IVEJ4(x#XQ0?|9X$-CyXST3zMl8j%bb3 z8QQhv4Rd9>l@?j9G4McliffWDT3gy87P;fBQ7mfe(?Ves0`a{3{fomOya=r_!Qpp% zt!M{rc`WT%BdWD-_>py7YnT)Zs@qbvf`(@~o!W{MDrVs+sbLAdswP+Lcpp2~5EK#~ zSFaRYugs`I$)*;f4cSb*;D+7}R{8}vfkC7s8MQTLvTOzCcPaXo*)1i<%%(2X@wa&@ zhCihbP<+4xUJk+zLv1l%5_~vdD4JWKzn6m z`YRffamx1IL1Qv+_;MpME4c*Q?#Y6zEntAm$@51~Zo<7pf?z?1Dn_sa7Ioj&kZARb zpk7;S#uWSIN_ab&_adL)6x62L2op><%s2>(D(-R#fv4sxrE;&&e%9tZqq4(Bj{ZMxJim{rPwd z+G(3RCUWhzMSn8Y31<9gR6OcDr3oSF<*FtcDX7; zQ;*cfg1^81nnXTW^fn8tg4M!El;35R4qc|UwI??mp=vwm%FFJ5=e;1iL#>_)CeJQC z@w$_0u6uN;Jx`jm{?riR0&6J^|BM!cJo}|9Pnz_TtI0O~%{3TK{dtU^?aZrq-faLk z=?2OaF{`F>VJixR zB4jdJk^4dVjZ$>XGB&kW0ecQbX>d0FGWnd!N#{GH9rs(Hv$VWz*}4h|psE%|0EHr)UjPwbP8GK{5e z+7-YlfyDRio|tp>u(p)z^W@pnm=m6ETAvW>ht`ZoFTFw(zYNlJC`8b$Nih8P$uskR zo~sjg4A$#juBMP`c?kaNRxc6E7$bwx&qs}De#VAe=Ytg);%6D6IKtHmBQz2QT*E)g zdc^a-*+tx-pu@+-<*KK4h90s^hS!jY2P1N%<1I4{F^_<_$bahZFi}$ZhxW6E)6x_s z7x#^Ra^v8#NSZyXtPJTv;>d2hs@0`tT4GHY`$Sjh5~GEHt21HVzPnC4I;Y6!4)W^Q zZzRE_p4{+3S@b*`B!8`qipA;1K3)W=FQSwp3NAYkOwl6W0urslM-=b@9u*hn-)V*w zP%(OBFip)9yi{BaofUC8YOD9iv(~A-jGf8S{dDu{U-co0YD~6Kv~6?wM)}>w9@+O+G^H%#ooQ>l-`jpnyV0d z0}->0qKN{A_rxv0JQjw&ZP}=nV@LJy#f!5Q2@_`#s#q@R z)XC%8k-`Hg{)tx}R`X*r^$rHHgSD}Ql~72)b7q{6fW<}lvyx zLBE9-y3VH8FN|~?-CrnKnGW}?o0nQH6t!)(j;X38*{(e2Lc=w}@8mmrU^v#!GsBhQ zv+wOQc=Xh_UirQaH4`*~XEX9Xs~o5dJ^t((eVaU7PO3i7?-;^R{z^U%^3J@%}KDsK?w zQ1MGU zocF?7V^3~4+w-!ywiaO}GWcA%#`}JXQkaV3PYCshTXZ}i#cvEaT2o}u@#uOJ3jJk< zogAN0{VuE`Bu``sO&j!ti9z^rGyp2}yRY)PZv{F$?HB0cQsV)y$|tZGox0jxu@C-$ zV)$B8>DBR}(L2O-6%>Q@$b>#M(8^C^TmUVI}zLc4` zmovIXvY|d|L_O>XN<$FcV*ATT_t={gI9u__mwdk!C>%)T(kM=i)`1_>pP1#pRk&#R zOnW?VVK<^2)4kq2@dA@27Y|>^ImG?Rhb~{8U(hlK(qCK<6MyhAwse1XzLey=BP_Qp>VfC0lL~XZj{KEDBUAR=k>wh8E_vQ)xhR z!|TyyMJgU&PCCVIkxI|b{bD(roG9Ooj8LI3NGIjJJhLyYItn^Hb_SVrhLv!C7R-L` z0z|dMZR^^anR_F|(vsTNQ7RG)=dzQAWMyzaPK zBdD@5ElOThj*RTonl0cA_=&@-Twf>>e=z`pTaCD&pMbBsMy8A`D24^z8~Pc*Zp#VU z?gDc`2|pGjCfmikXDAwk=seqePya-78oCJbz{=t#UB}E4OC=zuVLnA^qHJvnfvN3Q zrL~LNRA^59^)r6^yc(SWvd8YbK42 zyRwm#4g9`|lxMx8p@Zy8-cFQB&Z$*#GwYcWocguSHxb)t!7BRLp;O%E>E2hFJXbfd zRty<5s%L5iv`V33WZhamK7Oy@JuX((f_*i%x}wFiOaUGcJB!2jN9|skUvL8`ZM=dS zx~j``!^y2e!Cmh@h)V`=TWH|LZKr(K1NZ|v``c_r-Aka!Tfz2#u7K|F*KEJWt&Mi{%^6VG2c^m}^3iN?Uds6pmq8yKV(jtmC_BqevXK$_Zp&}* zmQyTqCv_eAtcTTEaXx%%pM&7%`?Z;kN~igGcA4}C(@CBu2T%_IEGX5i2usDliY%GZ z{ct6UfYUaT+e4K5UV-7{v_m-ccvGfnagP21CQ;*ti!-#$y+eZtb~=U?E7jr@t6Ad0 zp|cV1A>qge=jlZs=mnrC{W8>!i_0~hcK_6U+Sn|m2I*3b~@Wbrs|> z6KP(PCH4ow+=X|>KY#%Ke#>x2Q-Oke+iXIA@EQK)?QAPX z8=t0A_}lyLUfhnAFK@x=n1Q~6hcV*0Iq|Td+xi#d>A9_cvF9nQ0DM~%#V$Iy zuzV?k(mA*5zXR0njGbDFMdE=Nrdb<l6_+vVkzbxEl^qY=>g`XvP4biJwaN+RVuMhVQ zKkV${6dLJeHUJ=;rhV|%L6DglUpMq8`@7padvA9S=o7O;eQYAY=b*O%gjRke&9|@iTi62OX-R{{ zoRzBa(n5a0x1c%7I}RUieGi&$Its6RLStF4cG4fsve_I=MxdLAO(8H0CT6zT7z$NY zQXPar7fN4s6qQ|>*zmVVZ2ZF^T)KBM4t8H2?!9~a>FxHLU3)^H-i)BSe_GsD=8=<- zXJ_NssUV^y-4H|_i4q!Le87dNx~?PR=raXGtY563z(uM~!o zg?7#Fi)O2=@`kxX*;_Kwd(&UdmUObU1pWE?_;VTGa1nO@sMa^^O1_oZm1f3asA53tdupE zx08(OzC%yog{0(BD|4W2q__m7V1&YNWK#6OOAcN#_tI%EUnCbjDf5^Trn7o~-%V@I zrvx#6{dLKj3TQfeo%ZwDyK#CSASkCYZznHClfh@ubQpg7-{)zLWT2ozo9MTwM%3Ne#>|BxUa1L8t;4*VTh4Nf_j_$)=mOznK`CIU}@7P$LD0$ z!GBRex|dq+b`sFi4O^Wqmu{CY`q$kTt7fg<7;8lm&W%-{KA4phT>!KvVn@MDeOANy zz(vXMk-#j?g~M%mzY4+;oCixs{Y=z0lRif#PB6|CrzrR_%nHa%1rMjh^d)wb?xZBCSf#^JB_V`ce(@xqvRH(+sgMd zvYr^unG98^k|4rYyLPb)vnH!)W#v8UlXg(8ZZ5CuSD?4Kt=bCv>I`jXqy-8*($3St z=bRFsX|*ETehna#)5)CYmDs+rw6-z0Y8ET2yHs8n&lntl%@Ly=0`Gn9ekl*+tRXIT zr^wG1U-`UKq=7S{EWNbQQK%9>m-TQDoLN9EN>HELb}i1elJB2;rzUclu`BShGhIs( ziSMh#z;b>!z=z~{Qtrwo;z`j3p!lYqyRQe($No%ApQW2?#g~PpLBe0X!l(n02iRCc zOz;M;TWka6sp(KlMFIjRlOi+R-4+;S2ZOz7>lRRVE z_7e~DJEoJ*=}-+|CSZ68j8?yfexPvMM7jqlDSjWimNQ+GQM4@V1V8 z#ag7=5;SZW*`g5hEA|5{KWh^k>mGpLgT5roaIiBxYc{oz+w``vKZ2OC@gxB=YdTHx z`RQq9<5Frtw@Qt%8Z5-Xrgas!y#b+*j;uMf;UhifaFt=&85w#of?NU}j24%#lBq#_ z^hI=+Bi>-OFTlto?t1Tq@F|#I;|Jfjzm~VLwpc<%pHPIT=}OV&oW!ANrVTMfgF$+U z3C>zJh$+M+L82O(HoBtPd^o(bQkc>#8G&M!%j;UhIu?6iY<{uZY6Z{{V*8`fv6ZAS{p5lq_|B9?cxLNjv#Fr~ z@L|Nh7+7$*~KZ26U3LP1L=6Q~P(=&h|KJCnhj17pB`Wn`1233-3kTN_B) z&E5^UzoAQwBCs17`kf>72eA=&qf!5gI>5k5Gr*;xus|w+v`{W1GiSpH7#@H#fz2l7 zb=UI|ir=R(cIG{A-SgsA;AyQrBY9kH?VBgVfnG{>rBz3=T8YY`EJuWDik!I+@Fv@^ z4j|kDh&Fnek&rd&Yv<5JMfw9vXPT<8XCK{m$A(QaU@#LIjOIh6S2=PS$bgyeyXspX zugE__qKez`vC*wzrQy%#7yYp!me4`@B+$oV$sAx0mrnt&G2&ot@`+qL#>yuETfAg^ z@u#@m9OUcrDTsf^l4+1}THGxlG@Mwh&Xlz^rSl_)ESj6&3s7$BzuOm{O*%}zWGuI) zdHM7!y$-w_4aY*Yd>XHhg*aW-I~d+tYAqkO20w!=4*X%wr7gpfSqItd&IEadI$Po( zuUT}JI)yr^z?_21MUA6mrLPWOnx&IGG{Ax{49_?Q_u2l)34;30EsBXG=#)%6Lj2=s z65O>KPpnIBEkyB`Em`(%yKbAM?=B0M%V^1ljVB%P9O;0|N#}3kb5f03z?+RHiS;^x zZxi_zE^;|Lo*PRkqLujE#J3H7q+^>#&eQd_46oHX4^8g)ltUErAMy?GMKA66?6RR+9`#7m{JIW=eRaQi~3KA4)X|i8)9OOE=2~w{{tq zjyk#Y6ozA32Yw<8$;5n;46`XDNYNhcwxGptREMYFNV@;HGNPX)79QP&Vf1BVQ3RFU&s!o#7(Kw={Vqk=6wE^Du>OVxiNzrk6uJy8-;uz{hn`YO z#H!uV**I~{Jf_>V6EoIl-`xlorDqj{OxR^FilH7hCz*}EL4x{|OI0S~xw(B)kXN$) z2$=mdPB*6Vk*%pFolM$Lz|{P5gsV0E1s~a0os1*J(YSe#UUJr@pgqMt=Jqv_H&%o9 zM?|B-LEQTeU!(Y$7*=0rYN`)&6g7CmUaqUfN4Aold9B*B28^qqC_&Q@f@`1FZMY{&gMF*;}_( zN=^??rR{8DS{ixej8aliX45`p>ohD4Z~%T4$nKMy_%T&Q^Jvo+ULt#Qzd;NFfXTJ= z(yotCH6!n56Z>)zE%LL1=k!18uI}6OOPP=T{RPu!LvL;)an24*`a~74x4U`=p*Z3F z?4Jjb47}ES?%bWf%AM9aEZ#>yqzTAKl!V~MEg>OTsIH0*sj4B;)$v`*eqw+CCLF82 z=)FpOlRP6Xk+u^{@ln4>=*`4)>m@Hq$bH>p?4U>xRUOUbKj{g=%g`V{#}b$$VgYt! zi>V2CTZ`k$6GVSi93Vd?weughacbP(T%%P&GCSZ1eGK9XaT-F*jAY3T*tH;p?jpbnFO~ z9iS!0N2_&jQ>!98GVZ|a4gKQ+&IAaAA!Hu4h)0WVEhyh+((GTHWM^~JIeajh%*}?q zUiT{DaN0epQE`$cMw|lwmNB^HDcr3(CULA@=up}?E(5DB1lZ5@;%A0rwG`{Y3+*U9 zp_Dd{=8o~R*R@Wt?l-@ja%#K>S70D$)N~_BfP0N6D8+C zruWE0$F{9lQVeoK3TXkVlFWrAgS{YM+sc+MJ8B4~G}=kv;i+)wxXrDd*I(jgRcdQg zvaK!7NOSw3?co#nG=voM$W6CRskYkIivgJtwH(d*NE=E+?xh<0`b08{5BEhU(S^yQ zl;Vy*ACn`GFbM#Z1vJI=lUxQwaWbFf8T)z*oD>`h%vg;K%ghM03+2Y@QcvO{)JCpE zR~HevU2-h$Pp&wPGjsOk2!E1tfacvK)}C?+FrU7q(!eqOel%J1WZ4HCCM$O8zs<8L z(NNSd!ymE8Viz3BO_oIN#*sZvG#{xlXd09Yi+41-KnZ_2Wa}pyrlcs556vgsx@`*q z`{{A9AQYSmtmM_d%*}~bSQn88WmmQ|MtN5DLbmk+z;{`z1q8AQ9dhQ^*#!OwHo&5R zAIkjLe%BQTaNE?%WHmGeOEx94Ek&KmlbgcG#6M{^iFU@;WgbBoFMmnP;Nx!yggN|O zkL!=h<#tR@5Gd8C@Y(R8NDqA(R(9e3At#yc0b;?(%izVBljE28!3q%CS_+~fjvm;I zMurA3zM89X0+p>X1%Deg$WR?EAQ;?uE7T0QeDL6MrLKL_ZSiMC=Nmau;fCTY9P+Q$ z!TnIECpQ3)1rece`~|ruV;ltU>ysOX+2W2=2KOt!%Am%B%8Y2`%skbp0X8fc9KCNk z*4CNc0`k;6Qt9H`dJEMj4ze_?OOYKP)}>6V7}kw+ELrR;hO`;CH`GH+y?tLRcjbL5 zW8}lHo5f*6>BCBsYie!Sa*!9t_h;ZVXt6=va;pceUUAuo_eYUyvKRtr zBFb5AleN(GoVdvI7N(Qn)yvxiO1kpX)-73)JCXPp^7y%4?(eL|5ZAj=+=kE{=$6yq z3sT7?N1UAAOR9IQKJk`8wrUK-1FCy+&4Je)KV66-%*}q7Q0Tgy^pqpB4QS}K8q0y| z^5gvD0@P-$(qMEU4$PVMXBfLmO?`j`3F_;>Mb%gMy8uRxiCS^M#x4huTLT7QrBkjO zi&bkUDnl8-$%wc0vFP4+)1PYJx;&jurdR#xu!9gyAuG@9Dou_2b~TCYwOK>3)p_+^ z57X2Bd^G!7J1k|Z0y=+Nw}gV*Z_Fb>)l|vbS{X#DCQh+0r4TrD(|Rq~>ce%t6XJ8a zU&n-(KKN=G6IV10K2|zu=T>i}QWOA07wz7YZs9%zFO>8ubyys4-?TD{w6+47xpOR6 z;HI}|wESB+V)7a<6H4P6LiY6d#h`>CE25MMl-x(&BvolaH$@b;yl%b@NSh(VT19qB z1I`IS8%UE;vNM>h)#qM4-98t8u6hsB*vN zp@LIPnL7-u#o3Z7U19<&lPzNj%~z^>Sz78+`=5sj{(}%;r8l4hEhggxySX~0RmCk- z4o1;UM6xiVisBKYX33>1w}QdRmtdOC>s7O+VWD_t{^I&T%1zewVGx=W0>F1B_?%vY zy+hN7k5BcvcE2Wz9vwHe5cGmDeY6em)YCJ18ahBIJp&5W06?*5EF*Qr;}}pCO;8A7 zH5qgWNs`fT3YNQIb#mq2L zLE(<+GlEHh{mEs;CNg5%(>CDAh`hDE<-U)lYGOaLh7h}0)F}f)k10$e@A{XSr+q5H zjV0Jo#E%Gu7#!J71e|nuF6NL?L`2L)v_vR@po-`++pvBHn<4IC7`ChK+h7BWeP96I z$i{dvG!_m2mPDNhO9Tz|T-}H<4W33M&IK%;{GFl5Zfbok1{EQPEJqP;dRg}jwXz_F z;1D}|6R>M9-|g&v+J5`;FYorL6y5vnm%9gn2~R$5eQnCNO%Ov^b4_9dIfRJ|wzd&h zIpJ<$1B{ftnLutgs8<=Fu@7N;+by@#-4=N2)87iyWG@l*&9E8IOe56+|b6xVAu!Ml{q zZeT8Op_lz@)5Dh(6y_HbP9tVddvKB?S4@4sWtA01(hJ-%CydKO5M+d*kSb^8l0?E@ zHkjG@bTU6XPtq~u-5QdSt5%8_rSQ}}`m?!@i1#_wsNqD$@6Gnir?&9ACI!3W>Hqj}FYNrLL9Q%IN!$0{bRw^8mIg?utZ*kX@D7-SxM+LzL z2BWs!FxOg(;+)&mE#c1zuLNHVTGV!>Uoy*}E{3b8P_IZ_IoXtSO{>(1g9*9sR*1Ki zk6it-$9|c(uN7w&(6QSF$ndc$36T*`R=Y}4TcdqTKei4#X2CWsq&4|RuJLwqGM|y% z&sqN0a;^~$p#X3-!z(6@c5{?}m$eqbIw8blJb|mIW2aRXWTTd|YM7e+v@&+42EMoq zM_d&ZXc@XC21gLxquqpC|Kuno72yk5RSRzrZA33rjvWROl*0&KsgMG?ZCDPgboXA(~3rRf%fsHvB`yO$J)DtCAclz@1t&(4jsHMtt+>i(rFC*6Aw?IyIi?TrbO^RJR-bs47W;v})Cl zHVxte`-9JKNL|u|#DkSVQlvtuXTglzHL)ssFs7=a7rlazJ9QrE4uSQ2LIYIOds(z~ zc~;5TNu%#EITA(_A3Kd3b*d-(_lUCga!B6q@shj*ygTM}jk4VAIV~UF2z1P=V$?P2 zJLP~lWgM`#kdDCcbwrObz#5ogGs*0fxaDD@*g3fqWM^{z!kZf*QenR_ZZ@!B(!BUoV~W zF4kZXsSC_J3i-HdjJuWeFx;v*wu;Z`L1wI=neU(0+x+J~giDfxNMxGI1p>9{vcWl= zJb8$4U)a-W(GV=Ico<>4Z*qD=&{dVI(53hmhcHYVvTD+hdPf$-Pj5$VD}Dw!cwLlS%bQm! zEFh2aL3TD4Z?fCyE1-`~j-B}UlFz57hR@5bvTy`Aa)7@1eNgxyfdE3sGqHw-y66J! zso*G2ApbhL3QRZsTOmtLiCl85LgdSMh6ZnlcJ+A8SBB~Ha^!4@KxEUWR#kZRTf2+a zAN2cWm+bwDR=5|pxp0cQ(W&BDWIS5x6F9ClTp(vYeg7Oli zveW)(1XcS$-G1t_?NA}jF_f2p3Nu-r&r<-ZJq~Sl4euvs21c#lBoEJyCg1G7J=}Zu_S5_A!^7SEx6rz| z_1)v6?aqJpJOA^v^RJ!b79Q5-*2d9)eZ0K+`8=DYpHPXg`1t;2`{3o?-lEs|rrA3B zczm^=KT==o8y1!NrwMD#s5y=zX$N2|6Clmepi_2;r{mC>%F%> z7^&^;%fk=b@DOHw)NOBWJl^`RqCm@UCOW>fa}-s4JM?d=~NemdBFxpZb`9H5F2emKt> z$C|EjZId4%cP{@8&PQ!|v99SGWY{(1yhF^Re7m-p%G_E$NwlM=VX)FJ^y8eL8md%= zA$(gH8|I$0lWrGB7Pn<`GkN|!diAiKQgv`_SYl}I%l#8`90xNl7I2vUGUMbo(WSElbuYxt1rt=a8vx%xNMlAZn@|bR zk4*DpH`VTw8}nchPA(Klb-4%XjLHlW83D!!Yutl(LBq+RkQ zc;%64uGexn`J5W28{T_CMqpBahuvvMMA+HN6 zN+@MI92)o;jtPpmU)yA_eR}NWI-AU-!WqA{rOg`MhKfHTS7B*GQ?eh6_PjvtXJP~BqP7v5pWN7GEZXD`O^@+U^XSS@3y{C9Q?GSEvsoa{(~C`C zsWcv4cOl;geBpbop$Yypo8=hZFiOD%8tpMW=YCFmj#55WCpounu;2n~o?e}sLC0YI z98OZJ87`C03mRcD%Mh2TJiv=mJO!MhidXN^tyR2!RkWCj7r{dSkao5rF0S1`A~*0I zq>xDj{DloQF`I&F6gWP$^}Ug~+_Sz{gRE4A$Mb(4Ba55=5Q;tt7grM=ygCFW|s ze_{ck<`PM>aFN@H??CwUVro!^1L{h5e^2x8GWAGcOj(XB`-vYHbN{|X5vq5OzC^c6 zG>qdA4J4@jZ=u>espID-=w$&iM!4me;dEZ@FZA2St5ysGd5r( zL6_OS4QvWiUi5Ut=H^OJx^eNMZN5sf;d}G%I;Qc4CuW}+h{Mg`Yq^P_xD?)+hQOBh z7)pml2gZoAzxC4z_KZJ_nCb6vt19-VvYrHO?~-y7u6ot&HW0NByhTBB+;X9YKWP2^ z!9~c76}WIpP_8Io^tvT*Swv7_Z>Wg{_^Zo#>q{A{d+xjBQ3N=Rpjj&eB z6qV%@yzfxNqo;u7AfwVE1{|#u4~JMeFKmBQw)TbioOX}^iA@M z`Pmsp1#*<24SQvY+EyT`%jkxa`5LV5wg2uQR9*4nda3|{|g=Pd!y<>G4_}`gJYJ1 z)13Zo-X9@(042^e1#&y5cIJqa;_dH6-Br=>Dqw_bKaSiAI~w?+0AVVI&uRo*$@%lk z8Wqp~Z>$sHedWXMVVP#-bYp)7^vu(PFl54&I&c+gjvXC)9S~jPi*en*SYwKm`_^c9 zV2EloidXDc)MgZKInjAGyqPxcN5i4-C*ED}QhKaV8D$Ik-74NqvWH%(j>vK%-eWkl zOCDLpcc`H12)h9?XmHBHh#Z}qZHXkY!tHI3iw`B_-Q5`}2O$l3b$*SNt9e+K3-WaO z1&lviNkcs7s7nYGPOi<-YxeWYj8c2{M{NWS%od%Dr}Oby3rr#n^v9C`CyCZWQg?5>0W-n0Ag8{#ENO>p}1JuGy$Ke=dE4ytPj_OMyLi#Jd@6gb6~LUWm~}tV9TQ=?N&S zKp!hlm8t!f#bU$$Be$Qb`**(;Vu9m6>tEi@tzQx%bWBgnocsI3Yxe2~D=m0CD`wiJ zhp^{8aQ!y}{Db-X|6pdcGNXJ?GypW8K1x#y&QT(7{RlK$MPYfc+fr6mx#a4k8;#$v zKqO$qs+ytIocoJ}gyAc02JV^))0==#{$;!1X8=}CI0tlb+j?jI9sl(``IWEp#iijW zAZ^@-vAKBHo1^p;N}y$D=QHQx3=fm<^i$hy=UFfgw*8*k8rJQZ;lQ5ydBZ2u8E>{> zG(5ed^4*gc$6aX8`KP_f8Q~~CeFO$3LTzwk^#l{jQ?rrTRE}`zn2o`P>X~U*(!WAX z89+U%`qJ*EKfT~_RS)*|@OuazwA2Wq#V27pt5?2-*ic$cfWCE+B?5#Mdls9VMU~5*kdF! zuz?jUz2CI-)|a}=Ov7#>*VjH8V5wj>O?#t^8ZO}QK3ZE#^66kL{RPW4tWDGG^twCC z9~mahd}hYL+DXa5^?26*g(^+|)SqUMaf|%f5PgsXSWtTI#w_n#K)9L_c%^#`#a*)@ zYcK#Xhg^=Fye&T+{`LLt0b~Bx3uJN?*Y{;Qw`EPCla5`K&y`yDK)myvk021gW!Ac& z*3~UJOU?#>Y-PC3(x@Z6u(##uFOX`&Z215Se~&;;fM0fpPjj=kw)rrdj!~%y>L6gM z;otSP^V72~d+W9b=u-Cqx95lb*N2n$%Wb%lm4_bOuww9SkP6+Pxuhxw+g3 zCBCFDXq(o%Op0 z`+~qN*Ya`1xr^sf=@hw8j_nppP`_V59q&jq?a<^Uk#Q0e+e3*NvF>clh76H;bF2qp znHt1knxP>O#F-6&U^MvNs%S_w2&+yG(+=e!!!LuYOlIY#(LFUM5qv}4GvdcR%u(-1 zXtbUi)A<;3;P~4Pp%HO(*c7j3q!lliD&E1d*(b05-SD1Y%WcqMGKh0an!zlPOuaJG zSd)mS_rWw#Fwmcv@+O5J8ARr4R z#K;Rab07H5l{Ak^%tu3s{hmm+FLRp)!Oqiqo0Q%Q9I0#VxNYsUZsq%4vGH;oihIBM z;`8i(QixTA_G=$cfF=Bx|Nf})&GEi>D4rwh0h==Cp(*~ww6klDp!Elv-5QNIUAE!Mz!PTog822raw&k7Z?3$r0p5K!N#-6r8tP#3%$QG-%@(Q#8_|Bj10l5ptXUo2X_{AKYXmEsFuZm6z@xKITu-u`2mJj3#~r0FFRJd*#PAQ zpyJ-nrw?y`-rs)z>BWb=*E_rW2Njnc2!}@vk}!;9M}Ibsv26Mgsv`I~{Ar(0)6-&O zEkc>M@v>yLZ6K#$cdihS^f|M&PPhp?ux}~%u=k!GnHDz3kyS`CG-xu)2`{3yGy4`NUs|$9(5X6D`dzADH$N(#UGxJDX{FL5!gku+@5@J@IILsW>bP9lIDKrPe4+$*>$T6x?nY~ zXpTeQzXs+907yW$zo0+G?!$^?Hg@wb5x8SIXO}D)e{%Z%M_%qLvP$oI7eUjr{E1yz z)jB>!wiS$sZD+ZSlt3%nY#W@hPV zn4=LI3i6E&{|Q@gX=n{3qw6NS7bocu7AXT{GwD=ve3<(sxth#JL$Zw1faJQ*W^PdF zT^Z3hX`&NW);}9hazm$iMAbWZW#Oim)ntwpT&BNZK?VH+-3PD8p@waH6vb-xF`tZm z@F$bc8zh*v#R+G_hP^`nY*vSSupr*PHjm!UA>}6U-qd5V2&N!mfN$mIQc0(HUdmk{s>Mp4mtD?!Ef%YOl!)fY<( z8SseP`PUn!sP$j?x}t;g{t${OZ_hsDX>$%3Iz}%|n>-spD3Y;x52F)|%*g!0$pV|U zDM|IJv4*uQ{S{9{i6EqtL7#-6ky>-1&9-5OucTq|^_$f2Im60PUZNqtu?B&XO(L#fE1|^zR84x9E^-3LaYyc#BI7LN{QMit`eRK(Za+PJ1xX8W&I!+opO= zF$ma(?IilmmYOP~QwWg2-daQtMhL(TW|K}LvA=YMU!rEUn2Y=aqzYEzB z|FS|hVX-oI&5##)Lxgzg_x0Y7yU;mw_+QPZzaBm7{Oj@2Q}dtSwJ^=H^WFfBUpA0! z_%Xe9Yt;-kN2)Tf9$7XYrB-2wO_ynWn~f+3u4c|&y5f$PK#|fNyPgd};5~gyi!I$$ zom8m`Fiuk(0-Q`Uev&1ZNieDjE@OymArLbDL-(j2G4G}GCe>nsdS>S7Xfiif%IkF_lyUeK%%1co zpVRb`!WH{a4jBdgJR6xSVPwe7lN+^&MK8ea?DU!y<3#J6uH%*$cy!O*^{x2bx08eU zNj}SFb4mnuaS2}M#ZLmvCUpy1WoWJH(v9HJBD7a~svUJ*le(s;c2N`YV2Ak)IAzko zXfoSJJ&sH64sNI(KG37Cyc`!V!)*K&{f z>x_vT{q&~g9&=ef%q?x}^1-i2O}?^$!0)NXNI~Aw9vzVQWEb8F0Y;z>H1cBokIImK zPpg0k^`)$!wdLlH9lZ6y@c2^TLLG0aIcUv1Y7W%<+)Yd(ETqdQLKQ7OC}XJ)yZko} zh3X(YyZdQAAI;=g>w$a{T%1-?J*;pPXWS@g%C8HrjkN}QCFG%VhH`{8l!?~a-tG#z?D^`r!r+m9dc<+jj+v- z307F_AfQkl*Zx?4-JN_6DJAn_PCd;Jpgb0avWw-@hOm*g+Ur)rO3@BsxjUeBB@OAN z%a!05kZcGHGiVR>cS!40l41y&dhXNog4%r3^B|68Z`>O;X*k8W-VTY82P-tt+1Ze; zTjEpXf}L)ruoZSQ*buIQ2{phS$oYbxwV4}&*oE8?SIQ{mPsy~STjR-1lJr~LEKP#Za zOR=~zm&9>VbmrmPp12CgoF8X5XnL04aJcS&A9Lr4nXf_^vGq}4;&-ZM9nbz>lMaPD z5~DP=3kQVT22_a*&gKQ1zj{7#iZGVo_RZ94QN}zFhpCN&chr6T!?Mn5a)B`THHUhS z^%y>k`_t>FCJ^Yd*XKJUZGizCa|E+;+(ol>-(=%?e&~u?$PR&!26oHX{uKKk53NGF z94y>rtK_hGVCit*hQ9R@uvvQ~u_D~e*T`@nqwUHi z(u)y=9Vg83Ne;$Zsfahxk|u-Rb-l7^9D!v272jjm)3$?OKJ|L95mHiWq)15 zVvQ#ybftj;i(!JYv72n)4oH4Te4Y%?Wez_WAac;&Po|)P9fI2(XzQssOP}@Zd8-jS z`<|A(%9NqK|D%cLqsw-tB34D%#71^)C|uyGln~zvr764DNZI4=B())~iYB5mTcwp* zqC^+9IiVv{+LIJ9JHxzd+3fsuZsfv7D+X@242g*Fl3!-y43cGJ|AQu9Z9Us_Z<<~y zVfDeSH^uIS6$~eODvegGo=O=hQXjS>kiIif;Vt{MKK-`{C{0 zf9~#BZ|!El@8w6+N+Bz5BuOv=YE<4abhk~_rS1jhH|+IHVuTc z`#H_>&$;R@&*vAHln2B0ahZ<)-CTq1Yk>6iKu|fQ z`vnC(J-qY_u<`!2p=6yl==)oYR-8m`1saBZA!Ggv&dzsXHiDD40%RI}D2qA4Xw!nf zu~tx+hQ}fD=I5$+Yb*#LfE~|(85;FrZ7#Cp!B4OL@?sxK4AyjYxuwsfKtz=Xhqlwj z8Tgbq4vcy|It&5t9Ts7yMRECQtmM$#fMM3|&&FPsI%epLx|LLYmbq-N$Fq7iaLap3 z99WLBs*mh`2G#K5|NN zphBb|zj>y6S?T;9ap6@?SE5KxB}2X%;6cF*31af!{AsnG6K^kc*iOlkgyl)8@=zifLR{*u{IqXNXn7zjv#AkZ01^QB% z#TK~_y_PP#!&03x1lKO~{Mxp6rF^x<2^dW#2&P!SFFK5s`enLa>@L0s@?y?eWr9l< z+qX4vLWwRdqEVkhL<@GR+wF1_d{_e%HAT?MxzhC;37@rO%(B@f&~GL3Db$;3Cj?1~ z3IArR-5F-(jtsGY%eIK<(gIVh z68rfy8X?28jqa(D{_9_Mk( zb;Zre!3+e=JFgF455IkVbm!E_Nk(uH-fTX#ffW}jl^W=@=6$VYKUhuA-=xr0JwI@Z z-qBRF>rXtw1`x7a9f(l$#Wl-N>SUzkCr*awWG1{0R*F*^a0EKhM@r73<%L{@bNj%t zI^)qhS>+fmj-HsD*7++r#y471n5o4(Y$OnVnv{|PaUiO|!L8)euR{>1<5n*({t{ky za|8%CePhP5{!X(_*g!PkVphPmlG6`K%k7Y~sMmfw@oh7yL`np+RAlcE7*g|C%B(YA zbXRUj&?z5ka5fqb%XkCD9ut26AUV>!vh`agR@hN}%MRlRiYt&?fmy+!f#3#Wma~_M zZu$Pu>?c>bq}f|aVU!Dgt~ zJ`M}&$lo-ob~BBVlgOrUyds4|fKpjPjtK)TWjoY^(+jw{SF1v64 zHq%%q@Ev1{4ov^!oOlKsYtp3n5#c6pscfnsHZ*ooDx5bU5d^~mFe)b>i1-=x`F2vO zS50)tm0=oGkCHLDpHK&=#yU7txqAi-&ZbV2?uDz39Fw;y;ue#(C|{woFzXxR*g55) zSm7cgkOa;9=5mlBK&jkFE=tMKAxVYoE~i-{_86$bKf2uaY~{ozE2|RsIcb!GTYWt^ zT1}Y0;DreSobOk|+2Bgt%4LEq+Xb69k}{2nBI!c|5OmZ8+92!ak+N=?1bRy67ZH9( z@Z)kv1oOv+@;NRF)qd+RQSbqlKt)CE>MHm3Z|yL*W&Il)=F$~vR)8=4>Tzj$Y$5cl z%LW7#OafTUH%&SGkX3+;|Jqu}1C-tuTWKRC7D;xb#JqE3jVOHQkGA>xbF5 z7!2=LGvWqY;aj}YMc-+Z6DE|B*j-S}rt^~4@Xx(^8g=6@TgYe<0Hwsf~FE zN590yk+P-%aGYZ`EH~Zql@MqB555};j2{>TFU}XIh9NTzxQ-UqWJX_qNIeOX-an8} z1i}W>apz_Zc}c6JH{Qb)XQD)&b1*3v=MdSQmtr+9&Tx}_W351HJ|^VUCBm;22dU69 zVjL-a+F&PjlH}}vHRx9ovCSD1Xa$vk3?X?jFcZ?RKu8KFr|cu z=)FqHCj5>BY|FU?9hTM1`sgPVTI^gE)twSWPkh8=Y196^AK3b=TC0|65A$&JKfJi; z|8tS=;x#9Z47{}$*o&A~0*2kmUprZog1B8?Y4QYc#cn=3&#F>1$HaG~%#c>iWf~&h z?f>%!Gs$4?I_{t{d#Az@G%3ZNqK=TNR3Zqi5M^Wz(4`QE?KZ^`KPzs!2J&)nkp^lH zD{Y`oq?fJZ9NK5!P|&G6=TOVsVTvn?92@XzP=ZI+dy|?RI#qEuwYsPN7nybg#$ODV2AM zw-bu)DrRmicCLXLKqBs~jL@ba;E4`gh@ffTkv!V!;|kSzo}gx9C*sMltb4PG!~pLz z{HyC=9oXW1S0y0<&i1gC%*3SjKzlj(aJ;Pm+-bDT>_AC(#1aiC<7K1)4ZDgJa|%}l zwwCV}L1RwYn(P2BQIpTsV?o;GsAr%&@Kvi03~CU300@jY6n|$b5qspu%wx8LHVIGW zt)wfn_OV$-L}K6Ot(0?foWGu9#at1a#XF<@X7gAo}>M z*x<+g9U}xrIIwJv6*5-yM*NU`b+{F($v1 zlN+M1u8?;vC+lV4uIG1n{m>7~|E*FEqqrKf4jAoRICBB{551ob`fnHGzPa|9JJ1En z&|^tj7)VreV%*zHGA_`Rr@$zp+me-t&>-O?=rDiu@o#7AZzoI5-RQ2b^!TLfSdt|gIw`sx+A3NV~4 zl^;dL1u9uFO)XZ_i*;`4bD9nUM%JdQImTiv|rlPgst2DATjOht=j~$V2?{kAAz%j2>;JnTGq%P3) zKlG=-M)?L>GzVkn1fs5H(v-DOr!{ z0sq7rc1)Fh8I37DAMI}rtOWt&I%e%`3gHN`tNm7&?OOpVCUO|=4JjtrI_;UQl|ItH z`|mNXJIE|QuM3|Wx2^-iztrC^6t!cv|@(p{Clvz_`U2J8mThDSH_ z-CW;B5`;VzbF4wua@IC%_#3sh{R%QWr0r%1)bsvibduW~VCH@wk|7KUJ^ktEJN+bg z5B!tqT0mncRa2)!NQ{q%o3$yvYLIy&`IgJn3;&fv6 zrRV?jYw&N~Lb$U=>((+#0DmxD%m(=r1I=dP{KACf?JC-z;wK;o;yN^9KHeFwV z`Uh1-v^v7-XNc4g?gof3^B=;n!AmaV7XU$W;AMPd34fO+9m>8awoo!Da+cMu)^x53 zoy`SNV|_l_8!rq?24Fj(>>6JthHEfuJ;AdwA~Xv1BUCySPL1j462%i+tFyLeirD3! z`?C>Lt?-a4+hw&#ffii25G-@Hv*2y_5ujo%2ZoiKSH6AgY@jWMm7ur)ZIRn=l}AA- za*CuTzI!}`C2&;9c+;vQ(Nl@`s4VM3TB9UOpeOP&C~^61tQraOGu*e4#$JojXepUE zDWKb+*to`clGe%zgoxDbcCEmhYAhUcNZ*>M!-;piC6Y+>I>z8w8$O?NFFh&25tI5oA zUCDO^$kO1dOFoZ-3lB&2T(p{gkz$%RfP!DH7Zv}!8}WqIq?ojX}E8{A>0?M@## zyP`WUsFu+4M}K*-?{dMsda(cF?kk^{fOs>@(;6n#F_^?|nt@*#;jL#Y1BvG^%y45! z5r8s!(YUpw>P0kxUB{4a%1%>19naZnZkk^sX7(o((#CAJ5i@rT7M<}j^OBS%+ zdrZ!~FCRSGO~Lrli^scfxUFxf!F|{;Z2!D*6axFOF~z?cM;6>Z&#%h&v#MMaWk7(x z$cRpbqUq%A6n^BI489;D|ie0vlLl_v~x;y{bV; zORRV^F)YP7)OBaE)D1>e!R};Fr;HV#K?Ko}g;h{MEZ`6x!(@){9K&pmon6uJLEB~) z6LYBm+j%h?fnYn&n$t;cyB?1EM$9dM{iK$l0D+2b+5h+d{J#eI&U2^)e4LWMk6Yba zks&r3+Ry7BkP*1^uQC3=v{-`x+xF#Qt$YQ99Nd(SP83U{!JIhaUv&uoPW96yO4YJbV$&(diN$TR~ zO6Usf$X-l~5!T4qw3MuOR-vFnSc4BXwB7r7!*!3XOE)heb=Z(_ZOC(xI>uRrd7}JG zE2%_nN7a$u;80(rLmXF~=S*#I^s>tS${(g*Hc*mSgQvHt zCk$c*cCm)Le~LKQVz?vQM%pdgN{TQxY^L|g{`#X}T9)(-XYZ7c@x^vO#>Ag= zAM~454I z4}+kb zpI?}R_TelCZ9`rdSk}5_gB&oq`Fw?{G`LH-3##mx$ZSlWo`|K*z@UaGaa}W}td8csj_p9gAV%yqJvsxyZW#9in;ZXY{2cD0MF> zgcxWH7-D*(mbKyxq)_sOV+}%LwKCGc(XAVbF$m0-$$F2}!UqII;Q%M&{(JEMsG^tf z6G&s^GKhW{&;tEJfOxVaNXkK=I?P~MW>Wm3zTHTvE%O0{eAq1v^Fjm@@Jzi#V<~uc zj0@2$3g%!BAILP~xkjCLgpD}VaFqwSJv`Ql42-ZV%|xH(cJ8FOdM?RjoaE+i%3GnI za*{FmG{4?Wy?Q^BPwxs3hzj?cl2U8sY+-;~NYq2$)?oQIkNHmI9&oFyB2_#2#`+Pg zaEOe>zaZRI!OhMt?JaA)71>u7o0i;O;6M4cRs!7j16}_jspiM{wws=1ed)QUSieW!DP{KLAMlG z@=doGUUUtE1$Q1f>d`3nxoMwI3RKiQd)&GAr&eS8+6>}`_qZ4vcnu#QQ)Hf2N5VE@ z-;4%1J`2eULXJgHitu8RRpqSf4=_6t(M2D4sNN_RKopORuXpi=qlf14rl}4 zV-5xS2%&vw?_6?N(7fmvj``xuY)bg~d4Kk9IQ=l`j3&UvbbuMMe$4dfk$G}((VrBX zIu(naI|X#4or(*?Ko(dg@-MHRJ#`y&-k%T7FqU`-DSzR!D(_+ohLXXq!P9vE!QbBC z3=Qk?{p&mT40EU>@P~bK_5JJncNW5H*U*Ul{)fNJ z&&Mxll@7L4ghQ})v&F=V#;}XnqKi;@V6K@v$KT#LT^Op@#79Vm*_omMRO=A{yOgty z{SJoeY4$DsI=p+tk}`9%_;)XSi5Mz;a3*Fx4=KRX=iu|b1fqTT zZC#-G?E{j`ecLsj+BLSyAPje|{&)rOxv`y!{8ntEYgO7C!-p;(JU_*FG{~D0qHP$X zi)RMh9I{4tmS33r$#&m0$HritZ`4wK+g%Z@d4>W^cJg*t>&&YqZv#tvx*&<#X6z!{ zXth%Jf+Ot3;sUM(OVpn|`1dzY_MSgB+z$jS+`D^sn~6PoYCoA72%3{W&u8um&LDK3 zyX9t`6W^{OD4ZSD`K-rb@@*MffU-mBz&b2Jg(Q@OBe+n6o^t|A1waJyxSciJ&nz*w zjU07SKxNjq{UV1K+N+-*8X8LNc?a*>?^<2Mw2bD>JFjQ2Cs(g0cNQ&4!j!lFaQG|& zo61~CLj%q`ev140UhQWq;J0i9oKigiGKc|I?GTM!ImdN3y``r#=wAeV7t#DSLz!x5 z83x<2Ry|Ii)a`bCUJJXU>LasztTqdmorp-d=fWPiR|A#v5r~g{U~aYnu4sVlkNsTW zz=Bwl4;@!4mhWO0jw(<6+v)JK!@7DGmv-=IZ|}{k{k>;!1^@l<^*lTJ_KN=b+He!% z9K+`o+o_;jYx^St;^~u(3TkMyn82Y1?Et2ONB>ggRDWT_9rOzIsv@}h+~ZUV0zCWE zlT38xtkkp7`8i7T@Un|k*&G%SJenSGW+4r6&+$hkh6ZTireoXu04@C7>7e>n9QM%g zu9NYCoI9oejBXN|jWWc1+W5S~qB*^PJ$XF|wrf=UG~uhph{V(L^XUXm^~3Sh2$-I` z&}9%JNnr05ctu~$M4$9EAz+eZ?O3{ zE&HGo{C*>Tx9IP$RiA49W{pMu1iT&y)!M{IN11K~22L;X39%{o#UXxh7Q}mVXw@c;xKpTC0e0=(WbkX>4ue43a=kc=5)gx&}gIT(OFRdp^(EA|O zg(XcfrLa>Y3eY$~PZDRE!Ptn*Oba|{_3Scg+DIp|79jgJyB8{xVH%1Kd*^uZ32%y7EY6^O1EOrr^ZcUVaN8_99lg&dsQ1U8VB++@$lMOU zt+P8)Ya0IL(8ZNQF@|GSa{XyAnl|7#YfDd3(Uk1% zxIcLZs15x81awBYr;Rnr^q}00H+1tyfaulV3?Q#w!G9i141?3`e%k^rZr0{C(mE^?3~*ZJe$UJ(QuwUhF=#rjp?Hg|EMB^=LnE(YeT?~YS*zK~+!v7qUM z3z9fAosli!qoquD+f0=1wH-a$B4Whc5@Lxb;jn7#k)yu^0 z94VRQr@;OT7I5u7f}e`vyNM0zXKstIGNO!n1d@ewsfTa`cT%@)a~!^5#}3BRdC?Tq z4Od5d;gu(f-z~#YIIJ;jZewVyd&Mqc3b#Mu4lao{QY$l17gyd z?LHHVh`N`gXGu}eDE?+{rzQyvA_h;QqI7h3dW-^J#S$o+4idFignGez+$E|ZMGrb0 zPP%uE{MUQ}_$6t%?`^i=ufF;!tF>Z8)9>U&y;nlTMyIxVC#@vjoNgmfA~bgzk8)8LEUVO?5M{T*ca;Y+TO~l^A}8h2l;nf^Ue~ooo%nW;R{) zgbLLyg~0d%6j#mGDzT0zLlwf*1y1R&(eh!w&8 zmDq0coBMj;xy&};blqIfw1eF=RwSGg^-Fu9@*6uaL4FiRrDN!BgFq^)mzB$9$xId!Ia1C2g;0Y8Iphw^z^Xl>< z_xaBLilr{`m&%K$v*9(2pguL5{Ax-+Z9+ViC2dsf=K~|LZ8fQIt<*r{6Fjby#dr*& z6O^Q!p70Cg&M0jF%2l^@kOK9mcwL7dU)XMPp-Z)@ZYkkX#T*ij&765WU0(o5XMZrr zFMNH5a?JA4{-AZS3$yJzb_8@%^GC>gY55jW>MjauL#Mpi&{mldo6dd(i`k4~NU0%} z{vc_||3<$&is+)v=Fec(hmfa)escduU^}G00(*$;BF4WIJ^`ZPUtO?bUpAX?-qE#( zaT9*Ce>!#^Y<+=s`%+NQc3v%YS#L(S{*XPZPiiaAz;PlFs)Q{&7DN)S;b4C_XiF^p zU4EGlBQGkUN_Fm9^zYryza4$k>S<-F((ES zJF0u>*-5~yCr;)ILoELH!tgYZD)m~mLrtC1>oomzmCoe?N1#zGGmTy7IwkFBO+v#+i_a_bOdaC?kF7`-SQ;_av%Z4h^ z_B!DqU|UImZfDvkQ$#p!$! zgan#qJK}G@5Xu8(aJFnA*qozp+;}9HT3*l(9DM>4Gi;*$*|t51$%gCPalNGDa0CU@ zItFtz+;ic!017#{-CXl>7b*~K5ly=&Q3$qz5_0;EVleMcFI~GaS5D# zcfZaaToXm2{lKZ%t6U(5&7b8!1^AY0xz z@|m!4rCqa+j_R{??0HJp#Qv#7WwDmP^g@bZ3r*;N5Pmi)pneMLBK$b`qG+g5R&>=b zipBW_RbWVT=wDZKTd5#VYl*~~1^h@=spW%*d|!!Kp~w{o2)`lGKwqq7jQlgBbV@1nO8!}}+DgBMl3-7HICVG)sWthfQ_ zg!2yBiKSnt0PNqUvv=4Ykl`A@sezf0{H_^$h^mGYOfK-g-8j%?+ZE_@5>nJ%k`fLe z%ZBLww@OaQaO$b1;*;x8+PW$h>E6D+&vaeloLal5z`S=ErbzMLTheVS7XQuJsZh?uv@3@V zmzb!5oDJmWg1_i2!e8fkzgWy5Bhtgm5^3({Bvy$9vDhlIg`fmmPk3da(__e{Vy9ID z`kuNzv(?T`81bU3UIEAghKe%TZ52m@b({n7%}#dce;$PzL_VH$^-Mb|KmL=9^c$`_I1l z#%2zBy!&MD`QEF&7tb3h%Nmt{kbDh!23k*o){RXc{ik>jrBfu&rZYCvDV;JE{eoNP z#fM1~J85Ti=Ik$@O{VA)eKwSYR^;=m#A|4`3*~wYvI0DH+UJzb zJmpjySkkO3l>*|394>a8&zyJTrC0TwcM&|h?lK;vW%QZ+TXQmd+)eh#dwD$u> zM*8mH7j+1K`7Uo|qEq~(shMry=m9>U!;63N0phRYiG?jHq|x2*5{9Q8Cqu3 z50IXC8~^xzCxek)b{2RR=VtNYork6Yi%hP=!F0ShpHQFtx9L{S%{`Z0I~KJ+8;`h* zGcEU!S_g41Z}SrfaEqEjc8#DZ&-bDIf`6BPU=Cc)G|5dz1|R}hdhXS?DxC*1h*0H? zz7NKhz3}k8piR_Wv3P3^)_lP|zD;yR6MAbqK=gsV!L?yiguh&|`3gcP?|I>$W z&-(MT?)eBVGXh21ud1zP)KUq-1d4KhLHxbjEr}3EAP>=y{a=~_1KSF3^l`yE2P=8_ zv!@G&5dEWSYn1IqoK3Gw;ydil-xc9Oix^SDD@z8iEDgN!1h68i75lXjiXv>4h7XtW z*Zi^>#f`&*8dpB}!O1t^4hNsAQ8+zGiUfx7yr{b#P_D2bAIpQz|2abP1&4hO^;00I z4FA-;R?DV{a)FWd!EgknQqYTus&sT;zBt%>wfFPxo4w~~xBHJkvgN67VbLXh)0B}W zNlk4rT)QeOdE0I`TAuVJLx%w#`g^xNLE1#5sU6gwI{^)GWPD7LB?2cWBg}K}y3z_T z*Nq{zTLvGFx6Pwrb~#;`3$8zbaB%nOvT^?yYgBG;lA*w+xq+gA1~+_y0)O(La0|@W z)@@0r8Q_lMECUlz%YllvDv8;ubkpf9U~#6f>rCgBVn{wcnHT0`?pz%oA78z`y87Yj z`>U^7>0CCIiEirV1p73#Wh$$U-A5(3_J*}re&i~ETLUqTXAIU2KU`mRUG0NR1Rx0fA;cHTe{{g_TZUIt5~r^kk;%?6>~dSDRz&r=CB-F386+`PUuAa5dtWTOWGWw_pRvDw zT#|E8Kh74AAz7rOAa^ACN+un13Fm_l8OPsd zI}wAL{kbx@Cc>FF&Yl-!N#v4C=8k8^CC-)iT~Kz?@tg9z`W{q9gy5)(RzTN?&$`3MgKQny8Ceg)OB*3a`+OR%gae z82E_NP)}MXRAxaw7QT8eUK1ofCesmYlD8AMbUUR~$osXQ(XXm<7=E?lb>q`Lz!UiC zkP~l{MPchykYb_(PR>5t;pJrB|D}HH@)}gJ22J!gHx#<2B&B!{iaH`TgR+-bXuR@3 z6->M+9UrlZwr7xcsL$Yn#Oma$N->j$5S8BtRJC4TnDYD@S&6V)UyJM%;nWeN)<>np zwvOQR_0maY0mgQzc*j@bb4;M&CwDzE2KDcj zTCwO>upcsYtFusJQT5D!W&dWZtTY~L6~O>3^+Qwt9+@sA#YpX9(FK&xa%w zLfgNN9%j%Xl_G0c5@5^N30nJl@nrYO6QahqN!agnT2Ok4YT7wrpQoK3UlecX&uQfU z%xBY}_KfM7YR@=H0|9cK5fU1bUObvTJpn^2t<Oz&ee(y;t!T(nsvns1cZ1*0Xe3aF zy`G4+R`#{~g+eZO5Y$=?vu$AwN=msE8DB6&mlJIfdvA8c14Y)_?A(j@z=gcR2JqF% zpF}%L6CwupUfZ^l;Out0Av{IB$&_y<4QakJF9!<3w>tOt%T z)W8eR5(?W|XXc2z*e^M8yBYD?v8nU zHAJVLoGx8(R?*PQw)g?k(^6onmH00nx^8^yEn6?5l(dT3DC#;Yp7k$`2t&K zsCqF$sGwTO9M;E-3WX!Xm;Li`RS|4>-?^BYRb8g2xfziD+KLIgnA?N#s1MouVQ%ox z!Jt3x&+xDOpW$3Y?bW?uWy#gikeg4Y6Ur_75EYeZ|2X>g>h3QP7~SujfWf!(?a_UVljgsHtat4L{Kr4}rggt{nC~9d_{e=h4PKkW zb#nFEa1fK$*LOyXZIyi5-g|$|FE>g%-FdI_PXD?SQAbNoBppow2D!IHzUfi%+zgfI zgb~obK@B?;*OtEtY4oG~pQ&N&*`P15LN0)+omoyKSsyo9QI}^tL63_28T{Lw^(UwK zeSnQVlSUQ*n5s1VYic~ zjaU-=h*k%)x22fCQbGblvnTXY+JcKF@*EPGQ$qu%ZFw=hXeP{%N(wei@H?CN z7UyjXBL)i51QJ>)xda)-z|^y0l=JT}lY0b^O%)1N&O4=d@K*co-MhFcd<92(gw%$4 z5iQaybaDU8`tJQJE-&8B&$>RE4V5`IXYSs=#tTd$Txx}ulF7ZU7r0e9_5XPA>}l4A zo}op4fr4eN0eq*Nk4*6_r`cx%qs$V2O(4Ub zS4`JYU$tp4S!SIiGpi=<2`SNA{g$pK$@1RQa__ZbcY$kAhz=m$}wtfSo0e9+5imh4R#kbJ=?)B1K&|7}-*mo&8F03}DzsR#~TK=!@6 zgfulmFF&CQkNc+mtm>V^uWI$bR4R7HL&MN~)}5f#?{#;Afq^OHOTYl{Y5`yw2T}2b ziI)ARBg3q?XtsPjtjm8;wp+m(uAgA5X4;~}4bKyfu6F;?vAl#_bqV}q+3+^-45=67 z@i{I}xW$%UueKZwi&P1D3PiGXVp73O;F2ac4NknvFnSA@U20nDP$)}s_B)Z)yf02jL_0It#e*s8BJYC%rr*Sp7y+ZN|?A)UIwkI~LXVj#2KjUznSs z!}=F%us@|Ic&Tq7hS)lm6w<=;1!cf5qwx-2?ml|6zx(t7q$zvz>OWrY9&lJ5ph#Vv zePe{tdGAn(j`>YSbAvh*y$8-VP~yJrsafH|84dcqTXPhc81{zR_x=3D_hvQu(F*^% z_x!P3*aMzn)bPR6S9`C1daR(ZZLzc_kn6T>DLbUQ zZoJUM20R9-FzH!6vS5zzW`-Gn!n5Qivxn~^j$s) z-ip=IsaMO4{L$U|M>B{de{ZmWvnn?4_x^tMdUpTyr1gKo?a z0Fi3^5Y3qum*Yd%qfr;k{^ke*TQnjNqu)J7%ISmfeRK{|c(D>q)#iiUP;9)zL_cS0 zA?jD&CLarYA>^WUP!*MM=lzQdE?H}PxF(chS-srY8trwou_ZYrC`=SxoF0w)c-s?` z9pN(S)eRQIfLbY7EpIwKJLQF5@fPni*zum)CD&zcX!(q9|!pNdMdbMJ=?s6{%iT_V@rIF@(#D z_7EOXu%YbBIEC+j8h|E&OJx=15y)@_Oz7j*cNM(o>k;Wc1(WeN-KfqN480BTIsgQg{kec zyt6s-(tXzqp!YGglX5R@W)HDjYff1`OA~^$k}}h)3*H?&957TNo=r6YRDG=p4-E^T zkO^39r|a-~eSMh?a%1_!L1~%cMerPy|u?W6spkK)M?j+mwM}(8C@LC@w77AA)2h- zSvUP?kx&>MN)wF+E=I3WQutc0&k2iejm|i5lk2p@mao-IvDdm@FA%#0I|Ii}F4&D* zzG5M(f8vtWohAaw?limSkbftr6$s1)NxIJnV11O;#OWz*03u4U9M+JmP9c$Gc zmS3zDMytLHLvr;0d;EtDw0e|0oIqaD`K#|ZTCLv3-Hgeq&{OEW)A!t^;!g|}8~g3FDd&Z2lEvme+9S73YacqY_!;A)k@OZ|hgz(vIGt{S+B142_x6^d%eCaR$JGc#)?wH#JOh@=`FG8uOhwW z)_>ppmRr}J;PNK3w_tFcO5O59EiVJk#^RGJ^v@|WHb}!sD7hUvSP}CI+-lF}O+p_7 z?njoZ2Y%Ofk38$r{G)xXX8GvkQgTmEX47-&bER@MNUn-hc<=L<{rQ>XuJB&oslk@1 z4jfy7jL!6(fFr8>AbnUHt*`v22PuBxuHK~t7^Q`9-xE>bJ{VQB!Vo};u=JjWBo~;6 zI1Xpv5!x!1Z^FnY+H<3)mZ?je>o4Jn(x&lz1($SWlTFCHtN_~ws0BBzJ~=ZhK&R8U z-Raz{fGZ;gxgVpNvj&s^2rk_u$E66RTX9m9LksH8qP*OxRi`(pXPY%W&Ev z5}QKO_S11S9TW`lSQMOmWnq{ekxfg5BU?>C9k`W@c_S%q1#Q?Wk+N($`r2-s7NwEm zQNFLU(Z!}afW2_#D$`Af!~J0qWE5rxBGj`kPS3It6bM6RmpZAn2f?VF85AkG)@_io zYEs6HlMMf=CEXO7;JTFTS1JmM6^A78`pDr5O6c&&wYx3~c)i3=-xr_vN)c?pTC9)!P;)@S z&}2ZP+9__OC9F{19j&F^8`ohHyY(1Gsoh1}$WB%^N!0s78^10lQuyKRM3RU=^Az!b zk`Fv;N1{oBiYYEG@({JwoyDa8zCRjc@g~+lWtnonWA3<;mg}*Y!Z~EQ76v&2k?q65 z;$vVqOmN2KTym0Cj+x~$#<`kxPBG6VjI_4_x?PU8J>aji8oK)sXtg@8qYx@v@I9pv z!qNyXapYn=w1KBYf4woFmZ3E?1!N!k1(}>DjpcEq4pIsDV@tv5Sw1rut1{1>=7uTi z&+}(As8410=fPrtMQZG4A_tx6e{c9BeL2NEeiUW$3>1~%ScQ+~`Nd!J%Ma7p5FXu% zJLZKJiHvzXW(N*f=geFj#oSf8`|&Tk`+wbgjsaG0p6=~JOw_@P=LcLB`vcdVGvKp- zTD2S0iW!+}Ci{`PCwFyFwLZ!FpggeNc4jB~RupjdU$`~lA~pX&-sbTLV!1HO=sv#b zkAZR^%UUeX%>@hj11G4&vUM@L@Gi1d8Qiar@c9 zAfNPSqbXFx0o(#yfDX~qrpF#P+zr;d&CJ0&r$KG0#h$NM%`LgK^&R{8jw>gAM^*;U zny8pwT;$*-0U^)xv;N$H&uL-o6d!Jfz{2!Mgf?(ZJ#?*F{|7$*7VFS`#OAK224=y8jED`$X)Hk6mHBQ^DKrimnn z?vN3WLs=0WmeKE=ibi%Qe%O|MbSr^XygB&k#~*hO0Q`1AAJM|lvkNo)@Q0Jdm{fIi z1G*N%hrgng^zN@{#(@F01NbLU;FY9x2Fs$ICt)qVQiuWG0F zI9jsZ^vAmgkM{Ro;xYT{?teJsHL`^vmYjrhx|kcOgVC2P>4evVxvf?zDz7tIj|#@V zeqo5Xc*DiN?N3?FvjZg8A>_f{^B;eD`e6Uf-t$+x&tKX30U6-w`7lhLqJMzX^gnT` z{->BOJ+#N!g%I;V`Ne49KRY41=^qrP*Gt`li!0_H%x?9?2LmJH59LGvkHiDK`E-vz z@9ytC*?UB^@YxGLIVvtFzojaJ{)xXO>=R#iP!IAKoc51z4*v4sX}({c@;J}{g3;KyC0D!cpG+O+w~{D0gx z_nBc^@S8*P^efXr*N^e+!N0$;cfk{LnV9Lp%J1F1EAAxbJ)3C7048d0C>$-M_eHUI z`;UAu-_y4hak=tq(nsU9NoVr}EEbc2_2nvZK-oFGL^hKj+cBw)9jl$Ff@k&H{$8b$ zU6n2)>Dk-W^G)h9Ruo;nQ@NJeN|5NHv=>0P>~w%b%i;L64TlqYn(!+tcwrQ@%MD6N zJ%c7L{Ma1>2NUsj&VALV|r<@#{2^Tw00ib?0Sakw8EOq3=8=6N6xC4gwFD~ENJ##c`hDr zC`?0RLb_3j0>hzYj~{zlNm^^FPyyClZb877)o$z?6qfCeF5gLo9%>l%&tz8Wczu~K zei^0^GF<)`9Rc}$7az>>i8OcPv+i5NEu7B4E}^`eRkfa=q0BUjuk4ys54C`%zmGab zp{U#?B%UOE(27DA;prm_65lX_3dhCR)^%W$YODh5e1jyERDPh<@QQnDX@C46#|nL? zFzoHZe9lLd<>%X_FqG~hZ zMOfqI5W;-pR>GanN8@@JyPg#+d~s`;oK(ggFyPu6Q zs3HFa(}(GRypc<^BYvi||GZ_N8$Pg3>D*dA3!00LdTW*q7Ji4~GsE^#)tqfzsa3Q&a`)b7;;*M>qBrWP1#t7k zzZv)FM-AGl34cr2bm(D;pE=}(lrU+Qjlf0E*@i13FSLaFhFXzCFIF6&}v}r@&t{&A-nvV^8Ed&TmvW z$)6jL+Q+@2;)5+S0zVRZ0L%`D9wU46-Ob~xmFa7^}*p>FTCp+%td<1`~s zY>lnE6E}Gsi2P?+=p$48FGjj7QtHM6X?99Fe}#6 zAKy}OH0kXG`*XJu>c_1Ag8^jHEn?zNu&yTEW zokCtOw(kAgmh&KKdp{X|!)p8%1Yduyv9=8!xaBTO_Kj%__`q5JowDRI}mS%7|dl6QU#dQLQC(^@VOV{N5-{KP@wWUy2IP%>|yWCP;VFG{_HYX z8|SUz;|W(L5iYzu9XWD&74YuhR+iPHSYpuwEv3|*g|zPED3L9ZU4uV4W31q0P$6%B zS!u;c2Y+Hk!qzQb2&EPilZ)wP$f@mA%#S4IXoAF(i(#&fjvRY!g1usb?O$L4K1)P# zHs+-Sx@iQqPN*4daAE2unqlN(r~d(nvHei4V%dPiJ`9)pUGh`$>2?h{GeqBj@^ZQ` zr^s9gjXwt+bQ||E4@4uR3*~nyD()yv7AEv=nlZ=VIl#IDuTDt&#YY*L==)aSlwMNz zL8Rsl^p^?krPE#3(RpAjd|Azio-7)n-L_?x*qTYCEW}h6sd|+`Dq?HuEmJ3+(u+uh zk+LR{X1s>yb6GBj#3V~>@;c0&W`Aq_G*MOF%gXBSJeGs7wtU_PM|HzELPZcC2KKkDU_d4=b@!3LBMRR}5y~Sw}(p+qne#k73TTO0NAReC|G# zFUnGQs$7PrAU6Y4G_g)_(WQ5>IbB_u34o_9ZBA4?3m^ZWYZ7XA8)c%ho;TuQn$DLQ z1WIW>Q+`8x?XEBRwk|SX3&vdRMwXvn>g!-zrLw2he{ZBoBMWv$!ykxQpfpK=#bTst z>4dQm>*NYd(P2r@y?+jpKAO5?$Z5kYLoR)4bUs84&qPk1EBKf?P6*LPC(`qoz<>oxc#l)yv-wn!9{%6=*JVzI`U_ zwizZB>iSIy?V+#%&VQ9_%{fM@eYxGC!& z6L<5dbE5B~@Sy0oznzof69HBn6_qXUOP&?6GpWPkT(#rFG81K^eiNsqWMkxU0Z()| zB+kiCk)S3 zFgZA0tg%3C9w<&g+BTz(^X#I?7sF}C`mO5f4x;w1<~QqPB(ri2YUCb!t0em6cX#Qx$Dfn-^_e*~aN@lTz!g^k(_otg(EeFDoVD$ouM6usd#V z)LOMT`sG&q^+(PF>&yTRDBW=kSHWnwY#eKtI4%-+s4M26u0sCFA?XSr1hV&U1`3`( zfV=UEZpJIV7q7xwu`V=9qGI59sRxj8PR-Ul@JzaTEZC7UQ`|@BY#FFNKVqt1>q&<{ zMy&0zBei|!ZJ{X%Q>eMLZO?70I`rvMRj@^(I;&_wk0SdxrGBxg3CGe)+odKIJ zNy9fBS=tXC!&wL0)2i}3!A_u0>sAV9tK$ul`Co%iqzB}7(3*UK65n{85NDKuoCGjI zAB;&QLj|4!esa6pwuEKCBSS^19oy=VT*e?ltejmaWpU%JBOT0uEOi)C>}yen)yu5^ z-05jv@a9{i9+oc(dunG}LLR(H(aY~cmCPlbZ@I3Q`9}*~=xqQ-v0(5a-V9bqU+B!&K{}Ea>7_ye-VyLGBM+!{-22Dv15i zOh+mkbm=oot}qTLJTevVErD<~jMD|H%HX`t0Vu0k7512ddI0wT@%J zuoQZCyoz`$w2nvk4I**G${Uc+Kvf=stBJ05U5+R9wa9^>&WgXv>h|QbCn!qFH(%Xe z;-m{97RE^jtdi_@0&jm^XsH+qSREjyD5qv=Gv!Y}{TC%pFn_vaI#(i9!skU=q_JWN zU0gysg!WfX4`Mv~)sTi5!XXt{VF*ZM%#hJdH>$QuZ%FxOAQ##I7rF_b0nUWqDbD&A zkXApH#lR-}5*_hph1#olpEgiw1$=iRp*_X20M(Up7SZvpl@#z_>y#zwYvLO%Nr+!A z_k<;@@?(WKLgcW2mI!qT0XkT6YkNHfLMwD|3LIFv-7YK5q4;l;7TpR3#*b9zhb1%4 zWEgxZmt59?BD%gC2?NQ`@>lM)6j&2sc%)IE=NCn@fdAgSsOpsYAG1?4sR`wq{BUOf zn)6?zbCHo#fwTzo1rZVFZOH<*H|L9wK=EOO-bm1<`_AY36SA6V8)gFRK6+u8%71^= z^XWdJODG49Qx-wyDyBNw*MmoJ)hD`wC9l=fi=SRSdhu*G(bat2uFL}e*H6!bnW4_b zMX7zkYY}&=!a^5PWU@0+rbF}iAHKYl!4Qz;#O|~Bz0CMAC=9^P`d~7=^Kil5eWS@4 zq#`o%jDg1>#{wz{?CZWtnTNC+DKR~T%!H=P-)0rm>`rxIk;<(D?OiqQyfkQ6i=Sy18;)G(8Ja>k||Us zoONCV{mgX7)mDL$jts>U>JbY>o+9tSCvh4f5YYt^l7N0*AlhNC35bw!7{!v$4MaNr zDcI3vd58^;I0clQyjQsU$YOEz1<`dSyw6T(Jh^W#=w7LR_b!=g55Q7u<4QzkDqCF~x`FXFw%1;RyNa@|Z(vieL0)2udf-PvixL>VlTWIQ-9b z_1WlSwfjX)q>&LO?EGX`0vr=MW&~Y<5@I}_evoLhk_cKE)E!^TN8o97k!vp&b65#R zphc#^;*;6K)I?kCIk} z&k3N$3Y8xZdjGyUX{z6S^q%)YVaie)miI2p}~tDZ|k-rd`qa1%6>a%KWD(_?1C8(X#* zLJuauE~J*uCTJ@(r&Et5`Z_>sYaV=+j`D^PAIDl}$)NePbIac5gFeL3S<+XS4TH-A zq_IANAcL|B85BC3Wkwvom=+_-`9Hqg&aljCmSfPmqn>Z`6V!dr`lB)QDvH6x=`Jga${gf~YZX$uM4?q9dA!{D!s z2l7CapyRV!#Q<#zgH+{gII!R(dUjBmz$Wt zn%OHy2t^{ zf?$7iAGPn+h$bgZIh!6!kL^uS~@v=~e<)*W8HAGfUOH>j8zB4!` z{aI~H3a2FjgQLBudf6f3`H{>b9`ga5sHUlsf~z~!Q`Yx#FmH$*C2PH<_;`fOI)40R0XcAQVMe6pghn$MEX6b+57vQk}Jk+hy6 zMay;AB)ftXm*iHLV3K&#%Xp;gyRK~R_2{y&`H{pnY;;#)m9)@H+R8Q3M?V+3^3=03 zjrOOPUARg0VmNSxuCWy2PFg8ZlRb33H6r`ko0*Y5VLPg=fT_K;u zk%jx=fQUUVdVyP1YN!(hGRkXN#EtQ!@*Qjb#Ot-%CgPzIV{2#{iCcU|14*#ZDqG2F zRFr;mc~-3&3yjezv|QI<;;`?4D(Y64+w`*6M#%%0I*D1)Km0*$w8Ad^LQZkDQN^Qc ziTr;nwT%{P0;ugo;w`z{P;`^UdZa9<4x&?&sp2}-L1$7F-%uEcBFt9R;Eg8{-u137 z<&Jk!BQlfrDx(X`yOWh{zW+cqV5UwWEk_@HQLfp-;PbG}iKc0WTGEDuW{Tx(0 z?t(|-n}2`v=%+_NJ$tyj?@FM(eEMMTx&6pr+LQdlp4nJYMj4FVGt5m4_p-R!*a%Jo zMv3LamqSedM;2lbl*onF#RX`uzjF{JL$HRyGF>=L_1xN|>j;rH4OdB1BD9_`%pmIo}Zf^l|_(@lm^ z1Ee7~oL1jFl+HRX5 z{E{CZ+2z`j9a7H}O;01X(&_jxuUgqGH&ZtyPW>8ZK3N=dFkOs?c5S~V5dD7P2$yohSgZmldn`xz?Et|&2!-|_vtCDDW@bv>|;^rsvT@}xf+ z19mGoX~d4FL~shQHo(~!W8I$kK(7$e4l!#XWB@dYUTNggby$z=Rsg5U1MYjsY|5*0 zPaOf|G`E`f4P6-YC({X57qd$)7PAv{gaa-WVaybaGU;2mR`RNRG(d|nH2C>G@1Q5% z4RET!7apJ#vWi)4XK!ih2ZQNFS@P!D6oeP9Nc56^H9vwg+}`9_emhn9!QxzY6)%KG559{v-pa|xvh?%w+sWJ-}Hbmmio z82t(NZ6Gk1zK3eXZ!fdcMUJ_KV0S$m%bs(d+8F9Tnx8>}>PtL-qj`ZW6tIY!@Vtr5 zdg?+(o2~lXuH;b!;(C;-Jbo*Alf)fytNtFR)?a;*nN4K}bDE9xLx}HuqH1vE1M!xL zJD%+AAG~^Vu#1st2U``HWeyv|ycnHM8ire5j2cIhwh7hB6WFk3k>iUkZ&PF>wJ*q| zI7Q_PIpEkAJDlAG9#Y-5Q9;Gle5dBsZC2cz^@|rDChlDujLhDBGpr|Jn}yc>0eT0i z*IaLSW?)CrlZZ}5K8NA>aWGn&dy=ZAuz)c{llvr)sCJ@{TGG%2tq?+LF`fesW`Rj& zs2j`!(Mm?7aC7YvYQ+BoT6NI`-I}TsO)sEeldSrD@N)N&MVU9xA3WPVkWMAsnS&Sy zloljorpkULK!P)o0FhHkk~-$qdwCXF2LxkEKV??Hl^ zz6d|^V^riW!%u?PZuMPBV7KT8ZbCaXFTI%FJ;)RKefKhU*kI%^yv3$?abg%L(A}yw z{7^U^nBK?x`AMPMxyNhb15_)jM1@b@ODXeVn0#y96UoFa#n!mcS^( zYimiO=dO6bvecie6k!OC0m=kZ-(ceDX(uM_q*>b5A3^5ZRE&+~Mk~M4n*w=e%F+mR zXdS=Ia%_Rz^4l*ct-{w3MP=lc>V=B(hDD=wq@`Q|%4R5yLx(EOCg4Ko)RPZS^JIAw z+&T<8g>LPE!7j*}Tz;i0DO9?0Y8s&~7j6XPBK17$xm25Cj`lT1zW6SjX9ui}{U*J< zXs{tZ~v;|=%}Fe+qE05ZBl6ewv!pN#VH&|M|bl>w;~ z9f^RPig7zg;)Ly-b1vvT@$M@c@qp^uIuw&Q^4b=AfAa@|8h;X+i^24^l;O6!CK8*H zxM^=kH*J**Z1kpmKp*-+07i2QiUg|Y-nnJ5>qR0rEGk}f<5FE5ZW zIKNoT^T+aW6AyTsmZ4m0G2T8OKIfZ`2m#h@gg?=w>V;f*)U^x};j9<3BFiW=j5qj% zr>Uk5YBTD66ck(J=2AX^b||4h(yJ-t)mDA=_#0yQTH60*aF(CUt4CSk_a_5vs{ zl!*HZ6;%b~9fRCr$~*-iHxwAy-Jd3-dGQ?wKTun) zf~f^`XKC0&x80Ip6esnG_q{Cn)v_IR+9#j#M0fZ`bVMx^T^RoD?KnSA zcEayOH@0=6qv>L9wj=Gb#_vQ&wsoST$a~KxV52PWLCZuJoGLHT1-=noP|Fl(W#+sT zfc<+3X7N=DMuz_U?*%0@PIs$XNO;NTNGBW~z7Vfk38g`@Ve_Bv3xT#wm+iYysB+J( zH=upcbANU1A8zsP&D-&G@XiYA;kxZh(UWUmv7{eA%$uhl=2CXx@;M+W;1muyQ(QYU z4ZHX^8)XhD@f*E>Ki%`We-3|w-QY;jGge5#CA7=MdU#ZjE9d#FY2|-(j4^*f(s5yb zYNc26kp1nxC{5vjiqzRzpg&m9GSP*NKuYzZec5GqF2EMB+ugy|r=2|I2|ukXVt}6Z zaZlri?Le0ijc0u_o_x5UmEN;zf#iH})tVD2a+|zbqI3W;(!`X1axb-sC(|O)67Bk2S_V6;5A@UF9qgbvMeBMlxSX@d3@krE9S@3M9Ya0N$ski#*Hbq3b@?Ya ze0zL3>7S1V46lGlxdP^kv9EqnZOd^TSe}fnSJVj`uWTc4z7otDwM?Im$N6AX#Pj^T z#1t*uzogNh--*s_>qJLGUQNl==%tz$w@*>{KBewRlPLFAQhN7Aic^9cZ-VBJ5>`nx zki3%oE)BaPH{8HvP|~k#prPo$t0130i*&wU6iFyGcZ#4*hjJINT?$YxLvsp9{89qQ zwyyw=vjSRclsx6$*~%VtVTmoeoM<`rw{hQfU6q^?Y07q@lStTiE-s;J2oZ-<%3%4f z(gXQBq^KNAwsXz`>T}Jq`QMc(tdb=O5ppr91PM3USv@MXY?TbegtK}mOO4C#8{buWAeBwLYOtVqR3-h=-KGa# zj4FpSuWNvCF^aMi*-z301y$Ol+JX^nI&h`g@{=iYsp0CCIo<(V#@Z`U-`p7zRp*gf z6yM_CZRN>FJ_-2N{`3vJR{}N&!`GBg0=9_4)-tO;>v~&vbbKgYO|)9ZpF5|6m1*a7 z>!l9S=Jz_D*N#!kQK6T(Hq_Ux)bs=OsS4JN8(LOb z)j3=I_E+or#gcxhZZ$ac<}Z_ke|LDAH$k(XV6EAVV_u>%jV3}C9DL|)+h~c!M^oh% zg3s{pn3pBv0NNH}yMW87m$D$hMp0w3i^RRcs@Com*U0_C-{`Me(iWG_ZRdD5RWcXm$20I$T6j>%{Sh1-NT$$)CM0Mb&Kf?)KMPvEzSDEGY(iq zbC2u-ALuR+&OsOOtQCYtR(R+uUX_UH~W#D8^({t&!`e!@(+AX#{H-%(K~aI`3FVa6fi7np`aAsA73L zH8-Qz2-(n=+TKF!d|zC%-Y7uUfB6i?IY1qDs4upfHsV5^O+YvMf^iMU)U(_9p=AC@ zF{vh~JId|}9#U#%<8BRy-GQP`&`>-}9A@rcN08xn;!%sTAF+Gd;$jS}e!e%{wP>-i zpPKEfGa7arl4*prc;W~4Ng_wXg8bKK_*z7dB>a7yJNs}*6ZB6PKv9gl{#HalgP<8UZA zE3Ozs2&dMP(XZJ*e>*x|m@(kv@pNHe{&cIg&DoZr5%tPxyTFhzflzd_-{3szPNN8{ za@A3KnPf-_tz6os6d$Z|I+b|6F`4!Is0cLl`VzvNisl7{_1UPv^dT$>4TKL@L<4q% zpuki}U}+*C8^+;}$Qm(%DFj@Bd|~9*#-Y-^|7rn&!KG4mAdaPrHzNT2=*AIrgvzVq z2bBvGhbJv1kN8MmO?B?vResj?rhUn86<3${&o}q~W)E(@cqqX_fvDTM0%gIeqpbahmdF}pY5Fk$Ec7@1-4gn=?X}i(T>wXKEX@5 zG(|*=mNHL-%Wy3wcgypg3N?T$EJ+;^R;U;PY>J$Wb9JCTaO(_USnrA{27igJ4Q#+#m`cY zqA{aQ@sNFh0?32g{Tr7i^+!PY)x==25g&P*5civ<=4KR2S{&_hd*JZMUReC89q*b_=jf&?lJdXZI!+orPVd;rIygSo-; znRnpjx%s?QhWE*!7%Wb8*#oCibD=_B#QE7W%v1%_8D`C|Kk~TCmX$?^Q)~qnDpaI` za#o8OWLNFpI!;wK)M$w5_BuQXtNS-Eu1BUb9hJy)kDl(WCCJe{FGd$RRwUX`lv9FD z-H&EiNMXHi`052NYrPKvq^J4hbBLQnbk_T316i1*S|^_hyU2vqKZaG@{pX@TCcPB; zx=trUQEmescZ<<~(s85L_&ZQnx#TH9*y$l1U{5m9+U~h}(rrgbay!+ys%6nx8rTc{|(AEL!-x*n9+004UYy zwaGitzF-7OUcbzIN0=dlLNOO3ZER`oesV7zj%JYTdn++1PA+U?bA#<$J&*#>%mx20 zBS(no1nM#k_w&;cIDO85b!Rky|L*5tqUM8&ve8RBdpvCtowy+Q4%T1%WsB6tv~yO) zjn}+KA^7P_BR5{ZCL1MngsL7w9&G$!H2F?-8aCizC!moAuL40aa9qGy?)q)N$fd>u zLe9H3jW*o4J_Q#+83cOduA0Y-Nzp%n+n*tp6{ELULlOsRFsslw4n&f1{tMXq9r*q+ zHS1wWqah9_W>BJA7@mFJY}{$I97|v1r{_rV3{%g4^TH)7pYy44W0ajHHJ6sJHzPlX zo!?e0ZTy~824h$-9ImaVZc>qdZd0g+X+d39P+c%AMFa_z<3)V(PG@;B=wEQI6rmD_ zLG`?X4T2riTOlQUdEBC_PBQg$=+EC7+(8njx=aWlLOFq1&PulXqI{cU{P~sb^2O)g zUEUTt)PD4KCJ0W6^OGaJ&-#GrDWTWn`f5!z7HZ zUy*~6pLH2Z_)P`p2X}+cE@3-B2$o}!N1tYCd4t zcX5bsjy8giN>opZB~$yR>o`xV8oL`1F2?`(1rskIs|9>9k zA5by9H}Rf9o0{=lubua%+YX7)Bhj&z&D|TOKo>KJ8hT98B>Oq^VT)Ol(*<^z_2={a z{9;~R>%_otac&SXoYO2vUCD+PKU6O`qbE-1C2I(F&qo`ZKeeu*lbfzIqyRd!cvhTb z(+?8@noWlaq0xwiRO%Re|ngpP=>lL?{h&h%y>YM#cFjnuoz(Q}h-lCBHB{ z1)GL1=Xr;{{0i0r!*iivbwdfe87ffwzwBa=r#8rKa%-@bS0#VuJLFtGFdpuxHb$O_+wP zBtc2ed=h*|e~FyWNV8o-{AKwnXs;dw=AV}+mRpfjfu!N2V#uIPp78%D z;Fb~3sFxF9grP<)J%=7~&jMxvcR!n_9eIBG0#&Ctgh zEtdMA+qFq|4lp6Uj6OWnU*babBVK7(5Tw)~niwbvlvS2eVNl_-E$e@jnn)AFuVFDI z*1ecdFD^g;oPybu-Ez^2nlhnA<#DaqM`*E-@%%(H z;!D&Q!WEG|?vh7^b9sr#2EX`@1Y+r}UPg$~dD}W%Sa*x>T2WF`o&dRDaOPWzbq14; zbIw7PfvvyidV{;b{y-hW{m|DC*Z}MgwUbv@E1IL@WBumdlhJ-d+q14`fWbtJF3rB- zNw@j0b6~J%{DVhBmY>x*Cs=cxWGJ9z9)XnWy7S>1!?ZY222Zng(P?1&^;3N8!O zkoQwQ1u^%F8W~$i-ffySF{Jm)`ty^~hFtn>omua8ksRZPxRlX{{%m5p#rIos60C^o zBxk!FY?IlUifwXHD+#29z!gN^*S|dcA6ZFD@&H}3*Kk!!>!Y@G-o$1*@BQ0W)Lz7( z`VbmQBcAME1f2Tzlz+78+NMAS&ESW@P1jBV-8A6eMJvRb1lf;h{aJrD>6G78zD9)sOBg7MI1mC=O3o_((($n|%T8I`sDrMMBQOV8%W6Zn zBa3o^T`L)-r8%xo=B<{uQtZs?t#i|3rF6ORBiys3uv4Q4gPbQ8r*$W2ngfAd>d`=cn|J4le--)i(re>O$`RmB*gTf1l z+==$rV8-;9F}0FCD#|1Mm)Jqd(!32hZLNUqW%CbHG|W)iaCy@g*$|Sr1KXmV<6*=pINwCKW7maZ{>DyNQK$aS22&2;+R2HLFkD0`OUpt*u|jb6 z!NlN$YOWpLrdZjw9eA9qP#(6*olyARZ>lldf>tJjj@&-Hil>@T^0A(g6z0wJ$F&{x z@q*E`iOlLs-tn-hJ)9`$Af04&?2&Yq9fTAzJa4W(3hhtXOjP8aKUd-Qa!nI-i0mY9r2Rtk_AYc2-rNcKQWz#1LhYlS(Sz*7sDB zQ?Z_h^6s#x562@h4_1XkqP7IWUo-ViVq2^&{#>9TL{00M%Me$G&jrfD1WBqe97q~i z-Br8FV=TUlTfv;oRnR}Dz|MfyI@;bUp_4a29>r|RsFE690X|Z#J57Ad;jjQ_m6DD% zxt-u%oFnpu4<-(2%QYPWH}8rQP@e}4y<5fpDNdY7S#A;2e_+YueqQ&vwX45%XT|8^%v^Mq5U}dkGixSd#s$V0ApHGKS zZ=)4xjuM8oyG(I$gvadhVa2BRvfF2p!WrQ9F zi^7b(umMIZ|LZ&85*$|r@7xc3CB+bUD}TEN;%o79i(XrNq__4LeS7X+;9vg&54Dqs zd8ZzHcWX(~1VzBw722>BXwQHCOB-2Ccmn_a$)9tY$=H=2rvBh~njS4gMO@yU=?6np zI_62Ci)oP;_C5&PvwVmp_nMFnNLL7g{6Mq(Vhm{y$775rG56r>*AQ8vUi<-`|Dk_= zu^qfPrVoyT$5-_DDtP=AJ^m_q{5|$Qo`;?PfX`3idEk8w%X$fmE?E@EguI?KDBWZe z+@;7NHvt%Y8M>R}zmI+H^ri}2$5A~KN(7rcwVHg#8Ia&ut_S?H?>6C=|g1@I4fD0Ez$Ehh7kIjQshFVo5N z{8H!wYI+7oBd_hAsDf^*b8!BtG-a(!!)Z3F1GzO<*TMrGaTCk1=>id`KRTH+`v_Jh&GrYzBNfEj}$Ze_`a4J&ciN^0Hh9r}^*S{wk#7lIVK3z-P&hUPh8>-7U zksSK?Dtm3XuoOX~4wkQvv#U(7B1vE`v#Vo+3$=So5>S{O^i*p!Us94yUej4l#U9AK zh#y*mqBSXb;NAB7fmu4}O-p4O_GhG32lj?D2EU)v38>I|s{wHw?~U2HXnVf?h_9Aw z?SlA7&T4JgiVV4klSr8v)Tztj6`!W&85TJ>-D+oRohdsWLgv_93}1h=JuTU9u)*mK z(*SE+W!SS>DVhGRu#mBT`gmln_5LOAns2qD(@v+8;eUIsNB79T@P+6%p(=KLUQ&cx6Otd}wtT~1Wd}eFsVS9>ZHGgoPIp3XLGF{EdhDWzp&89XBZgHNW zuXxeWTb9@y_o4T6*U+d~6f7a=vN(7MXs?wv>D;(p2LM zhKGCab5RE$qF|ruk;OiMLKkEZ!zKh0KA^2Nf3f(S zJRSPK{-E%JM4?RWKY@2bgk5kyl-*M)B(1!^(@0u^oMfAA@O59=o%LLYgGUO&(&Gnm zaRF5_4LOBG(GtsYgE9!}9mD!}(Wd(1q}k{-BrWr;z9$i-p)d8x)Qb5X|P`rHe9KCxgA|8-%c6Nm@(DFHN`cSd_n> z%CxBT_1u(_3%YtQE%j3NQ}}+`_I(h@?F8XMh*-C52`-Dn>^fz^NCn6Y7*)+30;Q|t zgNbz{ZQ2Vz?TTQ}` zSp=Lkqpvbg?>zO2xiQ}g7%w7Z_Ak=uRPbRStE@WO zq>ivB>!?h_P)1S@F}{pwSqXX705YI09c0_3yO+?)s`NI#bIbc#${i?kElX#(BHIFK zp*@Pggq97$Z9pl~VoAc>t6CSNhZWr5b{P`bZ3ATZsequ6{-iUSWOwk7sX2-lxW|@w z2e|QwG<$5J#zW}iMc!Tln?b%dVEpX+e*RcE092#f6PgbF0n;fFhi?eeJ`oM9_*i;Q zmqD{KqEfk&$`}Bf_~>!~sp&mQlzHeKo3=NUJODFJtPJs-)1j|3XG_T)$^M4@$tjw) zcPs~CrN3rNc{!B$s=t>d!-!FEwL9+2a>KkDD2)2!4wN=N1%V7Xjl)=yYA58VBOUvN z+{h0`A`wmu(3=7Z>N<%ZG4KY2A}qNk5t~A}Q^feO1*Kr683MK}nLj5M?h%PGtoX39 zBVYE$98fUOxGm_i)=o&@UgCa5PJ2@HmfC`FKEk9QAEK4gI?C&=OChn>m)X}5z}FGA zuTMrN>?%9cQsl-L386K4*oC~>AO6EI`Yqu87A1qu4i?uWF3|GCXgYPRoZt~G_J#Kn zPOSME#GjoTuFJhsGrHT()C=yCZg212mF43i$C+73luT@+8Q8^EOdtrLPILt~qwENu zwwMyB;6=bQhh}tKh^eFB!>RW=CsAR?V#V~LshsTiecH3oLTZ?s5pv51Z;Lb>W*&rT z!8;p~_~8uH`f?P3doVtA;cl*bpg43S&1Rfax+L@$+TorssWQcU|xj$0u)+mcWT8QyMnrG5LV>$#tvJM(?4mk4hZ{gV}e}r zuL;b?_+GmM;3IWi0Ao0t{QvB|`*s^gk|(@>^C?QOj}52+P@*LFG}$tnmMAyZvZN*D z_RP{8p-2?T8i4?e0!*{jIABQkr9y*zhG6Y z$>|oZqz07wDCmT{PR#n1KbZ@IyJ^b<<1eL_N$=}~|DI2lgHF9bDS(-VrF!nmj9YqCKyh4-R(Th>~%VZXNMqvFo_5W#&=9L7eI`u1uj7L+l8s)5T z>U^>%*Xt-ih4$!f`>Gftm|sjhA#nA3jYmQIHe#vcD`6PWO{u)RTH}fI2@Bv7+1&og zwGRMgjzijlA=-9BO{&#w11XAWxqY9M_ZhI<$9{}@SFmdv@*jmgZy|P*dy312SFx$p zK_Wn6L5W>;TS{x&{(f+dK&}%uNjjsksuo~L*XB;_lChA}EmlM^^~|_{_Jp+CY>It5 z#XGU91}-=p8`-p3sDq}j+<5o6DW{u9{*FeFmNIT}xR4~&m9kUEh2(G28{i%^qbXf% zC^zBC+7fhP!z~TQs5;YjFuQnN=^PLjukya|GQ!OPmQc-1vPwn6YpuGNo&CC}bj)aH z+`gfk7CjvqWIJOY`??z|VUyN#B*LXPR{b$y2pgGqBzO2$I2|ntjIes}ToC|F1)CX1 z_VkiPF0EI#M)TX&^N-{kRjk(Dr_zS1(M@K5jB8$L&F2T}-Ez;+1UGWMNvKP{3h>W% zB(j&jDykpN6KW@z)xjRb;WXS+dOFIK`7jW1MAjYK(6`0eWpwn_58@jx5GM- z0{I49@IT*~!Zt`?8>+(Zww8C#502iv-20DrFZaILe|dBaIZm`;$%@XUqj^3DpEbXO zdoSM}y#3+%{_0Lj1)YYC&e%@ioju&jxtWs_DpwP4y~4{me8 zv%b&UtS)E%8F2KLp3@7Bf&USI7y9eK@N%~gcujTma;(Jndjb2=-YEMe8*xj?=_oDc zy_q2ui^BR2H*|8*vEyWPLejhGX4Q z0zvq>&|S6hlF)pqru@8IBZcIF73^d&qqddYvY#cCcX*e znBu3=c0&sI&CLPDd1E0Dre`dn&Xgn9t!49IepRGR$a0>|bfc7$uQH)a8EJlSxRIf@`(A};V1 zQFS5V2-F0{QhY2b)w-nC0kT;|5ZnBF}h0cCdjS6(@Sw~nP*rT>Nd_ItRLa_ z76Dps7dx#U=1=v0=X6N9AeoIyi>*y6!Nf37D2JpIxFXed!GkPq+0h-cbI-Q$Y zY&h4E#y*ZKb9?LKSkW-vP)<(p!RYY}f*{b`%lb|jP_;Gdh9bgUk0ixT82=aXp$@T5 z?H^+8G0;Q0&@abyVOx5HAyUM8`>`iLb z14L)0$uR#TRNWe8>8+rkt!wJ6JEX{DUK}EqWSV@9?R*c1u1y?Vz@{lu8R?VnNB|o7 zSf;YQGO>#%(MN#=YU*CQdP4t$s%G3ffM=XoSn1favV916D_A{1HFW%Uue^9WOCiD? zbVZb}Pm@YF5qm&loH!qB!juqG}WCFd?O~%lZiP^tzC#_CY88Ycq-<&>DFo67&jgJJ| zgFIrN@-L@XBfFPeSsHN(CGwbJ5h)1eC9CN4o+_+)&~RIx9+l0Z6SSgi|C~5}m1`Lm zwm2No3hY;TpR>7_S_KB(<{a{;HjMPfA893=k!^p52HF+w1pJg_JOtZv7TU_6C{e*ug6;T*?CIQ=Y%?Vd zx5Yc!3H4c?AN(!S5rn$85OLP(nv*hQVk+AYsfwGll-nKt`2+m zRNWe=xuNwLX6BDsHpKfcrU6toR-nNMFPBO+lrziH*N)bv1hH*+Waxb65A5yacQ!0E zL~A%OV4O3EwVq1Yz}pQj#_5E;4jc+6i`iL~f;6=AcJ|L_DI<4L`Q1t%(p_cAf*$*j zy+5kF=ve0Q@-3Yi3(-&hs;>;McEEIqR&GAHx*?Z~*=4>jgXkn5P*OV>ZYRp7ysX@W zmhFsi9m_ST88svnjsEI*TZ956{Ec{241ve|Drq#oj_(+qhj)(WKVx@=k~Q9D1?HsH|M~xnpbTCGqZ@P285SRm zT>QFi)PULKdK&_>OwP}HHj$_zVGCfqfJ;+7gef&2p-%7!)Yxx+-N@c0ZTMbX0!4M> z=&89#W{Xj_gJ_th!AX$~JAG9V4{rMwdr{Bh9Z;ECI+K*ihzkK24{2eh5eR(U&0j@o zWyMX=VxNBRQ*Ct<(hbN(7!Z|}(OxF_U zx^cmzG@|}k+I~Bd>}E#DvLdEo$UUv45oJh25?CU|H426@&2eN@T4k>Fzx07I`mW5F1b&Nzi zuI+%qis(ziRj9X!Jn*@BkdLC1ki2#-&PS8U>;=WnG`TX6=vZHiLjMc+?kRL!kV+?i zl+q5yk`(Z~l5Cj>H5}Q8v1eQQ(gi%)RR!C?F_9fRUn zKO;PlvGI9-D1S5iuw}V#?tfFa)UU#r*);n@1j`7zC(D=u?5E(TT z$}_jZkF;6~>pX56_}s)!VmwF*n_Hkd&OuJeWoXK+uvgKyhOLY767pdy8k#PqKbC8& z$}}&yhE+wlz`Lu=Y9yYsA5T8)G1k?JMufLs;@BweqFXf@HiUE{8CjBPv>F>?xx3mKFx|b(8z6v zngBPgoh!JniMVz;5nsl@K&+@Ih)DjV#iYkn&?Z#dXJYM&aLV6IKA9D_Mu_-}GIfGG z^7ICRqrgQG1i2Kd&!*I%8H(6d?*#ITzC7GxRRd_4=v||%X?%1J`>@HF4ARLayO+FE zg1sBvs4KUreYwBIEn&Z{ctvn|mcf2olj!k6SOgXAdt5zR5i6qjJD)vk0RW+x7?llZ zNLKU-o9?6!zEdV+%NUnQULS5pboHul^WuMmpy0V1Z6i0teLkr&X^HZt=-qKh&K*x7 zz;imj$S^okQGW4M)LlTa|CmZP$!VpuXFhOQ?;Bf)MJtRd`3?uMGHR4)2E!#YiUagqZvF9pw>~%Ip zyEUjCG6^}41b!dk0f^BX(W1{$dq7mR4F$ZzN`zSZgT`)MZ)T{=UQLZo>nuA*Tmsi( zcqUDbMua2r7NZ^6FR&`-cu+_|?gdUQ_g1q+6&(rr=!!n5jrS3KXiVd%g$RjTkH|Hd zP-{f#7bMMbH%Nmpf{TkwZgQJ7Vlp4%e6Rgy$`31QKKx6@pQ~kMkYz=TeDDT!Tw=td zo;g5qvphiz;Eby5$Yzk(H2%x>{4g(?(VC--r$Qkgzw7HJ4Cf8e=OG zGuX;9qL~d#aDkJZy6c+yRF0<1ZaoZs?r>GqaCa>{mC~^8#Oi6_(dAA`$>qv0Luy*_ zAZ@4ZwdIJn7igq{o1Wmubz@LzS?i z-iKha+{NyZm=*62S}tC(G1k}`^h85j12NR9w?-vKPTh8z*o`yk*#33y{;?of4b6+k z1Q30RnGEji#_s=4Sn3T~Do0AGThErFP21gwGL(Th;tc}@ZYswD4!yVgw!m#tFj#Fq zx69VlTtduu!_3fMKL(O5qbz4#2CKlQB;u_3x09h)md(;PpUQqE$m+n2cAo@8KvpiK?Tbk`X^c|ET^Ir`U+=eN7lV0Gp4FBp8!nfzrEO?TrE=W0LdJPrK z(EW?5QXSc0;9s^(W7JP|%GRXX#BWDEKMl?08= zL6mxyjYj1t!j7@GvNk$2(Ala%4zIKM{z!5`5ah7}UYQqUf$#1V#2LHFJOp|Munp zPC&^45bSm`l!Ks*IWxnBIs9#!Fbph; zMB}j<;uK#EZYsWD4dSrJ=vHhmJijq)L4JmTKO?&V$pdadpHc`M4QIGlh0NhKLRD~? zAUYTeM%a{hRBTW<&QRGDX9%CJBEzJQVf1MxP*pR;o%bTd`G##zMpi&nRwZNJv$?2RY0dg6RB^~@%Z*W|6E(o`eF7?vA%c&_98&W zgQw9PAn3sQ-hn}){U!n=4D;gBTyN-RYb1^fh#ArlE}*_=cNw9bM&~?*dBXLnac;%3 z8sRcjVNMS2-*+Zf_wUOT0)V7c6&O(gTqy!PmS&WL>jIc$)JL{8237)nAqHky(gByt zi)1mr%H|!Qdx+=C#Q}PCIS`yQ8!`fVLxxE{;-TgBD|+rxewrStCfZw!Z(q>>7jOY# zRCRw=UG$No&+}O^{{cp-7RoawK7Qc6D4mVcMF9#HUDBIToU!Bue5N_%GK6jGiuEb^ zV2GZX5Gge3o9x8U-Fb#Jnifh zGN+PRyjXSt%*44d;rAPjx7$wRE>L)CTKDe*tUQ-C)7=i;me1K(xH=70K20MqFPH4p|R03GqwPcP{AKj&|8$po=#n#Zo7K3)z9vLc<%f z)G=Teir?yfv}m79Q@W^3(U;`ZY)E?OYJ*pv#X6(wGHUxw`OJ>vvbaCs7Hic7KK>>i z?Rd~j4!pUSiQP72)3ET=1T8OSGP}LAynlaSi~lXyQ$a!BP}?iH|LYWES3p=nGrJkD zHB}&!5c4IW(ZaB03S7OdUUEnP?RvXFop6BQth|Q<Duz7{rLx_7n`C^%&)%F88}N6yBKCS!F4KG$sv0QNjPlNDH-U}WIR?m zftoK*Acl(%nxyxI^>J#rBjiX_?FCDQ)n>45RBZ!$0o`&R_~q+1g3Y=1PVh>?R&b53 z+zVdT%FPh85Z?{} z*$wpNwtGRBwmYG;4>;G_yFitLJs^#(+yN?M<@$Sd+trU9!iw8PAIV5?S=un%iui=q zZx-N?ZAhgoY_-U)Qga=h6-WT)B5-`^xIhd>v4hnJTp;LJfLBcCz`$X62sB|gn=ZNL z)FQnpXe)AWgN?Xad@w2R-%fa9v$6ML#c)+%(=s0R9oX*rd(AJ;yNy&?L(k>Q<$P6R z2V9j2E!_gR3?Q@8k=9kcTLYS#mjK@ZQri`OF!}FD_5bNrK0C zJTqqtdK$vBvrYB`DBoGxem+^CKNhB-(Go_GQ6Xnc3#X>Se)2raAlx>J^VBeD8(eb) zs=1RCH&>^Vk%OA2{74ImX+Fb&rXv|AS>TsY_VwL>&;Ahx!?`_63{$@ZYEt1R2}+?3HQi`u|G;gu-Du;rze0eI#Zt^Q;~M))Vw0G$!o zSV&$U{%Ol3mFN^-!H_lJ-{Nh`-mYph)_^5xVSn7ds_TR%y4pnfu{=&$a*X=vJiQoC z3Uf_7M>X~#YO!yvpSHF2h+u%g>*>d!2g^V@k1p$9{nVr4Yk-w84%`E~Ez#(U^*Yp0r6~cZC7#^Gje?Fuu z*I34qe7MPgGiD=+S2A0xpQ_l=u*Yv*oqF7u_i5dk1 zaPPU=GNNiA@^)LE=-RP34^@>3@R#CG!Gk2}Rr2bP$&5dWAU&C8-@qr5g{lAoneg)W6$g@Cc}TlbYHX3yc9Rm6sb`bQb!@vloPN@V7+ ze8+PZu5vDtCqsMLYP$lzXOvZ@!1do1-tEg*obXorDjmVaWU7S;>DjVWam%my)ZFjy ziRsr>x@7j&MgtHluE^*6_nl2h(|NMJ1wA3xQ#x;z5-V%fv&;0C+%Q9@{9`SeXbV+P zMX9}Y8yXnW(ZIX|0QEv*ApPm%M`uz3e>FTPhmhCNaVkooPZuK&oL#jbm_tsyGDIQe zgm=tsPvv89#wEF7uNfC_<-vBX{kJ&Nh-s-ZM!Q$lj-JP!%;2^|Nl^1Qy-W*28fjhR zzhq;WX2Z1LzjOHar0mI5%(H2@KV4ssvC5Oc2MNnWudHyM;oiZwA*g1l@2&FPMYU3Z zNb^%JuIj5x0_|l}rjVwPy2;``cW%F*k0>N}^km{kdouB_hI{-4@Iaf+jM(NwHaTgIFAG3v4~qQZ9?_!7RR+_X^_$inHE2Jjx*$^ zUD?U{<_5nsRoc_KQe+tnJfPQep3SZbZ;miaAJf%Lu~!|$eKonYfhOhLY0gejA8cGk zsM3#x{lynagn^1GUF!5B&nH)Axzw4tTmG!n`5MA*_Pm)TvzX7b^L(7+-1wT9s4R>= zNC0~P&BRoZzTN?YriID~-oCg>7|bo$xUi8vUKdeBln~Fevm8Qmo7tuxQ96Pv#Ti;B zYiuK1>)kWmXBI7#XHVMdi_vPJijQ2DL3@My_t_n;U#Uuv%9n$%KbMBB97noSngh<+ zq&qU{HT}WLbayJ$8vJyDw^a(SK4XO9LN*3+XGVq_pJfeo9Wtm}Ydh=}-%?Ju1FHZz zesBVyV?Ru%0y;)+%}f5y-dNx!XKjSS+G=zqD>WtYNB>)2*ko@&N_Vz7pg$^)n=X-% zCT6XZ=QVQor|*hfx5WoZHHL9>Y>Sw0^-c#45VDdAujChkRhCa2c!|!y0M>U<(w&h! z?(lI!{rF4v#>n+OM9FWO#I(6y8) zQbz5!beAAogo^*?(d$=za`%I<1W-p8JsG>nR!7`% zA*eeQY&GRfE&gJ}Bg7$`+c#{R6!4}aPbAe?RuI0NrTuIegfEulCgK?=%A^)WytPHd zJPRZa%O9zS6+|qetYz}WU2ex7asnbHQhdBYPiqNH+U%)!TH9xvR^K(J zWXre?!0A$7BCFtcO-rY`mB>Tix$P;hx(J=ojGJpV77@i|ug5w}1<{}pOg=Dhs9G|x>KUMom1&er%z&*}ZVU)W zCgObr#++!YacAyFV5-(5Yo(~^69yyYAQ`?}209*vep3Y?$B65W=^*-}{2m>UU|gEY zb+KDSMb;;HzYRsfxo?yC^JFoFcjwK7sCSZHT+Ffy!0zDJXZF(s-@2J0D`?$kc#z4p z5uZLCv5DDlO61tpGVIsMihfZ|T8<4RPOFqRvdH%o@}aD*hbu1mM*>%a`DagPHLLF- z?S<#O`i}}%F!LdF@~TnqhpPTCh&rD#<@&-gD|9IJdqGH$xE;(t@ZPaOJ(}87oAGeA z^?nSrU50v|)mVaHN@`9B8R6=l)!X6PoM?)xA2VVOg7vXc>iq*NpEaQ8OHbL%%~*_{ zmONodAQR?0v%1r_xh^QoPUuetkza&VL6-H^ zS?=%)0v@&%(QUPu6eZWWX(8foEJrC#ip9+AQ$uvp(*m@~5R?oJYJoEoSC=#a(%(-8 z7#(L|<82u-jK;_kS|>q83o2I(=bsI`f*3J0Tcn#T#=l5h#ckDVZCI-4lNlRg=9?jw zpSDv13B3TQ>$-43;vuDwD zxB&Uy1EDASTY+`6Xm1w94Z+Q88z0txjQIE2Mffp{F#d7Y4X#bfshKc6=6(&udG{WrGZ{A zX0p{zit;`1y$RRD`5N&&nD@8lc(9Q&zk|tE%i@x(rbFclD7^df$#|G5N3ybc5{h0` z_Loo%EH+jb-h?9TJjKse_F3CGRF_sR=@q`**0Zh2=Hh&?x#}ACR{Qf0+?QpAGxzGt z^HW@!E47}2d!{lx^RJaAm+Go(M_;6GIEQXBDYEpc;pM1`^^oDE>K6r+IcD0>L=;qL14ccfc?aFyI}yTdwx3L_cNXsu$@faH4cQYmD+&YVhv)N9~Bptc~}S z3oL-+{_xMX2TV#q)sO4BQH`M|^3Ds4pOLi5mEFGY3Wlr~@!3AbaPT9n6?xHe+_s#I z?aP4xxNzyUCb#c1$M(UQxO;$aBkGEe@@ zQ4a7AMs0LozxKbv#|I&_X)Ub2JF1KE-#C-${;UAi$7C^|F6O{VVE%4$Ihnlo&f==TPjQy+iQwacM)0IB|s%$74D-|I=M5b zRd=sr#nDLcv1(uFgyIPt&CSM{wPiL)EyWz3bqDTr%F16;YBGB^S)k}*-OR;|$(E!b z!hxeQ!I)qTEivZNGSPK98=C^9+AR*fYn+P7P|PrdiRKZB3?#FyWL{SZ2(9o(DCO#Y zm^}PvfzuoDh_|>IRygl$3}Vr(0p(^6HhkN98VPV5Pe@k~KJ+#us+gPsLU%&F_i4*8 zo2NM#kKnf?H)+sAv-ta%uuC7rxjW(3+0mYB^e0sB4Md)YS1mj+OG25277ednJ-~U~G-gy=$e^8$@&XW15VpkUM$!V8%GQ(2Gl-*+ z&Te`(_CUf2+vw`hjAyCq*V@dBA&w=c#ZUv_R6< zUb#vrQVA5KNF^>el!g1nelK^k#M=RU)pDef0<{8$ixKm-cbw;Z-Fxa^>_w| zA*FW)(-AZ+YF;nZ92j*{Jssqff=}3UFX9^yR_0&Fq-sfgjilGZUiT2_WILH(Pf&FZ zHe8^v6M2VGmWLW54a?{7bdOXyn_cDO9ME9;KaE>1z*Nllj!#wFTR;d&>}9w zEwKIvjP2&<|JL$DV)Hb(9o=vSR9K~OSW;J~%rw|L?ngs+vqT-)q;1&&Vv4Pvn`h=woetmd zEjfrO}WvSh<=GD9n}Z$um6 zIJa01e8&oyvSc?#hF!ZI6#?s?FN5;t4EVFNbPVhkj6-SUId9wEf1SR%u>tdMem$KZo=SHjC(&i=oG0CP{>7F0<$sTEb2%7wy8{5Y&5 zu5bDD8SWxvaDmyZ50KgWm~Rt!R+Q=e9=_ye|Ou{p}uLP`*?3HgFYR^Q}f|A*;NvljD0o?j625c=hdxSn5Fx zGdBU+q=IiO2eT}%Hf%E1zkgrsE5A-GFH0LBWot>a*5=iqRdxOA+9_G0J*<~aj}vgg z=ueY%ht0EXH~EP2P~lD;|2>;coJAyA8^%qW{d-eL&!Lz-W@4h>D_58?8%;x>%FYn&H`QdQ? z-Mi%eW-`vMlcQ|jK5mImILKX$9@je2f@CQ3|J&Uvy2$?FTep}Mk&4UlUP&|Zlljk& z_=;c!=F68~e(8VsvejyR8T-)sY4#JkH-n8`@FAXzxzT@P84Lct6-0k8GBbsME*%g4 zE`Xa9IOG+eLovi3Zkbj9*u~#erG_H)EdA60BeH6f5`n zi!YMR|2*F7{qMB*_XoW{ow%R<&w3~KKi^#RAtqiMdQpnj@%e{Rg%I~1@-F-5MuJ$( zGKzH{#%Yh1%f@i}e>gm_rjM{LK}}0;{aK3W3~lA7_rFd<)`WFB0vEf+auosLZ zakEWmP5gK7^v2e3mJc}t|8^fGkjJ))=|NwL#WVw{55KuTT0Uk5j07}7c0k84X6q|S zpOv^SllzydNrmDa2#s0sndXv=q*P_lP@__6rE-u74I^MyDjv^vGB;c7K)d|IX;Bfh zk-}rRY@Gp*6MqwKJlR%RN<6^eFKD1u)qUxR8314He-TUc$}*vIzA9^j1+Od|hOU)5 z0MjTET!x3f<}(1@Fnu~Jq*caE077#`UXH0F*(HDvJsgNb-iTqeFc`Kwlk!^{ls|10 zAmL2xK6#(rnAtC5@+%;i$QJiv#z(+yge|u2GRGPyUw)o+`I|z{m!I|oQh1?($T0!NS424*014UKhL|47_3vj9xF=u1nvxKP@zU$qPqawS$R9`4^4#X=Z-S zX1U?C$&zez1EYqnXhh^nEGj&sE3ouR06J@(+OTwgHGmy1qb`F6?KPXX1eOY>JkN4p|py}y#)FW!==8ldx4wKv)`78nK*nA`Tx zEw^1}!FD&==7@}L!kIpi)LiuDnIl2Vg z4-GwR*&a8St#26~9joahSUMlOSneM$Rb~KGugUvX=beXno$kbOvc-`F?dO@2;0)d} z^Wl|1lz3Jr2rP(aRnmc|0Wu(@Avjz=Cy+R)lt$aB{tg4I`3z%c$7vqT;Qo)*s_%a72Qr#mC%U&30i=pi z(ye3BdPWtp=!Ri>2rdvG8CcUQ?P#ku-j=#&mdbgZTZ0@`j-;9r!4|BbLeyc_BCr#3AWNG2o7n|BrpbD?i6^(g~$Pd?wrfL#^0=ASb z;!=ZKaMd7fLFj?~BOISr)47-zUJrCEjCDJq%0f5PpEVs(!8W{(=pY>Hc0`pGQo?_h zH>=OI7=isgur)2vcerE==McGY9Ad8JI!l1&d@HQJU-IJ3WNO6kc{XHdUHwiBef5P) z`q=SbklhjADT%>K7p;U~O4TB;rgGGXS8eG^{K3dqY>i>NUIe!yJUrmVx&HO2DzAO& z&uz3{ttD%n*tgw#+y#GqS1-HjKtCN0+s>#!Ar`B_CFK(8wryG4upkeEe^h*x4PIhY zg5VM|t17w#Ih^21Qk02%y7tSopioS(^p$&%FS_sLp|P>b53jDwNXKQ3Azra0ERRW+8yDB!h3zDEt2J>uHRk5@FBYrk;BjJy#STVcyB_hWh%GHG$mF;SoC@joH0tor| z%@Hr#RYy~?WdX9_JGbwx?YDzXJiQ@j5;jefl_GuvmG-WG`mG(ix2iq6AOBN4yC2=XXZN3eGtcg?e&?Ru zkM6*;`|+pu?Ecf5p50q_?AooY`#-|BTU*$#a_(kgO(-SRF5dQfSK?tHiZ@zMoVAAAMEl@y*k-!sWY+81xAozPBve%0J!TI}YNec4af~Z*Qmj zKHxqs+xj?4vW|D|2kt7qD{QNe8bt#?@J|h4)pY9r#hk#mnt6do0jnxb#X3&l-dXt+ zuHaj@@daOJ^c8gA4jsaud`gG#uhwt~e=H8+Pj2B5{&-!7@FyPw)AjiO!E~uTyxJ3- zoT6in;FWIRPr9|9-cORa*EI(fqwM&z(w`b1EH+bQ>I(5&#l*Y8;*UVDTNHkJpI(W- zPcPPIhRz7Ky7eNZet#5BJXH~ch?h_}7~6%iahDO?RifF|cbjMSmi)9HudEoY@+QQ> z?xkmE;1Z>E19@?P8J?T(5g*kxpAqlHo-6$q&$`xPo!RAP9HUyQt-`-{Eq9!z?G)hy z?Y;O5ZG|tr_i$?!S`O7c;-jL*NclYCQl-K2)K}h%vxH>T17Q`Kp)Z#y-O zF5QgG^Sr}#!5_PzIFv6q5L~2_P?N`p6|}~~$@RE*oR=bc-u%kTv}-yNOb>U@*H1 zJcK9!c>@3RAWRltUW|4ZI&^zlt%ncpR+&2nxbso|_sm9aZo}1~&Q&mN@U^c`mwjvK z_xteC`JY16n-db(B$GS}VMacdE;D~{)t{`VqcxMGmk1SgU2oOcUV)SZBulEvIL~Lr z{5i=`<2mr3y2-96ZCfqnEE^t9-!P(1?M=nK$tBey8fkdxer^09#xH8-=+7_vSLv^$ z@1$hWcrv%Fq!Z9Lv8R*i3jh2w*Cv1e;c4Hk;zz6{J$-C-U%9 z-l3f;!&4|8&N=#xu=Wt9FnmUZqT6|=n`ZX%WVisNE2qUXZ={6^|{MlalLDbY>160~fQ z$By>qPw>k9lev~Z-&`1h8Q;9GhOLeUKe@{1WWPpD(Oc;8gA->!hRGq4($}OwvBgUh z3!40E+=kH$);cHQ;;QAQR~#7`MJJb5q$ca4WF&HsKhC3EjvMEzeXDpi$ty^Ss1*Yx>dP&fRsxjcdy#IA2-8Bu$Po& z#Vije8O<|V!pwf5(7!g!JI);T*qg8tp9uB#gjp16e5TmrVv9{jJj9ij1ze#&J%|;_ z!GJ3Cr-z&3A*GxUyQ!^?K)$AiTUY7WT!HW$LIEHc4A(|W1ADjZY(YV6xvDe6J&w%X z3^i>2=W*KmyF%PSxE;kXvb_+3u$XDpkO44$kHaEl^k7 z1=`)?B2)}M`z#^E7U#n4vC?P;vJy;UnLQM0qDGs`k}J~b5eE{8B{o+~-~fr&FY0tlKi)>3i+ z{$5~Fe?|@$)^tj`*svLN0E@H|SOpy;yjb!FHo0RbG9yr9`ia_^zW9XNVlf%cS$FKY zWJ`3aY&68la%e3I21cR2Ft&?RjF6FXpck$`onI1V+yi!7!h!HDE&ii|J| zkZn0oCO_5`J>v-JcCqz_l%^46g$vS@KhoF{T*<-*;12Y$!)f@=E+5)Jc+3|PrH;|v@0@~Ib0B1m$zb}{e zh<{eX1(CvbfkI}NM{C+`eP-^D*BV5o;DEcPHJcP~4#$MY&2_o5C6}e^_tU`#$R$Kt zFsvPS0{&8WkuX;Rx50#=bs#<(vi-apntEF@2gPONZ~BTm@oA7)CkquKeS@TW>^^#t z`ge)%VyYv-quX>vX8fqF_{qIMa}=PnK-*_^n_Z6!?MDmT4PDW#i|ct$<8UN#7h6v; z8agsr_Y~k%%58yW62|Dyvq{Cl_*Y(BK~d41m)kD+Hx7X_=Dpr!N=jDA*sloLWUpSI zY+@1Wbh!wm2XxU;#!k8WP$MG@QvV#72^$9DZG8X|b4r9BE|MRU9PVdewc6agkhP z6&H!wJT5Xk*Uyw&V3#ZFVl{R`wvko0PVji?%LD`qjW52k#Q29^VsUm?%ZPb)$?;uX zPbh-|ARd({4KwgKWJh>A%g2xaviEsD&Y>?SO}KWKy*bBz|310QFYn)X5vR+%dpPU( z=5OYkhaXWAc+(1;@KH&%P&z^~YgHW%W{n+d-K@ROZo0IyPU8Ly;fcb${$zp57s;}Q zxI_yqt4JYuVv~{aMngPLe=iF#0q3im)?jK@&#QQ}T7HfH_K>Abjl`=Rx7e405Ior# z_7>uyl>Mg&h^}$#s2>#*wM&1ktmrD#-uqE;(f81ASgUr$kJTEu+lNwUc=Vpj!gUkZ zhJTNN%7Iqh7pMHqqjik-Rx2T3I*1T|59pk`ggmJcLqhY#vO=?8Os=xFGgzP(M`tqe zlt4u~6%2HYO&VxlPDjq58qxar-7c|Co?(iYRbVnZtJtalNbxK^Kc5(xkU5UO(h+a_ zFgG#5!*iu~Xiz+EBhe;SEU06Kbpgu*SF!LqGqUV;+^WuOxzi{|32NwKI3;5w^#m}# zt<{*RtjG3z*0uwb_r3)gq>$%^dMM!6n)!7;#z(?btdaPgpx#@99X4J2x3nyi!oITx zbXd9yeQ_^tlc}hnJ}f=Fal?b~o147dlzr+$Q5w?~#g#p3vT{3pmjos^Gs5CR=p3qZ z?I)gA{B4J-Yuoji8A6!P%xz_s<*yIvbEoB_$wFE`AD@jDLxAN%6+dXS!gM1|ulWE~ z-^r`RXrA{F7!XrTCubRX_KOEL@XMW6>`_h`Nfb2@93}KFE(Q!gy3rE+Kz5@n({H(1+}PT~1$bP+Jz-~v zjQIjHYuyjP0D*qQ7v?29hWpQbjyED}xX`4KjOc*TkDJr^Yr-~l3gMhe)d2yQOxn2& zKgu|Bu5wimK_kWG?s@DOA_YTV2yTIq#)wICpGZ=Yit*Z`KehyJnBdhp(OiEeW-c55 zl8p@aZy%7=4C9QK9oLn?(uXBFuj{lHb2O@olX7#;!N1q*No*syRP5fxg~?TT1i0bC z?|4bu91<2G%vBDTV5233S!c1Z2&Fmdmb(6#1H}NgFs`Szn4J26W3yI)yA!@xmLD}F z@2-OsG|N)Pne?^!;R9%(w=H3@IE|1)R4gjAA=5yQ^E8RTkH)k+6)q`Op zCA^V{P7OP)Q57ktr<4iDNJ^Rx45F>q#c`};#SiaQhEXNOg`IkCLF*@sfK}udAYO${ z4e^8Ed4#feIXBDVb$zo^ICswqcVQ1>!dlp(C%nZ*_QOGBREwPAmssNnC)zkGVD8I~ z3UtGaw1OuLNIAq@V$!zU7?2&EOW64QgDt3Eq)b)|HYRf>oWt7oX@M!aq(@A|=^wHA zp}$^`G1dV-wv!?7`JzZcwBS;lfMnVngZDp-i^Y_L36}{z^cL<5=B7JyA6<=HR!Z%W z2NLE}<(`R2xy!G<_N>J@mdnTJsda>aQg0ZggojF>dIUDrLysgVGM-Rw)t~W%b5Uoq ztLgm4eZ@apzQMVkIC0>dVB8(HW&;IX05MOCt22`cXL^;7I7HPsSfY(B^uEMn+?L3L zOenYsDsGw)3uL#ZcjH#2WxtYN6+0HJbgZfpCKm-{Jr;1V2GXRt9!Mnbu2D!l`S984 z#QJnuIsMsWmfeAT4vu5~M49C@t2c+xiNGTtp$4YMvq83chWJlVG9TuXs}#anS_u&Z z_kX60&Ns5{ILhgCNZ^`w@l**9;DZBBbjf|N7Nl@sXz2=whJh)&h)QA*x^3Slli-jk zr{0ik^-EMh1BtXiGvWqf_bp-2T`iEG9#Z5_>838PN93G-`PT_aVWF(00_l*UuxnpT zg)8UM+4;KoEfHhiH6{`ziE?G#ikU7=FO&anX)0wileI1)yS0MR)Xfvz7~D)D+8ypA ze5x?-*r?narH%)8l?=Fr9<`Kvkl1sIN0NtB>?ChY;lxnm{5&h>qy(8P5D>dK1KCUY z#;Ylj0`M$%180AfUY{>U$uyhw4xY2($?mVx-m>cOa0htsXJ0$Fie}5NXS#cf0~WiU z>&}>L3}RIZ!`jZkR@sm`fGM;3$J-wp6p&~lCa8fF!!`0>RGJ<(zTlH-Z6-vWD;f1i$5u&?M z!hb4hixJ07JVLtVjjx9v_1L#zthJkdR7K}>dBJewC#_~j+~QCr$)IYJ5Sk6l48R1; zFM-0y05GNjVhxb1q^MwOw~pI9vVC|4Ma4+EOsqHbDj?^6*e@bi!0)|_i&=JI7_Zwh zS13=UQcJ*u0&TY6Fd8@c%$r*%o8c2=1F!j53wPo?Pcwq(fjlGd8w_=FnE6|?o2HW9 zRBG{O1TQbE7laAP#?;n1@ zckuk(tJlx>kKVo6KYaK6VDH<*z3q|4aU;Mn7%y$Ha^vf0`efH>2HszR7{`AnMoN&q`oAQBD9&Wj$ zr6fJENo`7c{J^GkIK|aH;JUxEDgTg)9^0fZFe$y7+LS+I%E*o5YfQLs2|xYBHE+43 z8CUIk{nMC}OdkcV3cPMDgsI&fZSmXJZ@W9r`zi6zJXfo$FtPyRe}G)gHrC(H}5SJoF59?cSW7e*5zY zzc@Vns$(em@CbrWw;vm3;z0@c9&7S9>hK~1M{fAn+xEwh(g$3GE@t9b$n0L;B0t5)1NhR1|9LBL4=sB+phZM1gP|*+KE+S;RJ%=o zV0+pzM;hAY+yIE{|B$LHy>uKf@uSi>iVVVR&XKNiwS8O^Gv?NI%X@tZV$rW0`)+~+ z5j`#7dRDmgV^xXjf~mmJCdOcv?htP9gRaY{Uyvrlo5ppxTo4X##|A&OeKBRr!~Eh4 z@IiF$hwf+pvmQDll5rh$B~*!k`Z%m`x%v4A$h$O5@*vpURr$RG%7f}~1)k0CXoR}> zLz42_cv!mRQrl(ZI`4=K|6y0OPe$%}qS8`Hn($;6X zmHm2_Wy1m@=|R=YZL0gJed)wMO-5BL5_4MoH*t_>mJfMXkL4CSreU~+24NM)-(~8U3atLD8 zIGT(vinkMr8B9C_e!@D;e%?+jf8nJAazi;gm{~T2sWzOv@HC7lB7ZVYiMHAw*4btq zbK@tWkrq^lP~<}eMQQ574Pu8S$62S(CxJB*t|2=_)>0cSGiagb_^b`B8)_yh;!mg^06Dhvk?6VD=8m4sQiKJe@DdZ~@W znPw@9h0p8MRja_Omz{V0+me_J>K4lwwdGk5sm&t*8m?EcXL*}fbhIqIuh-F1`AA1g zc_@qS6?arU`8(Q;v}sIaDITNCWv6-ibmr@2dtw#2+QM^L`(G~e5|&! zY@G~Z!G(ot(11MJ5e%qYGmJ$j>=J#mt@PzUpXxhr$ZYA2Y~eQqO;)@4ZY?XX$49n6o0g4sa2LlVWqXwgH1=<(4E5krHaN1av90hWxKW6!K)fqHK9tpGpV1p!DKL_vIk$~Z?02iL8 zP8a~nbWFbqsv*W7&Y>GvfVx4MKE4~j?FPr`?%Zh{D&8WI7*rfJL83t6pF93n$HCRJ zlbE?bjz}X`z}oR1vY|dD{^8(tC1SDY*HfiKTSH=qgv*jCcNQ9V(mS~5?y_SrZAU;IxK%=aY-{6y=_FDnLBNSHm33e^@yOz;dZzT;zXPV$wVX%xqC|S zsy>&n?AZ5pH?%vdkj@R+uy`^1R4a~E>Ui`jo&}9{*V{3%AWfEfh^{~;oCZFXh$P20 zT!J6h;H2Y0EsHtfrZ@;%ID7tL)>pg)i`zawx~h7%nUZm#*otmaw9*?kB;{}wXE*p7 z$#)t({?@-ix<>o+>j{U-z&ZiJ?{-g-%J@>h2CFy)!VqetYG4{5@IaU2M__~j{Pk7W z4@CiAyo4ZDfqT!OX2|5TXirCQ^VbE4!dh)`C%;i6i2IH1guE1$l5s!*`K=E=gtn=S zAN7^?41q@oBoW+kb$4qlxAq6;Yy+R@8BK@J*mm+E8DUctDP_p&;$+Mw2>U+;(XSU` z?qc96^n%iAXbfvJe5+dwWARO0Oey`*85YH)VVMD^nZyNPRwW1!LWwpk$p@2Q4x8!w zHiszbCg-CR{<{9PrGlJ9drwSWq@Air^)-EVV`RDYecb@u`lw)hF>@y0)zI_wL~#aZ zoXt_4<0%@B7dM4zn`~b}&g$X*WwRuRnGy+7B5i9wYaLq2s|AY{0HkOW_mN58CBtRF0GL0Q1bZGRqhYs4sR_MV3 z+fX>8BC82@Q=Fw^?*=g)7{OJp!r9orA9ZzzPYHG-fswk1rz2nF_f|y+91u4kAN>2r zF!)Wi)y>x3THSc&?_zs6wRZVc?kC%g4e4*~qOwhPt`a!Xa3?^347Xwq3{N7Ep;{|^ z$Uq?8CFO>7<@u;V+gjEc>~%UD0|I1hxTP^7;J>!)gf#cI9SMhOoUld%kgpX1<+Pl=L(a!w&=pF>zMb@>I1NhiMvJ8iYK99zP1FX zVe(GKh9v;Za}@(s(M$|~s%WN?ye(}AIlFV`%Au1d(@a2$UeEla$1EG`~M_ z1PzDD#O%@_u#X6iArEhrt&ch_ZYJ?%Tr)Kfo?_-!~cdeAtoP&h#1a=mmN60iSuAbwfg5D>`Y(;slhP&W!sAV zRLUfEmfNOm_`xK3$T;`Hy^S^z(hGg{h4~7!=Ae9C_qoE%Y9k=l6#c1GDcV98?aFXE zTOHxRw2xe5L4+}@kGQGKXlF%6*Ye)%qG%f#xDcVoi!b3_r?7d4vzx;O+O3G}1F6^} z48bwF(ccthFij9*f!T!6oM-Cgl{XBE&5T<5Ua#dACTL0|(K-fbW%XuIz1d={TCv0Y zsQLjWb~fi59Yzu8iRwh!1qH}r&rArPz?C`~Hv-Ei-I_WML1Lg<#o5{Qux%Jgsjt)V z9rA)p&?+rrJ#Oh9I~@*0?@EEi8fO#+NuY8nLWOznXl5hw>@On`6A7|GE?lL&Sy#H! z)!mIW>3rk~^C=yHY;(f_ZBgxg4YmfXpaCHP=5(HoJvqybNy8^tT!4?q1n@QXpt%(@ zB6t#lZi+gj&hRlhjDJcb`k4qP*?ov|4P%F;8z`_c{ zPwf(0R>dneB~`p)r9_v$`A7w}iWrOmR2ED3ppeFde-y}680KAzR{FJ&RP!Dc2aO;m zp@zzGwFC*ue?CHyTK?$E5nwDSJOv2+hgHOQ1n15hTm@1m`K+rB)R7uIk=BFN_AzGK zC5l(6KGM0mmIBS9XiqnyW@G`w3(ZBi-m<*t;D@ksrgH+4%It@})#pP~<7%O41sN}CH7fQ^xMgm$Z9;+e4!w`6W5foLh(B%k5KlJsY;rN_UbnfF&Z4hI!R+A zlw;-jB|{5#nXDLB!yLmyp9eyEN?b^%?)i@@E^~Ee3~n6IUgU8T`mrJD7M(o6&&1Ao zAyw}+dor#XUxQ&p2l1o1h_l!*HcDox4?;m?oL%?OM_h>_?onO8YuG=wy2;gh^%P?N zc+#zXM0wmbjI(>EuYZ*Ps^azJG%Yex8Jk8i`m-s?KfmfGd9inDSn94YU%q+wcK_esf-NMR3DCVD zh{&70w|`A~Jwr+ko|}Kss`tBtSMXavF_XQQZ_S_Nm-+VK?aO`hmxQ8w{lnX5ufN~l z*fIivRS zOB{@UoMl6E*wFA6-&`PMC(zgp#US^SLxJvu@9F3oKy09oI|`N-YUWRfYeJR6w0v1? zfUWjW!1AyXv(BafgZ|SC&v*ilR;I@$D<8?ejx2(Z)*Aw6&?O*Z;+ZKfR08&cU0WH# zTyvZK!43zsL@{ajVwBQV-GU{Am;khd^h*|y{=#wO0O{2S;g+F+f)u@QV_0nnu|?0_RcUf%|Wp)%Dh^@~462_Mu+h_;1F zk-DlK@qm(34;Z)&W~M)%775#{@VZHiT!j~aeXK?d2sB_%F+ax-ce+VWD^>O~jq9E~Y9frQ z`Atl#`GK`LT~8o}P!9XuXYmBEJVpiF2*3f|T1Wb;2~ZlkX3f!F#|*}U94yS}RwgAMe6;TWpbehsvKqQHyJSI|-m zR7k4;wbtI|^F8>@Vi( zsj(X=FKng#mD9geeyp-(3clP=N}$*7Gv4_sgJs=xCd&?-l;cadT*M}v#DWgHOp1Y^ z>B&Q3)#4+&B-bfltPR3ZsKCSP>;jmhE_1M5#l3cgbtM+d_Pu^<=(tO7d5+3gw&JR| z2}Qwl6|e0aMk{gge)*SI5xy?#o_JFgG*E>J7#kiav;b}SJK9co)dBB+g!-QPxIPwO z9WM~CqLu6$iy7>QhRnL*r&8M=QVnCC_U9i|x5xv=ta@kJsb?7c0q(iufVCNc=HTrQ z&-a@Q)P@EK2fJ6^&cT2;V&<3wC0H5C%s*qZV6(|2xNiFsv7t;YqqE^uhpbpqxuQ8a}x|$N1z9o3isl8F&aTi3tmfF<~HYVlBs_tzRRusSFiV9 zy=?_t>->`SozAMyEz&4z0My8A7HM&5ge9m)`?y*Ifv6*Af^lCq1l}VbZ@J^rMQ?Kd zeZ&DU+BhMGj&ACst01j3A#IH=`y;4JzC-5WLJxv9+N(%+gU?OJyanRZj!wzca6(!OF$}byA40CTkGsbZ&kcY!&5)ux{J~lXr*CnuIa@m z)SmE%HPlbE6i(4&RZme#4b3}Rt5i@Pji(-U8a1!m>=Kj36*Z9orjsK7RjxCh2!@&5 z8;#lkcxf8kY}vzT3-pWWD4)0Co6zR6^p5yQ=*iNAI#WLovqzJRn%maZ&|m$iZoq5NEt z3P;d@&%ozdU9E5`=0hd_@#$CEP9ziFx|>+WZ*%(rUn?#!nZB;HVkt(g%xUj=Djf~6 z`kbTt@bjt9S&~#FsJamNXj>uJZ72NXn%h_iBw=v!dn;gQ5raRbo`gXj-yHp|1usMv zmV|{5E;e`4hYM7QFzsEd=cBjt4^BMcvZCT(3vZE)O2ZJx8Ec-?wa7r*$wL9p6)@Y% z=%XL(99u6KZw1n`vurv)3fDoxEp-#$KFViT(2JW7W`2GnJ&ke_FvilOFt^ zy2_kI5y|LlSW?KgcJzdvKptk;SU} zszfH$%bcw=`gjn|MWVy=N!guGI7u4y;EiY%$nexz)$Hyns~Qb11NnK!TTMjZC9h^( zHPUuvyXfp}gr&l8Me5f28Q9ph$X2 z&~8~~(K6MSWYD|6!*JnD z8$-5KZPAY>a`9CQ7o@z)%7-bo-x6gz=`ZC@mCeN+@5!na`jxFQ&&P^sQ)L&o0`oyh!@ssD8 z!!RiJY)XbWOv)4b441I`Du2<(0J-ar-Hl|0neZPs;%35S->tiyH(#X%5Kp z=xza7V5Z(UsGEzdc+_^UfaKHfmWe(!utfk^x)5CfV!Z&@>EI$z`1f8JVi+J#*2Dm5 zf&%iW8U@52-v&q^+9}p_8dtai4I>8oP=S(w6XnA=Fo;7vW&}<;`+unW(+_U=gx_wl z`nc*_U%tv+L>)PP^V(9V0H}o0rz;^%I%o@ zGHuMg*(`-w#D8tRUG$QozYuZS{Y5x-$5ZV@b0RR5UaA1i{dS|oD))b0q@!wT5X6hY zNDC;%1RtoRD2-G=x@V*OE@IO4Q0L;gms(d+fkBpgRs%2vfV{YHvIJY79Cx=B~dQ8gfoU4^5@HyVg-*{~gRAdLRNz=cm{*sv1Tuf;MFu|RF5>4|8B=! zCKJQ_{2WGZQRzh-bs;C}2FhNcbThOA1k#ei6`h~YeC=xhZAKwbXw1R(Vh{_tX@bTq zD7EdOli}JT4Y3}yQ>_dx>0YFak9BRC&z;CLcn7-SBq*UU9GSkCc2>*q`T|8`Uj`{o zT|l4Cl4rQ&fE1;EpXU0D>}q}cl_6C_+5hLLH*cNn{>KV;+uX2t^Beoo{Pw<%f!&+i z&x?6JVi#Hd^m;ny;0G{QhRlEj^ca;4>95H0zr=OePPQIA;AC1RNq?L@g7j0<+xL?8 zkn$Sta56KzCt7B07jKzA zya-z8guwu}+zGFf!|Xg=jOGW0+5Y+X?fjA(#6|Rjna9cko6 zvu4w-($6j5FGbg&&A#}@HiuK(_Of)zVnY6`k zn}NdY)eB0Y(tX@%cVZ?K(P#e_FW`7W`_TGF!#ipL6%s54NnPp4Z0R>?LC0gTA)65%=Kerv68_tQE zCCh+x+PASh`FWcsB?zmK4l4st^y?r7NauPAV&)q&PhbQ}9L_EEu2@rV%2oA#hPr&+ zD-bD6hBG_iNE>FLMmVBXC4CQg#?u~v=->s1OhVIa%0b?@#3+jBni37f+OXnUWo>4U zZqV(I*4G9bbG8`cq&76~V|u*$NQf0#T%ArvttKm*f*Fsh zVClgfC6{>gaqW zOnN%X>KLIqb5KOZP=i`~H`Y&b^;KB0yIfynCsjci3jOO{!vr?~GOUg21YrYlp{f+4 zaiGCRzM0XV;$}u)#ZU#G?HwK->>s{6`r*ZkgMZ&YLi{-!*C??rh4S;_G6Op~0E>a* z^0xRR^qN5I#rfxK1hRtR8NmIJ_0h1HW3r8IRTXt1#7WuNK1&yc4Z2}ul#G*N>Tdj? z)ZMIorz*M%%-{UIozz!jAE7s#b;}Yoz6yQvW+-HlL3y9KT`u7f39u4%EZ*xK7`T zrrJh8!SWSqJX@WQO-psgu?&EJ!F6{XBT6=B%py-EMY+YknEmO1j|h569f@{Lxq7RE zAFAMaY+;|3o}5dx#Z&T$dTsVb&<;K%B1Jq2Tj6J7Z8NnjL7U7cZ@_`~kPk0wH?m*E z(q9QJRuu%}wmIq@n-$8&qqeIxkY8NQCC5*uDW!f@HS3|aNNlV(v+O+o)$_8of`oSx zIE`8NDHg-|E_w0Nx6r}Ya|HhU17%un4mx4a@I1m*X07wcogPOy)M-ISqrS@VMf9qP z`Yp43SmCDJ3RcOY$gJ>yZuR?{t#FAwgaI)mAm3!=Y#qA5ODt{9NBc7^5Q&3K^#;9XNW#zzQX*td9=CjC@&jfgUVNSvXQuU( zHVyl9X^c$`MvjE%uh>-7)z8AY^zp?zx1e0`8pM#TNJ`q$rS8khj>{Z z3%|9i(YLfcpa3z2s9bPpyu`Q94-Q)qj_HLBD6DwTc0LY_g(!KfCnli|F+AdyX z^R`a_h;Qc4!^|vl7Rf<1?UJO@_E}QB2Y#R_1@?$v;zT$LJUOggQl*470410wtzj&; zR*RLzrnu-NT(Ix~i25WT<3ly5f#4j$A4^oLN|0;Q286~LPmQ6;FU15?=>ey=a>b2!m% zEy4~2`=()kJX*HfZ-2lW#q1H<$E|MQ+oG1HSe(wyFb-)qlq?M6H0mBl2#h=Ce7e~w zNsIsd>1i@}Q)zKF%TKd-u5PR&c+Y6uI7_QA3Zt7cKLX8)8H-#ORdZ!3G323ct`_5T zJ~zWMWASH7kqkTZk0BZEG6hD)n~3t1uexvVRZ6mMQll$EpF;*a)(iq~*s!{BTIYZN zXA(W-LU*^+YgxYz{tVQG48LQtv8-J@ z^oqHe$2*QSJ(@m8DQqx;_{~?!RJvZgZU)z~_szd{-dIF9`46M^#YeCUFmTa}9BkS2 zOe`Dja@6zGk*Vryp7b)lmIgW#jUit*T{KyiuF%0C?+iE|_NThLH|nM{=AGOi#$B-A z%0!e1Wq&emO90ricpRxp+P0eyqDV*1Cskj`XH*Kc(K{V5?F9Idb)ALkW|@0ghjjXE z%e{}_TToR&9`@ynDT)p7Rji{`7y);%=xbmCtV!_^C14fF$4rjqH^36`4{QBxKtKiI zA&%~y)!`_yZ;_&?`tu+RASJ4ak1?v$rz#$`j?YJSro`vt>Qv$u__L?`(`sqi#d}LN z6k(kGs<<_;PhhxhzIyMPlQG?XK`~!rri!sCvDTNxeFk`^vPLab_(j!jp=SWJ8fAF7 z@2oNMbz&uUui{}?w2k@|xwb#*{4t|y4xptt6w$^%08FMm#g;;OlA_?BIctY+v1L+J$8dy%PSX4Y>E|sRuC%g}5 zlXL`%*(0Dli&0S38Fb+QTv)b~2VJX_T+A|M7NYKE>`h<>APkk*fYjZ7I-hqYXyf=> zn5L^wb{hecFd6Tig1M026;*sGZ+dERQYdniUyP$*hXM};hT-kj(ZRO|uiip@BWj5) z%&dGJuaUseeKlIPn(I^`Uv#aQK!Fqz}DO=ijYv2}= zcNhk1(ktfv4tG_9MGuSk>z~aJuCB6S4iFB$kx6xN&-%qGH_Q7lvXvB#@AMbrS$3|r z4R1zs$&u`T%gv7L!7u3XUCQpMV*({>}S*FUmFeWD{$cvV*!NakY$SxL0`m z9d82Y&W=8bt#{-lIDN#4yVAOj-$o6?2#+IG*}RKepSJ+A_4*RR>{^|nXU^6MHd}B+ zynW`M5dU81Ik805^9v*sadqIrie5d7WeTg>N{SJeOC*LA{LzqS; zKiWP%n}9nL_R~{w(B%MPl=wmL&_g*8LWwfZ49mecY z!hz{6R=ihn-wVYYvth0>O(r8=G}AqL{-zu@oZEYupF)nw`TQEfUq8=AfWmTRo5JlVNKhSk6IR;{Tk{mn#PXO6G>G%7PrT|b*xR`|}YFsk;hiMom%hr(_ z!nbzIXW6(|6zi80JeRc#vbps71=;5N&*=W%?|%*1hO-;M)|V`I9`-$9hs@(I{|w$8 zUw?@m#+P>NZB_TdUE^e9;~Bw!6tGojXW)PAr3;s_*;V)1w!F)~u7>1HcwbwWCkup6 z!>ClF;Wz`EiNYB>eWvXTN4=i#hs2h__1t!uqVoUay8SW>fX;4+(q} zgxP6&rV4h;1Kry)n-Mghd2!Xj{+GLK%WwA0?B}MDhXjob1gWsTI+L+qeLB9u&=|~H zD6cgMijfLxRsxj5Q2X9w*5m5>KG;!E^>CPj42>6r*}~ve%y3m22g-ScnrY$jAf}4R z2js9w@Q)k6^3xkbN*Fo{JXhP$Wrr1YWm+1YQ{OuM{*`)V|@SqGa z(vz9V5&GDigYH7yOLvmV6gKVzeD)^Oq)m)UhZo^N-*$}<1cS{C+u`aIu)0x??Vl># zOmOpg%bxLm5(tNLc>(HMIarV%CuW79=Kj4*WaYGMWsieyO=(vHwC(oc9TnRXU8C6KYI!JgakGltOft|-T++$7 zhg=wBkqZmg#mLpT2WY{7NeenH_mbKggtKF2SOR2Z!YDpS@H)VirkxE?T;x7LlNQX# z6_je5s&HEH@6HaglH4wHAn<=v=I6}KBT_RnCjA7_fC-VrZ-H)Q09rB(+8HsZ5QV|q zvqa5tiqGxi2M1zYOmVZBELTbU#opV^>{s)@Fb4s}0s&~8%_01Q*@p{|9flKNE;_J6 zR>n#a34YQb+F1&r-=on{f!Q?7+34DE53!k4u?nGbK7KY9;fLi8FQHwzLQ?YaFX-+A zFP_0588x%dZnfqXo^yMdDKwgZ{T78k#0C!t$Q*V8ZCkLTo?jbUS-8{uv#TBsm!U;t z#DW<^I4*!FbP^Ktfh5$iKxm?<^H z7_MqiEMt#(+b8BcT;h35$Ea9CIqG0euuIbsuuK0l{Uv3p<-bP;d?O5$xjeI4L~G5a zpW@SqNpaMVI6hOC;e@0Jbm}KYZTKmGZ7A<0#Beb43sxwnmb}cs&>!eMyrlg!xcF(% zW#%0qKAa#!8)GQKOi6@BE?uL8(4CW>y@xrZAr*$mm?oeG+l-(SnY+TA`ZOVLqn+}Z zhk-&RQc_7z^Z~FhtsHi)2Z-oNc+mnI>#bkF3SGc{<=JKNh|cMSY-B`^Lj4YIRVysX z{7i%dJFq6~SkTaa8G6^F5Q!NF={1$Oj^^@sG`iud1SE_=qBmcPYq;-8ZxRs!jravD z$&OVY3C^us+&>9MY2^XR*SmoMR(B3%>aL!%42mM#=Am!J(lSJW#ZJ9V8&sa~56_pPD* zZ_KbJJxydb6E3-dF&T?Ze*(;6<sO#+FIN!x59$;pyE$DKqe)SuV2(w*#EzsWQ?Ql)@jyTb zfV}{dyV4`4-{^Qz|IQ2tgWNI<5U4#cPB~B}=>xVNhYEZ~nhb`N zGiNCq^?BE{I$sK>VGiCVPQV6mDk(#s8S)O1Yjely5EYh#TbLt{C^CGGxLzc{KxgcJ zvieX6aE176Fh0m~kxs2r4T%IW5ZNz=uS0yjQxpb>fVnA0@EVBD2A~W50imqmCOx7( z`VoOyyuDtI%<}BzL1KnFfkY?ad`z(whUApVp-5RX|-AIF;gxgI^MG%XuHFsLurg6^X9v-%}8 zTqo&bCkV#@FaBE+n&trWAgnm7dl2o{!(`p^kz*mAn%Q_%0UHu*1?GT#>O!Zoi!fV$ z|BlCo%fWqUz8&&bgs!>gbI1|hbCtX9)&7s~j^6A)i)}rB^JyC$+fEfO@>;Dlic#I- zr_F5#0uCgkpU^Y(Z}Rf#B5bS-*orfPI~qFBS~CFm?|pEz-weCXkkWR0{RaChdKftv zJDx`F&H4w@kLbSTV>QOk;Lr6G!o?l99f8mQv?cn0f?6kxpEx5cQ2c>`XiCj@g)&-* z7Ae&TjMf`JT`fU&({XIMY#~M2#XPDMs;N}Hy`thk*Yp^++t|LEF}1hXG~;T}&s@=B zHwzFBuLcD;S{2{2<;tGnhZWUXgcDVxy`Og*M54pF;kS$0?t8EWZ@kNd>=I5ZV!a&jZh=H;mAIRRw{5cXwGI~=d(;W7h(!#XuAr-k_2L2e25E&&$w_uWx6rP z=`aN)Ua|QLJmJjy|5e;c8xI~l`0DZFB$oc*!Pb*UTThbz@#x7{4<0`J>Z=DP--Cyb z{`l~r`S(*yzyi?5Ojqt;kmkR{{`)WTA6w>zE3XlQ#pbCCBtpP?DPL>H+V-NNYZHif zkF-)yhYBNRbwc#jgQKH!Z$wM_CZ29mbv`V_WccOlANLQR?H%pEd$srd{?VJgXZ!Dr zMDlk3@D%`&{pWGo`}+y}&x78ddMEck-&~Nc3Z#~INBiG?zyIp3Utq8IzbX5P`>9Ks z0*C+cZtwZ?!~LTp*J>iNRxH>5W$#V8AU6ygm4HGj2FZwIiou8` zDJk+~-fxFX?-~JG^Iu1K<=9N4Sgz z`dJu?bi+n9?u0l4|BoA}xJ%y#CijoWhQ>`|j6<4>d=Pi!AOm96#FK6Y=jfJi0~nIuY};K|JI5v;Q9NmEH>9*Q>>$i zy3@}#oALDPyZK4qsoLdx(Z!T(^=j3L`ugozDe#{A<1umS+S*{h7b0_koD|j%DziO< zQDDsxUNbai_dn$(IsA9&0tgGqnT$Ye$@D*C_1D35t8OS53B3Q-TFN*Z`+^)b{XJ;- zKiyonan#RtO-XL zwRfX~sLeEsxb~BTFh~7t?YV5MIKoGc^W+!$)h~B{@iIUEr8x3!077XvP=F{+W8r_Y zmf+}dZA{Wv<7dgi_SMEmgYhv=%d@;nM|1?H$^GXK9zVX|V1EM*@Tnb_&e;w}`X?8V zewjr0Xw8trt!NB&l-2nKLwr1znwb%03+4P86lTqVEozSOSa&D({!s6&WCGH|nr6;U znd4&g7WKhFsrk5l{J9k9+%ABO(vSaPAfM4|zj&{~YX+;YsdeTTCG>!AuDs<(?Yc*C zyV0=ubjAgb-eogTYoIli)2u$Vbwhi;Y(I^u#zL?&qPLA^V7Q0!t*?T=x7|QYS>K9N z08c=$zn-X_@LD|S4lRABNw4L?M@?$olSB57Y^h~H^4Z5m$=C6RcnrXx_OIS(r`jD1 z*PT-(r81-A)<8dSi)Q~_cU1arD}juwxo|D<+3=wFRc?xYPkYfe@*x=7E71kx(uJK5 zf4~1n23y$Ne7ng=rQtgSv5G&`o2Zk%CU$4pVoNYvAl3{w71@QF+}>q)maWa?58r-% zFWKCFJB+nv-_oY^cjU!^I1u6SxW33W-0}v?Hz|qyo3R&Ier92mW58$BIM%&t`*&lf zd#kB;cIcv&wo6wX$i2+qD&k8=mhuojiIIxPxf>(kJ9h?XDz%ep1RkOo9=2wX&r6^I2!oo$T6xoC>?jq>mP?_#r%I; zmB1*85}pOvim6{3y~@rUY2SX;>1q4D^K;STG~*ylK&D{6@=>D@bMy|a!i~)vjdH_2 z(4Xi(dyq1lEfC=o+y!~RfxCp+$ryr75arV^Z}#=tX2TL)+_Wu?EL_;!MkPSB^b_#@ z_Hp>kdb+GoajxE&z9yuDpIv;g$!$`5nCM zFUt3hn?{shn`$7?*|7ClixkQ@`%19W7LA`U1VA?JLgsUI%Nh8*pk+z5OLq{+Q{%wD zNNz%Xv!A141URhmGq20QPg)+PWcB0}s^*;9E5I&DdX-4%E=U(J3q zr$4*1XDyzo7c3}v=j+vy^HZ>Dif0_VYnOGj7FU>+AY3)8)rYQG2tlJwXZBP!D>$>` z9pv{TAU}V%C*)&o)n*x$oM~;K%~|D@#$sN)NIk0>c!H%DeWq~nYY1hBbX)+p-X zQbM_&Oxhrb+W7aEk&hPPd$We{$;rTaYA@UEUO#iB{51@0&FJ{)n&yL3e%W*JpPklQ z)oI;-+37+5Rc|-}QCl(oT|&IOzaN(+XQ;Kk=dTkEfg#D09gUj0hi;ld~w&(<749Z_bADCG|Iy%(v`;0W(t=saGt`Hs!Z5OjUvq8&3{pnB8ss8k* z?lQ9}_b@W*Zi)e6AmWEC3a8M#ZN{{;rnj!ylZoYoC1onBm2iQ|=WjJNUKi1Q&Uz>NRGeFVmO<{Y`R0ppT z_}!yqTWigrZ;v}?rOO7lW9MLT~sJr}G8k&X*4~qo-{#1W{-+1*_+wrimfVB)- zwMNNp(t3r+u4bT>rG)F(FFC{alA`o$=JZ}Bjn;LvTvgy4wWMf~2pM4f=*(p#Ba2I-jav)6Y-%ByKU)XqaUJ896Cl<#S+`e<}Yuj2?1kDW3iAR32@<;D59% ztvuETns3QRW{W#-bjP)d8w29MK+Cq@!h_s6Z47A4fx~bOWV2e{=7ktwUb_qYyuHm^ z5zFeG@ANtWR*}DGRISyARvJMJvwMGdz1442+Wy1ay_1zFtira1TEavM-d4=DpT=RL zzkkn<|Hy|4-)+END#TMZ@Z*q9X=@GPG+ZZn>2k^$FoJgV(==|MQ-}|dj`B`a=8sN! zwb5s2^L($% zh`@ez&33~VQ-8)C)t_}A){zH$4RFU>SakGe6a2k5_(yr#y!&b-+FlQWt!wuUE#nri z<2Rn8`#qb_Wf<-O$L%P~)zrvO)Yp@|ic-%AJS`A~pk^ z8`Y{Mq{y0JOk^!}E>mfgo8IX8vUdtfay9I8*x-{r;cUoQ)So{N{k7KCP~hL9YwPp- zrNH*#I{GVP`Z#1b)fqOIp~_Df!L+L3h{Q@P@+y#G275bG0JKS!*Qat_lW8%@flB+m zlH}%A`chw=6aBGC%$cfniMi4>BY6XXXlqy%i74@9yOmN=0x1mQc;>E}AG`XkQ8N1B7{#eqz81{%U`h{-69RRB5r)CzpXZCx89l|1SnFVoTN_0;wGcII1Dw z%uf=|K}r#jVL>gO0a~)hq2hNKKtv5*HZbHT2P_>ZvS*BQ%4|syc6Mb(tclNStj>M9 zBd2+K(~y&#@q2HN{(ZVS-X%t~ca;_2<<>Sd zQOLWHJTn;zfX3*@-%FQB=GfV>5eU%6&d#1;(5-o3IraK9poZ8l7h;oK@KRQdIC^ok z1ai2)d1d66i$3T;x?J#b2cLyk^^aIV;viuc>0MsoUCD|u)bc;qVG|VZDSWc)|I{t2 zqZY(oGbS%tibK>MXXN3UowP3N7FjKnj?=&8yf7mT4{I=W;ijd#19Y3|1boweof zOZw~P9ksjUpV=#SL7)1{)n?dy+4~Foi-fyqe;F8wzyIZDH}}Ia5Na2_CP~O_ov&95 zJBd6}&>DF#O44**K4M_!bdk{CM1YDDaNf=rhboiR7k+9lHQSIq!pIZbv=r+*^HYYm z4w383@9NGD8rMJ@Xy1kK(&1m$zn1(Z0=1@FGc5&ev2Oek zRu#*0>v&qsF~7X#eO<@ZDrtHEp=MiMnXr2OE zY7gQiHC$EOyXd0;JxVl=0WRq?pZ=bqVx_MRI&Fa=o|bkCE^Ki3Q!TkH#t%A_CS2_L zfu#&+S9kWS`%1iXjVt#)+txoiHhfHrlhb9RN&T(UKVDkQfWzKAeH@ozPjKd=zvB}f z|1KpDq91xsRPPI>4o1(MF7^KC#LAvR?T_AEw@nwn(|y`AvarTZoJpv9s93_IBBtg4 zT}Z~>pK(6^?H^r!`R6gu}buulFv#B(9a3_9Zlm(A&#ZSN?_}8B| ze&z1LRq*Ui|Fbk2NaJ&7&71#rd-q`XAmUYvJg@rKBYZ^MZT$ydkqqARku&6SA(*9` zQtYh7QOEsTFSV(&T$46mp)63cw+_U_H_&ax)upjv>3{rkg8lwo&mSE-q`r*PZb|}BQd8E1+sTHp{OrD=+?8f)D86o$0 zHO(r(J+JC~vYHNvCoj!dkxKEFcVDT~V*CBe;yVR5Iz#(8E zeO?$XeTS46!N4Ck7gFFYS&FHxZ>ffs>ZI^SnCeL;aPVnj=;*Ydj{)XQjSJj#IW14l zxpIX-dNK~BBn$ZNpa6wk==BIwUBL(^jI%9_>;@{Zz}FQ~te1WS)b#8z|0 z-pyvm#mTB%DLg9&%bX{MJDhU2t2#C8Vjj*46$2PqWl8(FT%t_JHU00U|2bpDvmd9* zsycOi=67WV7t{aS`};Rr^#A6;&D(dc>HiN+|JQ8)$7KeQE6<>dQw5+_mT+Ij5|E9< zpa5VS2G-98zRF(afT%V!au!?}+Sn`Bc!P;csa#@$k=ML@N%kr$rugePpKxW6s1lel z4HouutuF!E+t&rxtCDi9YuU)NH8XWOW<@y4Npn{9Zt_)$7&x%a;$+T`gyXbVKtRVu zxfU<2RDOz-Jk;odn@~_+vP6osn8r)=cglSdFo z-H#UOIOn~qy-_LhLI>p~!^7J&fP-c;D3-h7sH{05*h#JqlWOH6_jQV=GmP?xc}uso z_QKL5e8QV0D0YkjAIiKjU{*K;#OjE_GK|?7WE*B=EY}D&3#}5$wQ1z29V(86;PniP zqlGi15K`FFivHDN*e^~CWSF8p3B7ELxP-GqA=`0q^yH)R81HfFd#vkg6(H(WwWtc@ zliLXO+{!U1=bdwk!VS82A|P<^Ygk`aG__KLtZS$?!AN`j?U*El$>h*>5`vk2EyaGa z@wnD2OA=2}=PL0io@s^zoMKX7r|8#g%EqJ+NW`+$T(a;MSh0{^l%B508uqr0YK`?P3s3GHN`Kpq@#RaP| z=`V|ADtUCWG{6Xn3mV#?mD&wjHxA;h3?QZB8B-Z4C4f@cUCE3`AaZi!fTH-!;01L(w3?Z6(X`+P%ZAhlZC_rc8V2D+G^M?wV?0Nt1Cmj3 zguG0U4JkSe@kS{vZ;(6?M-se8TpQ$^3;GlcaFWxVJmH|Q8A1m^Q}u+*+lPb?xAO}w zeb6GDol!r)xo(eI`=}_N&N$oS$Z|in5AC z{+i<-Vu61Q>3)2X$RBlM-h1yTQTAGYJwJp2HQpjR;>RBNDuiL*;U%qrf z(mQKVs`-SvI>bIIWrx*j>UFA4Atif>LmhgetJyM)(S(Q}%?{&srSg#0H|=Y}v;qu3 zO(z+UXsarl4nzj3^W~BUH9??a#zTZmpw+{`<5{Sv_#qD?M?EuQi(K1|&egO;KqShT zc+I$3R=vz2P4M5mWDKV?AEz(##WL{-Qx##v6)zKdsg}PPJQ2IGHuwVN67gTMki3Kr zUZ<0nn2`a5*(n>xq{boysbwuzCaVu5)vv;es?CcIHe0-K5UhFGGf4^KS#yFp>n+%( z&+T%h7?@c2LMb9CAGG9wK%TW7keZ#x(^AB+l5RzU+K4O!U@-vylSm!ERKRDJRdI5{ zyTNtKlc8U^q0~RZsx^gJj0P7?s*y^e8lDtzYj_9GxFKBrVKAfWCdwX>R>yJQp`IX% zHnC)yjjFP)m0U>KJE_gabJaRxH{A6~;#4smSEz=^izBwwXb@T%w5T+|73jUL5-zy9 z=20?)iDHOKceLd;M()=h$-McG+I|N;8)~7)UEed(TYQV!7ejU`Dt3sK!xo7SaluB? z9$KXbO|dyU9~tWt1pn_yg6M zh#KW#>KLKa9vLcC?PD6eHLfCJ zYn87o>knjc;s@7xx(#QVo$>#kqq^B{gY#&SH|%v(q!)*sSIaQ-oG=C!c%z4PTlKu? z9bSM%IW0!#R*I6#*JE7%(zSZ}L-~IoIHRmu%9V3JL;<{5|GPyBU`PMEd*{xz{`W)r ze_GrBaeY2(^s|QY*FPdF6R6UD3W-{^rM`mCOwpOJYprIajTiHmq3o{&a>K~aMSa(} zke=k?KRFTeStisIil|k{Wh0-|a*itF2GZR;legTc2%Km*W8g}yMewq_FuWoci@u5q)$0t3U>rx?rv-7gm5 zxYDY;I5dLw!I!E;wrE*>;+Ox zARuN^2JlaIJi^d@iTSJc#u?Taf6>(n^1gXhSRJ_q*QXmKQTGlR3oT+2_KEYJ3OLS~4%W?)--y%@EnGb(>33H0@enDDPMl)R zsKl>wFT&h$uxzO7hhydIYZoq4FJceJDh>wdT(uJ1Q9fBXiKL`vQyS$fQs-DJS(fFr zMPzCk&vE&!8fUCwu6@h;eO*qaEcGaxm+)&i1~bXtYzrusxW~(opV}K3bQ;RLTY{{L z=2;ak2&N<%v955V(k})llCHb;a7wCNRc@w9!1c821l`PQj7N|XW@X&?uOt8UvfFnS z1uu#JymfoO9sjd`@7{I%=MOLc^-EjdizuiDa1m^ze_XOxMU4nf8A`vj#>hq@tJRYK zUuXV_2P*`nS%5OEtYH+gi69g+y9uWFWg^%-N9ZNf&#`v}P#OjOmP9x2U0Ex4BEw_2 z^`1!2hNxLLR>BFJSH<=PW9wf*q;5GqcP5#!PkC;Fl+&z+#Bx7~8p(J?lzRj|A>G$G zt<$p5+UpXq8m%&s@QfWr3@T*>=sINkQFAp|!mD#e$;y_|x`~hjH#`d?CnPvn01oF8 z6(hzKh?ow$#hJXk83@rrC*9dYaNY&?~UDYwY4&o!aN- zkvf+Yj&s!Ti&~s(t7S>sT8vni zmj%CO03U_^k8@O*on;F+kc)R?02kB$o44+EL51?AaZesR5)?9T(Tx!gaTGp$`LW-u;%+?Hoh)2p~PXKF}wjS5;)Nc%j!;`b+ z1`uAw2W~kQFu=6CGIMA!f+nRHwu0$Q8(X@KJp_Po6gvmxyw-mJczg7cgQBa=x8e_l z!}T@)H`i#YMtdWs=6Q;j7^>rKcbUYkKV_eFxpIeR6mTt#h9ABN%`d8g^w#6De2K<4 zes|g!yafwoa%5ife*?4*xo{^}JUg3j*KFR#3+pagWhs^Y+DcI$Ci`#IB5V9i&=6~8 zbhFTeEwApkS{~gvhkBc~^v?m3XJxRkxb-gnhc54&=8ig}Z=>A zur8pmop>mX`H~sNfvV!2L#V9HCr&a%L1AWi7lfxa7tzKlOQ%e<8OL}m8ewocdc5Og znw_+@Lt^|inU>NSZPA2;8U9xKJG1mN^iUzIjlJp;Q|d9BgE-!G&>t2Vg(PZ_B6d!q zJ%gq$p=PpNe&(B_wOtZ5Tn4I@9_xl-7}X#-TT4Al1qXdrm4t%9O{GB^6 zdP5mA{VNUD>tQnC6I*Mf;J8FYpLyO&jr>N2mKp`@igMR^0W*hKkFjyYC!(o|0k_T> z*^f;r5YNs?CgeSPnJeHxhxJRmH2Am0F`D-tjX?I|rf*0|X=G#ZbR|w%SLskC?Bq={ zUrndHMF>kbNlAy*+q?H?%gO%OHS;=wR4kE|zbMAP{AsKDwna-1rSSHUhdW#qL#c*s z^BMlz@3Zu~sJOr%cmA6lGYnrMLFBSv)v*E`hrno9Xd=SZl+7lw$HF?fx7MLsaP6A0 z?yMSkU?j1-h0{#m(Mu1dXt*51GX$-p76vYEZ7~CI2-gb+?WI*QlUUeJYAb9dzvoG+ zS(HKPJ0W5J^k47lwIP%s-v}-&akXvy?xJSJZ04Z^HXpAR9 zFEVq0u)jr85jcE=jd&phJd>xBD$l>OG`c7VMWSPtcA83}>LX1J%&O*wSU4y`w;g#o z_hDy#@0CyBG>ps93S~?r6222XR~VF+C-P7n`|ig-Lt6m)-((YlP$5ns zWXUWHo|l2C8{>Cb0tScMK-jn4<}Hgz!9~<{DcP8E)M;A!)DktA@YSG7PAwpe<~humV%JWAoD1yIMtEZt zC*%m635Uzq>|uli2<#By4`~DS;fe-a5&t|Rtrov( z$BX&>7;X_MoO}FhfxJbH#aSOboV?cW!~k%?YVM+Qk~u2{OL5lf6aLTtNY;Lhc+2qh zyyNtZ&8^-2dTl@bR)4v0=cC?e@#PQ$o8LN>SRXy%JqI9pZNFcwzpyskUkOcOd2IoH zU;h6A=nt3I|G2l`$^W@|=Q{r9N5lWun|nVj;xoW%*HYW#3J?ny1*Tr`L6phV7g?Hl zG-VWMd6itC@_5PNh^7m(^`t+{Gz#=Yh$rh>b6U<5jcL&+RFAv72opd!pgO=LcCrpr z(BdgtAPT%N3LcI5-h(HPkA!`baz4u}u=Ij}(hvt_aiwiLM>9RA_E=b%G}eiwF-}k^ z=jH4inbrfr6fk*hG37OF$CNtAo&XtzkXaZ;+9o`YEj_M^@ky>0L(A%R@G;MI*({)!ViIP6#LLMaeH z^c+XCfY~8C=1pcva8gW2$kNn!9V@a=qLH3dT+OkH%800;_0e3TwNLR zeY@6@NmoaybZ%R2#CB+^Rz3#I$w18Nu?w7pvSKo^0EU5Q*1I{n7;78TvJ^iEYYXbL zu{(}jCpOda`c%l+7kH5ndWfNjt<~g zj?X#5B0`R6yZZ4GUy^6IBQVUDfZ~G$ELTPhVx5blsrk}pJe6@(E*1hJBPQ6I-k6Wt z>FRM%OuSxV6B~Q@%puR?Io=+6ew(HvMYJ)i>E>xfyhbdT{>H&Vw4G9a7)B}>n(MGG zR`ZcBvDn_?3DwKh@iB)#ND*+nF>>@xsCzJxPBWl*jIu>`TrgZ=nDI9ma*o0gaB>$P zn-ka&kI&8g9Kky9eK|A(cL6Ac@8ERmF>wP%B~uf(VPISCT7{GcM*Wa8P^=g>`K`?h#H+&9Q>UDxQG!zzmxeyBD6*!)joi72^|&+CWLcjYR*ziRsqkyYAN zC#K4O|2Q#J+T4|t?knruZ@%B~syS*#e4m=St=c;(&31e~mQw8PnbP|qkz}1Yy;Hzg z=j#uR4eK=cE@5EDWyv6%*KuI$^?zt#dvZwYU6vlQY4MUVX(p>Wo4%(V;FA2GgKquL zd)N3MKZO1-IgV?$|07!b8$EUH{LRN^-8YdVmGpBTpA@;uD}ZK5_PaoKX=wLESkM(L z``S<{8SjjaWPpdE*ry^FDFy}&hhYL(&6pv;s!?x5+p9Yk`KUdWk>LOUq_NOgd@Au; zG8yBAueH(Vc=<5d%+@cA)(DL_dDJi19K@u294KleImvP=&w9Wi8?b%bw)A~szVg?) z=HV;-p}wZRe>3!dae7{}@gY?}hVxHD|8I8k{}1ln+rQ5L`Jw55XZwF>`akASRfoq@ zq;-Y!fCdjcUM~Tb5(Ko@YpaA@g$>BxVx;6`PF*0!L(+9>X!|PF(oi{EYmrZr}!JE{~zY{yCVHR*gv>)t4;rJ0~7w5{{N8lU#Yz~ z=042jC+&{PD!;Oy@6YwP9Eo2q4OAo5;KcrK)YO#D%Vo+{M|gDoZSOVv zp|Xg?Q;&f0HZ8uxPa5zmsJ|G)S6JXQ+1Zh?@9ZFw=srj7X7kk23zW4OWENsDQ3DEb zz!t5lCQW!M9zPsJlU7zY5O7+xlTWkbT+!ixS)B7YwIzw|v}pUC9SLJ<3~}CCrgSpR zUSaMw%m#X&vqCl((FZjP5J^5h$q}~8J~2jUkg<`DHb-pn97x#27w6Q?uTXhK{(T>9 zJsuC$h{_lSFdA~1!Qw9~`i`AwzmoF~I~*Gt?X%ziaR_HBxA`Ut0`kH zGH7pEFH^oLB#MpHgMz&mFY(Ynl5qrou{N)oabq~_?A=YC`+bucXoVm)PoBbYR+q_F z57S%wUiW7;SBH>HHe6Vn0RoEX1cqsb1=GVVKGY!}szXW6$QA|t%h#9}wg{2k2%>7N zmc4nTChKSz`i;4M)TFJ;A_rz55&k-w(+qHSyvTafv>z+M{vk?9^vMB7s8_ax<-cLvZwtgHF;d{xxEMjn%RZ-j0Z{@Tnbg+v*Xdv%z3xo?4Sd zRrfreg$rgC@QDO<#==?XEXDBn962HWSP56r90jDoFhKs4Z!rFDM9dUgd_k7M@^{jh zBI<(ZIz-wQzk(GtkkJTUH&h1DG04!Q*zG);O~J?98LLGh`)<^$VyWZK>N>YHOGB{t zgd^si(mKkWgcg~z*23qd950wEJXH2=JlRehjKp&AF@+0JIfz_fC4}n&Zj7dMLvA$c z!q+IqJ~c5YMNAS$elYda)d#X(xzOJ5hHJ#wXW!wke)~-XEh`kVK7!9qaQS)U|NQ)6 zIYRqRqgL~B}OJ-NqPS$s^WEfYxkg+^ublt$a|e$$2chHGdgjq9t24_5RAAzO zhj?o!tF$}Im)Y*Bnhu2lJL2nEcD}6;vAT%n;)WR{xF2w~tK1@ybU;=`QfeK@h~y}& z<~Bgx^UfK-nT)qm$XT-P5FMh(wK_#0X*DveUHS?MkFmu`5`=*_Eah|B#v`Sr0oxpf zDy7aSme67Xm9oJp8`a<$T7|98Ww_6|P{$X1CLr;SIE-Yp{HFO5mu}(08P#Y{uhyOy z>T;AaI-~CtF!J%tZ&&cfy!jvt-J4Cn{iyTaCIBDNgl8cX?{3DkFRx8`e_Qsy2>-bn zosz7eMiSNpp)rs?l2#1)nl7q>gjkkKFSQe1?EkrU>t+Z4^Y+bK*Y)4OfBRn)HGlQ( z|G0S2ZO2f5HOQ-3@~&3 zOh&@Yi3WNaHbRvLwV<3gfes`$-3B)ZIo5H7iI%lN*Se+sSY%c--n<1hBk0*07TS0( z^tK)_dl+qZw22Fj8m;CvXUI#v@Ej^c)&%B0FGWI76H3EIw#aI;d)$Bcj2U%~atTW) z9y0$;?Pt@47~o&S?!kx!N31`l2RB&pWz<^~WIk5`XY1eZ?Em$D{Lg>Cd6%Eo+or~Z zph^WMkRJqvtRgX>KY`V z?j^!|s~j0Uf=xTiGlq|VDJL8mKw3~wSd60fle3#V$7L8?c8hU|TL>iv#LE(Y6QHPG zamq_R7VM%1jFHz(c#gGQw#&9HX#&2!&k{1;U1&vWuRSMOCuC}eqbh#R{<0$n*P5cm( zHy4tJxwmW34yhGpi^x4RU+HmF5|tx*p}H7@;OO|M?;{zns6nBVc3n${+2`5byi2qF zg7g8d-v>lwxJ*J>7bx+?STKU9Iz+4+-@=WVKJv zPB!BEuBl7XQ?1ogL-B!s%Br#GkZecItyT^lQ98Kv2`w@lELsI25Yt8-Ey?N>UD$P=Va@VVmI5#253fa{4ZU|cIk zY^IEibA;0w5i9P+T|qMJs$|0l@9CAr2*HMvB#qQclTr)E#dw_01A1DaC2~%n0k0Mb z>Rk%Ofc7hLfPpXdR^H(fUi}4Y5g&6Yi`TH7Lnf~mviH3;tljx}mp;dIxifYex7jPj z1Wao^WzGrOHAe!D?4|rF7m=MPB&Q1DVbbo9Rae@WLXh8dYq!)BX&%I(*Dk|@Kn=Hb zhWUwD3<5(8o)Am?H^&8!*3Ljar`;d9rF#+~xi=Q&DUq3YJYvqu$4>isMYR?$26rxQ zOj!U)E8#4lsQ|wl={<657@szwqp$%XL#Rnckrlg|(-6hBp-q=Gm-&hSQwpqNz{y!f6E_>A9e=D3ESbas0?Jp7mK}?l~@)a z6J+-witd3~TbPA&66F-erXU-K6kbTho%uX;7g0PSVSSMev~CIt``d@HtSrmi(0O81 zJFACQ%+*P%u?&n+(Tz+FHa5QG|Dly#N>OKl8ZoxMHne0r z1n!22Xa_>$xyD)t4Q}AZsffTlMCZv>;gVzIb!}O2F*$fH8hE1}_aiGNG3$-kD|$w3 zVzQcAWD@mAN&!!PS59dJB~Zv9kU-7uqW?ZEjc&J#0mYHpkM3AG_tzspJ zfg-9F56O;aBbJw`r7stXC(LW`CixPKIb@6{Z-RfQ>3&Y$(CcZMCi>s>*VFF7l6pNz z0Hr9R*sF4xpDw;@ z)7UH54q}svtykNSA+2ac4=j7s#&a!9M z2UlY&;i0Y&Jv;g}CXXp)-ii ztyWNi3uDWBrR7>M|hl*AaKG5ld)ey zvx6uqG2n9;9yE7g5K93N{A}*%3lcBL+?y8Z@!VMa!9Cyzu~`c=;t}7(AuNYw1Ee-^LxCt%#b1sn5-I;v>xdq6<7K~L7 zH-tVGW=)bPOl(gBWT0h4Hp?`^E>_1Vj*c0?qB)ZrKw9Jmn}fWL9OCBKt0zGe+IDSN z;ti@B>Y0l%)!v2tKpbu()EtG?T4L6sW5|?@VKZc1h5U+UXt9$J6XQ@mHUF#V(3Ful z>@gU5U2o=3ph47toUDIZH696Pir3?tngs9gVNtNC1^O4ufnPAY1U!ITVI zrbz@ue+Nxe~ObTP*A_zIt za3DsILdf+-*jK%NiV~(lPPFqPrZhxw5%gk38quBA?QPYSrt+^-4M7j zEcWPe2)TqX!^yy*?QWMs*)gzrMKc0Wmx)-BAjLzL?1%Wp$fkqb4L`NCn6Jc!wApDZ*HsI)Sgh&I^V#hg~;n|Wq>(o^7muOTQveM*4>f0_BEQG^1T1O;$#({SloU(T{grgXfuN)=mrFYjH_+pYxnPRvHli>< zusGk)&75T~b1iKmdKv}`Yl=n+k#L(=H)=4Q>120fef*!EB^3NTS5W2mObEWD{@dL< z2Oa!}J9n<*|9;T;zn<-Xr$E1&W4W(b_Dzm*O434+pIs&9PtsM=7(ZA54CD7BPKh#Q z$`W-h67k2EUODD7^iE@(11}=}BvdJ~>N4x1{&EkKu}|U05{3N##{;Ne^q z3Ifz@o8ggRX(g)zQm|N;sS$)G7^Y(;l3+aoK;1t-|N5yye1eORfYR{J)1ZHEj{84~ zC@CfjCsA3bMlO=&vb|IoqU87lfuUFi?X3}4r1Ym}>$JWSB%;Qu%T`#@0fQK>%M~soL!c~wTluW z6cz^pz7=DWl3+#Skm>nK?l(@ZdViLsy1cJ6^GtIN)xgD+poU$*GE?S~93L0Ksv+?| z^FzYc2-B1-ymSqX8HRR93W(<)L`A=kTwYClH@pTB%By9~#b-Ga`RO}9U|M#~1}R{v znVqb$#QyQkljA$#NKLQMsJNphE#JF)Q;W7Kbs2aDv&_o`(-;*%5vfTBSn?CS$?|?P z+;lxL3`arKwNAmi25A$DMsi0VS>wTS@u`f5G%XZyfQ_e$NGvDKdZyPx>Lb&;*g+`< zP#j0BBhtvSM3PUCn=6QqacfbhM-nbkWhjLuCqI5QYn%*_%Y=gYt_^6c6Yc@ z!8I*M_9BoorQZ|Mj(QJ1!lvp_%22Y+@@bv7!u#&ql`t-LYOx&*5WLI{Nm!^%-Lv7< z%5e6Y>tT^cOeRA~McGgw-R9G=m5PjaR`8rMo_LDG5x6eAy&aNA)JTdAW^Ayp1$@2{ z`|@iA?})qUTn32iAO;%36odj^06Mv^94=dSNQcqs?kSzD^2~zpoPi3#V%1U6?-lPF zY67oci#Va$>Oj(@6%9f3R1pfyeuh(atkqi0@UE^%!GB>GXsP3%ZD4XFMXtC*_oN(-z;$#6xDe;JqVp`eOI<9Klr$dL%ZhfkAe=JUBg* z049(F70Hg)-1{4~Q4ehr`n)QYh=yn!^}G_w)M=#?s$`{D8)(x*Krk=d!|K>26!%cS>=HtybnSGqo{46;|y*!{Yt!mC1FP>@QldM$D2JtukBxln`c?YAy_mB zAmVQ}5Z=XvDox@S%pF%cAIEJYkr0a1>&0nB9NO3QI^X+mGXMKR{;w*#KLEtaRiuJT z@PBXLY~#P*ymjl=b^X^L760$w{*Q*GH3NcuE z{=pS+fgR~Y3V|ewi_gk&)~4?Yp8_J9h0H&|5;ehpFJV<$#%xw(!{CGW$YI&ZO(T;qTI$moCH_Wzj4f1i#MV~6o<>USgm&DdBY{t69`^uSEQgkVx$ zkzzOxzz|Ip>is!@@52XkfOSes@<|nwzyw-Bu^*WSv}bqC1g=2;qx#Rzp&50X?)N9N z|J~WYb*E$h+rM{R|M~l;|55$t_V$0O8qi!iRYBpEax3kcm5M_EzptbXOIVv=L$JFu z)RtXCy_q;h#hNPtK@UNFsrXwFa|lElO`;ei`MfGdijFAM#_*ZAXYrs(z^;1lBqvcG zaOCWCnoqqN?V4)N_su25q=^HnJvJSvf9Ww@&S@!*79?4x*)*$W7WX$$FPei7h^3Gx zGR@Ak(&o5OAPfiT40!QgfA}=d7MwN)rSMOb@Ha@P+;QJb=0^vlV}@0mnc&<**oo#qs(# zF|xxTf?U?vT>krOfEmy)Yq0wljjQ2cxVH$8!eJ}D|&wzi`7Fv#qNcVk<&Q?08ny0Q0!>i4uM$8%GS2q*~p{G zJ#M6FIkJr8saj1EsgY|z(?(R>&97>QqtiD-OnNcf1KjnYW*T68Ku|X_*uhYbavYKd zCOg6=Vq|lHLAe~)oFloyTC{?JR*MCo#0;~_zLsO#7ZPrg%W981}!L`}b~k?0@?=uj_yPkow=%w*MpA|1RsgYXrRX z3$p}HR$To_q!if5EXLC~qWjyyF@j+XL`^!m3~un&5uVT5HTt|9IfiEGBO0I)cS zY=;I6qIOD743%KLV-n`Fy3ool(>#0mA=X3PKtXugd>dr9*Tyf|0~8hF;`NERSDbGp zpa!9MO>7zLk0TDKLZN^=5Q_l?8oks^#}4%#>g09v5sg++O=A0Cf1{lwF>cO&e3ym{ zO`<&JSnwlp*%8qk4LpCTbj`3!Hv{mOvD)A6+T!B8de4D%V2NUJW$VxHc+J~+n3V_<=E<&8NU{2 zD#g<3#?BO;MNntbH4>9`8f&mpB-F92P!K>@R0Nhfg0B>eGTj>4k$LWE)w;4lg3_~U z_d1f)++fpO>L3(}+{IvMXMR{Dl`)8Ag2bL{afjw%kQEJEDggX^ll`LeXO{e^iIEQf zh{gpjSdordZaR`PSJW0L2IV-9NZX*Xsi7mWyV3U4 zi>Zv`?X9oS8geW@O?FP7#QEL==bKG0%*k%qY&yNF3~HnKq_XCR+QHm<#q*r!A8HMI z=jN_r6SL%?k82ClB>%UcP;T#baW%=^6Q$l+V)q_DwWVzx{!^c@^=a^*4sPGO+r@vn z&j0xV5UyV<#Y6nX+F z7sNl8ZUMx$zHs4vb>WQQRtI#QF(E^pw63@%L3qhVrwYkF2r#CC55!>QM2VVMEDxKh zxeCtYLqufXoJrKU1#id8b>y)G$w{`5x7%R=3uIsea{_Tij5$|~ik_$dEgNL1zY&xN zQ7Z`pb6oz$pb_IS0;tc4Pcy1enB)bdw=jz!6` zds@s{l7j~JF09~E`rpa_p?_TG|9t=SKLTdBc>6!1*?(=HU3>rfSA~5r2(Ms&hmi`Z zwp3&BK+_1(H43(q*uOR0`=DaWa)=-EkESr=U1AD_uXCnkTHZ+SIA(`PkJtY zU*5%k83*{4>Hm9Y|6Csb)y@C8d*_<||Cs2%(t8UJ{Xo&*5%N)?mQ-?<#V^AN3Rvfn zTNk5rz-%DDF#$8wOpLXkp1)uM;{nH-v7%L6J)6RL5N) z$b7_t_k`HYDMWCt38t1nP9~{Fd!uQw_ZKe1JLAGvQa=nP9-^R9!Bb%!M@{PP{%RyK=5zB)fH;~`e+9D*Upkz z#ImHx==4}=h$!(Tyt&S^*}E7R-*WUh*Yx|4v8~n2rCY39ozw=1ghczz55al2C zysJ5%$Otl6R5LbyBMdd<5DNgFcr*>m^pgDIZ`ee|Np!Qt(pmI4LhSRhD3U{|8NOOS zTTy$xe>EztGdzCd1tzQ%iIoBOy6v+(1A|kKqWME?T$;!kXC}?ECDNRwMxx*LhB30c zQloOk{jTW-o=yrvG$+cNqI2EA9^v!r6F+Z61pC-5NifEPS6 zBv$*-bssoincf+T3l`(>47pyYS{VS46YIpwrf6$eN)bWgnkwJAqe`9ABq_htKogpQ z=UiHCBtNkvgmCS$>nyOpWBy;IT8ZgH)c;HP|E*iMyZZm_gKPc&hv)yc{U4Y68~nsf z^IB792M*Ay39p4I(UXj`vcXsM>x%$C1TsBT{efF>T^GXU_DJ3NFDA6!k=U9JWg&pa`v)LYM{XTGLo&82}`3s_VtHSZY?`I7D`i7;nNB zF^dbdj_pA59XUbaYLi-)MP+so-gP=ArMNZJvulUbHu!V?o4>F%qqBCw!ZhnCN~E9_ zLq;H-7dKsGRn42Ef+g+B=MNvIQs+SLuvE2F__ifJkHY||FRqjhSr2poi*=ewO>q(A zY}62$I+E5S&Yhr5H)~?Nk62?lT%j(B-q;qka!?_cX0=Xxt2-NvV?9i!#iG%Y9^FBB zg{3;K=^;X^`udNdw&c@^jL%=z+C&`!auk<|Nmp~0v}-AEt(R+S4OfWY-R5nf<6X^U z`gRQV>mxj`jfOy&xfAd~}2QGkun zSJu3QltmLYO?nhT^MT3)4cb@K&hCh!ifKYQu2oE0BYZwY>IySeVjv>xaiqCaiRckU zID(ALB-#mt2M$Qv^zm%MqN5l##1FydoO}vyOvEYH%ce{S?}^akK9-i)1D<<{gj0Ln zZLUjp=7nyR>0XuNCSRjy9)uB8oaMScbL0ky^#<5r9Hm_o9k+QS?mBQ2E3|u@Bcx9p zA_IS$;rq-ylgzSngb!MctBCQfU-Qm-$7o2-x8j`kA3=9VLCuoGsHv9&X4aO(@XZpml9RfFXDD4%ClQPPjPWdr0I9Y$~MqH>ntyKx8{ zJ>q{_a{>sqJL{~`RQ8U>?*rw`&|kxu#(6XMbpGHS}fPmO#PW zu*J5#Orfp$wn$P^$hjs#U+z9kY<_sGl40hSGac+iQPfc_6#!>maVe?20 zkD6eLQsvNU+_>s(rrIo=R)q?KiaL}k==!x3I^-JS^^w#L=iRoaO4wXr+4G~d7YWyO zvIX2mM8wv`3A#g;Ns7m+s83}|u*D87h%AEO^Yap+&zw7Ih;p*XbV}^}KP*Sjwcs7M z`7m2%FC?8w?H>yH&BVFjN_8FLZ{)$_LKf52h1$roNB1Abv=L>0)dsaCV0-7`>j59M zMOh0Y;JT0Jai|BKmhw!Ppbb?>%C-c;GtqW4N-Kn=U4hZ-1EZTMQdH@hjdqhSNEKY3 z4q}FGjW$%#!wVT;!zgzIgM<7IEjGZb8_?EBiu5mpujQxf4aqEg%4(e;550RM-PGqU)Fr%22qxry4NO6krA=- zd4R`^)P6+JuZnSoG=>n9GKi~Zs`3h}*`(y%PYsihuL>{a!YpC>nlO#gDaVC~)Me9m zfC-n!EZJI!pJAwinDGwmCXXd6aaAp<0+!E)dka-pTOv}?ybUd7ykU?*lChmqk?RJU zL$`)imUH(Ap5TnsjRq}SRSbc)JK3^_81gVp<^@SBQT;_2TPj925VfS9mYlc&d)RvV zfpI$Zc&tS-Iq4)Av<_RMEPeAbKNVDCad#FhI#+DBb4{aZ{t|m%SY9c&ZN@t4ou^ME zBvww8$Macg+`&PDC_7C$F$B;2utv4VbVFB2mTk| z09sX;cpX_gqs-!4f+TL=8l7lr5O59qjKTDUtV0T3S8G?Sx*ZWOh-B;mx+9khUA#8T)kA>B%z3yH3S zrCFE86m(e+9v;NB2HO>}xXq?JE3jTKZ!pPZi#PS>sx-LvEgLVN(jO`P#yHU=gj{&K z(Av#=+rkxpextKy;(Hi~`Ik@i$-Icsi4~8Qcx^h|RYT4Y!l5cle7%_yuZVQ6MyEYn zFWefmQDRTQppT+7__?Nfsn;dwK;qHSi#NwXU}JT})qPbBo4sqVw|qKL)LIC|JSti} zCXqcr)+!S>!5%m@pMIa_RU}l(m5eO#0DU^@iB;j4-WAc|X)(zG-c7`g=`zxdQ^0XE z`~tn7izMLE{MV}`Kr99prdmTww>-Vx}r>Exub16F2;XL4ySeaUqq7XRs9Yi&+i@obMIikjsJCU=iYVww;#a&6HvLL z?f+Dje0UaJtCUldQoDgvb5 zN=QyH-l!wRt9Z*8pg@o=Rn`vwFF`7u5e=APVl4n?zFFr^qz_+r$61zQo{>`HY zfBN;~rw^ZVAszqgPY)kI|K`d4fBn;w`=3905}w_E^5XG}-#mQu+)C}>SGE^Ee){P7 z^Wl*J#nBbe;_ZVbs*DwKI>~!RgO8umw=X!Dn0v)951vy#r-Vwx8;uo*z)0kIk_$e)3^Lj&!OjvA#M_B6 zSt2_CXN^qpS-w$62OHM^0V}i62NoVgMcaK+@+V%FbIeqNE`Hr9*dzvFuUup8gD8aC z?GShlvlj0$kngJa0DfVO3-BNufw);hb9RlqZfy?-rUvxn*9p0YkBkR&WEl}gCvB-y z6a|H*lZLuaQG?AoPP$RBql@}#NPH0!5~X|S>a7ZIdw|y>$!!Sz%eGcw5C_RwRV<;B z#Sv~%L7z2-6XTdjLPcx?XQ4)gX}(zj@OB~T2U0&J~Ta7}pZiQU~<*d#TO4}LK?sB%+ z8xA~JQZ}4zG}dZaE{&ap^h@H9bYR%c12-+m3bCV6ZUk6znzJRph_Zs3Yg?IvHT4}g7*3>%b>Z5EOm%O_>d ztVtjZYu%;sQG!w1%Xom*9}D_+&Fg_4ThfJU%V9;3Aspox*DI2C*fq^MvrwiEl_1{9 zrEF>Px|GDSrc;u#=)%;ex(tq_sujbSt3`xF&Xdeh>h#Jyqs}<980zplWlUS~u8<}z zysjk&6fC70&vuS%;%lh7)i20Kl3yKA5_L5iu_bn>#*O6(g}R)e=*OB?E;-O5arQ_s zV(m8`5;!a`VJb|PWh`l>DVs;^x+!wR5=Zp4RfC?7ds#mm(LH=$yEd*Q@~`G}uRIrA zqVm9^_;i_fYaKF{=y#J5@JUbLm|>ooEIs`0-};z{40N!`2pljVOO z+`8GR|8;Qp-obVKuOBr2x3&H66#FZo{Nu~fA8U9wh?>+r=r32x;=Zpq%VP*|^jcEH z&i_OwlITP(!j8<=H>E0)ISF5i79f#UKxCGHp9B`~+Bo%i%mJCAV;5p z7NbuwLUTN@6!HKB_|>3hhB`B?Rx6{?u7}W=sM)ciwd4q;)cvtI(-StKlORB1GAVZ_ zCjfD0uRPG_QHL8+Dokp$p_2m2J-iB<{9QOiWxGD=x`1R+V*$@7Mk@Ru3(S%oMthJJVp3qmIRIoB{DAa*))4aIf@!@APB{*&R`31dJ%jh6|yCg zSQPqfT%wMxhHWWW19TVhRj`l}PA5b*oLtl*p5R4U1iRnKX*NbIsi9xm{FAsyPYa455`zYaNB2Er} zswNKGOkB^Q9H}Ai@^DoQ5nxnCMF`M3qw-TbRXUc%REoxmgUi-u4zn}MKEz-N~upw)mqFtjpg!ow*1 zW+-=!mV?K*P*VnZ`%Mopn(W7upC^)E2pNVP=V8}0nUXO z-)O_QZ~Ia=U?|{KLqoKk3`5;_&OH_-oTeV%6RVxB7B_24E$s+I=cj)zi+LxSG8}&- zXdv1#niz^HXz+McH-mvE*q|awfV|VE#C&;7{%OyRQvw?(umx>4N+_RY)0eurXm=sT z5-zUcyjNmAVMn*od5H;$3{cv=3nbC_hVu>9amymX=I4R!R;MdOJYX1e(jHHbdD}Sf zX?|{j*l|Fq%qb%+bg3Q4Au_Vi7s;Awsb_I51=+|>y+z74Og$3vGA>4N4PAH^Xua4d zXi=jc)qz^3L55k)JyLKP9SNC#{%tl|PS3Tb_KL+k+ke4%7OtmB+;mEbe&i>d^$7uB z3KJ5C)yrKhqGV{@JA@I)m6uoyJ|yv-J!%Lh61+&OTo`bTM)QUljA4)S1flruo8i|6 zF`^}vc$3z}kN|gy;a^%w4Ck2!nzq~uGTR; z5SB$-*QK=JenuX`(^cV55G&+)BxeSGXQ44dMfpY@$)tFhqu6dIeO7`!%*rCauoWt= z%$0sNgqa&*c~G&Z%1QaiI6VwTb=bHH#mD0j+`N5r{PX;-db4=67M;C75VY={+$nGk zjS+*1bG3+T6$_1$ofK2VfkEcpZEyy0Lq!??PF{l@&lN;-nX}r_p4k&E zV1)6p%){1rxSPVsVfIRtga`Dk5??)Qa!-WQ_bl3?tQAJgH*6wKh1Fc-5TV%vw(p+u zLDaOhO3+2+^cbin33*u^;={ku#%occAZW@O=1lGdR$f#ac6gzKaB#G+W5uzj}E0+33y(=RS$#Q9wv1fOehJj+lL$lC`#Lzt;-t)4%Dgr0M>_Oa&9<7KW${O1j zjl0j4G&yk6h=7PLql_t4X=mm%yXxqFr-xm03!+k5)bJSxRtGf$0|$<0rm2=R_DE|n z$yA(M>TWi5Q4T*nxB=Z7rj%h*mdWPz8OPPE9eE=F^lLLR?PQ!1m?5OJ8uuTbB7~XCv0%o>j#w~*WqE>}@k7l6H$!MMDNY=BBnll% zo{5y}(>+4eYePw0mcf3c8xy44!m88Etdc?84wl4>d`dv3%8naTds;?URQNHw!#I|n ztN%seDbzj6_<&|Dm*>gZ%yUjsH52*6x-CTT%Vhj^5~$5@7|)BpDm0JsGI{otUB|FwTz|K-O;|NBe7 ze-NE#U0fmwA*>VmQsVukkTl8YRjhMO*K8On*MqVP8hTtb-RRrEb36xH?O4z>P4}l(1k$Z=wFdOpA-lV*JjFn@8PWz(&pB!wsw-PhMOt>J zJJZ!#BeXy5;cEVLh>b^@%C8^*N{qN3xr~c=yTlcQ( zKmWM&zuxWt5i5WV?uRtMnB&FXKX|Il$S%cXE>{O5!XN8`7Ba3$ij~pZOojlTKaApP z>eT`Mu$tlJOpH3rPO`rt-7q$kua$x7Yn5?*{ZH8*6EHtv{m+BDUHs>}cW+(O|L>pv zM+G;V+plz9()2$J0N~=Ho(!i!1U&ujSMLip6mgxilnP$3`y^hL}`EH1|t943= z`6F8}9%8_kLY&MXxQCneVcs@=o@9Scjj>}P<((QqF^gX%2CG`K+&6{2P z|9jW@KR;;xPv7=`+yVgoRiG8jMY>O@`;{cf&&2L0SpeCDvmXS4O^~ILhdw2;Qm^3) zzvhS`5Hb{5!uw6)CpJG|@8YU{Yq4QWI_uM_n7>?~&e9#QrdLkSwW1`Vtw>d#0fo8VD1`v_5JtGTZ&K znxjIaO4(kKl7`ud7}G{-B3;v0t?B#FJ%bameH z7|#DXF5sil|8CCRr=kD1_wRM+|GnGS^?!e0`rngs`BCY=rhsxZUn{5cxur1(<#eDz z#Xq)~VR?#jrWX@^lq?vtP&n0!tc^OoDx)bGHbW3%mRZhYB#TkLp7a}#mXDLuIJM#{ znwH4GWq`DaE9oLT1fiaE4(DUW(hNm;r7A6tvQ_8L7f8SwAmuwo1^B{|&JyVzz$dY% z`M0C#ifh14&l`>?#mkY{LP^zV@q%Z~)DI2mTP=Y0V)a81HC8JMrlY-~KpgT&LY=Pu zybxr8bRlMK%e->0*E|l6sQ@k=a3VC=%qEXOQHQ~_ng1O#4Ws`LzJB`R(Z9U-Ae_hd zqW^dA-oDeR|GIzg_O<{2d-=~#liwT{e_0jFa#bf!46~gT+b=aOJlQe>>h{LQFG&l2 z4t!%G2lrn*{^IeYhsl5bNAl#+{in&7PriQs{Qk3l-6hrd#i^v57xQvjo{;#P+%;N zFiA?zx$iWMX1vAruos6<`+u z>XM4jM%EnPAv9wLiP3Na={KW%M@&S|P{N*>FJoUOJK(9QS`(AK2o(GTAe}tDt$IP) z<#LZSH^#gE;`vtt&KE`81D65ftAl#-+q;P`8O_K$;dQEa#BQaybMgRR>BwH3mF$v% ze8X|zhum|vtzuMUUd8oRk5<98(*)~#%a8ag!=M~%e2e^MMz8H78r#WXfKdT zyUZjlq^91#`udBsUY<`Izw@e&^H>XJk}=%hA9A5HqHb@J7j*5DH$;+1Qk7f&Cb{3D z9LbxFHzcU~|IueeFQOw!3;RaXd#P`s8(|~ z>I8LvUc+Kq+hZQ|);Bmo`$!7s{MT(7-ez=8Hi^W0SqLDLY%@*YJi+~~H}^IdCCPX> zzgR52Qfub@ZYQz`wUYGIudwzIR)iOW({D(CeFePjJe#515=P6bbY@wze#6x~>ub4F zPPjdOd27?>;H9dWD=^tk_ymJuZaSW--HhC71`IYe3`{94-(DKuj=k8pzdJTjzX})- zW|tX!*^N3j_UnEev0YoXq*lXmV*>@t!7Rg8;w?Qvbd^k1dNxBlYbLU+MqAXTbzH8N zO^zgsw#A1>Y}JxM!CRb}W4$s21^Uro)5>GTJKz(;Bk)Tfo9?6WZ9I=Gd4A$;8?6Q) zF*BPxXi@2zZ>{T6NF8oAZ_OB8c!|7V?Rx`x`Ig?|Tibym_*EnNqtGaJ--trs z>PL#`sN{@eRG|AXN-$&&IP??WD1U@KN_}95sOw${LeS1mK4)P5w3w%WB%~&A`XHHb zf}mM16=zxNmdJug@c`71=SGc{k?cdV8?;!?3Z{FnVvIQdH+jE@&q&QGD*Q0q8$LEv z(tI30kb2{_9z!d};nS21CPoq{W&+0S<&IFbuow@~7i!_iKUukzf0-dc{&I!R{#431 zJW|siqgnvUMy9^?z@&WV8yY~terKs0~!Sj9*jZ(>NXVQouNozI|7AGhfBp5u<|`l ztCTynM@RDi-ByK37tZo)-yn}u*DD&!qo#{S#x;-5878~4BjuHidqb2@8t&;ur@?=fATPFj%?G2jR`HxI!53@@a8$8tq89L9!b)6xuzkFMuy)Dbs@jQ`A-KZ8Uc3Yr6lmaw6oMg{yCF=@+29Ld3C3ot!yTg!E8@Rb1C z@Y&)z!Ir!s=v#s=vF952p5&qLGR^7rI1GB74Wx?l)v!vnM0N}`$TPFI!+k|R4a$QoBdA`0WJ$<_7qsbG^ny69OA3?Jz~34nw^|f zIcpbOB4YpcM^J#}ru&WZvDwupQlokQq&`{i^g3vYl8z$_J$Pp2467#=WtTN zjA1oOkcaO$3Q`h*5quPryU*e=&3(ew@-ky;^fhVpU!qEx(% z!mS_T-XTqjZXZv8SHLcv#B3?OL%ddM*a5J((WLpryU7ol{b91RsX$5ND0EAOJ}(y_ z0s6oa*xAvTEwz$`!fTHoZtkd5=V4tnDRf@%+_^RmOe(8wN03iaC@$~DzX;ZQfbuSj zrRc8=o?jK&K#D&{Y^bKYaL$FcXx}W3Z7A8piqy$ENmjkgD_^>b6k0|U(1I3B2|@Da zC^@>+Ma3HN-wLc_)j|LlKJwB6?3k;{x=z_VMdSit){GtmMta5=mTdo&LOuoz-Yq_% z7u1>vXGiQc0&^B1*tYjNDuhTT;0#P(r-ffmbAp58zC& z<+q|pj|SuP$)t*8LF|*4UH^jlM=OUCy}5OJTf}NM82at?=s4Q=mxxJGb1It=cSQE$ zv&qts_yLV$68Ukb9nNDz8OG*q@a?5_;horKCIWL>pc2UzZlcH%a;9}pSArg-l!f!( z3|6g&fT(RiYU3pT(4bR$9>K_Ju8AM}2TUI?j*b0La{*c#>Y?Tf@FtMelRh96phd2wu~r)#}RBtJKl_JZ7A$ffUA?s#3`GKAcldd4hvj=-XxdJ9zX2qO&b}6IMznb zQ8??HPR#F)JM7suz!-%CyKFi!jb|P71+zA1XiK+ech@=PYIaPkIL!buc^Iz8XSxm= z480ZY@6V$B-9B<^@R{2JwY-Ik4NuGDHe+hZSvv$uOe2)GTY_s{aBU$l#~wSov(pZo z-4N<-W*0rV#S+Vnpk6-Be1<(XR|l4CF@9mhaLpeV=Dux#7%`8b>l&3Tay>6l28Ttk_X!pH>;L)x9MD=Bs)dR@4!kSKtkZKt3xc#E+;N;+_;xLFx|*94 z_7svxM-&5Gw}2DwCF&qCSQRanFhf`>WsXFV78(3k5nP~gnWnj~QSmpLLa+m126m#^ zddUj*I98v1dhJ<7Ch{Gzk?*wU0>JR5nSN--a~{vm7Aa(f2~pcTK(n!X$O^)k;?B8f zkzh!h&dJLZ?OxPd&wSq4z~Rw#O>D0=!xV#PiLAhSI(N_fUzS0_J>fbxF&4+KQD+RU zd38F{h*)INqR3;q$1jV;-d|Q33s;4l%Lk8d(785TSO(CdW!vMVJbD_bI56F3=jCL= zIB^w{{siHUguQT9)zJ>c3Idwwm_g@+(i-$w@rIq|8|5OmtzhvP)s}cMrsWB181a2b z{`!CXujD`fKQVKf7*1Cnfl3(>q}k4nIM=J}Y(p^b^_%!sv24m%T!0{))}>~~89=hw z4E-czQH`xM%3agQGc8Piq(yKHAuLe6MOnjojKbizw-tBI-Tp=b8n4~mR!Bv5;co~{ zHH)c)-H9RH%7iHfs8ux*P*%n;=Fm1#brDu&`l{sO{6kzXDK_w|$q5>MxJywaPqYB0t@qY7I+CjsiTTt+oX%7IBxwFE?8qBib(XnA%3)FK}HImJxrZAlib3P7rxymZ2+n#Ug1}gYKBaKBN*|-m3 zyCyf(sL;n(Q#ggHN~5~3#W=da!U66sNbG={}s`wVQZvi)j*LJ4S{$4TKx z&pB#cgCMZ*izt|L4IO2lfLbZ0BF=Ik%u!FqZKKMP#8$phq;IXB5r=~um*qD#AwuI=WA^qr)C_+uQt(O)muO0KmQ|&W_|py7Avht zrXf$6e|5EZRGw-`EPK-t;zBK@MV&G%Z)5njX}v>dCc5BQ8Buw3m@eC;;z_k8*g8WZ z_c&-|CUN2p?}_1shorUtqOzpXvY0C_jIjms;^c*de0J=vX7P=#f_IqDhWG$Eo~a{g z8eQe?IM8gGXH`%|Gvf2*GUF$cV#?7Ja30hwqVpm}JgX|X&anG5PqKw6&T8%%dzr(n zeD`G6>d<(ZVv~?WfAbW@;KRxgY1NYDss*jK^Z~`S z!>8%1&Yl+R9hVId4e=&i2$M%d|BsJuqspouTP`96t2%9)7DeXghkkdI@kd9nm|KMJ zj!Q8512aPsK>@@o1`#O|UrR;>U)G_;A;|LuWXVx91Cg0EYKjj`=Z+)3FnIFR8EWQW ziN2Es70V>Qy(1onnn~WPA`6bhAQA6xIkX&jAvrNpH zZ3PN03mIPb;nE6n?Q<<8;JS?-?Z$4226JW_d95x3 zb6LuQCE^cVv3MOMVBXLe*He+t#K<&%c_e~9VrOy-vV~IQgBgVQV<*$rr$)wYu35HC zsn90%0tR{+LP23^p+?DkVJu+E1k!Cz-&Lv!99}Tt53t)2*zZjZ9 zS>V464_%drpkd}7hFp4ikohb1X>nNQp8*;@Jb~UI3LpPVR1A_>4PH*GuRv`ttF&IB z{0&36pU+3M%;WPxf^Z?h1Ru(&C34^euH|e3*5UtW?_HMT$g*p}d47dAYmg)r4iEqz zCE}JORx+zZDYG(-WU0DMEwgYS9Do-++(Y3JM52(X;Wdr#Pu#)nc@KJ~Pq|;xXRW>W zdALX5MKB3wg-ljS01@uzx!-#&W4e(=3C#ptsn=hB|BWn?=eqX3p(*RBphL|3ItkZH zQmJ?1ELWb<4u!5uhD&gI-b)w{7&9V~Q8+bc_HM+VVBO%~T0NolXypRGYdm?Fad*+h zL7@)F43u<0B5|4sDmrf}v_`?@Te7w|!d!3B*!m@kPSc=n|Nl}3H1T4_Dsa4R4EUSh zo@sZomNuOIuCl^DGBdp<>if87ULtIu;uSF?Q8d}K}W}uf#O9EE^ePJ zYRrQb4y6eNoG4{WsHQV$8b07TZ6-Zk430}TgNAnHqoq|?b*i!BCV)aXD{W-S(xwie`=nddeA$qiIvC30 z%ARpb`~3tNg>p1$^IN+84w*DKk(bHzE3PDajXk%{hza6!<4#P zpV^FsnNsOgPIA!2vxap})}5-JJTUvTr#BPz|J)?4nq!cp?$MH?WKHzLG~*|?z=DD+ zV)Jrl{W+A3-*$I4JwUgSr35)8-o0E2F185^mOGJgklT0_XSTe7Hk;cX|)W}4j*m$Omv<;9U3;-p~ztbB?gNGavj46a+P6CtNa zwpHkuCLu?+k06)7CWvT};qmZwjj)*iJcUxE+SIeJL3-EOzn6jcx*(WWks2Xop!Sltc!9LIyOX#n} zV!rpjm{$yCn@|et)z$5Sy^SCfgKs9kc%ZRiU0(FLz#J~;+5zj95}8jZrdVo=nZZ$p zz7A_I#FMQGCaIN{nJRaVk`BsdRm9hJXBE6Thyv>ZVA<4~(5jPVBk$%*IL3!4m3k;= z-Z|)9l8KYB^;o+k#&Wl)Y&lkjG2On<$ZwKDvpBSu_Or;=B?5p_$VnSLh`xA9H%%{U zA~>E$$9hstrFgmP-Dx={W}q75ShV`VC;m=QHdHhu6=~vRE5#WRHj`r$W+otY!=h0q z;@O9nE0l*vHZrnV|MX;4DV;_-C$+Ts?JtF8GIu^EwkDvq(Q*2Y zLmg{I+$55w;!0=7%F4#^^>p7d5@;du=lMo;&C->`|4aGK{qeG4D+_dwR=bijGdEf! zxH54p*YnwSPP9CHc+b|+AW`mF3|pjybWu}{I!Gl>$xa}>txMBVa0tG0Va(eyKcI zHl4j)qyMKMM8JeYwvy$eN7WB7gr((x&sUeiD+AyYTYl!OaW6&kuOm?{Ef0E-0o}lT zOy1*HtkX;`)tz7)@I{`Hmkh(A+zUb8QL^j%;|L=8;TX%{p88(M-5wAf=OCnTDI8SJ zFBvon2$f}{0Be~+I4Dh|TY|}QIz5vGn6{z#n^6ogJfdtUf7b9D4lHZYHL7k=jS+RN zSt}lwLTtIH;-B1j>Y1KaO(QJIv_M7OzkTDJ`mq9bjs4C8FAesST73CVHr~>9!|kC>_$ zc<#y{(nzklFQSa7Mt{5IaWPk@Pl$XmyPV(?WVkl_gV&1Qcq5L4GX@ z`|A&LFZ7YY@`dpw($KEe3Pvk+wEPkEQeHcQM^=~8MeOpZY-f^GVPPLWWc2iT_H8kL zH-TMy-=EnBqU!59gBQ1u`YzZ_zju<|{a_zGmLJ{ci!LxK6eSny0vtYqeaCd ztH{Ct-@eISzWK&@e)Y=Q9gP{A_4(2<<`hm7mq*#zgdBeL(s$VGIJtAc0BX2%j7m0n z_^!M&*LS+>IIpyY@t*9-z3qDvy>j-(J!fARXPOeIi!&s)smX2LQOYzfD^fXS8{xO! zdi8U66|q&w3Dc|*&Rl~Bib&G+MTj&)XF9c1w}=H0K?tgB8!Bs?Mj#);(`CyombcGAW>3G`Yey|eMWDzXnwAa^0j%cwQc8!Eq=pWM{ z4}?axo&Di=uigI=o8-*idEfbG+^2`p03Y-UE|5RAH?p$ETHCcs(*Krk>-SXOM|l7F zcm;$I6%Xm5>+HqL*AM)%Lf3>>-Yt>yEhjp9WF&~Y#cj4?HzmK$t<&wGT%4AO zY@D|J)l`&jCQG|T1!<2W>kyPfmBGp&5R8eqO8vg?2$7>O3M~v=fd|@x>zfN$k71Qu zBk#F>Vf}v(&>8wtLi>D~v&P+yXi53~-(+cjD>CVxnfq^|>hoU9g2$kVd}4QO$z?y0 z?)#A@y-UTZD!QbS#7me*PoY+xKENtD>33Mow1d{&g4#Lw+fGp|w16jADwbRpV5zfq z$vPsdvga~6+x9}vRj(73}NG8>OIKEi~0*I zhtcGY{oZZDlsNJ+nF!_iDg<|rhJfvU`0)43ilKKRs5;H*&K(iA#=c)fgU1@aLxGY= zow4?^g1X$|@w`S_IPE_E1slK&OkXmzq)wa6a(yh&QY_EUxqSe8LMX48Ok6(!=gyh`R-gPQz-Fp+F-J>pz#Z`gq1VA~dM@cauV2Ud4ucGQJ}b_M_`RjR z!e7cQo9h*Pv^|6qI{gIe2_ zk~BvGF_SJebs?d(M%jS^f+^%r)iqx(6rgyE2ZbOCsHGhxVK7K82^z!D0^mqgKr5I2 zceMy?t9*ualHI2?7A@mbcZwCbJZCZtgLXnZgE`TPXpZLQ-sQ#(dR%=2KY%_O`DyW*6XA^Cqjl+*z(RGtsLO z|0z(Jjas{%rz5KpuB@skLJpVGgxsRNW5PkA1hhljAN)XhPp%R#i%O``-V1mN`4d-- zWmB>TUl~eNY&wO!x|9ItQ;G3)nytp52V?Ag)E#`rA>3Hh^<)b^6@<>zYnFZAsvr=t z0P6_FLJuFVYSe%m&4`gICHEd^4b);nLd`?oPsVHwCaNrGi0W7&G74SvF^a&fX2|mj zeTnnb0M|fn@!Vq$!Sx;`)(j};)Bs6IRLA1Zcl*Aw`pD$;QYrcHE%AO37o!X`h8@ps z>jtGZi1)&k-C+?*@hGJ4_wjiF7=O>-CWQ&BBwisup=a?P*T!npCUd4Lo*TnbHBrt9 z1x5JPcx1JNjjf6<7jC3S-Ep%5s?Gxx&jP?v4$iG%D_dG@=3`;QcK!i zE4B^hAiByrrhlb2knNv;mq&+)dV%0u`{BsvEhnB5blbdPPN zX}G0oa;hjp*Z8mh7u$U_FOEGd;k|BokXIA8!|w9`$A4UW`9sY{&U6-PL|SoNo@XJ> zMc={Vo&WJ4+Ei_!*KqyQD62@lUq3)=LRaFFuMFZMxQ!BB?Fe-j-#yUhtNeJr1elP{ zr3>VQhF=W6XYEevE~+>21EB;@DpveJB;bs=u*#Y2zRI2L0Cl?E*UjJXBeV`BrUJiN zYG?2-y*G;7D6M;Or&I(~upR8K?EpeS4^E_@coBl5XFZLEjb+tEJy1w7=oJgg_nh%Z zm@xc@Htg`U@hnso%b!Ym*k#%Z^J~vn;)pklWcqm9JKcNHKHHVrKUS=aHfq#3KM;pFvAE z7$(Ct`IGGX*VZ+4-`DWx6SjVZ3GD7lO^|!R!-uQ8m0-z&s)=$WJBA@4=7~xsG00x_ z302jsq3lpl&j0++>^zh}jRKbD$orEcsbd<&=!+vQQ5a#JeHZ^IfLZ?3Lynaf5hZmr zw)DzK-PE7@z_RYs?!o6oIK`*Lj~<2iftp@F#i;H&v4EAMF+`PoavTNA%KoDAQT{}P zKKqM_QTda>hw&=#@BB&r7{R&v=i0pG6JDV}4|l5@F#EWw_<0*=jQB!1e)J%Oh7T-{ zOK{7b`hvA2?kQm)IBr`AMJDi9JA3OwNx(+bKG=o>n53}FIM+8O-%hQ|9Sv+3o|OD>4__JBbb1Y7 z>nb#sY5Ex1+tA~EU7QxRjabs$gRh6hr7-j!h5jDe(umGXA*_)-!K+9f@pz&G) z+;c^laKHFXww$>uRu)s(Yhskd^q_X4SO6LPJM6v4Ssw*v4mLX|!2_;_pV~F7tkH5K z{g{qWmRT!N;Pyn||JtpSC0G^-e4kJ34hFVjw4%T4M7&nJPwd+#EYI+Xcsfw*<3QL} zx63Ez-6sP8sxzA1t`^IBvF|^#0M4|Vi@Gwxu^z2%6r!M_s`w$%>rX~{P;CJAKpBX9=vi=Q(=mk|l@I=!2O76`&;fi`rtHTzzVpyx046jCji}i)cRvw zND4;exlzF0{X*)fv`JlcMsiW_OVw<7sC`=@iUlX)!M-Pd$g&e^uj8Dejx{YoAhPp| zw_6j?8uWKAa89o+Oq!Jhnh(@%%_Ry%>znSjT0EYZNK!w-;wtqjvP=@MfepNz)Ih6R z0NP49N@WNBAOWKL=5a@~Fq)c^5E3^+1hO>n13d3C+ALpfFIZRi;u4yBjKZReSE>`o z(5%f2Xb0nesPSMo?f2UQ0+-wdHs;d>Jja-;_F21$GkB#Z><6>OdAQMAofY)mn>WP! zv0oR}HZ%IuDGFeV`T>OeJwKbM{aN^Zs88<~D_LaqUMQ+>b4yLH=jVToF>Y6FzY@Tjs=k;2 zR$b|fC}5-aMFCuUHOwuaAlGl0o)-vp#*lL-Q5yNI=C%fGwt}kRq{M097nh!l1hQFz zV!jbg2yNI*C#Zx@s!2e9F|UphPCWs7m?xfNYle7~g2zw_xS(FKt?Y#oGx<*lI9xW~ zJ$QQXx03_SP8d8zV388?A_Og+=9SEX1~D-nm;=&}VQLuZ4P~!D&o$BJ8E(f?S+~0+ z;Q0>yjn7y*F0js(U=}{5tEJO;oQnF(-GSt93cmuRsTteM2P_IZ<(9X_W zws4f4m5WfjWH1>(P0&g+vH5tgn%3Gf6`@eGPjs`Go(i237WY>acufY9K6wO1d&KZB zwXBqJ3c~q(E9PweyvbZsQg&3L1(!|wu`XuUAtfheQAc#*BJ4k@YGdJ z!~Qv4Lm~apMh|5jghR}S+p$*C$;!~Efo0m?H*A9dIIvZtIMXJ_&=xjnOF_!~RrXy{ zLgZHEU*Wh|h0(v!JMrIxEdDYgJ)XCxR-1r7<)Ph**PsG9sDS~{k5r}rT$jTd-PPgQ zW~FP<67o+Cdfcibo*S8+J1p;{ACJUr?t-bKzzfOc3fSvg!`ZyBljU2Mk662M@!`_l z;78Ik#xg6cCdZ6tQKr?-byoQ(N1H}^5x&eviMZ7IWvP<&IZ$42R_zSLJj_qQc zddlo@$)2pzz~n%eBQcW}HFpj5L1}xZT)ec$+oNw&0tSh|6DgZ|`3VoKRvS0g_NhigE?&h*hm29A#lGC+xW{0ypMXG*3B5Dr{CN)2-fW zh#U@geG$#6r|vuKLQzL&vLf1TK}fko&m_`H28a2+E6*Z_Gx~;tZUr6hSLUetK^6wz z4FwCRw~H2d26Om_s4>wgu;n4+E90XEpshH={4ZoU{t;5%^42j8mhmV-KCqq$kE5t) z&BY{cY%JnS2y7RraRfYz&*5x=d17!OQKpE;zWqSMk?ML$?^@@Hcd(h zo{qvKI=VKxRe~in(TiD<$jBP)5ngP;E}S8Ap`DUO21Bso2wfq5#K@G3r4DRB(#7LL z-2S<~{7KtT6O1h8wka-^Xx#8e3P1;9j2wqZNCo9GJ7i#XU2H-H5RtB@2lj)-$MfNI zaao_4fkC78eSm`dMMiRNBmTpX*LL8>xLLgCdhws#r-S&<&f}+#pKRhkKYRSAPmQAS z9{Kl&274?Hywyc4(Mj0G{g7pOKX`)(hEIsE{)ncF@(3z4SAGKx_#|cv=hFrCMPW*C zHWDy<^3BxIPCZm{8zcN}>*@(Okd0?W4yrRohl*%b#R4R$EAs?O{fX?r+e=XP z@vIFGgSk|QS*fCqSfC{p5ivO1Yjm_RcQZ5!I$y!sY{dw65K=O@CY1ex$1f#R44E$> zbd(|Banb8zHfC!)C+0tak9@(alIpOuRp^?TA?r~#7fD83-iMRKPCck%eenx%3)ISy zJYSD4dSA2_ZGAe&&PSe1pjFtCKC(Cp;!`18N-#;rRD6KYmql}OGcBO#wCdC2+(}uW zW{hmH<82~^v=tO8Gqf`eebE!^m!~_*Msbf7 z-XnEVtC*hq*hVszK3|e-!g~59ZxP2GFz&^1P2|2d4fS~G{j~MXEJ2T7p|4M>Ewy4? zil__$sONNgLPc-$UC36nAG*vMB&PsS0fPi~YE0)E#d4y^WAEL_V%?(slInjiQvJX3 zKog-7_4+o!#rl8m@$S<>{^!}_M;rbBv+Mt$QP*$3+611D=t8rA!r>yLAQI81&R>wc zf3C!BEAl^Kgp6^*d#R)}LRd^x-MA6NtQ4Z7}hNXP`FpWiup2bS9xLq`h~o* zj&oy*qq?3}EHa!9ol&{$GSV~%OTAsTz@-z&NPPkfVIzs}%EhuWUAKyQQbuC2M zPawN@QsRkVZ`=K`)4&?~=os-tK+suHR`PZwlFP0{Bxm3Rw3?6F`9LV`C#O{5$FnJR ziWv`)Ry>b^vdx3*)@K-ARMPxB`)6gR8i>J8Fwd^U>1N$F!0VLwV6wQKzS-KfWA99t#veY)pk+hN6uWP1zxitl53Q~L z@%3A>Bp(t8y4e1Ey!UvgAOCUxeYUaxK4tw+y8Y`5f9Pgj%j8=__IP0dk80oCDXrXS zP}S6X?VU7ljGze6w;cEG_8RlpaM^3|OwvH=0V+wB?$FVUH9U>MkjN2>z@TK?q(MlP>O~sq-8%7O8h! z+49cIsFcI-C&=K@BMw&L$u;!40b*XVF-8Gtcq|DQBBK100!=RHvYtD;=Ezrzd8b^4 z7sdMhM3OejbSC{t^r(Z^&%rRJgu_w@999io$TH62x`TE6#C9sI$8zv;DFD!9-SG2O z7r}=~z$?_QRGk%D^P~x|4U1jE=~%Z6`|;@0e4OTPZ797x5R_Zb#P0iDEH)!k`7QEy z(b1Lb%S0BKu{hKKYP2Ha;?ZZKJrBLIK0ai8d5ju)GYTQGhzTNPTTa(|qM33gA@hhC zQnFNHg-C~3v=WM?gzBm0EMaFugGR80)2<+BtbA*$sIBt-~ zF$7iFFn1cO^3=V=90rNyN23#ve7f!W3OBa*L_A?iEJ>$(Fl(4f&i|^Qxr^hEr1+p_G{D&LyfdRnWh`{ z@7fppxPnE31j3D7tO<6ak&kw3O!z-}7)a4O3CLq*oR*;pH6F!&AO!SA(n%o&dcuOL zDN>6#Sto$O%Am_qR)$zlg4jindY0h%L4Ku$qx_U5xumT2P&fg>xH&&O5$#W~BvqRu zWl?XZ?LuRDM>XKR_pM4@h>eFI&HzwVX+WHnM$b8f$cY-@r5c zSJ`QcZyqoQ@4gz+6dKy?M%K)@;)!d%B5`YH6Y}{)yp0UuuWDbW97>M~7#O9!Cpp`e zW9*mx0KVGQ)s(Go^if70(3i3ZMCqxX3>rxFc6(m0dqaR7hgj`f7Q3YZml>gjrM*SBP{|&LZ4=e+` z#QuBoWOoq%-F^IYWB+~H_-_=Ny-wTb3bU`D#9tp~zG}^2LL9K_sleuR9%DDXFszJ% zu;6kNOTZdLtunq0N+agD_MW(OhI%efCHSP0i)aWH1u&*MT1cPiv|4Oszb79oh+{m% zQg%|&qK4G{0$DGqj*_f3A{9*M5yj%uv_d=6v~>|SRZ1 zNOVhd%}E1oWl;zrCc`0%XwOM*pX=fzQy&WpWvwa?gv^jdM?UqY7W<65)dRIuR4i`{ z%b+3uG`$}hlB}{r)riw)iH7wePxjdQb8*b*fe~qJyS{$ zVi%(yBy~3MFcca((WD4MAp``$TI0N5d=B^$$w&B1OWp~L>1;?J zCE`b;CS6VO3HlvVu*BnDYxdczY7RhU*r8NVr|*&}we*=lt=t z{Df(yN0bi@vI#4<|!*jJsm{b}s+rnm4U)&d)LZ z+=sQ?fZQH_@wv)>z5T#no44)sDxrZ(I3Az7pWI102WPm+94UU+W%~l-_+EN1piS{cjcXu(RWJz-+KQ4@y@enEAsz) z8~J|+<-f{%h?x)U{EFYj-cw1vt_T-LJz`-vX}4F8%pyqFGJt_ZR=*`>iI2vDUz67B z%7e+8Yo%Bs(0xO)KG}CS0K*)@SQ}weodc9Cym{pFt!R^y=!Xb3Mq>(RF1L$90zI#> z+WCrUYV7EwIzEBU;oL-?A1~Np-5^?^X-%cq^heBr<&z;}lVcGPueT+l8m#V!htJhKW$eXn9kJwQO2W4-k-L z+FNp`0o$ag<}8FfMX0D=P8-H)-(IXNB;r^#>%2UV=bP#$o(Ptxv+%9A2EaB-KM!E1 zxpHsx7fd}?H55h&P8I@*t;eVH|BSJEc$~zKrEOsbMGn(Q=5`eq=RnfW`cpOWg@zFt zv`-Z4b-^hGKd?Y=nUC9M5+Y7v78R2n*#>v<#1!^dJ)}83Oq@d;ZP7S{e$(6%YMo*?D#}yhHs5(o(m~?eIAZsbk?wOwX&U_ zB)zJ5qe4I)SrK(O=*Ng>qR&il+pO>;p5n1|r6K9FuwhCYJj*4455~+7nI>h_uLD<# zQ3^(p*6l=Q=lV{7oXch8No94ltb3Kh9EG|0s$M-6ysBqaSx>Y=>g$+jNUh(9r|uet zu#>@Vw%0Ov&EEa-3W1Lc%-$dGN=#%ppPN|72W{)7+T1ueq8stoVqt%-_J4H2w`NOF z6!`mpO()(5Pa~;bjTbnK+y5F9?7iq5@=hOze{Ku$cK&{c&kY8PUzIL0s`?M>$lAt-;h)>9 zc+|`3Y;i^&_4Ey*CglvA>pvK-izqC%?GgaO9b(#jUyq3l#h1ItQ?>L1_>A32edgER zSH7f23yR(S;#K&$m-Nu5Y6dE5O!KE{@Id_bk9M={fg4T#nd|?LS^xRu@uOk?|L(Kh zjsCwY`u{`gKi8@JxX4^ECNC=1Twj{*!+@(aQK+1PS8PEymUM|4JYL^3q+A42b6%wA z!1~0c)6jgML9kGuBV33GM-O$%-Y)JSUq1s79PmuKw4!WHga4`-8rHrjyf_BH+AO~n zBVVR93Z+>G1#04~1*+eC;hQtk2w__AradzPri>V8RQTHKUDrl!Pgtp)|G-#wZ#=dJ zI-`@n^v=TA`~@wWYJHM@p$jzg$U#H z?MHKE_YZU#;W}GV0j=Bccbk_@tI{7?Xu8Y-vTf8g1v!)F00e0UR zkk&q~4I~7t^+pJtHqk&|`6+{p?Wiu^xAW)DM=Ag<17pKVA)NX|9RZ|D)GX6CR(n%Z z@TdON!blcisDhf7-lpg1TiJc`^ge$756({Bd650)H~nAkK5$=3cWO9Nmanyw59r&Ogv-h8Y0M8FbguMP zzM-}1Dbv(Qf)^`>3P6|U?aaJXZ=Oxs!{wAloOCTnmBXnsK+3ceDV6`B)M`6`JLSHP zVT*lGom&dKL03`@m*oH0>)osW-g~ma|NQyoe^hCAwe7#fOyDK&9%ckD`+_Kx@0v0c z&4?%IrN7|pjMRyndd>@0H(s6wjK6}5$Wrb}=>*5b#J{qJ*!!(6O1a0FpDe`BLK-nH z*^#08*>r=`+qX0q=W{mXr$oX`1pmd)Ao zoq+D>DCj@j=ic_p(+mjGNvCqM71y<#Yo>F~92Y@d$V}{WV(=AMd9T%0HbHcI)8k1u zE;t1C!DOsN$2rIUYId&MmKu1GSeUw|gc)-=$NxUho&}%h9Pa8j`pT8hc>at5s(}yE64YHpg+{*PX?IBnH}KXQt!cKUrq3&6$IKi{!}-^Q!3 zCx>Se`14A`j28(=`NGYK8tE6o23n+>&noF22o`QRG5+-+9Z!oh4V4=+ltTQ@4Rkhq zxmqL@{%_e>P<7gqFqlya7Q4cy5!Xvxm$1f8Y1H~ot6h)G649nU|6*fwPOprdX}w~O z=)HeRAcqTlxi9R2Uq*{w(|NBN&sCbNyHbl%0n08}rSw7Zu2iNN30;cefuN-l(EC?t zBSS0Y`ShpZ=xEx_!k-cr4}>pTbfx^uxl*eKt0b6SmcIZxkRPrTnS0C0P4K{N#XDl& zrIuJV3B_kRjgjmEtNbm2Vz9OzS)OMJ07V?l3<~u_mFNt}tF$&hrBZDx_CPjDRJA2~MSC(?dw?emtc9oRw zY6U00I3VylUhBjF$%TdCS%`?&CFUfBITq{pck=F#l{>7fZHb#84JQyXvK;!+>(=OB zE4^|JKf|X3R{9k8l=tS|k5_aqtWJD|2a!4uKi*5u%Exyo{6vQyM6*PaWt|scQ~FSA z|BBC9ZI=(e?5~dTgnj6oZCzitr)!3~`b}%5d&S2LW-GTb{`SU~_%QolQo#^<*NFgL z690SrY6YqVn()|=ezjWXisQHgRUIZ+E z{6)ni*X#e70BCEnEb3g*8Lu4$yrlkPcYy!A`{>!;2LJEV>i@Od|B*C){Jx7-eey}w z@gY?X(Hzp?_E{|wCfL%|Vf_4?UcD6MUL4NbPC=UttJIjJhC2A1ZO{tG3T@~|sj3rS zS3KdZMrZMt`YR#3*(#;8Me!)W5c(fFjGWEB(s>U z(O^}j+^eH(+7junXkrNbAd21ZSwP3&y;>86Uw zB718!heglUsGlo;{}$9t5(d1IR@sF9t|9+J|1Vndq$%@5tG_Rm|4*Ov>;HD1JbALg z|M>ake@L^3?Z1}n7x??hP1}D(vi}R%LoKH()J;qU3#D?mK-FA(gq-8yiKIKyuFnfI z`O>R9M^r%=@r0;D2nT$M^SC05h4rdZR~kDA4#wKvTacJ1Bk3&}YKnf~i{T-pAmONaa7T;da@eOBm(jx#uJL z5G`;S|HGq!{D1oN*{1&c=a>JY?^kWVY5@_`7pedeY8Pn$d5gOOWg_;!_OH#}mE}x| zpxDAIy$ymg$^Hiw7i$DPXr~PnVcC^O%Q`EL&_UhnijB}10N8_@%@*yPd^tz3WYq+R zLxh+8D*G-GyY8+3YJh(Kmc3Z<5^I{)S`75K*d*M!JL{|-%R@xj$9Wxd{5_ZHTUqJs;lr@Kfo<&J!%&M0Y0lvgzm|i-IKUq? zC$FdyX6YC`Z7BAH|qEe7?TGx97^dq8|Fg_#X;V2g+!<~nS@h~u!DowzZ54v`K zP)@8YbXs*Vr}+r^ydnc@zhYXbT8gwjDwg%4Bv|!09INd7r?Fr|3kITXbA9IfE3>*i zRt&}3s3#W^D4Hp{j3RjZWDWsgl=s8AUZ>F`xB$}a%bM4dvyOjx$39N+B?{=e=8&mn zzutsE3VfEL##u2z7!bGCWqqXffQ>Y_Hc%<8Hs^$dQND~>?hVzy+7b57=L#JY=!Qaawa*#-_oKGl=?#cKk~ zrV8gux_)^BJFD`sV`C`j(UnZSPB#^F83)`kf8exDy1PPsFeHNslCO0UL+P)@jlER0 zbq-a-Twr^`@4{Fwct|uODIMN~On<@gU$1Pp*D2fE=YQFGvNPcSdh~dAQ~&Yv+kaQE zwZss#58jd?IJ7r|Nq4#axG)T0IX(ZSX<5)AR2(YNGQm$oP?+5@{3`^ezyZd(#pri+ z4f22=M`dDP^6@^Yu+t(>Wr$rwQ~NT?JqC*3+^_QU6$?>#TX3a1O;qXrS}j^#TZJ+* zT8L?aEGo=jXVSe7Yvr8m&cDE~flgaj-|#AsC_VL~(m`uHrZkW_BnbpCiYE~Wg>J7I zX+BuaooT)$ThJkz?|%C{`{P>uE}C?mhKKvl__1pFDBEx)4gO1#|B_11#T*fn^rkA{ z690d1cYyz~v-5aU|M5xX|N8B}T@^401`q2%!l)FwFn4k^hbw}2SoBy+AEE)Pk5Imc z`wk8O*4VrA?p(U;w4J}ZNOAOH#h&2Y@_!Ux)8d^KhByIiVo`yK>`ipp@H!QwBJ-rF z*oL}ZqtGQNPR00lF6)2(&+NbcpDIK{$B0Ig$6gVY#Eq9v>nJe5>T;D@=@@v$e(5BidVX@Xwp_SrGC2e z(n}~iuU01$OAlxkQ6koQ8u&`!wT7iuHxb}JoY3fvJK}qC<)LeE!b=tP}D~B8% z@Z@OAotU&UL>P{j)r4lyQB~vTmdI*+x?-qF{S+&zCK5y$<47lPnURS16-1t5AtAC&BmpG7@^0c{kh%s(=kW~ll?@!L@ zCP;Bp`!B-(^cKL9w69Jc<<1zM<8>;M3hUQoDG{oJZg&=WykzA$86A*=k1|_TVUq9KM69X%>qi@Ki;E4FYGrFL!k{% z2CKsMTwyN1KPfu2H{wzEev*gjJkI%FK%O16?KEx=ktZSVjlQ`+ajWRguyX531k}82 z++=J`@8Qi|+}md>8+ZdbjHo0+IkrxPJh79}yRUpx9F(Gd`SDt5nh#*>mg6@_F zQVhK6g{h&^&a2}J3S281&gH*h{=ekX;j7C3kC*>{@?>XkSpT)R!T-8L^8a=lK$6!$ z&oE z;L6F}?{nQTkZ549a_&{`e5l-p>a?t9RIj`mX>?)U!vS67#iXDE1QZ|`{mvJ3TRd&u zK2kwDhnMV2&KAk-sAh-GHJ&)Fs=03cu71(i$qkCO1sDuU!>K(BuOvrs%_i!3O?cor z--r!GOSY?KKl3$+$vI9OcLgHT*#lh}ybO&KoBFC(n%&?qHJ-iV=;y~G}lSc24C zs@*V(t3td*BGVG^vhZ1nnV3KB7Xy%H(=KLVy0(G#JW<>RF;VkC^QC4sxaDYyn1<=t zld%sh34T!|fs*nF^Ug$>JSVALAdmuX_04XWj5PXB(2y~G{IOVNWI76%-noug3t&#? z1vtz?fr^+~G75_;AcBN9#_MLjxKNMRx|g>4Oyi*N+}&p>Yh;E4OA+5~O=4u-yJ{xu z>cg6-!gNn~UwQ`X$h`DKSMKt%gaT4Lr?ES62D%6mIh%Nn@MA@}6TQS+!#l-$R2?jl z>>0a*C3x@UWIXZ!D=JG7^`hkBITup)P|m@TGk|fdEL0&3C*5!?t#`lFdLMU{PkS{Q zg%i8Y67ei{2e{8&&Zwk?84wK`fHr)#rTyaj8nEz=TbN9*4aIg%-@$OXKA!(@ zk3+ckqqq@2-dn8qCI(G_*K{UC9LDV^-u;?mf6w`!Ax>E0ga9|rEwnp3Zm_rRj|_p; zuH|pUor;nUK$-FvUwq%r7fP@slE2%M1F3rP@UWcW11s!|Q6eXdW=fS$E~!^8tUU2w zs9x1HsL1JEe6_peQAMnK1!xN4-6qPO|NWw z-`CN9ra{Lm`+uBfM#BLXE8QXi-m}- zpd&{{hBlWHSebiKo#7zp%d{+t)!{)P1+D$_2M0g0^3B8^$ab?I zv+yqt=*LWKgSFAYpqV$l`gcSAOTKbTi=}cjJKrn}cp3i7gP9#CD68uTqgX!RNU{rfM11uVi4o>o>AU#Zt3{9?kA*8+BQO*?5b(yd_wo%16teX z`it=4gJSNX!cvaUR3rp@Kt|I>Z{tLNJ=qD36UsUO2>nN*!R+d-1s@6Iyx z2~1~;Sgwb?NQA$xt~m0}1@ic;?tD5yhp{(?@Pv%`&OQm_sXe%B#L)BGR4x8K~N!}t7AL_M&FvOa53BSvWScfoZ zyKJg|UphC$sno+oPltT}-J4hcrzkWd$e;jcEKbSh*ylOP<32R4ZFD1=0L(2G&jG3u zJ%##E&&8?1coJjOMR$@L_q_DHI>A~9D|mf|ep5|3_^$)6dX56VzKWvZ=-&7>nl4A# zB%0&MEACOM&_}F$<1j|>F&J~q^=EBx06>NN6Jpjy&9|i0{i{{K!VtJsIU@V|!g>;} z(115kOd9RA75-gSm))?L&i;JefbR{=g+5Eeh2}zv>vm0BVGz%~p@ooyWLFyt?%2MU z;#!CY-*{0e!dxGR&d=R{O^aZ|mB3f!mtWcMRz!~1+bHp?K5y&e3i`i1CKilU^4@y< zZ|~`|Vf=4{|9MCJzy9{$B_D8w24jAPf-xyL@5@2A>Aa~|a0L4cFhqi0rC>id$B!?& z1$QqF<6T#P+bp)VR(?WJv*_;KSf=|Yo|N^B3V0J;yh#4X{eOMS`{s_|wc~#~&-OO{ z-zSj&7dl?I+V;0zs#`Bf?AM`@Ph6xAb>tvNfc`O`&8v<^|GLJzuY;oo4>F^?4``8* zf4KqxG|0%b|1C7isOy$^uie$$K=I$A-m^E_ft(%J?ZJU1z4;CESTvbEkNT;tH_3_B zGp#sm{EB4<^OlsSXx;XnlF!%+@aYO2Ga2*-4Yf22imv8t?z@52z!ep^&XaDWeN>p_ z>Ig839D)OwbttzufzA*>!Ghaq(@tB5pueXiqLRLg_qU(6jQgNZotk4mjN)e#`1!5tsX_A42p-{N0=AGI6_4OCc8MT zLOJF+e!BdnU&Sv?mPr+oDw2aUAdava+Fkv5|4nk?1*J0NDEm3IitAtO|DU;(t zRj0x)n@vOa&&SIDQn{EAGx+@I|gE|J%mx)PleZxyHvXR{)pwf8uYc z{C~W&x3T~4p!{F4{hxsXK!v!1UqD2nT_X}>XyqZU1%LAH&Xvl*{A#c}R0+^U_~U^m zNX}#-u21j}Q#y&1G8S_}PhG4BC}X|gU-=rqKz}Tapi6nNKG3*Z_-s%NpF%(|aMk-Ic%mVA1vD|8(iDch0<+b!>gO{r_ZlQ2({}YDxi)~`vb9H&N2taRcWb?(xIB|6Tz>MEpnf9mgt`^bkYhnq-x;QIV@O>2I|P53-B3)hqX zH%kFr(*OT#i2nzzu#x|FP5ys06aWEn1I<0Ua4)O~qoj>H#v`a$!QB(d&}Cr;ku;(F z5Yj-4%&ZadkYf>AK&PxHzOlmEP(&7oHw0E0X+rkR(1La+P-*qq_4?^oIbO;MnIA7p z?G2Wp=bo*g*GrF*BtWG(X}TS*GyxSZYNIb!Hqu|Si+*e(+*lF1vEQh;{Xdc4(s77C zdsUdOb=TG?IP*$DkCdr}xPf}u8>#8-S<8OH5fJf(e2s0!;OQh^1mIrj$`tR5s#eV4 zQoOZ*F6>pEw0>8f0S&#=Ek8VP)B63;J#Uirfx6dbp%fW+TietV4SS~Gg9BH$Ig3;` zJEPAc`$uu?Fk;RP$rixU7tIh!qT9JBe1LvmwG?;j!E*fT=*Kyt^`g2N)UzP=or-mV)K}daoZf#)!{;* z`*OpqWG5a?ESht~5g@(Fyq!rNl&}MeGa>KPr8Jt?X**d`W>j@;@COOnM6~I=4#)F$ zIU5F0w4<092rHKlW16WD#UdW+9?uBl(2G=)Kq6rAI-o@kE4PM`67gc3#{pmqbSqPzPw z>wQ#+5{Xm4${Td5XgIpE;Kw=OO~sGZg!dGiwvW3d(CFx(?jRaP83*R+=+YNq+ys_tQs}S$*o!_W<3(}4 ztNDQjQL(}oygY-Hj`I%Xh-_9L9)>(<-F+>ZtGK5(Bf4H+|K;ufX}Ksqhzk1B_}}9} z{nyjIP5%GW)_<+o{@X19n<<~g7UXt*g2MXdcop$S)rqa^-MMH)7tpwQP;XDnONQc1 z<8E~4oSMPQP5Thu&3G=>6^6aE=PumcWap1pc>?op9$-L+ujWei6((^3zXw0s^&H0$ zsh%xf5$d$nZ0cVcG8+2975a#}bmWm(jD4|4pZ znm9KzNJ<({W`|JU>r|^6uBd3|egDx(w28`ZYT(iGV4)19C|6ALx^7QJVZ{$7=N_@l z3-Ol>3Q9|{SE6gjM=PQ5BhI&;2IU9APX2j0Ikv-rqeM7yVK^`Y&GcmpxxmYqhD$>mmEcQt)*8UD-D0sqtPGkks{|9@urZ+uKw-2Pk4{j7cS zFzd7aqdwj5MQ2LvP`B+ncX8j95kSBi4dNt(^R0d_uP{eU9vd+$X2z^Isk-AO>WfLa z!1zaQyg(51?c8WS25lksj-%=aqTjpE&X&%aWIhHE$MMR?EgHQqkm%IHUxgqWiWn2y zF>XI0EkNguM@`A>{N#QII@NcZ`2Ty)2K|3K&vrKW&v!}w z_qP9TN`6nW4Dn}j6|sWOVyh)AHxWPzXXtZV7wLgmPFwSu8QVTmD`E`~U6E_>ByrFV z5PW{D7~f6wf^5V`RS1t(DFm4&f*0p9gm20t_t|@#he!n{{<+ZI>My*mj!%+r=zhi> zgHgurDsNiU{P0hiVP?hN=}9`9}HfA5t1zi9jKs2h+S z6q76(w{p&lq+_kE5x8q;gS7`&aR=gu22cotwJnS>fU#(M2aVz42r=k`x@g{+`eFLK zOM$30so9nD&;{5Y9d+g6CW>PH))n<<>rXtru|I+3z&b=r@Yk#et}OqJMIhI}+BIT8 zm-YV*@gMh|?rh>ecS`=R+y1*L`~&C3N}s@BI+*q&goiZM!3lQTp4=x!wN`+N0KrTp$HDX+wn zu*iwoZt{Mmun*&{64mzyh) z{_6d8cm-FL{~m`Ww<~;g2jH^&?=b%V_|ciTnxly2Yn)3ai&Ep%( z=9Tl`#P5Gj`7Z>7ZeOoi{Bs5QKdArQ-Q9h%iT~Uw`9IkHyDIm8C#9&~u=m|?Hxm2y zG;#&A&C1)ghz7-S|3fVIu)LpbM1Jq)!abh+MyTIW`Ok)TJsE<9d|UOO&-V6K)PHXB zzjsRhuiE}QS_OomB9`DgWi+_2@%zA(@eZi5ML*_#p>_aquMnArnx06y>kEs+!{w9_ zAg_jI#e7j&?Geb4mE~HC+xvr1pzHER34mm?KB_`_{IiyfUKm>18HARur-jUMk$}{# zBoFM7Y?%Lm#DSiTOA`kM%y1nwdR6(ad@G#FHN*dx@jvbE4D-Kxk2d&EcS-)Q+5Wrk z1VE_0v8a464ueWejXq14l$+X>%74%{#SZCtJ6RrTzm?rRedLJ0^qsGG_Q>3q2ayy#7WU?T71zt_J|*YwgGj=LU2B*q(3l3LHi@M8+x;$Zk)b5@Be)W3*?3R-zoiP z1OAVvPo8f0-|vwAzg^@nd(Bj9vl3k&pugM?S(f)Z)4iyYhvY3QTUUS9KC^5pVF^U* z%F0i=7N zQezwcI6GmJEc#~M`8`~OG%I+=FaRHT*C&$mQaHt*Fs>?BLbd1LoK` zWGT^wd?Hh#Ek72BAjL|uD|}Q;E4S}+caj$E#BJrlGCWzI7cM~!dZ76`zxF*ux4P}p zB>OSeZ$?~Pcd~MVZA1>wSe3zegtbxeiXZ$oK>EvHRTYfo_>axX90zx4WD&Gxg(#Sm zN5!&s+veZde~x1F+1!^+4PZL1beNIif|Wm@1~f+W`by?5`yF?M94zY^$HfZ4G9q{} z93}`7^u9QXL&MW5>xnxq^Kz8I}!LSZbM3#E1fIVyx+SL^~YeAGt@D!XkyvNjrOi8pjIl}y7$n66AGC& zLA%^v?WV`;DD$p5OSDm36@c+9OZ}t!)VDA5oxlCE3yaJZkijW#B5rO|p2{+3Y~t4r z8^{fqI=TED9d2bE&YZTW73dJ+B_ld#w733RQJ@ecP8N(P$^h%**E~ogZpbK}<_H6t zwVird?mdv%rN$)YWfSEtBY3-oQ?;GI|*}=KfUGHhgueI!jqLr%|pwGvKJUOvlI6r`~SRb7-GRe zanGovTMYbkrCfEV8dcr9;qa0Q88*NRova)|`Of9NAk#j~r1B9z6pJDwx{%@o)ha%c z*RC`gUR^h@;eOqh4?OM}02Waa<z;n*_g{)DnA37dOc z&|?gVaVv+hpD!WQnq^H^8$*#16ijq`Nz#CqeYHF!gj>&y-e1w$-KiDXwe@>h>j_Hy zC#6Se5|OS=f%Z5;U8?OzXp7AAEBnEF152LJDI^_rnp{sE{XQ{CfNXP9Um?C35k0$I{Lj57EAT&`ZTi3NlKfw}{dZOLOYGn5 zKAPSUF^b^XlO5$+D4= zR-fHW5vJNR$1RF z0obrkd%moL{Qm9wQs`+xPTQEDMG8CWvvuXws82vK!@Ck}eMDB)($3$$d>Pe)Tvl2w zyi_c6ejnJVNS)fC?!{t6Qs=jxMQl*p5vq-RDTgl0h~=3P|Jema;!cE@zKoAbWgCiN zn?g3!j8eH-or-f-CUrUQ_BEVCU?Zm|9-&69I&O^9Am7pYFjW>#!8qsV1VyAL#H{YY zt7g@7HYc%HwCxbzvRONNUmCr%}=zm%t5?V(B+Ft#dGcaFZG(khC$Kgbyal zkz=Kc?ll&qR94Hy$-G@2pRBA&n$;)|X91GZ!=-z@mAwKb^;xqhen7P@9=T}Kw_9Bf zNb(M~*fy%W6#`tVY^(IjNLC9Q=p5*}SH`~V$SGbROnU6zGVim`xx1J*Qr8-v6JRAe z%j6`K7Do1$(Z&lcxAt1(vUFBcH42O5>Fj&8T}t<@2nSqXH8|af=h!~2<662^Et=zU zvd_CRS88LvSgKatLSAr1i}!6c=}__KBm}Leq)4qPr1QX6zu|bZL%?dU2XuD!eZLZ{ zk(^N2ru=p+dga-(nqCEjcl+sWQ#MIN#i2E6tT7RoxVf6Reui3A7R{e#HkfzI;doyJ zDd7u#+fs{e~(k9b_u&E0YjKVUhoj(xst8l0A*>!hW^ z-{#o1_q_4Rpnp%{N51RaJ-z9UNC4x6HLG{M&{qkLHIUf$eG1#T`3m}1g=bmO1X5e>g_%%`F{OCOZjxu{4NMp zW9HViWlsk?f_zWZNDB;4R;VcoVjOCT!*g`bw%pQz4|}mPQTW;YEA(wWz?pK>oKLkr zpYM>A4h1WOHh-tN27JB~NhQUJT5Z04L8Up5npKor8M$aFfQ4YJFWbX6QgF+?eOWAu zw{p_dwH)cq11+)+U(`&H(~xaZ(c*{?k2rzAxoPSJFPYUuE0>DQa9sW7;iNcQtelJN ze4hQY4mN(GNJck5+qYo!kY-cmlDBuH9-g*`6IEXCt+b&G9-BPq9juh9J1NP_9m-zG zCYv-p%**#xc{&*VOXxz3i>+kNhh~EV%2iL@^_-E$8DB>CeKsv2j-`35og@e?^_iGX z{%FG-VP$TtXriiM=awIl`}MCj{wMuX^Wgt+gFdAB_fr4w>Ej{)^V6M8{nw|6|Jn9$ z#oK?&&A&8j=6reg?=?DlPbw!WCVBjpqj~$6vfr+YDY`MD#J%&i<07%0ik-C` zB^*UIE%7xTCY-Gd1_eYVA9bUm^$Q$OuV>R@f9l;erRsx@-?2SHlGXK)M0 zuiY%2c+LOLJ>?j-R5VEQUf5|tqG!DL5Y13%3}FYYRI$$GDQrjaASnlDBzQoN2VE>Y zKUDmGO$(O`;I~46ReDQ@?}>NQ4vbrf{vWnfO~SBJnU5Jbb4p<0!-S;Be~Grzo`Dov z0Hhsv)$;n0!~Nr^+&aFm(2sH!?L7ND{4v_fUTXoO^wCNSQ{8smnYGcu;%W=E4NQ^)% zHby(DPP&}Lv`J4NoopwU7TO3EoBZyA8}Qp~sUO(N{t>)kga;}ZpP$RAb*sdq-q9aF z^SfKCJq~98oeH&ig$c*{lMytC#(W^50wsgz z!(iq$rDoryAw81qQFoyi86w%2jSNZ<3w)4`SJt^p@YaXxvbC7bw#TE0njXg!?r!?< zwl(*%4E+gCG&&Cs7n$ws3=GnQ-_lccu*Aw03w&^4{cen%kc?>Xiq4$ukgS0RPk$V8 z+nr<#QhU0XF+sc{y6EocyMyNR3XUJ$Cy-&gGlycT^%{qX z4Th*-=RBx@Hav<%WPFygJU=`s58vg7ZqUs*QoN~;d|EXl^{AXP1Z96LFj@Tg$QqAl zzD-4E5_?$~7EcTQ-gqs)m3=FSvt;ge?g&1tOXED9<-8$*H}Nc#sY4cH;v_FdZ6D?z zxUtR!buLla6;^N9({?Jb!;<`|mwM}#PJ;p+0RD=IiWTK}<$T^^@^PM!J0Kxc-8x;6 zx;T&`mOxP$OISIyGFz^X&NzCl6YC2fdJP@_@k1t)F6#QuVS~ZF%hZq%yP%zWvfU%> zwL2sySbhj+xg9Y${*^oIinL^qPxJ^K8gsMDNu?`_RHAU)r4tpv?C|bF3N<<1(R9OM zog|Abao9wD9{U{fbm~5?xmMT;G;+*fC{~yZJ&Om{lzcsz1`Q}x`D+XXX!X8rAx|pw zAjeluCWk?#hgZIFGSpR9*Guwsa#7A+p zFo5rZch?fGdk$_HC%ltrK;OH!G3Ct1b~&~1lrFgx|I7~!YNbLp45s6xha@mkJ66F} zoNs;9i71I({Mg6;T{}MotU-}H-C66Hy*N?J1F1+?HPf}34K>sGc`|xJ^0@0)x5p_G z)nJ?w-*(UGH0n9Ys5G6}g5yJ%7!Vs+PK^Cm*>?%j3MTQdge`I7_&4WwoJvd-z3*-+ zmL-#B|GGS`5b>zus+{`;-D<=hd=v1Y^THPrk5GrzZ7RVt+U9|eW4J$P7{jAi9V7eF zrj7Xt4%Xj0I~n?i&;bj#@LVcxP%g4w@`vU8OZeue9sN>f-Ls>1>HG$_UGAhg^J-GI zM@N}*{lX230GT3tU=(~R;}QY2G;-f+wpz052#yPHZ`l4P@Zo-e8AVGbt^1H1|8|EJu)wHVZ2}j)Ovx zfqu0sITl|MriT6nkrA$1L}AD5nkJVFkVqX+jLmtsup^vBQt=V^HlhGhNB~3qhXp?P zWoLIRg3;5WHgA>}6JDXn@wMCL>nbMB!fLq`;_hocfnz0Pkz4x;S#GydM>YDa1&;^Y zGHDN&QyMdpEBOm!3dH~6hXPucKfgHTu``OFb1>9pW@;S@riGn+!!#;lI4o&-KPVTc zr8`b)vYtRrNdbzprIzmI6DkO9LjY-Wf&qteKeFu(OEa|0HPki0ODvI}bG@}gybZh`M*xLZzK!bC$bB|`h!UvptFkH0 z?mf{rLJJ{OB)c#eUKd2XlY!4=mESlst7=DDpXHvyOB^SVErc3S`*IHO+j8#2;DmB6 zm1yq81#;e)G-vqFfR};i$iBTb(vQkgDR+m8fjlES?uG<}atq0xafS2FuS1(2i8zOeCr(*r{v& zpfh4GRO#)5L81Wz`g%8-n3^+0CPnlR(K{F^3gC!eS$B zAy_R`LSIe7{KEbJYU=*7kTSZDoB!W^wD)9?|9|vsga7?0{r`CTKa$_SI{lx*ZAU~i z;xy}s)X8r$8K(t;VZ}AwDLd*<3b(VY?_u$)FMW=j;`Mp_?reI{)?z5K8qZ$jzb!VC ze~F9^m3RlR++yMX3weFCC=kMGmWYKZzMO}P_Ik8qm6~5bU%sjMyi5>DWMax(vXxnn`N{h) z9;iZ*AAhSqTE3;2Oi<6K*&pgst^F0q9$DwfvBFPtyWP>Y`su2dq!f2Vt2tO@9}U$# zO4OOZJVX%py~Xmfr86B5s^ew5>~f~AvZES($;cZ!BfpaUl>8L5vcWUbe(?@9YyvhV z0|dI%?5HNu;&t4#NBx!d{|Z)mE~0bhWa?H_yK!xE;9~v1xA$m(|KQaB&PM-#vi{!- zxBu$hzETH0xk|t9;En71eTN?vYv3zX|MC}v;8u|v4P2yT?S!4vm20&BSExRXZxA(}u^AXY85BD!tuV$O)dL#8%(>{5o*zgpoRi?oDSs(0 zk$dyJ`au$wtH%Vl(D}IUI5^hg;I)g>)UsHHH9bbf`ETxx@8NIa z?@L`CnlldCNo9-@1di&jcJi?QBOm`T&i{_V1AQ3E9%c*Ma*5m8Gq6IwJ;Q?9y)|ET z7Vrga(cyW~EP)wkxjzZBqMBP=2267-joTvE3ycCC_Sji!)2b`~+gq+c8+Ubktith_ z3Y{IEPMtW62|R}9`GRWbfG9|aZ=4E zSA70>ruCLj~FS4ve>%yEEECf7e%rv4^LAt?5SK`>aGh$))blD|thjAkID zWp2_lM4~L#1xL!)+jBlZhwf7Kmz>887IPUA`)*1FZ zyBB>s1{zQYgV^2_)K;^Uj&i}0&54+bh9(I1cF&=KJ|9v~p4UB+G;y=4j2l&sA z9zWjjzuzVO@3;T+FanId%=e((9YY|DX=4p+tbtA3XA}3iU6U=y7rmsfG^u=Tlg&SA z6ZF~GfB4+TiT~{FJbpTe|Lkr0f9{n1hwcA7Oh0l<9?hj8CSr?yBC4PDSq#lWsZ2R zG--b}l3rd|PhWO@V<;WF?#&`zd6;f=Ze;b9g_kYmwCau`hplXm2`R3dX-?c$_FL=; z-7ErWcYt)0T&Vp0Mbk4D1r|=+86IVJHK?^2H3z=#U)lJMC3kidfU7t#BU)i2nv=EY z(ktxf;n8nTLVI0nm{?-ohhFnha1gyX+4AOWALXc8q|io<8!Ioq+Pl&KTnpTV!1tHd zzKVW3Oy7pqK{~RvF&lUD!)+so@oFGaIa`ZvYyje&w8G+w_YNk7b7!L0T~+PhTmK4Z z8a#V+!QXSc1^k@!8m{^*!(r|-*TJj0+HsS|N1V_fg5o39?)`9EwuU5On>ILqW3Dm zNue5nKuUr}x+bFgS~N$%J6RyCD%NO05J}@>5#7O8A<8D!q_)VZQRmgV@?~Ja-8yXL zwUbla9EnE>L4&^LfB*OYp@YJ|j-kVfQ^n3veAUx{`{C?>rEpXN4Uz_^*3iAKy?%sg^ZRg3Ojr{-l<$u7}yLkI=mj{j_a!Z(e zx&#DZHL^eGodOzY4#~BK0w93l$kX$#oEAVewbbDok?Jw@x&V&{#4!OJSfgqXd7#w& zr#CO#!x7MR>|vJXqIcY_d5<_|>bS9`JfYYM83T%DDI(EenC3cIHbUk*brB}Yi6rc$ z1(ALNYZ(=Z1jR`D!bW=KO&Q|wt|G336ZZa*hl=rJq?&;w;ykp-831*F>!!Td1TN+> zX|9m2tbE#rs&MemnG2Mq_uZOy+xoig_m6TRrQ3e=I558Es?j?qld}K%pSz>%(bM?Y zx>rRf#(n64IFpJRsGxE}!sAu#&?E+a?m`RG6&}H|>!{a}8Bm2g= zxW@nwQ)J4fJ@rwQ4lp`pa}39xxIHHXT6PaRifHiYvvMD|J(M57%sRNN4@Mevn->-A zo;ZRN{LN0HPXe#NBQAsK9TWA*7qUJFz=;zmC3%I?sVUK1>8WT}&wT_!fxSl$_WhVF zUn=hgt6y?s4F0VG*Am`~g!!VX#eOnD5YVx{f1Ukm_leRDdC;YRrH92jP!wi~VYKsi zJd-{O!F*l<4>m&N!CPH!lM(zQHbcr-_??-Oa!fELIR5n|Qo-g(PKDNlL|hxjpJ)*_ z_+TtFnl?qVlg~zSL^g1xR8X0fZn&YRT|w+D2`9aJpA~@*7NtR!U<_M=i(dGBC%%;} zyoyr2>Z&F(Y`}tfclngyt?0P54p@ewp%b97C^T1c3h~d}m=4De{GkasdpwsB-NC*o zKAb>%3wTzK+3+8cN?2gmz*|#_ptDEhO3N4T!71;b0%sM$3dcQ{tr>;uI*OT{ThKec zSVuQn`*rBvUPU#mP2X-GPRSeRO5`P8nqrC=F95DHXRz~&qja3m? zbBXLLexMMHru+d0jcJv$dh;i|+EtTWUUy<^ijn|g7(@Zr_R)g@58c<{B(J*^+5Lss zL-JE>{X9q``XQhnj0TtrJm1U$;oMzdF9bE#m$W961*Iv~xr0f4ucD^zSs7-wis0n3 zn=s5yqp~Rsw<2jtIbT>zW2Qx4NU-Py;~E`AX^VMj1hEA`QYY=HeblHO80;C*tQHga3W!@!sB$|9x+F%;ud1U@;`X2GlUwc6O z2>)D=mQ6;GM{SLF{w=HmT97feeh3QG#+4STKbG^xaAr9Wvm*a}*)EFpKJh=3%V{2#S5k9#7i9sx?F)Pfa7#CJ|O4p z;c~jH#oFN>9@M1b)#nR$R-=E5_BX7sd=$!;Xn+#kO-$LBQspD&k^i1lD_2x${+D8s zYuP7Rs+=`5p-QOBWA|D(twa}}mIam`(5*zoHmE=2_DYP2-*L_a{)f_>w$35|hwCUP zb;Cq7rl^J{S0KkbWp!yGFGHCo5YQL%wmBBg?de~M@=4`?xRRm(Y$LY4>qBGQ-Pjw*-XoY=}pmg=ki~^GdWth?NR(l9j|Q8 zIp6qIyKI~xu=A6WlYKTNGgp-V>|n^v!_JwSzOo9q%>EzXKke>5-r4Yf-y!+GYWwe^ z3V30?Ha-?4MHC@&bRC)R=j){)fwaBt$Vm`gT3(_=2@O;a0wG!_iGh9@e3)C7_VLyb zpzktSFLf^05cPvKWx+M){7aDVs+E7K0{(X7{|7NZTvGqBw>PN&d%E{{Q~z;yVFrnm8@gjBB zN}is^P_#}^yDq{gMNZ*i{Sc859gampj~ROjh4u6#{3}#yg`~h(ZTSAzs^Djc;@CAN7D{-AshpR!6}TX);6gEw#psf!dUpT9Cod-46 zN^GyE#oLsDjf8a3@TmG$GnWVS;sh8vE&JAUE%F0c0XR)OMFK9y;~` zEZ^Bgp83<3n~jp&MJJ)osn$c_7a{U^P##KDk7N9@iz_FRukxi$HrCOPdH%b>vGX1C zHcM;XkzA5o3Q}~ThrjoXbkWd?T^8LU6NlXwpB}?H*#^Pd_JZ8m^f9HwULvDRM|F#G zhFKgf5ziI-49Dr9#A?b8Ie7zyZR~b)=8I(5tijoXL>{0zsI;}@xLcsZxf>*}dR?6A zZbZy{7cUJ7sKjoH_qvM-+v0oK=%j)xP5jbq>cj>bV<2~U8^yKO;b?VnI31{$_Ag$P z^Jxbv!qAFhu~PggD0Mm z@3|5AIqg#&GGXBBEo@$>73+k8Z*ex$3~DxW$F7rns7m6BjI=Z%x#MKI#3;Wvxf3pe z?Q)}WX+6MzLl`(P%f<|Kj#a8>3X>1uN%MD>s!Ztg7F}5%S^TNzkl0=xmUV5tjeWsK z62Vn3ci(O6_fig%GFHm#eK3fekv(Y~Qtv1p3DU@EX6Yd{m!n%O4|D~pF3>gWmo>5< z*96#c__(=&eXTfB&=u@irxM2+J|pfqqrt6|9CQMvOdb~bsPYj8FEcG%!z`q-OmkTU z1(KkU=yd&8Rby)loOxn>?}{CEs@8d1$^~`8q|9q4hH9(*Lc1jCX3fY5Js6>nVBa3o zS+Y%*uhAMh8IoyqVMHw4-%cxNrcQ*ibp=nQ_d;lI-E*fHrVt&mc#4P4x-n5LaNP#H zRi1Wmw12!8j%wfQ*5#*8CzvoOtSW|8g zAL^)EH{|7Rxiu{QvRw1KS|F}c(-<8{cCj-Ed zbo6B%YprNAD$LxxLQFV%e3}9jNnE8_z7P_&H~O&<3v(B$^rH? z(Ix@-dC7mnfATm7zQyK4BET2R|3}Xr5AmO#ZTi1If&3qUGx_bm76V>dOgSgIt%T|Pn!V2&E!9lpw)4cAJH(rIuyiZ@_%QyFaP%*Z~Xr| zC;wM&|J|4U9IiGGFHW5NbMp3j;+|lF6MaxuE=1N_r)9no0T4+|S)}buS+dirvMsf!%sjnx)D=M@NJa{X zKq3H9Oj~`~s~@1>p>O*B+}ER=C+Yp|;U6LbAV>|CGg+&YCV+^4{`b7UeHp2r*V6T` zjgIr66=(4XLx#%@8-)D#$c8WTt2+q#-5Y}bY3TpiosWV4v%7bHr-lEs_uxkU|J>-m z-~P{@=$FZNcO1y-6Bp{TKFQZo3)G4i?zuvNI!Mn1fcMi=dY+l~{%a%l;TqM+s1k=h z#|kAfG33Mx8@r+MpCA24y8dZC8z6A#DxBaF`v2hWgSPy?vwK7TKQsE@wf(;WPGG}k zaGD<&YXvj78b62{;nxkzhFL?vZ1c5 zVko#F>S#=X51RJZu4Z^Ww#jRMDc5Xm;IEB&PTUbwbxDg&gcG|4+q??>f1O|Cqk&iz zKOp_Tv)97^xO3;;P5qb8jsACS|L1T1;Zd6@T*dW-(Wi7OT3zEx>>ylL7$p1QQsWEgVD$f&b zxOkiG&GU)pDzjn&OEnYfYZCWIns;)kK-(I|KamUfhS2{a^gooEKB)ZPLI3aFzoGx1 z8U63t{?A|j7ogc#{*TS|*Ae|gu5gmXhV3X4NKGH(>YQ}+<7`4YJhkvqeZk?3f6Xoe zER=T*hb#E-@X?beH+s4CjYnU|L*PG+q=R4``qY%bNfGc+P|{e z=9OrEs~V~V0D<%z(KKIkNmw)dbL~?uSov|IJLB$uZG_%cFXq}EPX50k>Yp?H&!+%z z9}T#)>-t>aGWma}9shYBn6NkW|MQ~%o!kHUYXCNG3+f@VwLmy0W^pw>kfEMqJs(tt zZ7qyIWg=>L^cK(9mVeX{BDe9?Mb%?D*AC2`is7H#B#c0R+HWdo+U zsG6pH10gStNMjuw)F1q)mJ$Gn?PN7D-FP0ne#q+^HkRcsY{1epXIu7im+pB4WF9C9PG_H>6OrE}q_sWGbjV6WdmIrMR!yUE^y$E(ukZUVZHd#4} zn-Qo1LyR)?M32~Hs77^&;-YO78xTYDM zca-{&XGI{OVJZODymH0&Xs3_pJFbqJPqa!TO-7L7xGdJ9)asj7v5{+Wi;M0&FHX<$ z(ULrAG{(oR5nl1#ZbB3Zn1e5nc^RNc$@gwnC&i5V`EJi3urQljHBXk|>16)yqdV4O zSVgTX4#yLC3}0QF5k9F^0h(ZdD!VTnVZsMIGt$9%L?=ot`fiqe4kGC%e^GSIeqtWM zevER}59Q0gL?HGPu@LuNm70F?rzeW9`Dd1$HDMemY;*(`*%(lqdd^1p+u`W-6;ux5 zFECT+3nHB3aahVMpCqHKJ{!W%8U}W__;@cx_WfHWQ7;_k*Cp;NmWx*6guR&tFE=i< zS`95Y>Zo%)n2Zt5&Z`5q;PaXyvlY;G8Lnl`4 z8;a_$YJB8Zh?;@s^4@Z0JMDu2{}~_#{iAKiuxmj{lG31o2;vv?d0-s0gXz8$ zbh(0%GGkKH6mfWqH$N|huE^|U7FwvMs&gx9DY;w?N+|EPsJ|RTDSEANsT#`9q;nL~ zO-NxTWC*lzuv*P!Hg@0~$(}eehw$5{lQUr@Wm^w8x~d`gQzd(Y+-6HyDj>To;Pbb$ zqJFJ=?z0V2XGTMr=BF5GTQW}_-v=*{T73$Y%H}AX40NN#F--gn2wVEnN%aD18%z38 z>1dZIL3|R@tkDEr0lzX|yLwOBAx^f$1qblCj72__7~W6_h~5f)>uxrs7z2lnyRP+$ zuwkak(OC4|VG;>!?G}%rM$L*WWS!Db#5>tn&T+qe3;OMc95V#B=kvftxMy0pnERfy z&eE8Nk1;+`)(oB}6gwM9`U?#w&;=nEjPp9WUJjLw8la~|Ta05iq*QUl{It?-JD%EB zA}R$Y35K%dnY%nEL^#Y?imO4ty^;GO*mZVCCV5sbW?*HcY3cUG(xx0--cKYH8moLj5R`|@_i10=VsR>VrWGcB4 z&@K}7=CqQ2DAB_lz-5SMZq0@Km1+qf&gs=ew)Svoh668^g`&Tttw@36f(GY=t9D*h zAQL(*#uGIK6j$=(Val5%%&JvlKLg+iffBeqBt>H+(2lLF}Z^hn! zQMo&WLr2^pke zxk=K?rz$GXtE+%GuC>sDEUI6OXH-j%}~U)exg(bppn~zAW~0%)8t*W-4p<%Vl3; z+u}8OM%33G%r5}gL|44kvQ(_2iqIn?BaVa z_#Sf~BgE?Eb@9HZvuZJAl>|vIL`eI|38^sjO+O%|5>F~w%CwyMOjC90W+F2()0gDW zKBw`i?sJ43;5YfWLgfBP=rml#`v^59!k#*vfaCe22^?sUZmPNFE{PCzhYvU-LyGRX zR)Yugw?!?3P8?l`qG zHARUuLypOI*yx^XCV}QmD_mYs2P7Nv_Zq5Xvsgnf~^-saKa(OJ8I9`lu|I-Uu~B zy70du%w-IuPj|2+^uI&w)O=Z46K-3MjntrF!a$4d=aOu83zb`vCgolTLh?CIUK0tq z8@hQeey-4f6<<3>vvrWxixnCzremZeBR(ILB+iQkr_?(yHvNm4h}rt8dbR@dmdLrDCpg3NT+HcgW_0)T${M02+T;n z-`7+dp)-A{m5_~J%U}NN^k}a3)Zy!#bcp@r+gVl4NuPk3+EXW{O8@mg-L1f%{#G2| zY;!K5gC{r$4t0=CUJ@ZkJ^&}n>d}twjb*xfyaG;;#G>%d2(^DMhtatL7_$KgCc)sD zr)nBd7gwMYKBhAs8Hi}coR{i|E@x|HHE~X)CbpF&d{lPpOvzl7pg z$X0knrGFgghq6t4vF$>0v-M?HSuB4I3!%Va$Roq#FSJaj1HTfyyEMN*$*~N*S#Ffg zGr5tOBcnT$|CLrV9~~}EPKvjn6eE8Am~IXWCM0STjpAPwe}lLs=Xkn!wxT|+IEw~{ zHQE=&8GBjON<^V7B5{H)LgZlXL>7m+ z;f{|>`@d3Z$n{m=75O07)p46yA4|1b>)SOu%bAi{ildJo>BuQD>K6_Lse?v&K9+WT zMg0$S*EV+SZDu`3~D|4e_iC?b?E=ydv}`kUw7~C-MfkZ{cPy}hxPkh3-{M49R^Ps zp!5?0UI-f5A>3ufK*|=ifBlHjaC6!n~BRn1nJ2`3r`xpT( z2;P>HwMGQb2c1lo<#6Q>u8NLp7-6$>Yy4iYz__8%%L(P@STLVd*$IKFg0^*DGLEbqPJv@%SQGN3*J_Evv8ooHhboG6pmiX$Zg# zq;_2Wl+#5v8`TlU%W`D8zS3odS^@i=WMeqC0v0LkUEv)uxCYir-N06f4}{Ja27G4_ z6`rR|UOBsqaqD1iCjyfy+!1JHT>jka$#AhWlV^%i_-$xZ55I4_g8HE;Gl-@(pqfuA^Rr;m*EMyVGvJN``l?>ks``7;Mh;@@>iD()kwqA+4)?*{6E|Ak zg#j~TZ{l~h(4+h~Luc@=-ENwzdB?^55^RlZ>tIx5r)9+_KP$6wb-Kvc98s{1YVuq$ zu%P2nPIrS3tN8>2ph|24!`kxlx-)1_Cx5m_)$s!E356C~bIj46M`&bA#vS4)7$7Ix zbS>1r?z2}Vn4d2%p?yiF+gjtB6!mnR9n;_(!Cz-^y1O2S*n8gxa6AG-=>*8HS1>TI zDQZW?U^2T>s`s_>KU(&m-TOOxH~Al*UjFxSQQ`Kh_-{YHulP^j5_g+%-HpF0 zp5lN#<0{kt@aUP~LJEqb=MgrZZZpj@6_*%dKhK!uYWo^6Wuo^KEn?unIxgNyeg=RR z$3}j_?j!zUh?LZ^LQ#rbsXBtAcDlg8Asvl%{pY!45PVCdq(ozcKi)w*S~J+@}AbB^?b= z7~-SS|J|MYd#(82`@6e0_MczC{^MwKxcwj4{Ii1ouZq+~$i-B&S@#xcgMZIUV;eGL z>JHWguh0Xw@2r|K1(A@t0EJplu?sv)TM z8wM8}lk2iN5tL#rIb&lhQSj!dnw?dZphojU7%e>%gq+xj*^OW;p)#yw<2h@R&}f;J zTAE0&BlQGcntX{3D3!(2VW$FZJO%Vg`dow3C6PKblF5=M-uu9cr! zi@Vitz0YT2(}jpyl>uFK4fvJPC*jtjIKf-V_8%AJ>pG}(6s(Lmd~&WtmB|(jWQ%kN zex5(jmLs*1<2vWnYv7$DD6S~Eu{Q|HJFZwSF~8Hvg7jZ$?#W~78)1aPk0n}o#47g% zSH;kw2#z=%U+GNx@q_qt0lOI>#*gx`@L~Xijo3Uja_5Mj&TSCWjv{gpfScj4q(Pd_AJL)I9nX~;eVIW$Sy`vu@amwllylKm^^#?4VF6kb$9P~Tv>(hC8`>X1pvPid?{K*t}g*L zQt;Mux6X#hMQTq@WX?w9bSvY-Y%x51OMPe$H)j@L!Dla!P`@aBd-Oh$o$11q3ybVQ z85}YDfZFXWp@qDpNZTN8RD!CYMBo{_1&C723&|xI&8lgwM-g$)#axQ$9En=x*qvhx zW;YC}yDe9E`k!Igs^w`N7^IMphL+Dj;!NG*Im1%*Cq=J0~B+MT}F&lFy^BLu4-~tj7Gp3Lu07iSgLxf zgg+3HqD%x6krrBoQ5Yp|?--h+TTR5Tx0Yl$pGpV-Oos{4q4W zzIMGsGD+h8m^~Mu)55;1irBZRn_Sk28UwYJ6Yl1Vj3$&u!20_+g`>l^q23fy5n${; z36fgEbCV1P?1~$(p(6E^zl@j)5_tRWZi|~yZ14PdUp4v3ln+XzGuz(Du!72a=lb?A z`Js?nR0#e=ivJRsIHLvKy{DTGCxE}(!C$qAK7^0Mee zgWf>InBzAD(V&r$L@??&ym441Wf6RNsHQB`S`9{<7)XK=NkLUvO)jh&otS4%a3HL1 zC*VQk;zk=~+3PBdQ# z=Sg^?4>z?f3s%t|{ZX`svubgA7E@lkJj!RpW#P0bAzoUYQT*1b5iHTOg7-CXzvKNb zmB9N-M0gbOUznw_o`~6krO8XN*lkjbm+&FbBPGg7`tsTtPOwSkzBEtmhz(+rS?1%4 ze6fTrO>}MNGKn(~GxcSWM8sXfk_i{Ib6Ql!1@k(E9Zr&2BIz_rAaQ2oRU{7?T$^=A z#leguhIHD^iV0ara%Dv%H8vz(@m zj}<#$S^lHOf9>9B;s4&mfBn+_pJ@9(tOH2w|D>(wk=N&`6|J_M32~@eH7cS&qM?#l zc$ou;bpWZ^<^!_zNFnwm1nZ!$wG=?$}36Y;Z(&ONuMZ;4#APD@0&-E#3XZx$Me4D6 zX*kt`I?@g5JGTjM&Oyg)OCqqMwaR)2%bZv#6HfKH6${irkex=gS`Thu)=fd@VNOnuyyZOVXX;{ozj92feCFHbvG^ zAGK7Wm|N9cpf^b*5d!WPMO4N%)ndj+7n1M*hoG;792xe5h9^k|5HYQ9J;&P4iBlO# zbTza2+ugqYcSrx&vvSF@2DfUD7IscAjjMVd<(@op&|+@U#AOMeM6j{Gs<;CclgWkl zH(M*mWIE@1tCs9~aeQK1fH*^gdU2MAJGS29hBf`nY@B@K8G|IAVBtGQDE@Z)xjD`g ztoSJT_rs?@I=P}?#I(4`v)@%Ink~`ijW>9_Sp0|aN^|7I$)c3;s=pqVOL12lTc+bc z;*W6gO!b!&X5aFxWT?irC=_TH*ZL`2cNbIq4Yvs`gD(h8>eys4=SKIr6Bn1xN}a5) zM-sB5z-;z}k>%8nT^k6M|6apnF6I^jt4fvKn|N z;jSfu?>q*G{VI;75r-}&QXt9fIQ@7ftigfHpBm?KjA>#Sh{HNmkbREDZNPL*kaVccg+$T=3%^1%0 zT*}VPT`LGXf$Vx-aKMeGQ+NVo0O_eUoNRnSBmHV47~6h4Xm^a*C(Q|cVl9#b&`%Zx z&ptThsg||3$%?-NOC^ezjTZU~`|=C6d6D36K~m;6(Kq>89C&0%bEG&dL&?DBLlvHj zXe*>-yPsJfe!?@xOxzvbOD$G_E$=>WiyLycuo#)&cz%WzTa5MI{E-Io+Gno0nj&E# zFMiP1bsR+)DAgM+{UuRD14hnrY9mu$0J{x{4Axw|1a;Q;?(U6#m*1zcmm0>w!#b{J z(*+~G1=U)zQAIlko^OUxnZDr243fX#M7DQc_YfXCDGFRkil}l!a2DUX8>7*EjgKPLug@RtKM^gc+AJm+PN)z>&=Js4HSgY4q<%S5m2 zbe1D5qjVHcXao^GZO7{JfMKLTWk}i;oYAQKWzKeMA0*arL1kjC{Xyd@iIKnoEDw?T`jJ!?>&c`dP zUK2UJM`AO_f|vwtnTZlImg(+u_>`kCfKaWAQVl98U^W*=13m~6d??OF774S_h|ZhJ z5F9Xr1HsntNd{?$eqxeKf)sZ(3J;&5ST@B!J(B_7W$GhT#fiK|8Z~DFL?90EvnA4) z)%@+WszW_Q4tc;Yoq(%|jA|mH{YXt58hZBYzVb4#`zky)2f9{up3OjY1`k?Y_hJ{DaY&2BchG@$D%9f(I;h3*p=HO? z@}>3c*enRQ-KHQvuWy0H`qpy}*7Pq0=KI^SK!X`yV+YMFt?(jgh_a{)m$zU#tf>)5 z7tCe~JzGf5U?z02b$?%UXbE{_Uu2YRD4wgxUBf(8c){~KchmVs=~!xTcR zgWw=kPH+!K(1i^pBhlADR(_H{|ASY4<0z;LNX-W?h8;Dhy3ci_Y7HYhl&?;*ah+@0 zyY`A0CnzASZb%T31hh1Mw;(;saDP-0d1SyQXUi9tG};jHDwi0|pQNQ{B7eF;+@Jz} zcJv>NPjA0TeXCsqm(l+_E&6}=-p&pE|4iwB$M*lasJ~QgJufxWIVSxEeY7s=$IJ(1 zzL*2=RS5l?0QqO21f>HDP>dp3c}z;Pg$O+r zDin;*Ip~zy39Cw6(e72Hnm7iYljjEdLqwQ411K;h!E!jx&ei4JCb7ufIn8FHF|7#9 zLV`g~%NIFFpN5pZb0)svIBZL;P9*8f2>CG$e&=6bEAGK|>% z=;u^szMm!!`9atL)vo0^S#vPx(ejFvRrQl|)Xwl#L}2ZcD52=pAe||nOI}jOiK-g= z)1hCn-!+Jf${d=aSi|B-DRDmr%S#Kh7|*YY8@7@WdoAqe55$s>stQR8ACf5>{MHp2 zvm40`YyOAj|4a#P$2Ixh7yac@{qNqrrvA5k@9w=D{P$1K|2s=E3cr_BjrU>rt-Oy* z>oRHptyA1M8IJ>NIKg6YGRyO1X8t}K?{fYwkAg37_>^QjYN;oW22+%C1}14krwoo1 zUBOZ`gm?TPSuDx+HU_x8%|H?l18<-kn{ZCK~Bs%UM% zN{ZBFW5x+)aZOg12O-5a4f@vcb?HLRDg2slR`Gr#!MdCeB(L9&c)t;j%+WunPc}GS z%z3vYdDPL--seyM1O1P0;Bj>(i#?=y%HQ*=bB4?EKkn=_^}oG)_iyO`FRK5ovHc&% z>KAvs($v>@)YYY>v_>DC}4s`M-{BN^*`tb~N72h$vqSffs`nLBj zLE=Uo!5)JqjqA#Rz92%4gR?-QZEbwczQP*SmOo*tMyoPZR4pV(!D&zuU;_s+aX;0q zavZJpB`LpQS){qe4Lg12MnU-q^#6U7fJ^Luoa@oZ|Gsxq|NV2K{~y8Vw>0ZdYmLqj z0^cO0^{TYLrY2DP228e}gIX$J;)FxDB00}xMVo+MN0vG%f9}y3T}-%e9F=FaYz4RD zSPeg_wi>ad@lRr`!&_`Q^G$O!=%N(pvMA9n7NUhc1futVWP60vF{~E)@!ZfJl5n!Z zGVCkR&Zz*shkR4R-)6aJ1HSY#&~>@|2ydS+sJL&kIERqcEoEgMv>}URQGOgnJIHJEwu7m*xXIowVWp`#1K#Ux5EN>~GEO|F8%EzB4PYAtlQrF#w8HSXDPFZds`Wnv-6Y17_1YJT~hI9b(MfdZT4|~GS_($ zD+&5BNPqAX28e-q5IKvPVtQ!{l3Ih@K4Ft=n>4HAv#=O&tufD;0M1y(fm%1U#yrQW zp#HmLv4ptO>r|hY%rE&Vc$dAGO&A-6wr*wYv2{09I+HS>bVB@hE(l?qP{6u!8dPr{ zdEa7R%QJJ*0`NKi>wikrbuE87V`AF(sa)UfvLp!bWVO87T53%sSQ^=`deA%&JebX` zR3I#YZYmiwooB;kswmon(F+8*C&XTY(g!Oj8 z9i_khZE6MO>LANo;22%h{v3yb7IPR1$9(%x4oo8JrMpNDmh6SGrEMYS*vZXlBsJ0& zPbyhUI{3QdBIzwdB65co``NJ=&OXEoCy?`!K+Bu&@G#xtNM=)t!=7q>O9o_Dg@Sc2 zgmYlwzYVMr^;(QPH7MG}sYI|=xJHQ#2rJQPW8b1>gJpcTjkpykWf8E)+ssHqg%YWv7{Rr@X4IgtP@~Ll@6?_$++NC6iVt)lR{2^3DddIO$&_kl&gmZDC`xFv8?<^!8GVZd5sy*A0Q8;{nLjz=D$nB$ z4+=wSZ55p$yNuoW(h>&Vl5|ES8F`WyHz-f4JV9IG=uf4Q6l&{oi?T zuND7$_rZ<*{}-kI%eMc+GJ~mBsvg$)_+-E^*UkX&SP@)(-<*>#)C8z9cyxt3K+=Fc zRr3Y_Bm6W8P36r`i<%R5S5bKRjg8_~KAR z(lJ-{c0**P^M=CyW7Gc9aSOeZ9omPEWaFj87#IO9{NhTqBE7e&ILh z@?mT^Mg9!07vMm|5;Z-WWl)Bs_?0O^LoZH9q=M8HVjv>Gb1n2s(4WSC2$@uKdt0+)^Q>g2@X6F5Ac&VJPxj<#J%6oG|=eH)Nz?hvvA&2xbPLfLji|I&cv%~`G?13rx@A>n66DqWsCLmoD7B;f|` zoJhb$T+Ds8C`(9J2=`kcgD5~0mWv@qOB=VFtKkM6U3icjRW}7GN9_Mc7l#*$$KBOYGh|lM)Xld&2~j=o*|Sw(p$f<|(U-w*yy^GRR7|Tj%15l%aY;>halx)E!sw zeE`a&JVlWsHicmp3Vdc07dFSq8#Fl8H@xc-E|=s-E>xzY63*gK|8Ulr$n=x6C?C#_ z6~>Z|<54jp+H;;8z$Q=;83B_cb88!!d3$x!*mVR+q_4$FW4Lr5jnj7-{xnrrfsG@Q z2G%BVwi-;5$&=Q5l0Y{;;cgYY2}_V+8T!w;4PZgUolkKYXedMylrl3@#m%!MNQMA* zWt0>Y&i#lx;l(;?5#Bf03FSBsaGbfxu2zhw_)FnJ-ashe-89iaJ(4XY^4Yq=R6~Ga z)fB!z$sLi6iWzym-{NQjUu(osnWvuQf$$HAzP`Tid@R4ZMT+uTcP`+wHR|AAE8= z9hk0aR>Gj>+lka87C*YH5w#?0KqV$tgY*)awW zETu?&{SgiQqapk@c^awNG?tf8@lDEnl{~Jj*fy>7AgG3Kw@M zb-y{2VRoTmaL}e_Qs25_6n~n*z&2aUnu}FOU$yYLs{DN;72bF3lhJAT{lKBm@Hkw& zmFsFWYGqhKE3Q9?@QhrNIAj}qmBiK_`>0ka%!T%_?UL&q)@BXLs?(5gj%}^CN|56gfx_VBME003$)%9^vE{ zIOWi$HG*<`Ta>A26b}Ovic4@}6mDNA!vq0t`t2F%r5t>+s7<^(8fP`>jYNM)nse7E z9+G>{2`C~P=&@JpbFdD%Ap-zMC|EP8aLsZX(V7wkKB}4F9Ee|5HvO-a6{~dRy^(0u zcl!%5Qv+LQi!&{w0vL9&qHy8wU<3V465RZ8al~bhT~!uZBMT>#L?4(kl4$dtV%xpO zA@l>As^7d0#>02czPYI>f>s;Rb_l|BbZs zxmc~F?gebJOfn-~Jc#1Nm9CGADGUqlSdDWj1RC5`t+z2|qXX>Ag2JKkVHb?cCDlNV zrD%g+3%c`XStEkA?f*2es2uBe*y&4<#a=P;Q>}jSz~or~`)K*!ySqE>{IC1>cW?avpI-hC^S`6*|8TYcf-W@pX-=X7XB3~#1lxDH z7QkloeB_6vHX~o-qZql$R7I(t22HzOCh&7gN-lz3ormZ}6~iP7R-w6s*pFtC8mIAe zyvS)*m6x5IC*w$BZ5!qBe6nyck|f~}JtNu(6sIYbh5I76oI!taV8wDY2e~uz7_I$a zja`;`%!ZodGc6_Nr1D!eDPI-^TuL|`Qro6BHa8q87(OJ(&U!qjbVe_9>HxhmW2-K^Fa7 zN)_oBEWL^6ZNNp=_;8ajerCqW`uB?d{Y3xX z(Z4U~-&geSXK^etvV&hMlb@u03*`^T@uz>?+4eWWw->D&po3nT+-GKQolD?igHxPTYGug9R~f>=i)P$Eqj5lA=>{6pugxb9aq_RZJfQbgNWveq`q z=yXlFE@nPh)cV7sBnezZ;GiYJjR2?zos?Ntu%$a4(jNBd-vRxjgP;C}{{5c*ZPUO1 zq<{aXs|17tH(_ZzW7VInEnr-46-5I)AZPte%K7k4YB;70i#EnC zqi&KrUp@%tc!5+p@K?=3mC7k$AwReT{KzDs**w_N8bhdH?&sNzD_l*pVg^#Bl!Ua+ zvCDEj4*c922_x*deqBtbQcKI;6lIdmS?yOibrQiy`#}zA))M;ebHY0% zNjgYKmzpD$wO)`?&W0he!D%?iqAW=5Trx+2!xV3ps~qQc!Oxy6zn$pO&oyR*rY;XO zD+_+mwUH6gqtfkHLoEtQ!=d%!g~Ni;{JvoeBa=H3TSMTV=;-(5q@YW=R4z%4SLgs? zek>g6k#F4{F80RBcX+~IZMyO*n)h*O=4bk2+?!@WTggyY_EM{{;X#&WoivpuR>jzi zviwM?D=Q0{Ek*@At{^x;{ZLIsL(IniW`@I;JFkXjMMQ*=6Z<%#>*d}nd?}{%A&PVF zwTtKuzrcUKO7&pL0rt@z!NFoc(mK)=Qq`BF8;iB;2a!M={Mip9LFt2`B z^>vQpy`qKE5~QPIW~Wy}P!w&aeMZ!->E{Ky+81)m=aR*Vaizv}AyVKQauNdkAXBSU zZUbpj@mBWRt_HT;Zbx*wTX&`W%5_Y_h}KZGJET^zZr#iqPbUY|tcV~Impi`Th~2S; zP5RI@u`13vGzYqzer}`A*Nq|nv0^hC|P52 z7ZFooTzye=(_J^?)D_E?Ez~@hSgoX~#noNPZWf#vgkp?ytB)$wm;^={u8BX8Ed*%6RP*$pP0=(u z)%%g+dq?BdB#5lwLZxstBpMuYp+Xq~^D03)5Kz21Glm;G>_4OZSMQ}7om}wtfD2|{ z+XQ?G{^#CKJN|F)?oIyhFA)EsWVvhmKNJM0_2Iz9T!7W;f&lT5BFnFESQc|oznw`n z9$XbK$l>RP_7emgxSF6YKroxnv*R;?We5znKRR=sgeW_;)L86ydzRLL!HiVC8ef>w z0{&)RMqe(voSTy@3t(Xw6iCF$K%ek!b9l)Sko=(+aNL@S!z_642rVDS>nX}!6^2O| z45oE4;GBX{;-k-<-IbS^1t>obUTwB2FkeP>fimOp7fops+#;;Bw}Nth1;-R9NEPPy zr&1;)@4?k5e>sFAnFRGOPI$q0!gGZWUmsVC5v@lE^CX)n8sq7L#SLQ5vkE#c3q!(^ zF@$GwC~654Vq2xJT(850#RF3f2I001+@5jEG{jvjIJ(9I)=o%E+Yf_T#M)_j5n4+i zK94hw_;wgwmOrOOlaRlSBc|Ub-nB2+jdv^rw0g0`Qy?;s*fh)-`*k(CXczc)_ZLV> zQdJwG-Xxno#d2Kog5G3-H@)G)pJD!YOm9CT{`c;k2fJo_Uk+dy&&nN$|@)-2}GWs_eW5GxIN zt>>SOSpRPWURDbbX~?;ZEm=^1lhIj*z-ktCu^evknR?g7htkQ4Wm+t=h+VBqdQ*G7 z2nRPzr<49`{WlHI9*in1`g<3EyA1znw}t_d zo=D#bI}aJJgIWX_VPe7VtHSrg#<}0xVF?rXG1HpQk~uWDWO`{?Qc4~A>ts6S+<(AToB&Zz!(LWH`3EhTSYJx72urCZ zlSRou+M2ZFLN&Q@(K_kD4c&5}b~7l%G;?6WViGkGac z`163X9O3V;3k0WC;XnBM z6ZPBkMni=m?dQ!B1pssJCrYdOL4KXszi0+JR0f(L*2V#18F6Ec^0XPMdSb1+y0MJ0<_Wh${L`}XRQcm zH;9#%hsvaG70gTLPHS0R{!_uS@FW1nPA#ZK@wQ-9i8>-eeKM9*FknyVXqtsUy`4WA zSZAeAZX+KJbQBx!9M-p6gXE`R#W&o8L1)rDGO3S=k!{G}BT$=Y8uada76KKXaM2_u zSE&N3&AG54Bm)rpO}L@tc+5~mKgoZ&&$1eHAJ=+$!7%PsON;Kl(~R7Ig34fP)BpES z09Mog2YYwh^&cMG-MOLvpAr4<_Wpl3;Xg@Stm8^sR2U*aAChFy)LbyoK>#-6cu2>y ziViq1q(tQ&hXSGC$tnZ-9FOx%0?(wymDywyEDR_ck)>jy!H$h=9qZMjzSWB2_Gu3a0T*;LNd4d9vzC5cOcrA;&663X1@qk?5YWnQV^6q<7j3_&-5{lZr~rVL53W7M2Zwg70=Cgp3>H3sm{Qs$NAD(iv4y1bEJ-I z--UfRue|dG6&!NNSR(_6Q_q=YeLsI3ZCANXzOuWhrK08*%&WFRtPC3mSwK-7tT-@H zt9Aqttuk^KhwP?YAJfc6HtB4{bA~f2nqR9sc2Z%moS=nd`FU(sbzP$(iiYKS3_eWy z7Q*cXox)w3LaTjV`_?F?L?2QXOL(vZLyax@}#%woLkhodaDLrGow(79K<42~_>mMOW{FZrOE5 zBqRb|v#6r*cRj2JQN70#s~W`jS^Nzys>xRjbaC4fj}897fWl?_%ww?MguFzlpC!;S z&j)7RNE1cRD}S*aSJ3D@(4MA{APIKHI(a?&n)$=#JWeBHANvaO;gOe47UOY{n^gG3 z2?eqf>dzL+d?sk1t|f=J_q4RZ8$zCxNMy91nU+r6$3b9*SX=tH-U7exaxNW#dkNtYm92pJ;uSuS`rS~4?4q+r@-G0jf&xrH|W>I!gAN_W(!@@ob&Z!mh+-s+r-fqDLhJHw%t z;Z7F;YM2tI^1>y|H{_pq{j`B*Vt-o#beSG@r*dRSF*4AYHfh|%&vGN~iW?j%q_iB3 z@OrwpfKG3DaxzHUG)S#{ZszC3ajw~^7sz+XPKhNlF9@@9n6Ln!NMdoAyCjul^-0}K z4aGDhFq!fd%BWvrm$544D-AFkA}?+He7PZJ!;#vuazu|_{MhE1>sMR9qD@9STEqBa zwc7t_3^2bI`_H1(46uQmYX(AG&nk48{U5gehW&qc?;l zC$)N_)evOY@BwJUfeRoqa-cX)N5d>0(ib(C(|r#oKyw=|_X5~+%bft7%;#5W_|N78 zR!|4j_aKgzQ4V#0HAnR%1;wn%obx-Ei3^_660PRCXWxl_ti7A8nHtl zC#op1VYX-a;H36Fd8}xd4)ETp1F_XiH4$H!8RYDb#8Zf?daUTNR7s+?Hfa>SxX^t+ z`Qh~whG(f3dG znGe@zy>dE9jtl+|@pXBK*?=$((za$7Qkcabz*}`3W$d%{oC#i>Igmm)4TI~F<+G?) zbT=4q@*y3g(RBZB^f9?57{SRYSIDS0w}$ll>HO?gZ;F>1FD!rBroa(j`+rMqAQ;)W zuwpaOoMt(#D@<=E#al^1ky2hE7EVjhx6R`Vol%sqWVeX*6#;({Q4eBi!T{06oWbkv@>s{ z)cD1sybR%<;{(|-{0JLb<^T+$S|D6T$+Q|5)O$}hS!ls1o6gxVT~BHK3N{lJc~D=7 z1KT~^ws!<5P1BLGIT0~#ptEnXVr(WJF+J;r2;Y_vKiTdB-6AHK45*mTj@X!w?eEPh zEjQ&u*RyQ~l-56YYJ2*AD)UcF5)qH_9{KW*7^8_zQ* zg0B8Bcs=!qqd|SiBh(Y*-G`2lSumq_{uWBZfFo0sugwb2$mHtb?4MU*KqTqyMLoMsP29!=73#AmNm2qq^HyNO zxrKcZkN1f$62remuiP?XQ78W$4=Nm{VYC8%6)U0!&mCBZ=kW*K?(sPc;_GJBe=WZwN15PSL0hCtbRi5Q+cZPMG9vSGO z#}!uRbo_^^3);`Pew*2-(i^PbnbD$dIC1p9Q54gy<*F7o}kT$R4FV3zaqpwaRU7L59ggIebEtB+i5h zyR4uRaAi_*v>T#eulM!k!fBSIZ1FplcT))>krF3`fOrKpP7I^}YlajUYOql1Dhw1g zm+1mp?h`|ebahuBEsog|3?O>mmVrvybNFv?yVQ&#L+Sm24;8~%)x&ymMABdH4`z_E zzI%Ug(!|ihKEIWp_LD4b2xt1=hy3W1QSwgIkBvW!p)ZrX_2#yzxC2vh z2Nuw_ao`(;r{4ThS8C+;8@N#CVOzGkk8IM`;Ba``t;=n> z-PS?xO;wB{(V z+lMwTmeW3ZJuTnEkz=k84lt3-)NiGRlczluWepJlWBNC@+*Scc-VFGeliZ7hf<50$*P;e#KdxseC4~!* zsy;wG0d2w{N&jHWdE1?#^zPnpXSkcjKPvzyEo6GbfJ*Qq_y!=zM4PBt-Z2xEkBNN|h`B05TLdEO>Q+aaO>^nte?0mAd(zZJ zNKy2wh61%7ksV4kxZCyXf_l82iXj97+90wKq!Nyhje3rq_4P4>IO9ju$XO`b7mJU0 zN=qr%T3Fo*nY#h$?>#HEEM*mN@cpW=>MN%%G}0(eB#EDe#POvoEi^ZnO#gKLpOxp~ zBl>@KAMD+~)53qe`(W=T|N9g9e;!8V>vhw6JyJqT*1DBwm<}qW))&7UO37xUFq~4y z{vg(MFRBIC?d3p07#@j(PKXHhSik)nv8+XjK)+Mg0%H@K`Bluu)|XbGWomeFXlfyH zI}NPsotE-1Fs83=t^AR`X9TY%}p=*6iSm`%;u4;?hA=9%z9$=TrpD-J_5Jz<5^{t|hEQiIJt zAmOJm-T`( z5GFY(4TWV5nCXUujpzOz>*gT>O}0iYzV0w-MVPR(W4(Yy7g3{d0b*e4q}5V4dG9!% zDSXhpI?W-ut5?M5SCKeQ;vLilj`7tbn7`5Jdf&1*CI&Wfd*W(H2r=nF$?H6y)*be? z+6FnW@|R1@7!md1cAhiRK-yeWq^kPbx&|> zX>Yb<+guO01Ej)ENrkqx;C3|f=8aZskcuJz^iO2~%pHP?HhnF4GUketW8WeB>kpAb zq+Cg&U!|}mYZa56UIC?jt`FSlC-?iwzx9*dyY!F#ySGdK_T!5Ci1XObvKt#R7c7SsBmat}=b_<0Jz=UVwt>RAl0i}}P zqNT`~w&VtA42J@18xO;ZG~vXpL|y~A)(YLGKjBUyPVgif(?YyUqe%J_sn*1MExVZ9 zb<7fZ*=(~qM{_&f~|M~5c@4q?x&woFB`XiA& z#81G+$MN93VA{SNrkxmdV65kAa6TjsDZF5QE?#xC891LQGb2VI^3F|Fxh9ylFdFdKJyOyJ~2`Bx)!KPO*n z{NB&WU${yd!`J-W`*|=J@IQJaCC2=-OI*>+5VflXJ`pDeh@D5wcF*~ZG;)8DSj19` zw2fC?``NkGBBon2$*jcRCKoX5OD$zjnTzhji)Zbd^$(i%}s8IMKZn z2Yo31jpBp>q8Y`z?{k4Tc`7sPIS(32M}9Gu#3Me{&t|y*j_X0dsk8IUGNp7W?cs!~ zf3aC=lJ`S?V>>0x*5>*;uDIq7-H*(bnGYUKMvKYR>flAXjIY;?B(Oe6x=7nn@0+Jl zb+ z_gRdha$Pv>gdT;I80=CH)xp#_KGAY8ss)=|T_-Q4%$|e)9mXcVSDVA(ZTf#LpJ7kM zmK4pB*kVs{t3e@rOIwnkLu>e!#3Kfjp5!oX)?*vU2>77^9%^*pk^Y(w+Gs^p3sR%z zycuc^pjNWiyrV)f`$+^m2_Zw0!00Oy|J&Jy{p4tjT;dshCYhwizF->5U{P{TGqS}8 zv!Z_O(ESYolt|;t)Q1?li3L%Ifi&S0KTl`XIUPE>a&Pz&{zdHMA!LtKJgv{+m6rS8 zw?L<2e&GEu86ss^+$-~Q6%QbD;ZpszLIx;t#=nQsg|Rn>jo^~gTI5miGq&>i?zbl(2Zc&Y}qov@P;(lwKS5fcFbw|>1A&F&+ zDNFp4^_r^R>2D;K4 zdLf8wqss{&*0%bL)CDPn`Z5SDAxVy;@n&?196q0I{^gfn0_})i-qLrP5jD1nkApOsOz`^_*w4`(1NdDV@TlR>pfP3aQ{E*#}Z*fV6X0YGfaO*6-Q8!4{ zwakZEuNrM*7+*F<`ko^&B*ZHZAzX=Tj^T)&M2Tza`YDTTLlFTtOX3;y6ko*da?1A5!Ke<=;Tq83_T z{r>mK%g%>~#2(K!#jRRDnemc^J<=r_iep&75c$U@VA`;T&W8?jQg$Q8N406;SSG!`#g2L^B1vH z`bjqX;bmyw{oh<+F}9?Q?$ES;@0~^gq`{d?Ej>Kobew=+!{M8W9HlS~+t7fcW_yNGg{aKruPMN<&DO2T3-XW~Zv5i8AToF@_ALap6N>OZeoGFTjFNPiCs6 z;2d!drPMCkzKK+TyCh-=rESr1X?vERk_#0Toi0jSLgw&U3%cUS>Mt)jG`JE%afhp6r`>%rB7D33yVwF`K2 zgEO_ZuUOuqS9+$!$^Wbq=+Loa?8Gj(m=*gBxZ6DmxZ9KGByl|>iE6TfGcyNfHMpp? ze4(q)DN+}Xn!{RA869Tux4@jmQqIBlh8nry+pNS|}-DVrtFyK_~=g#oTg`dvd~jQm|%lWK$xn*eZcc zvC1gmHe(@&^9W3%0qCQu78`~aVyi``+vs&$d_V1OiJInRtvPf;qV5dEQpZjvrlL$% zP8ZpX=uw^_DZO?^ONqD?nus|!U#`03r2th64yr|{I;gWFn5|#oGm90Mw<+Bi4JwWa!J46XPKl~3I!~c6>2=Y7JKmK=i1_i&r+u8~Ob7#S* z-B(M;Yfpq@_TNeGZ;CAVvB)l)P0nE|L4*3mI&*EzMY-G$d4|o{2&2NCTqxGlgTSjI zvbqV#5~Cs&ocSo9G+F1+zR|{g>^cyrSMc z9grB$6LlyiVr=Em)fEi(4E5$S_LXwJV#IK{?ivx)Eze!OalBA7CY(~Tk6-%gWi9* zEwxaIb&a=Ra|1u_pVS+qj?2$7!!PME7HLqL@9?5L-rU(5&Z|TA#cggZ<|n_~a8|7U zv4hvu%R=mVgltvLf!vHec$?g~n#6Yc$zXSjBMQ1M&xowHlGrHd9wY}?PQ7~F;=xkl^m zntv)1{*{{l%{tAS)9g>;GixkR{3EF+ad0b$eh}HB2&Nj`BJh=!0q63Sjbm8GiyZ#p zLQQ?p#&Ws~rN#-X!)um%AGf2?#JWAPKm_D*&XFp@P3nq;Z)>FWhM*8M^ z)4$$&^sjeA|JI>@y?-3~*Sn#AADI5d>JI$NSbqT{m&JxazrFoLmrZ2l?QM~(RiznZ zOfuN^K49CskpP@|y#7!F7s9s{?qzURO%pdOkk8YzqiRO_WJFwKNviKnrM zh*JDaQqwNAB}+9G!=92e6{&M{IZ7Bi5HLk2QnC(Ml~##(d%J5%X*eod2Q#gsSWi)Y zEgCDE54mo%A_=qLY$~G^#K_;CWs8~@p}v?LRpaPUv9Z!ZpG%~ep-Ic>wcI+9{#`l( zt7)QG-4i0th*)ZBgnRRdcHk0or93S$Vb3%_Gb379%wrp+0-oOr16s_b(bEVRyx`Qx zQ__>0w#q3Zj)CO!Uz=uqA7Ct z&MD(ltjET5B9HfB+kWXM@PoY2Zoz1od=^)ghQ=u@I(_AQS}jvBe(X31-o7}U6_psS@Th$X>~Skh zW;T2y<`1JA#2c_0`YA?g9fD~>!{4x*qNvBb4tCfEP zy`U$@RrR_S=NtSl0>&{}Pc{2NhFgYl#?L6q)Af-8Mt{`Rvx8_&-! zG``q*RN#hZUBj^+)V#1U$YNa?WX`{@eB4ca|F|~~pfUx2T$S%IgA5TgVt1>ca$Zp$pX z1q@w!3}8V4;o}zNudKv0K_Zu>^NFhec%#`>P`$(j(-~h?Lt6}IZ>KHwk|PI z;OZ6NlOicO-T*AB*wuTym~nAO0RXlH3#pXhf_2ruIjagrZj9FOx)8fA4op-&mbmumzgHQspw=}!_MqzMocesGDDD9^RxvslZOSs`%w z{X(j=6Z}xp3(si;I*ymou!)ks3aNx1k8eXkZ|yiMi$HSKH=2Q0LWf47aAl7)TT zBudDq>(pJ(bJ%n_qut4YY1c}p5?;Wm15Fu)Mk6GLlL4IG1G1#@5;nT$1gWGExGK;p z9jyjZPh8KAiv?B__Wyy92z}b!L5i@%^;jmK2G{riu*+l}3#}J2C?ZlskQ`N)%5pNg z*9h_e)=E(xx6{CYy#6I8+;pY>xa_ddQn`+zw1Oz%>!MubtO-er7V#7i62B->f=U<) z7lgLODOzDdO6LnMP>#o{*;%?9*BXMpe5H&Dt$$Y($7EJaDs2QR9j>-fuur3 zdSg)X*XHt$=l8BVO^MqH#5UsQc0y6lR3ETe(+8KwM}H69uz-y7z%{Vtl znztgwJT3T8(o+=uJB&fpi>#TUQV@HbjTqthl6%XZCuoSGYDz3Psb?sFb#$SEYF~si z6E#F}as}0WQYV80;BuZ7)Hx$wOvf1mQq(P7MuvIyG|%63rFmW>caZ!45SfGPlOF3w zn1jF1zmK_}pL6R4dJMm3N{bTJFj0e zK9!)f=ZY(@T99JOTH2e%&(|%2SLDvPo3R@}}=@0Z~gCMY%91;bOo-tzF!10Ouz#p8=A%m9o zpPp<);)nL?e5GOk!&6!#X{Floch($#d{y~pnD)1VpTah3-$vhl--_JB`XozE!{IR8 zt5=eYrM3%Yi(P}qi?*vvCW5zl4qMjhK~tgAH~X<)HulG|q8Fub1v9Wa{)4YO9!8y; z=@DpR**qI2P83(a9*f?E2OWqqR?9b%Bbm{ilWS?FB2&Vcx9P#WzEu^IITDov14s`^>`dCCFrr` zUhTahiMX3Ol8y#yZJ_U72&P0DKs9lF$1BcVE0vBqwwJhLw?^&vYkt4)p8rrJS|_P5 zZZ280ZrU84uAqUAnXf_HiK21RoQ}ZBXY@V1>e8Not z`_8Irw2ni_aYcI(XVA}IbUyWzTQOlMVqAA8l*nGR@GQ-9;LQ9UJu`WpGlF1ZY05FP zYX!yuOtz;WO%6FSj0%vv9$KjZTR0Pec4Jf^Gh`uv_q-8EZA}p&@_fQT_}dx0o&pBE zihUGUXHxu&_U~=eu7?%Y>7|xwFEIraIE)Lplqq3+N>8Klxp08E1tvKztG>xtu09TC z25tbfUeV$2&3-)x=n7WD!9qfkoyUJfzMx)&s#oznOxvszO5%@US#6|TqLK6QgEnoFI#^8zH3&o z+MkSGi8)&%n@lz=1c}az-T>1H*U>Z-G0R1mZ?q^FYvR`|{gt&5CKYsfz^pAU3{$K>T!`-fU7UOVRXG3ATYwRucA`vIt zjkrKqEqUgd8CW=*4kcM};*=mK)e%y=1@qc4x^fpi#IxxMioOu_TeT0C89=#oAs8Ba z<2-{39ni4%2)nt@(G^xD!1zqE;0h9)zq5{19;g>=^cPboOiu8F1Z4;qL!Tq=V3;0B zH7JzsXqsJWl|f>`^>UIQWJ4V^Gf1x56uswLQ30U49T2uvO-ZS}4Jh`j*i_2^dl;?4 zdQ3s=(e;aJqY+UdaYItcb>An*go!l$u;2aggEKgCPy`=9v{B20b?`{vmTKSrh~Cu# z7kGJ8WHhnKp%A=AGs(Y3Ba@dE-FHdP@m(xxiC+rN=Js}Qt`)0-U6MF~`Dif3(U-{$ zlOJTDh;zti108Fk(M|A1_Mi!(JcA{8!S5;QVj^`F4q2NK%sCX@y~FN#pB<)94D~^9 zTP&1{fe$@OcUB706^A4-VX+BVAX+^UoC-G83QC5;@X4irK-zs+*qw;mdXCNx+byfZ zLAIBO-9Brt-}8DnpCnl#D7;)b!y%?BUKNd{NelR@#TPGR!i@{!)nB<)_1727Y|RMR zlk|t{*lauPu`g9hlr-5_SMj1;%X<53bg*2-ZhZT;52p!alPMj4Cuo?~r2$5H8ukwgC&js?i|9i&)J(C}aK>{~xIg1wUBYQy?I?H&P<#-a;}dV^o#a`)nB}fGZgM=U z_!bb^Z%ht1{KlVP0cyg4zP>ng*45zLUi)mK;Soj>AJ9<%5#H|G6XEWq4r&+Bl*7Z@ z(N=@Xx+gxY$6LtVwSC@A>Dtjva8yU^Fqq)+%S@F?;?0y-HdLC_3KH40QLeC3CP~M< zY|Tx^ZLs$wX#`e1VU80|&xlR%s5L8(FF8iio~^k{NQ*oP;VHB+^2@%5Ko$tnE0ox2 zANFIbsXA(^@7~ro-ZAm}4E%GwM&4fGLbFXSh?#d}6`EMeyF0649{ZC~kdGK&9gbiN zn>}^6Cs@=*LZRmK>QjC9trm)xAAUdNk8!?>$9lAf+PIb;+tM}Ez_xU`e26)-bev9i zrv27-X$tdH^Sph4iC#kMqT}D!tV(BculGOM?Y@MWJ7^mI?0{)>7NX$;wRV&>i=ScJS1xO#DC7i8zUXTc%BmF+aAv7#Z zw9Wdj;9VLv3Sc7x*F#WE+_I_yUxU`Nk}6>AhyajdJ?t>QU(NB>;bFVpky#4$Enu@a z0cfi07^tN1^Uwa#dDZzKM5ypF?!EI#{zZ7&LF{^NbNj%q?7Rr>yIAoUHW*t#fLmP2 z_qRm)SeZJtgq(YDXnQ-d{zvc!F1EM>0l`3^gQr|Qm*_!~bP)v?K4*vplIrpMp*|A7 zXE}cD*W{PqhxtMAtM1|jZ-=1F!u!J8+Yv|NDM;U6kA72qYeyK$(`w=|x@$U2ShBEg zcuNmDEJB)T*h`%#ojS#zuCw8Pzye^3xv&Y~s$L=frMD#hB{g${b?b608wLk4CS)Gp zSIr11j0=**O+R8~Qc)tT9a&8-g2)OfViYy^5)q4IdXo)fX}s_$CtNxIsY@d7)pJBZ zcO(=DD(Uzl8O^FGFEape=?7=T=%u#fsZmxfma1zi=DS<9+>buPqWA59_pPEvn6@T) ztg7pIoO(@$P&&>yiZrzaej9Qyw`26Ft}K_{3}KLYTz(U(Sx*Hjt?^7PPLTn6RE$w3 zPu8B#aOyzADk60S+$6NpmKSSKUo~R|(1`@c;aKwvj&aRK87dqv(a~+)r6{5w9v!}- zjE*G#$NOiP4f=R0PMwXq;3Y#eY|yIgH6IQ?IV)d2$zHoWRePgn)vtXKZB2MV1VEz( zyRqNMZN#Tr<}Bde0(at2iF+t(C_Jr`IX5%)CesCj6+4(S;n0$-sYRtx04E>$3O*KU ze43YoT|0Hh%)N>lhpx`^u_C;oO9IrOB;CC&C2gCU9IF(PT`CP>)9@hWy7I9Gc z*&z5?FFJ-FA44NprP0-+x!*57;yEOuqR8`vis=Xvb(RTi?~hh`c=;Y*YxRy`m|YW z1Iy5=CnRdBDO7#!DvVt#Bs!eayRqPxBIm#+iieLUfvB*KSS?b5EnyuP;kujO}eM&_-=& zK}%Z^ew52>wBxer-c>8jl7R$ihnGDO7}+j)R4s4O2m&J-8(hA=5W=m~a5QP(+srSw zUmG3Uip(}jq^{7CBWqDRo)li8sepdQtvL#`-(0@nv3FgDzI{8bk@m;mb!dKS&I%TJ z=oTvZ*XVnlcH>(&(4al}so&fxCpxcb=n8ghwXr&~Ic{Z*$M9{;P)*u8zNNw3-W(s?hTYJnlb!wm}8aU9TD z+3cGTrQE(7YGMtpr~8gSuQaeFYDD7)2Wo2L55$)*mp@wx*P~|1R+~`ZfOCeE=Q>xz zl~NOkH7D#7SFXh0zyOaY(+-*^uB4h@gFQ z&I?kf#ZWS?veDou&p79XAzbGD9_h)cKN_jNh~UN%0;f2>0FoA6wFSM%`f0$pA__}Q5-ISerfz-V{+Tkg%aZ{>xD$lPP6chZ8VY$SXM*N+}D~SPHUplm#E+mat zp|WrH?netUg!;y%A``14`JOAmf9N8-%+0njuK;1Tff;X*dWX-iE?XbG{VH4^KkX+$ z$xFi*5uaQOTqIh|rgvYY(|64kf<*dd*J^DB;#!|)(Og@W0@r$(*TTIX(!oX;oQ8Ag z72?0`;J#|vahhl5V^}E~V{O=1mfI?#F-zx^Ts4?=IS|6-v5h6y z+;l^FvNFc8-Qy+4;m9MbHmJL7VU((BTOF4J-HH`{Vb@sV}r-)YqR3wwDWBpyJ}ZeU4JRV zd-LJeuvr%tfpU#aTe`CDCi*3Pw@$1axA3ZW{V)y<;RsHtj^R}Yn7NOyZAT9UE$B2m z@W{h%dQtR{`(;T0k%SKgPjy8QN&HaQR7VJrZ1niz(7eR^(H&U2^;q}LjgCW99NM@+ z0Fq4oOuT#&bgXfQqtQ3+CkDB%;M!MMLoq40r0iAx*Uq6Y#vLZnxyUNrf6qY zA*(7)00|=jmdX-4=BZS&tTdq{N+h8*!_0ljReAAD2L+HtxL9sP>{Gw+ODDuPV2!Nfig(5ht9G_>Ynb-o> zkZRhpu3tLNo2`Rpj`Gh4w23$tnhMj|pdJa1!N6B5OnQ)-qz9Q=B@yMsMK-wYxaxyw zk2GXY#Baf}YURQiHkcYzkDCTnj+h7)c&|8nY+(r$$upqgcJ z6@~ant3$H3y@3ULofSt;u}ne)N2%@j?(I?jR7N$ zj=v?pE;arCP?!w;0?6mji1|JUpf4 zyBkVx`jQl#C3*RaZ#nR{uZnbWVpXNkBTm$fUfN5{6Vg$3L&|hgosov9vz_&48q&2J zF2;sapfM}ZxRP(WdvD@<^8L;Yzos{EeYK(g_#Zn%8-<(9{tp}Bc;(E2J-^4Qm2tH| zW39nRFpekX$wf;TPMa&F{^tILhesVO`~69MV&4qns0^1rT%p)u_q?RHA%VUB!C2e$ z!crZGGmB#gR{x-kb!W8OL7PaHD?!-q-a5ka0`UlQkW0Hds&+(XpAK?^)fa9$&3{Q? z{r*}EWFZ0qyN%#F?de>@;M3;7EI##Z`e-BG|E4BbjNo9sq(A`G2~*hbu7ECAT=LFz zyyoQW)3q(p=?*tNZvY>?S_by{ACmd)cV^ppHn55PgkvP}K-3JiALv|ZJM>UodEN9> zztRew)=^RefnoH`nO9FWNvm9jqR<`Lpe18m=XFM4AzvCG1;t)Y4r zc{gPHMUcem1&IZK>tY>MB9oL^m{z#f3gxVV2!V|-Bl_4aM4wZtt&>r1gX==+d25+t zbXqt(gY7AJ)_<)$DZynclgl7hwV_s)1)ie@sL*Xj{vS1SgqsVKC+vJ%sk~_NBN%bp z#n=4vYK+=nWxhUJEQ3QnaGV;^UzoH~WT6sHr{r>NL#-B$S;Yc z+_$KNtiGsp0-PRe^(x;AStCW*a&93vIfsYmIa4oOUo-SRLg&wh{>}(BS?z?z?LoGI z0|Tm(Bf1k~KCp0Vc|ux%3!z)Mw<3XuhnbqQHriGb2ISr&1jIDN(s>!S4X=449$@PYdtAly@p-?)YnZu?C9$9u0$wwIO-6BrG^xePSe#g9?HjG?i4eT?N*c$c!MDNqg+ z5tiA{L2iL;+o@j-iPQ&yj)S0Vho%deM({%{p3`VccxL(76_KSw|4ggZ#8*{pg6h)0 zTBCUEi&6H>Ppcd4JCdoYEvKc7tlMGiPrJ*ucW1Yz=;#WeP+X_M(o&*lP*r4*IBfea z=dW01)>d!2YOP#Ws2eNNXQm2|7o-ZJr|qALi>f}D0I!(Z6q+IeH~GPM7)|9`D@#_Z zFmFt2G2&@ZHbbHtK%ob>fnA4Wlb2c{N0zt_@vw&4O}Wt}?z_OooSEV>u9sJ{en$n- zOibl?yujj~E$ZdcirrD|>72gI&I9iszafaa;RA;IeMpSgI%Lm>x<0zIve>B1S)ux& z*A!*?beXjkBxKnT&V}C%sHshLj_N&O?fJ<$cBG8GhNyLu6SkCge~m;A3k~Vwz%>2>h|rsAMEVD{QA|mZ$JF_yI0@wY5ltY+WgzE#{9SCzxqkde~@{7Gys&8}yHn(XT?#fAnalLfw)#Gqu#AO0-^D~RSWpi{U{470by^;{Bm~8L} ziG(U+>4L0x5Y{7J7o+(o{1ON(e0-uGdq(LXMmoMqt-JHGUbGkESAMna5pxxb@Ga{* z$Q=Pl*x)jCV1kX3i+c>^xQ;PayrhB^4nMPd}1D?kZJi|8QjnG z!*FK9z1eVLfBbsNcr3aKy%!qqaO9}F4czHDaBq$Z^-;Y~{C#|*Kn z`z^m6@S%Nc#=%YB<`s-C=%(vNQ{6K5z~7^zQ>gAV^>fFOyuq87vIV! zZ;KQc(RN+ib5(gJqG1UX4k%Ur^NqFK_Lre&zBpTM8hg;w-SP{n@;2-aFMwT2bzfE@ zZP$ilZ_8@U_x-Ek^N-e+wlgE77Fr*{YnfgnbCnYw7oyejtjUk{9zzdkUu%VdL*&Z^ zOeZ=F5-xot!O)Z-f9Ht|kD{WpAp(L`%GGr%ZpX zNe!(k(Tcu0$~K-S4dvXnDYIpAN3aiM5lJC*j{L@MZ>=^ztLa>u+}XPcsHDZ6hL8h& zcRlDJ_Tvs?D_!3|0seX7Tkj7-pGa;`dOpGk;<=NX?{iA;{6TpCZSr$}Y2NnEp9NK< zt%J4pfJu{$`<5J>bowp5RG^LU%)t#=0PkFU{^+@!6Yo?JEv z@dG*=6~1l+$JdQ3os$3-&Ndvi<>#SrxexDWCS)_OXxZ$3@9{CP|H?yqneZ1i-rBmR zV~YTv2_;X<9mRN-KsOQ$Hx<^6M9K7?p3Qc;qKwQp4gPY*^GcbC-YLJ}yWekFcvHK_ zShnS7>G8An=4-8>iO!u4GQLO0F)2}AyFy6)6@fS}1K~_k+~NY*P$zrm$`v$bQsif-T%(b%rzIT05Y^O5TFa@f z0qy{C+oA$yIc+j>c)=hbhGqJ}xIV%2Fv<@Ln67C7oRsaUH>c0dSF@w#O3igv&=3(3 zv?M0q4e;R?<>K|YIh$n`I59KJl-dxL>B0Ji`Dp8BuoJbA#Xx6h;J5G<8)Y>?C_i8Y ziXt!g&kgx|v&f1a`F~gbzLdYOQ2u@_f4@_o11#RjTFF_U9ben$H0ri9 zj^F+A_U-?4KQsMQh+w(|P4v{u4Vek8mM*&MV8PVdd2Wp&tAU@ud`WYU8%~=A!*>h{ zQPy8%+sUM!w{=TTTEnO7qx>(cX6b_T0uCB3WxX8bk2O4+Lkly_0>0(a7k^;Kpk;2> zVNE0JR5ndM;CbK|8)wC=gJu$&Z?j}6I@<^^4%8i#(=}hzZ^~sgWJnLbSk1~7wm0BV zhn5V41?4{Fq%1T5A}>a=hXeV0Ab;iH7eAA~pUA%7lK=lCfB#$I2?_`#pElqDY7vHood^54+mO8 zO7EFpSL^MNP$BGJ&j3YB_&enN7KoE&n`t{A*5i*0Go>d%S88+C3nM)oomNVx^rhpb z`IGbkhnxSt$KSK?`+z_69{QjEPx{-})`t2z?88E~&MM2%Qr|r$@^JRoYS9eO>ah@4 z+i*_t%in#@-6#?nu^5CRrb;woH#*H0-W;VBK^52NI2`Cq%_-*catUbw%$sVy+@_2w zW^U9n>4Mp)XO6NLfG2B%Lkz=_lQ|OlYqaVwt8xMfc4>p4WqyG_GH>B3B$ zYFqX~U8uTv;r7yZYS}%Z1;t~wGn!Tou-adKeMb57YH~b`$5}5mNa{k1<7EtT1WI(6 z#VMmEH#izMxEK$5^F6i1FM9+2xvcLgB>gZSNDOIF60|uWAzuqfNTU%F@9$vE{R{C( zb7--V9@xrsv;<;2ox>>j%qhVZ;R5RRsC$GkV~GNzx6@QGb&P{GA(?Md&ef-?Ta($= z9K=WfTlY=jZi>yCI!!;LKPlm$di%^r~@X%pH(d?wgO~Psix~PE(L_}M*8d9AFe@D);mFkI> z1KY+z-l5d1$Ur3;ZBTHflnJSK8Kzh`g=b!5akJ#N#LQs;HCyo`_{6 zJ#7W7>Sx5SkD~i(xn)0~1>{tNA7;{NYD+%LNnN&e!vAKVQB5<*xmJe?$51>U+%4TyO=?0bz`h3tzFUS73~5gQYqaYCUf1vT7<7p z>t&nHKJjqs3*9%rS$66!sijK0=z84DNr@NDpZF)chg2_<&`NuohuLN%^4;-qTP@?v z+LwGy6mk9Ll~u&U^sUObhEl$bX_Gt$*G-!I@tuFh!}O4KMXCr#p1M_UsE9x-Ugz^w z9YMyE1i6mo&%WNvi+ATa>>gp=&!F}3tqZbp^ z6PD`}qXkjT?rZVMx-sJ?GmBMm_cthz`}AOt!pSthdH(W-{BYw{zEA&u@)94?ZtxV7 z5j&5)in)@Z(s zIeFb#Zu1?-RlmN&n0vT+1JzM_adPL@eTzN(-B)+tPf&N6_w#>#{`AX{u1J0Cp6>4I zr*r*5esSzw9IJl2-6=j$ugQ<(8sFO!aS}U4P*#l~J!)WKfU4hE&KfF#P^nRK81vhL zpLwTHx&$G1RTsOa6UPoZdXU+S@?zSItH}sF2e1qB-zXW0Cp`gSA3a!M8g#+x+r=Ph z9&*`C`i1uE#d9=tmAXM-{HePIa|HKW^Qc@#Xz^K>Dsv(VrWUhpIj`vDNIk|-zb*|y zNSsbQ9*I+R?IPrQW|H660u<;t??x!#qqjx+maPeF{yV)EfUt-r);vnPvGH!%!QHN# zE5<-1M|CX>qDP37040$TdiMR_wb$9_j~qAAy__M;A&w*B%B7wJ*?!G-fQ+(lvdnt^ zgPqO&a7fp3VNBptFz&C&stV8wDQjje?%llW?}n$aF+hG3=}s_8eU zmBy@#&3N84;x>XMc(-Gv+(k> z$1k4!mr?Q_R-gNldN0yk(4_l34tm=t&ipWiJ=pTT{+Nep#dRbbH(%3M60?Ug%p$ym$p(qE$XobdgfN*$t1^{|r0W~?77>xkUV(=ooRCV5Oq6>- z)>Q1PTO2TCdE2qmj~7TfSum#@;;vQiW4cUMtc%EnR*5@aG^lom1Q+2lGQ%0{VQ`s2 z?X6Le?zjZ;6S6yBAu}JkuGT$kG;iLVDKe@r^|aaVUV2ZhM+8HHW0&}4=BlzA`4y}9 zjUal#R-UDlqJ4S$l`QFRM}VwTNY%AMK_4C@R&)+yId(*!AbqP zqL|)Ty-CFXq1(Ok?TmiDCCKe-J4G-MlpS~Kr3dVU;kQd=a$qg_`1JziSjh`aBN z@~>+6*E(eoua^6S!%;%V(A?5NV$B6r&|~XRU~@Wak(wl|dPq1yVv)6T#Gjho(`lNq z0N=b*MY?cHXg$MqLJraFJXBuo3|~&=YNCvmrsmRHd{(`wttx6812kMpYIR5*6akoK zAEd4ODB|cfUvggQB{G^Kmjg1%`g{h_&zyh;IDX(Tokx-LhL~HW8J}A(rS{8-!8*UJ zk6sg1fki~lGqc`k-Or|_t==upGu$kDw)&<7RsO588 zX^$3BybUAlE`_AaX+at?e02>QX;jla>EXCR9aM7$0vpx>27C{`S~Sb%sF|2LF2j!0 zh+zhF3TC{9hvyz`P|wstk47CB?>MoO0` z*V~Tgqv-%vK&ij@l0I(VzWx4t@8z35mp^yzy?;Od5BKiBfBVjz_us!Q&)vRz@9tgs z?DkKw04sP*WGFwh9i2=b{{L6gTnA*>gJParIgb-sMKH(?^t%rmOfni`Aig3|IPQge) z%CccBb^rJq7(G;Qj=uAu4M1K7KUCRT_(G^Y1;zwR3WYfvg9rvn@4*gb-SCiv%Wpe*QNjUcqlT<5Lm-kBmP&Q z|L?uur~h}~d+#0n|3{?%$@c%NApQnNuhbWmHsz>@kXoA0S@u2>y>s|F25&uR;Is-oCdc|KGlI|L!~b{|`t1jpV}~^<&ZdDI&@7gd<>v;>3&`Ot!=g{;ZWl*Rq^iBpNIP00F9I9&*fR5(0ApM>@fKWz;i@U>hcH)f;RkV2Yh(+rykTM5 zH@^Fkn5H2Wzhj&KF8P1-MF{^tsbUL^e|JUr4)j$@@`nW_{V%X=#bvtibIuk`# z`Lp>kE|LPArnWW26Y#TURv(oUge1T#h*U~CUlTcl&Zy8li1{HJIb78fp}ysDH97By z1DB5$D>A8;wdK%SPyrewX%4AV^t8$7r@)IGrvsPqpioAV_H%d+Z<}=g&}-3a7H8xz z$fT)fuL-!?tQJsDEgz=MLm{*ppAYj`{{@3ZmNg4owJZE8 z2M0MnvWas9MhM4}HLly!N|Vy$bNJFQyf6Hf>Py$i=Mp!`Q1e5pcW%G_rHY(%oL_OOKQ8^} z_U?tt`-7Z6*$wNPY0|12wSS|S*TcoiCVLk(?KzNt?% zI>l?Q;5Vi3U+5U~Tem`>f{*6bE!K^E5b|dSal}mJT{c5T4N*(%6v8=OO#x!S0gl+Z zEmCMx^H%3tcUP!4g4U*uLKYm=ZDpyh`f^Y|k|8N_vL+cP?F5K$Ss+%M(H1&cx1kkQ zptjlc#sUFgkcZba{7!vD8Yg1|v)tX#B`9h)1X!`!@3=$7U7=k@KF zxg7VLnf=TDN_cag6>QChs+}y`;@H)H3;BOFW1-lghEe?xUT`7(zkBcQ{d;}-|G}Mi z{-3|I{NLMt;{^`Y@dMdG(vkU(hUlnMPBkQ%dH$s)%k;Zbt zPlJM63lVOILC7{1^vEo5KH=OZECORy{k2N!buE|*AsWjuOiLY}1pmndk+YwIb_RIJ zB?}v9byf{9n^q|OOFhIJHFTO~H6Lo=@_fz`Z6Vd0>V!tvGdW+TJ*ocXzyF^v6kTU1 z6tWq|s;NQ1#KR{+LkSBest@;vR>4uqP(O<^wjj8nOjYana*>9;QxTWL!zdAuhu}cz z*NPkycgLBiEy(G@w3B+lGJrMKy%phKL}V4K8Mw7C)KOUm&=^F?m?HQ-G!|a4ErX2` zrQDd7f$FkLf*m17?M5))c}WTRc5ox)!)Vm*2|^nuO{rG1MXtwG}?Dr zO<5k9a#UE(Gir&5COoY6>g9&Zl-wF__^BN3;aPcZVZI9PML?{wo?!SI|Bvc2RBppD zE0_)r3$v+-n&vV$%oYamzK|yhueppypMLo`2hn*b_-LxJ`dc%%aDncPt_lvKdK6{Zrdh+b?!xv9PX@BxOfAG5( zzj^xX@uPqF@BjO+AAkAy*@G94AIU^M|1bMVo`4lCMH~G=|(Zo>89%mB9fC6*!R-M3OLwGSMJ(IxrKh zw@YKIOE;!)O_}qoxQ1=qTjVb^BJnIZ2yMs!jpVC2OvFME&x69JUfH%{Z6f1Bqr4cJ zKl})OxFTkyXd;j;O>{c@#4%7Mw8yC6t7gICuA!$Mt!BTDow|SOi##r-rsj-j;LqsuR6Z8`y2@oYCJsttK!uXs#bk z-^D*o>ces|99M7l+U9t9CVdXwCN`W~PRpJRLg+h5+o>VMSwDMGc-pfQI}CD@cP`ZY zE43=D4PSMtR;97NlF_aXm0VNY*G#rX$Rf~2choX%CuDEVE3GvpcSS53?J0AX2ah3a z;-C&^)k^xE0OFJ83>f<>efkYBQAJ|gnKWlE$APDs_*}SH=4q~@WL=VNw#6oLqR^a^ zHF_^g@gU7~S{DJpCK;+_~8&hNP(!usF_qS_V!$2gXoZNv);q9)Nd)dH4G_@9Pwb9Jy7oixfJO$r}Vv9Nyr>5uP??u_o-E_fACunu$$Ii@T! z7queGZ$$?-4!apIrw3F3IdtktG5La7uLp5_JO0X1= zed@gkDwL|+%y1=)o=R}FTQlM+{6?Oc(B~%va>X`-yu40dZnmoG&s6N4YaX#8xz>s% z{mrRJCS=O6V1S&Rqx@rt1~OKAvsLZPSDe-&VWg&V%S0!Z9HB#p)|(hHgn?Q)JWRe= zwnv3Q8XEc|DKUDmgKn%WA@XXkSjcg#6$(!lb;vQr)^{w^ccFYAoE=ElxH7QQ_~0pR z?j9K0VXDokWdD~{jXo)p?xZSOxI?>!OB|9ybO}-k&jxkzjICo%8uFp#b|aE&ZD)qu z83mI(kh3{0ou$QILk|_RDP?g~uxx8^>vC2#t9Ej3tH{{1#L5#E)E7Gn#n3nOD4;NS zgT&s4ZZ1;wAIYS!kMVvb>u{| zp&&^2H?^|fexufy?A~g&u5*d_0Cu>fa-HUY27QAxch^n>=PxQa?`Wd%JwFm9Xi+!D zh@khIwCdx=*&5mwCpI^q0xpY&2`q!zAk|{HWHIx*Ks;KJKnyJUd>=eXzkheuzmHJK+w3}#kQtRnJfdS6oQmbHVWRXmoERKlFVP=*cHndwD zqKJRQ1x zd=7hqH1OW88kVAZZk8gjqse$T0&^I@f2x*VdG&tm+uj-HZ(8rdEW$z^cHZA*p1A6c zq!QlQxS=|kSO=r4O~fAd_|ZonS(7YNg?;|)>9bFtJbLu_OP+2k)mnVZT-vvV$T3T^ zPiWjM80jc~s*PCA|M}d2my+wpRr*SGECj}kYa0`dl;%s@(F0c4bF^<1@!=vGC>`?X z0#oO%N+67!IVxqa-n&R%vCRWNpcLV3F?8u`6e`3H^$%`xV;fwP;!sY)RF^>8 zvw$bUd?e^JVK)8M3OANQpwr%jO0mj=Vx$ZLfQu15;_Z5!1meQbm*OGWa#)ceB;4+wFPA3(p2P5GZGzqzcG4S}7SDO{8Ez573Su;J4BGQ3b=fg5R7=x-p&W=on#M6=NG0t0l(<4u&vKGmLK(W+K)mcmBu=lB*+(#%aA6LNFEXC`^#JedYmH z3cgx`*Vr`m7sZHxv72_Rj(SRHIf#BhAgiNqO~Hz29xK)0HpCNpwAYek$a~ zz>ZOfST2HdJCX*9K(_}puG@sQSs%^0e#buSuIsG9mnhY_O|CpzG;NSXVQG4PWoJ{q zvu>(#TU|Ha0aAj2$4FDjW$lo^J?J%7_`*v z!Ahenw_{C0pl`EMEV`>_B$aDEz5HAIAxQ!<2*kDBOPyfc?j&oe6MW$=?7&H!k!aJA ze>nRvfTqn(>!cU6x}`RG7nbW7pYWkA#>YF~UOg5ekn~UTx4YJ5vsoc95&Xj_e}9~i zV@T=kW-&eHXeF-R;Njii+YPd7;__C1f7NCtgkI`tBpOx{F~LOokiWH=xyGlU}_#b!g-+M>@|E}@>mv8@% zi2rm^zw6jf7e4K{PY$f%CUWw@2@fZr^x^5ApAh{(o-;;1c?O|AV#s-w*EHdH)^#|A(UgKNj{=2mS$6Z>S~L zm2gK`fk2d)H_#zUTd4Er)iO}>)+FWQ^9|%Mxa(b#pTl}gTU88so|bT|i2%F-0BY+9 zjZCVY@QdGnm5j%tfzppWDre_l<0k3jC~q*>NwzlU!4AD@MK zNBHfqPLE3r218m(D7oi97@()V{ z$%m#4tipT(n!ls$B~*k65oaL)&_al{2GGOR(Q0~FE!@8V-=6^tdiKAJ#7gjKxLj`@ z=IRzIZ&?YSK6*5qX)=sQTf*k!b~;NUh)(}j0~|u=N?R?LlgeB>^aZ2x^CH6G@)Y#MV#9W^JjS~D@vt5{-K{boYt)7j_UNZUo-!bcC+5ZVe08@93Q zEsmX6taAT=t`dfBgjaP&!t~%sPy(&zV96povQb#~A>f^s=NhGhNPSi}k12koVJe2A zheJ3O)yqXdBtM(`$syc+idJT)?4HQ5`j0}t;5+<~DU1947qDmQ+U*~Bl|c@B+Zdmh z&0pVT_oBlO7!k9UA`~bX6{FQOTS0?Cq#NuTs)qndsacfT?`aLmkZ;4$DjdcOJcWch zm=_aRE<3$eCSJr$bs*a@wZL{QCq`>5XpyE*9Gx~W``Q8w;!DSqdTzS99$UXeC7f!M z2RsQ`M;+ee^~%Sqax%2z6HfwbWhux^JFDeOQH>BjU?yNharmLi?NBvHL;)U6@BSoL z#Z%0J)t3%%d=YbI;_ZCsr#ukAnARTz-;iL9sl7O#SI=2|CElfA$Oa@NZezR-$Ud0Q zC+8ln$B^GSU{DssMf209WWn;OY=KyOSq;jvn-#+ADD<*u)MZ~F+ zZSRltsT0(-3vLPEq3+hKs=W|er)JrV@I4Gfje42IdvM+KvJVXqj!p-??!F*X#EQe6 zZYskpL1I!u;qG7tfrYT^waGkMXDvj##gXe=6tcG--Lk?@R^JejV^Q%!WLkZ~BFJk; z%nu*2>P)6T*MsVN&^fTuwGGN{y@)`#uHe5aIWQHoH@dP-;RgvR6yb^FG`P+jw5sKq+VkoqjPK>#6 z-Al_+YHSBUw-OS1CKS6l8(1;hKri&hoK@v(4@I3-k@*Z=ssUq8YYHldh-9wGg5=iwPl zNli=Icx;BkECRuzQK>SthcIvlW>s){pO;RD)yQQ^zvuELiDOYsGK-ytw0nG8>%r2V zp!^J9zmOpnos?W#jG$14*}kKl|1RkNj{pICN&Sxx*5kkK-+kx*|A(OeKQ8Q_w?8$) zHVk@_yMOxBb!_$$Xo?2!7O3J<1j-&ZEcLd1nt?Q>`2=cu185)-ZUGj$=pf!bY-YlC zw$OD&@SG{ht;cmUMPh^rywh>P0l2C~9}u;q1ilVbH(^$fo_`)0m2#+#F~zjnFhQMg zFZdXpZh@P7qK%zF1!^~Ql7JQy5yCcb(-<;M^l~>o=pcO)``v03y@3H(=Gj`mDKZMA ze~eXgsZzKY&EWPdRLe5&4_4IBV`aZgU$?@(QwciF1 z^^%GZwfW-)`0;A_h}CQ~sV;O-$U(8uF!=*V%`!DzaXYZ0F^21-ra9C8L_eBWAqy-S zSwI0&@QTuNv5}GUOR9XfYw?;#q6;4~neqT-ofTC9_J!#@)MR%Y|AEzGY3;%`Zcy!B ziwg^=R|aHa=<0}-+TA(uhswf;Lbb#|M&L)b^L2Ts_XAkIY0r_ zqiwqr%;6Vii?fZcpo@Haft9isHJF-#@vrnM0cyKxCYBXm9#_sTg9nRB6e;@561TVc z@E+t*O*Di=X6!2b*vU#LVRt~S1u77}R=qVbKtmWT2t7@e(Ul_$KvcAG*AEqFLv%R> z+2tVdfyJ_6O6!%c{PJ2hdYj{IlMfc((B$CmYd6pX2m9gP`zLVwqH5>FDmOz!e1(0dW81x){Ks=QtL zpXOtX@YRn}0pw!*_q*@iTi5??-+k{L{r@THKQ?6}{ zZFfO4lw20;4|MEiaR*B+ZMnzkASn9?ER7cUyg(d&z5wdKM1xiC#YyRc^Q72m}} z!?0YIjC{fCht2pLL6cMYAmZ|F`o#39g1`=g8g;hCFJq185z@>(IP_Oy6qHRg%3@E+s+bA`vVvn?N zO8M>Nx@~AMhm5|K-_G@-U3(Vg+3<8Zom{(bA|VVF2Y#;bz}IVmm2G9ffY8|fuA*2B z0Yv~Ls9Af3M@AwiF6cnL%EQSNuJSnU(^Z}Wp;>>~6gk^=F`i?XQ0L)+3IHa}n}&Bs>oW_V#G%}w7E3Vk@Q=M`wg z6&@KO;%gYOC^x=BtDJ1=#xIHLG;}bPjgRz-jBa{lQ$FDEs)d0z49e+=2J9Pv#il1k z7Ml${<${9D<|*{+B!!1M#njCr&{2B<0FAJsOw_$Y*7DOp?roKi<}B4 z9s@T@YUUb}!iI-Lo5IcL(V_S~ooP-ZoFph;S?Sm^5Mgvz?Vnnnw}GdDUM2isL0+ z^oB<34QbA5>z+Ur*Nh?Pgv=cR2)|20ll~2h|AJXTe+G?mPG}*Z@ll2A2wyAuSO4n- z&7=2CHCxn2r=T%H8ICI!`RPAHUAgu0&%G~W!O;F&${IS<(gsUa{NzLyTGPkq4J$8u#*uGh57Sx)8XDA!O3o%@a8#^%*9U|XJav!tBGyv z@DW?@=!gypa8S`tHkkI-o=;UF`kya&R`fhQck*;O9s}|73PuApP>xJzSW`wXDrb4w zBdXMF7chHIFL>(Z4aHKvvNR0I_h=zn!Ys@cW8n= zchW3}vu0UtHVt&X4#IMf;V*l^5A4ZGroV;Ek3`^pEm!Jwwe1}FgB}zSYR+9z2p=)@ zeW;-YSJ4!B`zNGvj0PFgyLF{E9ZqUUMaGe)Hogkq?$EKXE`MSa>p!S-KsQo6%Q3`^pYZgf#&kdU(+Ho!>P!e;1Ts^ zjYah{aw1W#m784f90D9JeMl2S+vCb_^{7r z+#I!X)mqAGn;t}3QzQpHE_gxY&87kN0k}5~%;F(5QEFo|UEk=YM}k|@JSOXQnB-ZF z(L?I+n#(tRDo6;^YFYMG!Cvj|;qtT+F20(z+m;lbr@HHB>C8}d(Y~}4A94C3qQcNo zBe(1`^=-thY|udCgNjBh$LDO*x8!a|jyo(OM9<9E-@i?aIhh}*pa!arH?CoNONV;7 z+rEV-K0ZB~4;=$$dvnJNSqeGtn}^*|V(heVapl5J>c5uTE?tmw<6{>cHl_bApRcLa z@j?G7VQ?2TyA_IJcr}EK3+~}+20q-DUBhJ3V6-ZzoH-28&Reg?w$k>Snvd3-Uw z?kyycrlKJ+OWR?nd%AHb3lYnfl{-a**zyF>Z!c%Jjdyh8O#a*o?bJg#Oe?+iwX$SM zAyvy<*6q>BpxkJnN=r|{y4=z%+Q1p9=j^1t)_btXVCA6oT<=Zuv0??byt&y)Fp3_) zt)t!YrW>p+R{A=xLX!q|$OYz?EpM9DCS1sjJm6V%oW>em*O+L5qp9x>;nFczS`UOq zAO^9Bc^in43~;yF@V}evwr>1iCpQ? zQ#qBT&kBi06f2UPtd03>57OF(0qQ~x7G427RIpb-ljZ4xxaSw211m(|Y2okEtXoNxjg@zp{`Ew+mv@1ht0`X9YRtGCX$}ckS zH08v>vZkSU+>m%nNE3uUbwQHQ43)|z$P$YE4k=zcqTXU0ig&Gbm>)N*#im6XgepY= zO)OOI^89K-bA`N30;DgkAoRE~#T_mLRFqR7BCUF)FH8un%3L0K7qiT1RZ1|Xj)(}P zAa25Dx;aYE*5-26&1x1K_Nr4UOiN*NZ92PYwXrvCXDCD7^QCeaHbdG~XBU}qSO+`0j=rBBoijM7HABB6 z+(6cG9Dd6S@8o%XH9;D)!l^Acu1lN)+aNUoIOOac&xy9J)xS_ZrJPr>*1W6)#_8Gl zVe5Dox-$xBhImes!H26kD)haUF#{#}Unl;DljFTD!9L$h7rc!Buh;*$eed2o{{MHt z|F|^PYpX7}1_HHF8QjMF*CX&E^S2X9QrCt;&W5`Fx}HpgT)?Z>5du&mV^U4`JK}>q zt@*T!tK*y2-XWkfK_x=%Nz!isA(eP-nT+MMWTjiB@(sz10YCQMCeRYz1d=2Zd&_{M z0cwe?)6+7YmXH|HSYIpHK%=!xiLM*a*Morb{M7JGdkUaIGuE@tn8|dsGU^hwivu3I z3~c~GMiCIOB9Q9w`>caCllx<}u^CTv9V-Q^myrnS~b+NQ#6>Noj!uV>-n zXGEbrHAWun25Kc}6TA&RQ|nbx2N7f*nGuLUr&5`|h3ejBhYx7SvAUa9piaBIXo{3% zCr#TDY4zdLFJCIV>-Zmh{vH4SY4|_Lk+9_cmS;)2)_(qpT;V`@6OxqJ_bOd#D<8xp-5f9Z;zU zV39}_tbnbe3or7MRkjO*pV$VjVZ3F@+|Sq&E)9EqSP)}o<}YZ>P@ zzNeKFsSShPTZG-9GZ3?P=Rm(V6(=`)G__?m=P2e%oM>zW$BP3%INA)@Wv~%wVe# z(Gfhx&CzNav`l47ZGP((0vCC3Z`}$^YC1|v5aEo0ad>eAJ$1FKv94O`D~?lq-mF}8 z^$U^J8`yh#(~3dhYF<(z3M^T1Nfbtr?|kuSc=zt^en;NZdhT(sUcTI=QP;__3>5(D z^mw%O>@{bkmAhxWLWcl#pK$t^pOS@W<5Ag9MQv)-$MHLLQRsrA6uW2x`)UMPEXs2{ z3OPkiSm!fD=gViZ`UDDtn*b)A--tkkXam+ouxHvPQ^~bMIIv+>gu2ZC+@LOi6PP6m zHvpu5lz#@>0s7~OX%)C`KND%7_{w7z3Qn7&OL2Mzxu@Oerg4{kE9y~^|Ihy`FI+Ry z--2FbWslC)HH1SfkD<6zNEaU%@Z8wzJ$bc(xO*;H6@K_XgWyvrB}Lf5Api2SX9IJT zb*vU}*=a*m*bF{MagCNd4ADx3CGl0WM2IR`tPxj94qFj0>NLa-RjF2pf!g=U9WUq% zQ`6ueFM_{c#{30iI3Yc;demVxX+&sy(G)U#?l2@ussjugP?7Uoj>FXJ>B=x3Q25k= zl!~3yEWAj(MR*Mi9tzMtxXlJ%j%3#&fUWDJ=3Qgc4`r-hHsdPJ5()N6A>O>e2R?!+ zqM{G-7|bKH;_=`>@o6rW_%<)m+=4~{~xQxddG4t zp4Z=SC%ed2QS-(Dq~cu+vLZNSuSKp8)HfhEC>SX0{N$L#K2MhUdtk4FY@j`iZYg}kc+PWMN-VD4?!*Sqv zTNA>qmfLTdvp8DbaOco+55g2&L5*I8)X~e!3!=^*60e8;uA9WI4e4K_%;3VDCWXu5 z)G=7oNw?WX;WzPK9 zVy7QWrH51Qq4f#dLLvVQZ8c?^{Asg)HOJZVtN||kvf`d<@06G09_jYSJ#o`s7~DXG z5n3W zUiIL#1f9mR?=S^|i!*72`HyAnLdRt)(?RSui^(y&ri;gf4;VPu4saE=1w_?G%o_|2E`K?>JUs$k2 z9o9{7n*uP5i1uMunA-x*XjL1MmG3U}aM%K#bcuD^zhJSi@N{=o`w2U`ws8SpDD{sA zqU7nNsoMezQ1Gc^AGQU89=8uQ+eH~r50MR#>ztrJH#{5g+Z$*M^2nW2&@UiAXW-Nw|G*ydV2T4!hnR3q zLta5=yn0Mf6#41%n{6J_QgsmLVO{_XdM#We1MVx7AGVa%bqse%ug)cV3Q`vy;hVkhA%tX*To`fy`p_zv z?_uiWf?!lF6e>VSyU1d3?(Pu?Ry|StX3O)THb~rtsoawMuo+XFlU+g#>t5FsZ_Z1a z=ahV8;cg_PL6#@$Zt_3L{U{g0m)`8P&G8a-DTe{qB*cDS-ecq;qwJY^Qtu4!zL!^} z5Fy$}RR}2a8S9YAN*KPN3NaCKSX*`#1=)sL4OH>YVR{nDVrqq}DeTS>XbQ$bxni+& zx2m>up!McJ77!UUp#Vz;nyBQ?KwCW*(b^idRDJ_NbvCTEf+Bw8QHl*^v#LHhJ!}@I zO*8fwrL-fh6pP}QE~g~%UH)ahB0JUcJUi~0zH@hY=l$K0^8T1$Q}qW=<9Pc0RD=h) z=53WsERaSZt!n#xV3!}GB5jY_wXKhm`3 z^}Cv(9&I#;aSO)VPODtp8FZ z{>8#MK;v~vSs2n`=8GG*@7yRjCJP;rE69Yk!lt$_oMtj9Z1c))_^9t5Hku|<)ivz0 z5hZE4S|s&SVG9tNB8uD~!(Qsoc?udBxAZ;TQizSMQUE>IHUwR2HQli;P_6-_x}X^i zKY(jZ?9*zy!B3cRP;uvFa0c+enzdJG*E4qOg0lLmC_A6|Q4S|I*of84X_BGawpC|1 zQzKDB>KL6nA+0-84{!eR=7-?eAK!eHzf2S+{+6mtuSTO0K7-i*ib6khlEYBAhk7?y zM>SUG%Sq}}V8ld-WOd7ds=GTuYA>|x%QHS+Z1RNdvSpepW9#LawWNqe`Hp#`%(Q6S%QvOfUAT3tY|m#$ z(L#r%7A-#ivY~MdgV`%|ZlJ17TEhyPpULaX@|%OaD9_4zNi_uQbcDG;VJqC1DPsL; zJ)?nqzFLNT)^Kn4=EsupBCp`eW%M2h{TkiU@FHtwXgc56#aJ3tEj-4>8_Lb)o2DM; z){6B$qAFYs=}FA=1YoeYZtWwKoXlK!lG}@LeP~8%$@noorK#M5SGD;7wXf625Cjb%ppr&V@_lFl%=*H;Vcy2My(KIHEIW{CSq|*i!V%B zTAgcLDZIpj#X8L4F86shK5V{G50~6OxVRqh_-Ae@zjX_9H)1Y7F4RPF;PGr$&9hXE zLbX8)MKcobgw#xHPO2aPOBPwZ@#mYMuSV8kdu1 z28>1yp_sI^qaBwt+*MbP)BcQw21T9S)4Uf{Y;A<5)GU}%i;nTDz|Cz}N2gjk&`4OD z7a%>1i!SsqazR+XONhhBf~;hkIBl8Hocw#}@HE>M)UK#Y(9CKcFSE}>W(`COH(g{s z-EfG#t+}`;MvSf!`MD(?GXoKym$W1rsGLnOsL;4>FFHOgJJnX5$n?i7_cSR48SAuRD?8U=S174o z#~c}137SWx33o3n(|DoIfSHg2|Kypum|^qaz<5lxhk0q$cs1cI=wRiX0(PG76c9W< zJ%6Zrf_jk;&p%_F1Am@K6VJ+Vy=seH9ju#P9xy&eny#w9Ru(**N?tBUN;e@3$eE*? zcTJ#{llv#x3BZRbg5b{O`k_xyRTu9OJbg?g~GYM!e5O52Pcl?+C?f=gI z$N$@(6HhxiHiL;bp0@sPbke9Bu;fa z>;kuo6(RU##A;~g$$)sP$!(Mpb|#?7bn7t>?Yf_q6VfN2g`hU4nmV_eAV_=!%XNVH zvyt`ZPerV-a^xqbArm16W2X6)*Itx(EkTaGb_)g%hzTp5xtL5?cG*yFAL(qM+!^Wj z5I9CMj1NM9E6h`7>@&Z7Zg2%cq3g!|-KXYbu((^zJykCC`&jL>kJ8{s!ZEJ^0S`%P zLEh(pYkt+i_crgR-E?jFpl1+-Jk}2cB1Ki>P`{@u0ufA8P9^Dh76 z?~(rzPNnsZovJK=zH~I22_w0sT zz=4AQc#@rx2kg2fB2BV)TJB{09D%lo6kGhHnW zsBqC7@+FgF2AY)tLYibtzz9U{?t#+k)l~7Uh%7UtL)f}+Sz}=ekKd z1k<3HMC^+=gH5?OoXXrJ8uFykd@%~oVrv-Km9KveY&LYeC2i{(XX@veX}RVQf_XJ!7M??Xgi` zn$40?_Hh3su~DP^ft~}I-YHE27SvHA+gvoFnGZX&3J_E-9@5!mQ4J`YlVx}8ns%tC zOYRraRlW9`^bfU4s;M*2dvxLlDj$QMqJj1=(=}e4YFq?U-pj?Imk1|avI}|-^znU7 zf5gX*3%AKjyyJpJK3s!>r>f9N~#)Ya_n$aezYhJx#9g?c5IFz+!I*RGk+=O>Tk zf0!=v-#+;gKYPkp{^0W$@+)(v@)u8DeEwK|Gth_p>F-`VeEP*>WJe|OB0-^~oPkEo zpsTri>bs#Sx+)10n}}TPa&<@xzGHn497aRBux?|-2-=oIt_EFAv-HR=CST1Qr%J(x zRQ#Y4O}&s78O@zQ^D+Nu8H@ss-7{;3%QLz9LQpD`L*oc7u?!7AiFWFkkzeL=7zz1U z;I_nq6-5}XaXJ+@yBUvTIkF&Gh_g9BBarVbPglfZ#BN0P16me+4={1jqbP?2i%xPk z(rt(H>TDccfY9Kjak@g)j>M=y*_)Bjh2OybXV#2FYC(Qw2;*pv%Hv~39D@>RI17EV z438tDK@X1Ck}JZn-3zn5v80B4%w&;`Lbpl|CYJ+sUXE^w?8+JEaiC`r7)YMxx~&Fh z5QwzhPNvW{*B)Y2)=aM=}1%p+&&leUVD&k<&Ha*JT8!5!3 zhcXE5o|wI11UU;8i?Gx&5R3k6_{p?#c}OB2#2jT<8)B{##-+A`gD!==q%MUJj{Bqh z*I+V?3=3H82H!_7toeGu-4VMcU#fO><10i>2ha^7=U?35mdNpIrpeJ;i+>9 z7g_d|A8-P3s8-Q@Ax-mtM2YRsnj07gM2V=ggH0 zKu#ZOJ0I_<^zP!Tu4KfJ2*#7lhe8D@jbliy+U5dnberLz>&ke=CczAc2_dXmHD!_} zZm8;>Ts*n=x|qt~Bl3}U?1&aFJ9Pyoiv|Uo$V?idQO4CAxf2j+AxxR@qnhM&oOR&e ze7Qy+f<}LAU~eDdzmF5Bw-5ctk5jxi?tYST{_R`0Vtx1<*t~`TFpRR>$0=T03TpP@ zQz2JJw@{3CdL^?JRgoYI6fC1``YBuxMDf(w2SKg#0 zcVLLH1R@p#Pr_?aLwArZ-%SUX#ylph6D+D|@G{b`tzCR-(dY_gLM&0Y6uM;-#!|JO znROGHGcwi*VspYB`_=A2<}@9}>}`ScFip$XZuS_HFm=3k6cd4Zz}x)?O70!Ch7nj? zd>TP)(SLKtrE!Ir6cQy7e^fg^$UR5sS4k5qQp8g|kF{uKu?B>0^4fLU_=I z^Q6JZHVTF2VU!+)iNEcb{$MVn;tFHJa~#t^DY`G^kF|V0ribPpD*l1i>2ZqDP$Xl* zAc~W-5IHu^2e!7x%iguQ~H>N1D>{|rMRIyKXJlz-YE}}EMu^XyD7W`49 zx>iMkPtWl|xRjTV=?f~-8_sxf>lUnhw{FpJ#js4mITcAFhUoX>vX!f^@e2qQSlDg?>WxSR`1Ybp z9RprDwk$Ca?K{$tV|W)9A}?(Ck}>`6NwJyZVRtOS1_Am%701JvexFphM}94fCy4TuSCLIl@lzFYI$m7aBsB6?-tQdjhttdAZC6vWmGQnLtFvU zs3sQ8qBvGSo_m_66t)&?NYzwijit+UZW9dJG0!n~W4Go`G{+t7$`Y0qn?(`63BY zB7%%3$lcQbYg8GxC}WXizigJG$9z*L%Di0sEH$s!>Y1@ifNy^HWMENrfk?#kRSa+t zBB)riO|zUdlFXwvs)^?y?sURm2aM1Cy@%&^Fub}*VWD0^)rLS-G*k-!$Ox&Q&k9J7f^BM1_nhSF_Y(z%r zO;gvh1cPWyUaL`s8{&mfg%VfsiiDU_H>P_AN^AHyY&*uv(HgXtwyOJDb`Z6Ho^Q3r zWSN@Pd>k5GSI>IZ9X(t9K)C>sWw8mKmldHat3@@)7}9S>D=Z|fdrM>=gM+WQeWX%q zx&e_IL7jgv>*X*rIaIHl-g&@nZ=g#!3LWC27fDkRJfNDGc{GN3HieS2G)jUh3sgiDZM!b>piL#hJOznJ38$SB?-h1qUs=6N|E$I8yhERF;dC&t}rzjl)Z?J zD6wY<#GfRuxjiS$Xr!k%T1+kAzFg`A+dOWi#ng0+aol31!fPi8|CWYVrY7!v(qj6c97hc$WYp_&T*OI+-#|&kL21V(EOKI z{XOBBrgU-F6+Ek?jPkQf)|#(#gYW(F~|D1KM;5ygmv>pI{1e zLlTdIccW56zIH#imlU=M2JObP&Mii~!`hM(K}##?X9NVf@pd;I8G7&jI z;CroD28~jWkdfgoPQ_m)`ad#GfVwn3;Qt27QctuLn5^oi!Y>%4lxE==hqB$lW#nOc=>M#&9b_U3gLBQs?nFKFE{_Q+> zXP^SDH0~9TyARy8{1)@Mk`yMR*R)rDH6Ai|vl9;QrsMZ^!A_n8XbobfMvNYIF{w(c z^62KS6{Po`C}YQ61rqQn!?v(AzfNRNIfj3Sj4vnzwU$b>38CLu6FW9}^CSKhSJVp#@%Bz2c=WCT|+I`*t|ij`Cg z5SE9*=BIj`UTF)>X;;U`HIkgOm~a@Pc)hfli-P&5M8+CfjXk=#6$4;sQE_|FgDY7Y zE7b#&#UcVh)n4jjY(+z0>V8()>IIn-KINnrw`NDIPNNG4=Ex^o0>1CE$$Cqq6}C_( zEcAIk>aU|ov}OKqb)*MMsS=UMxj+bQ#qE3Y$T*qF1sg)1EdbZjXtT>=Q4)_X91pG) z1m!HmO*D&)w?~;4TY+XIGV1?XC3J57wUa6K1P^jdSVXj*24FMF;lZQxDREu2FOkSC1X@VT3Qw%uyWQ+ zPwEC?Y@0PB%yHw&x&)X+{20(>JyU#ufo6ExJc(1=X4!)TP&Zr;4JM1hCkn*v>8ibQ zeTdgN18b45k$9@XI!HZ5qZyOQG)Q+p5GHVwcF;irC%l4#3VT7?i0)B#(5_8_iIomv=+W@MRO|Qt48%G#s;a$Z>biK)0m}8TKe%rDqJd>S zDzfz=l)HpP?r6HH6rw^xK;CVLXlCPvNk)Nn6Pr{|5Oc}MTL=r{_{p{;Gl!NBdtiX& zaUC4NJ6(w<%MJiDvVp&u6ZIy9ceZkA<=`B(j!VT`vIW;$EgHIv1YKE{2$E@laErUL ztY%8MVRNO&f7xcrHS%wv)rE65==}C%tiRhCNk0@_VUWGm>v!WyA-^{cvW#OhgUnM9 z6>T#ADCu+uBSI)bI*y$iJijDF?MNFK^0yni7!EJgetshWXDi9l9HVA-1J8u(fpWCR z21~lN#dtH;7hvZ`{MH(fTcz(ogWAtuZXbLUL2m56k~Q2t$Q1pizbXeB&>j3%bAnXn4}{;~Hhn^SheSJ{JxZ0SG3w#g5`oDe#aM zOK{s7ec7kwU&{rPW)(T7i?5)?E!r3hw(0l+2;xlzRHU#5nXN%iFOAho>1HG`2zFxS zSbz+qL4#OI2&3l>DDI6*@R0X z95-b|^gw?BE7LU7X*2uh=MinhQr8gv<%i#wWvFw4!Gr~2z?BACliAiSV2s&z2Bdxk z8CBq1Pq5HMw$jqpmjlYpV&cB>EeZ>S7Mahha?!z0g65)8;P^<}%}lN&vvUFRfoBtX zfdcb?90rF+@Tv_uVCnSJl=P&igQ?`X>1IeDh~lIs{ln^<#d~pnlBy1B4scc7@ef}p zfKETG+Lo@+%=4a2#1@(bqaCZFpkJq39z|A`KoDlcN+Li*MCut()MU`D)(MKj$|w6c z9$lJTWUBcFsbt`eQI-bzL~D?f+B{5X^Gmp>K7|ZOLuF6^=BEg54;0ZDHE*+BI|Y+b z_RPrbP#`AAp63qiZt=$swZFX(%qUB~WZ1P5fSC($ywqAcL@V$#YIjV;xPY~l`pzPR z4YRgPo=OmEnfVquKnyx^lftx|fNmz}67rTFDmNU4(7PdC1XGr! zG2e+eJIcRUO_ueLQ`6n8L5feBP)rNXvdv zN^e&hvni}va8R=QbfaBS!vil#0nHEj$*M2i)$ijB5(xw-%p=N$YOJGJd#IOuTtf#(gt>DadD=1UwzOs6Q zRza>GN7Jc{;tGTXaUvV+tCioonFw}E_jxC-k=!Byx^9*v7bM1_CmtcZIYjDBFd`wW z{@0e75cAiKX~UAaC>Kd^WkTgcQs1VeN>4x3$n##Afwog;;QYee08uzF5$3BRMc^Xn z^^Ffi?@+#$Q>(&MK1vc+5ro?~Hf#E^8TH~vJR4pBU{9Izp4J7hA#><2EOj`fL)1w! zjONvaFrk>Oo9JD=?COx{Yr0>)xmL#373}8o+5)5lepHtyv!<<5>Po+}9fKmg2eeB= z^%RA)qHSN9Ujk|x>8TJbrjZDtklhJijKVVMU^KE_6%jjt`P>9v4aIiFTWf0-A2Ly^ z9uHyC`B?91NVdU^^~4xDK*woCr1RaO%kRN#LUJxSOd% z-v*=|tF?wuhWCPRhW0$QpE%uDa>^Q_#{bNfmFU2!9mclTw%v>`q#}W9d1U=#hTYc_ zR{gNV58Jh&QE@m274sjn)2s&(eCoEP#mO~kX3Eik7;HK;?`ihBM-b5#jAg70<%AQh z6(nv3QHoMKMeTvxceF$b^C;oa^16Ni^i7wmJV7>rMb-F4vBe9QoVvc&PU_2I-7TBJa*KK$s`ydqrD7=owbn1#65c-4gI6-#}sXs`B3K!Z5wP0W;D zO1!` z{}S z{#kMS<^T$6j@{BS%07VFX8E2~uy8|t1`apbIV!lQ6S+DwsrW=gdd4C9SUrbztk36Q zOCe=mo*pv~K59zoS+&A{ZvPimO*FOYFY<3Ybb2~rfDy@(-VLUi2M;6%TWUJ;GOZsP z>mC=Fw*`^zgw>8Qqi3KPA-}WTEh2R+Mtg6tl*r&)9n!63BBsz{vw9i@l4~%l%H?U7 z&@!ITaQ{1brd@JuDksTQ2Wb4L4AsE5R1Wk_h3mqa8COfX?Kd1PRiV9G%ggMGYDRRm zrnuP>dvv%}xC&J5Y?gU2(;Dg(bbc*)FizyJkN~Qh^_w(CJD`iEN^2Ly3P5F!P2kC( z{+-u$am-QmB+_!It7kj|h%JZ&2^iciLGR`Dj{jeDUi zI%?k{(bKTYij>u3l6=u?k4B+Q$s6!m7+ab*7Lw1tOvcYg@Mrl z(|VxeSdeDWo*gfe6;j%OgScq`8UfO|%_Jxqf|G#Xks~4u&p;l>Ad7JGnz$mB-(b6rYjoAcAM1-6KWJTe;ry|?4XEVaUxnSV?LHnbRu-HfRT)qjJpFO+}Gu8RV=t=^v~k6ObZMDGW) zYnEaWg`V!**$s6$jZYZjzE-kYD~L`-cmvi)7O_4;tg4CC8syz7P}E6c*GsXTV|eDY zp4C&vB`V}HAypg%XV62nF)-CW+*m!E-9^uE5m}^hDGhQ8VB^y4m|0g zVM?ze{v=!D6^G*J=a3OX#TJ%SblI@fx{X;{x6!JtrKKY^EW)F?y!=~9I~e^SkOVPg zJN!>v2zJTT{bg=n2nU*z1!mk#HP7-*Sx-16r8Fd-A--8>sA*oR%7-1kx2us=GME!B zbWo7CsMaxvb_i*Kj_`wxEhIPZ`^5hoKs+D!Bk?iyP(6=3u328#O9>-x0M|TZrfg|@Z=n(Of%kr_jcXeoNXv# z9-q6vJGf3U^Zd^H_Ch+?4E4ps6Cdmj*6T=hp1@w2^)nV(McLtUuBD1ZCicu1o<)mC zbq7+{xZoIuv_kBGq)j7zHcKDN8H9b(b9%i~;QA6y!zg<$olFgSICuvCyc(Yn2nR83 z@QXBuNQGEdJsLeUg`EW0V1Knxk(Xz4&^)-AJjFz_el)XIW9CMkm`()`XK>l1KCT#D zSI{VONIgs1X3C#J#R^rFnYBQ>teK2u+yk2p1vbK?s{-&F4&(S(%b!+5h4C?F_@$>8 z8qB#FN75UO+T-%3UU^%2E$KJ7Sa#0B2|<$IW=SfZH^X6UrXoU*|9|%0bvcgfNEe;o zdWs6n#32B8fdp@|0bAU>%CLDGf|6#&;ZRq17l0BQRjsaWf-uF1`L!Ql$9aZ*9%25^ zqs)_>%r7(7rK-Bo06~eep>UY!x~y8)yyus|Yh~A)T1>1=>R9WqYM!UiTW91(R0!`p ztHp&<>9pNbS}R%;Haf{fNCbkX(fQP2z5+U`Dp$8UMHRz&q1~)$YCp%g+a~^Fcor3s&;89W#NE-qkV%_?g;_q7-0FyD>!OU4*!#l8>T2M% z0_ukd#4}d}`0uv_l-d6UFjaTr^?F>*IF#E^GY}D+9?rP{oTM^dn*IOA_RYI@8utI2 zH}2fpzOw)ST=stl0BioXCCjg%uoj%@QDNC%e;NY9ieu6v!b!Ab)S^W8Ck5 z2GqhdJ52^t4uO&Ya$$MmpGC=zc@4IBNRso!fW?(yaho9!ZGc1jSW8F?rREt(XO+x> zt7>_IF!wC##DpU%M^bKKUNWSU|N0iJhKDD!FBqCxA^bV~26F3r{_{2CtR-vK=6ew# z-{(#w#j@JGa z(H~^;jqw4|9(#Te}0O89{PXl?yWC7{J(dv=>O+I|CQpSjQwShdj}feiwz1f-yfr1m{KT1 zIg;3^x)+s};TTD9qi)&_;CoM40U~(9Rz}I{Ksfo4lueOLJdGrlAR_ojEP=l}(22!; zcnM04%HhcY@{c2-AzGqT-YEeEKV?8_VHNV66f-lxE{`|Oy)J44W6`)dfp8F!6(A|B zYVn7Cl8W@ffkb5(w5W+{+jXGyxC3I&FqVCRbOH9nOwCIDK~$?wT}N(&~xXRrBEyJg9}-J+vN3NREKk=DGWd>|zt z&GI@No@_cPBo-`*+LA2*xpqd(%*7e<8wNVz%l%Mu3P|QRP&!5|91mT#tteU}R1E?5 z&tUNubbDFk5~~Lc*@g%-V28NLNIa_;yxTrL@fQo{ewwQTADfqA?}_5;avljzsT8}e zP@AEU((hPR`g@$GvTah^2iT5&9Dx-QWLmTOfZTlgPndkyz_}=RYMCOau~}9m39oIk%>Zml8J>OOHT6fIMv)uzq7JgQ2)Y~ zLIPe8PRu(s!0_v1DVQ|ZYO&@$xvvMZFDQ%C;dP_i5FKitZWrOJs`MLV)SV#+3mv*l zIag@h#bn(zt|_+m(;B!4{fkXc|E?eb+dx*4f$iC!MbceG{xdK?N3hN*5uT<0-)`yu z+qbUdzt2YhZ!Q1lW&;qZE@Y@qByb=Z{-_0f7G;>~6$}7j+X7HxA$+b`lNT$2c@E_< zF!9wj{~>#lA-#~=Z}jT3Q~QMoUXscm4*5#o|K;?5fsKjkCw{c{f2RI_yF>rK_2tbg z`v0@j|BmvRO6zeap!A9mc`jPttZw;5k~j!oemY6gH#@R{t z{V;LJP<;Vv6Jl?uy@H)>u8fuB9T_V^EkO7tk>lx8fE-51LaxIV&%(0CQF%cZD4&xW zS^C5ySLKWoajNoQjz|sTbIwhP1`DgXVAWCR`3IvU{;tHTj+wU4g0UP7mqbEUvVoqo@sE3Aod8x-4Nf8B(O_? zG_ewJD(?np-XmWwVO|)xl*5yO^<{vnmE56lUnPwRa@{g467L;ELmr zNhAzXAc@Nn5)n0o4_|gslKQ!4)mta9j2cBE$EPmA%04gpcGhg%AY5U%;P&`%_bm4L zEqnVzJ(piRM8>03we+Q%Wpa)Y>DBD&z6Nc}?aabuHB43j>;*#I&AtpJ(M0GVL{x$G zchtQtFHfwrX7?BckzB)5v>n<~-ra8RiLby;w@r9luOw%c)_XXet>+zLvs zT->BIP6uL)0lUfd-I4h-5!Y>~2B~0olZ!CbNDHy|7?7o4?&uk3lcd5+@JCFd^ z%tahayV4J9&ED`7z>HdqD<*xLIq2F9TUoN5Ipjk^%Md0hD2A47zA&5Cj$Avb*3XV6 za55>eZdo>|D-CJRIKztep>9FgIyMOw$zpviXhetaCoCZJTVMQR%72)>v>4S}&a{zQ z4U-FqgJdyHIxx-Gu8r zq&zu?jLmCR#ilt*gn3+YgwR;xQGngf^T>NkEU#si92MBQJFp;2^(v&wdl(SZ0u(fZ z9Jb~|{vDV^1@2}FAli}vud6p)G$V*=a&>{MvJx96{m3UC1}wmTMED(!iX`W&P+G?ZchyPVHqs&wLAj6m8gkv5P~=iZ z`I=Pk8C5)|MeW;>;T`7XoG8?oA>>e~eC%<~GoOKoIX9!dLzStOIp{t-9xesV{V4?LTkX8&g+Z$=DnTV!)BOhnRLdgY! z%g&O#TY+Zhkg2^${ZofI=G^jiD^%=EW6s9}jGZC>vEvLRiVn9@_EZPBx@>q>{MU`9 z{CAW7yUPFi4D|mc%fGr6K#K)`B0E4Nh?skv8B6W4l|R-l3@T+4u+SpR0##sn2#SRx zU@XG|H?M-8S4K|p18iG zy3M(b0%zcVZr^Ir|LyIYSNi|YPybgcZlr|Yp1qWyFonxOL>PyH)Gx|bm%1v9IYWX2 zD^bnktS~Es+!7cEQNYs!u4EGcpSW%x6_YyDm1?PDCU{V;@&}4eA}K@*1%_xRTu*Lx zBx36$o4V96Yj&jKIwu-2QdU?o&0yw4agRzoR;DL*mx6VQmsg?us`^5s4*5%gK02Y4 z1ZE>BP;RyhSKSQLBd|#U3<#GfO1Gup30QFdf4Nyn!@^)R7#Mo$902YTOTvX=SUEG( zK#^-j_@UN76R>6hOPV0;%P~_$R*KiqSFs&TtBm7d4h<^ll$8^&$nBL#VK@ zy=)}41GbWVY{lLp;3;5lh%Om!I$umA7$lGY8#Um7I9E&sw!fHahM53JF0ZV&b5>zL zpyZSS%E!4>&{0XMQ9v|j263ZVQtMB2)y|f(DblbGg0Ahl>^YfGDYnSKFG3#-SOzw) z`7r_{kx>YoD6u-4F^e%6=hN9y3kfW!F&I`0^d(W3R}2io+=7}-5{fp+$JGgaxHz!y z3aAquLsZ0;@720wv+P|}R>y*$Ipw@CSE0azn@{I7n&aFRgsl-8>@ckAOne*5b>LWs%U=g4;J;#Fwkt{olhszqBg6GRCp4YvAC9IR2xsp zLqv`RGc-h^1lSUGCia)XzG$KDS~77is4q9g`&VMSB_ ziH^Fa&HAdSc%s122>9-*cG@GtOj9%zfHbQ_>E)T7&g!X(zpeIZRBx77FfdPiWl$yo z1-++}t+q^Y#<2InsF)7Br-Me|d)$T4N*XQO{Y1-CTPK8Pnab_UWN9_AnbfyN62CVpBSXsXUT4dr<{# zag&S-q61Q>TEn1$uv<#0BnFLTV$Rxyq~7VAD!gG2+4=}-F7%|Q#>_h^HzMmFkf2<~ zx139TocUBkz=c?L&RCfn<%fHOi9{$Kx~gQ%N>Fcrd2tXl=_{^*b(_Ct;kRTl0rTec z2`1e_I*h(y5BPh#BFNx7p{9l9b2Y$%g2sVRQRm?|-Bt}jh*2VkacCd$S7Of2gn`3| zids@Z9ehVNVz=x8L_XD-d$ybhqhrD#LDqW4x)Bn+Wt^SBat4?PPn z+b5*^qE#Uvfs5&r~!?j^6DpG+qR2r4Pf>v)`x9dnA*l;#(nPz!7+ z)IF#qrCF(*>zktpk+cJ`q?5PxLOIf#JDIuaAE*l3y4N_%I`|WNlnIb1>_6x8pd&V>0V4NR5TzND;uSQTo5iAP^c+s z25^EhWu;DyMoke<0XL2do_CdC1ht|XSBIxUm=u)5f$xVZ^MNF$1sbn%CSR3tp%R@P z4~oNiHLqJeePje6vQ0z;Ksr@$Ipz#N(TY=R;yif1!D9PSpn?az1wD?{HC2F43QVBn z9*IUWLuX&^1fuL!XAK}4vE^=1jEEk7A&J`H8uI&21 z>i9orCR795#{~kO;s3pLqZ$8A|8h;REBpU1X>km7!1;s2Hui-&(Nz$_5PZ;Uj~7{MYysM-?dECG&&Vh~7D*uU@NLmMxb$&myjr+&GKI zE#?tWs+YYk-4MEHm=VjZNs&3Cu43XnEZc5bBsTCk? zQQ1K=AFFXD;uXUwV>BuTmbDShBv*hsC$-;l-#dE>F?WcbrAJw17awVe&BE-WD1l+Q zbdtlW;i^C@+m;#%v*d{0sRdj^e73M-Fo(1F-?)a-Q9kD2Zm>KKHplCsOIPgc^cCJ{ z)rmxXhy5sXh9k2t$11RN(R@w}U&$L5UN|_{ZLsZ)gSBF|>gR!9YD}}nT_oyR?%ZnF zTY&>>g`H(^vTaww`xy*Yl=q(clX>K*_N6`qadWs9uelPRs135~bbm~j z_%g(~YPxZ->=J!Vy=BR8U8}%JkfEByVWDv$)l#o?BXG#EA#p1@HRjMm%sLxs&Y~)6 zT1TCh)PcE#v*VHy3@10BnObzp%%p~F5t%`F6X0alT3Qpu*oADQ>i(1Il2d3Sh{zT9 z)D_=qP%JC=J}>E%&+^6-aGPKy>MMEe^OgU+6XE*oq>_D+qP!+8|AlP;XW_r!XySiv ze|c;BD*o^1m;e0oZ?%`dI~njIF@NV5{1jzbJI7{;BNgzz^=>Z<9jn9aZ1H0-C1f`# z>G5o-sY{Icmol%*Kdg*frCHQep-JAjK z**m7q2(P8cUPRTYs8fI89$WFMzb22Wyml2<8sCtSQ49X-UYIN?vYdDAa!3+;B-!v%sJA4K zrcsLcx@ZaENE|{UDWlCbg)qi#*wn}Gi&MDv-YAyuSjv~FF&3#onQ6F<#I*!tw@)_P z)iQH1l1z?B7BZ)lluH&DfRz^v9YSFda}<`c()P*gQx>aaKSYKNt%O$7BphcpiMd)r zl1X;TzMLq>HSm{Pdm?OOg%|8rl;T3M((DvyY*t6Qb}5Arw9r|u$Q6A{!p#E1lWt8n zx7OR)(T)qf@*cdN+}9F`vfP#)#^Fasb>N^4eOFSEwe;DJ>S0GMSER=cDo!~NxVf^j z>d=AQEwMf#=%}weNOaKWA@&@LH+hA;HH_w4TZX-np{3jEea-iM8e8{)Ja<}~%rTd; zKzt)>F7NsO_gorTB0;C>(0%X8^coj?Ui)bc)Ozhhh)c}P1ob0aNVdnJQ&462A!nx9 zyqACdw|z#6#zeX(14--=v|0%t`=rekI*(ZMCB$#u_e-mP2sf_(R!r*fG@8*rWU$*i;zPx*t|M!{6 zf6?+^A_mZMp|h0;xcqSu3SX3tn3(Dcrr?=M=>m*gp_JMYnX?lDl?-4;v3Lz$j)6N!?g;wja=5kg zSzYH-G2a-nuEq`?3p{WuQE>^k(Hup5sAFB$7W1LxlW?G@Kk`uOEmv!w32RE$g5TFW zQ7_h3U|h*X_*Jr|e_vU~%YUgL0B3%ExiHZEiU3;6#- z=4b-*7f%AisZWb{ks{n+#|Y`G>-jN4IK@eDQccGrq%hRWQU(z2A zqO1e)Yz0Pv#;Bt;66vp>jmN1QS*l^4eQf2e*3Q>(V1%jnTW3a}N;4!D;KcSV>@&=Q zF#8Y(y4$dW>D_9}j#e1MIS=*FyqABuj&OXcLK$r;CQ9d~YMn1H_-M0E;E~pz$PkEZ z-1uO-REH(Xz9FR$W%K1co^FaNKF{fjpu;P+g&)X}e~CPpFyJ4*zJ=i#FzfSb3i8mjN)IRt`9 zCRqueL@+Q&<$$?McE~8tP%C&ye0n4;3dfM#M(OF6PQI&TA~CpI%?|l=kZB&)5!wwq z+U{HUmU9>Gdf!F#0J7u3(jmK?SK5Fv;rz0O*?VGfV+)?LK!Pcykc{iFq=z-+k=;mlg=0TQc?8t7x7#k}F@dWs@ zYPWS(gFbL9eV$Eg4}DoFMCI7(Uy7LPs!`@A;cZ?5UqgC98~V_qHuMuL28%U049`+< zw&b-QGCH%lx8A-1b`P@GEj3SpRhm@aXiVvgTX!8hO(3v?CnQ#|ejCccYP-8K*RW+1 z2eh0mpwrQqIT`Vn)}SvW>&NW#6N&maZ=XZfzwr+s>tBZae~}olGv)ug?fOqQuj)U4 zhVuW4fbi#&_8UyU0|ZVo#$0O-`%}DInlD_>Jg&K~_UJRKVws)^?KnT?$YkTdUVbX` zTwGk*%pj`))59S(t4rA6+7TzTEOmz2kZAKdEDit+9^cb#oMt-)%u<*AE&4`aa{Vp@6HqU*hdUk)O{SOT$+Vtucs>T=sHdMjF%sd`MQ68}a z&8bhH$to z^#FffR`K$IeC}H9ZKDRWpwN$`&j5aYi42c{gw-#lQC?W9MR~0j6FO4t{qAZcs@ONo zf=vPu!^&%oQ(bhoBava^q64rKcvfA6t zw~*!G_gsEh58v)NbWh+7yGdW*C(2FEi=U(ShnxeKK+fwyxR#b7Th%j?X(K07>pR_E zCdtuiJ^&@_($+T}J%Rtvfeww&Q

qC|wgi+17V=MHZ?x7G00D>u<>B(ZNc+fY`qN((ct7jo`Scx(LS zXdyBoP9Ql;HvRN+pLjKbrFVmC$aaC~-dg71oh~`;?=HlL*Fg@Ai8@+K#hZ`Y`#v`A z274>o;pY*+!i{Z?m@y*s&eUn8GD%Z&Cp7>`?6y56(55NY*;u`X=G`aKne!^g{`xhq zDPOMO)-VZw8nJErlSysce>agIUGkr=|3?eSyOqw$M?wFtApdROYUO`#-??-5D*of= zm;XHAj$i&yQSOibOtmPeMRPpi6ApdO%7sQ1#DuWG3%tlA`!!J50r*lUhx2SYnu7e2 zcsgVpKgrYfG$jP?QKBP+OCm_5(10TNEH2!4pSa6AAothenU#*(5Tp_ni0N31eRQR3 z=WoTj71f|qvw-%*lC(4DwglmpDCYJo?FJ&Ry4wLPSr{UtL$G0v)F{iPi1RYtLhu}v zj)=PT@%-@6g-enw#0DBGK;TPt9nOh!v)#s!ktY06-ZoqjsCdWE_hUEiW@GeUxaY?31hL{!Y`AkdIEM9#lVQ1QqavqmKwiTW?94PBjhn zjOUd_moQ5KzMF6quD@y!>p)Kf#;6Bf|5$}s;a57f;hsa$)x-d$_2vaoJyyEwl~-?) zR<+eDx-v$NP70ukvoMN~$Gg+lf;^h@6jWvj8VBAhPn=cTGtC~@E-mGlR)(=uX@RTS zyv0D-+e%)@aDAo0Y^2(9hznw0PHA5;t)?}!fS?e<96Jh5osWFkM^R+7 z>}(iTFCkiYRB$y~f3^F=J*nK{p-dVS>OcDMD^8nZ;I@?@ncJaL1%C)Ls~Ygxo{nvpzvv$sGRQx_9lp=C=hlg~Bj zmdbmbRBpDQd*;OALJDyYG(({l7tpv11%a+CVknE{+xNFrSPo5>T1QS z6*=*Y9&&fGnbQrqh;ZrYC9($`pri?@7!xWPLqgZd3!ccFC()OT@Y5Mh8ao_T4+J{NLNRulzrsqx}C#5`e>VXuLIy+=&fb zlKCaVaA9@PQG44?{D9B%HESK%P5>D%HzG?c(hAQghx%p?1q@@Yg99^pa57vr@!;lESz9S zZO&U3&s&&|_dwDBmHE4HVVM}+9b1OoFK8cD8p<_$t@hSmt zeo(CQE!^fg3pZ|?2a2i<%^6g6l{hCL80m~9XdO^dx>RpSKT#NBbAwCY9*JN06$*~g z=MVXqaCH|eEa)3pzTbraJFEb&DePf~j^B6~fzVUId-1q>n;RrgQ48uO2CF|9F|?>H zsWoS+J_OC{ufj(9T9*uaST!527Yl;$GS#JrJVdnn z6WK;@{_fWh^>Fpynew00VNz6SWzxem_44r_Z{E6n^9uj*bCdtNmw)9Nz~{{OTvW)d zSw@y?iPs(sz#;L%)`Mh%C1riHpdnZVBobmw&mtMDns5a9fe1=SKa&B$8khkltdwf7 zkzo{!=Nw(!@fd>$FDNJT8L-M|C-M{lLo5?vF?dWLkizU{4yunBkuL?1^-(rHUk-I_o2iI~zB~1t0;8OEYz6mdv-)?zBvuT6tX8 zXzA!GzN|uZ^l&sHh&3!wVUAHjnb*eGm7Ym)T4$dsf`z6T7#0&^eK`sZ+p}urvVHA= z0_D1|9|z{|hcv0i1?Om-9OY7;ux#W)`rKDWKHZUF2|%N~t7bc?KAc$f;jlDuDDzN* zDyUfrWyLlUNz|p&uu3r~MhU) zscQqS6Z7L-gaBsV) zO|P>`7wUZsZCf5qw$u3>+1AjnPUj~Zv5Imo%g3M5ulON{i;O8zOj?9CDab*po6B+? zXQu$0l~oJe>Tvh$cwpexSDg8(4BXfJ5~P<>l;EDv+$UCOpXA*`0+#yq@oA3#wT>MR zioR&(v%n>FRnOsm%X zGUUUxpVll64HmGq4;qZ%-U-UM+nlgy9(1s2Ft)ub6mO-X!dgmLHu!rrb1f<$U$0V} zUgs&NC+b-0L#l3QW7?4l!qh}Q+8I<8%jZ`WeXr!d73IH%lVwGD@C^KiJ2%?(|888_ ze?C9?uetoIyZ_E35OzwQ%RGO}!UsDNe7R1o`Hkv8uz?|9fdKjVT|S)8^6r?madx8E z64tcF8(BO~?TXr`vkIm(lP%ho{8cz$RNQ_@b34mZ)M8p&jVmTGTkK+k3qK)-!E~5S zXKTL%mrT}{xt-P)vCpu6{YUdnx;?J*zYn%~UixooW~ru`eSH1*?b{vspY-#J{(pw_ zzp?zk0uJC5Y8Sd1Y9p)ziq3X^M$phMJsSwMF_7-g^qEVc{-DVz48Er;Q~$HIAbY0s zD>2o-L~0&S=n`6fX&TVq6D7Y4`tR}Iq9dgd1u314RICVc?k)%aXZz0WHvZ4u+gJ4e zXQ%%j|814!|MbXk?Mi^YhiW%Nr}(U+8i~;SZ$sNAw`=mJ4y31ru>44td5snJEVh^y z5(_47Pp-Dg{!WRX35vXmU&@QYl3%n8OAaPZHYB?0uijwcT?gxPx9=I@)+B2 zVP9-oecFtf_$i-qw+w>=%Vt-ZoAMd1e zOh;>+YWN?Cfs>=G)Su_@1)rh+5w~yg|LyH7|L-rV|DCn`pGNa*e|4$e*YUWs`xP}2 zvQhxap+O00^p&R0qv-L#EjyBFytIfk*Rk;`Wa6Ez)QL97|KHZ-g83Eg$HTpBw#eF8}Aw0z|*5Ep46ASp!|{;_M*Elm{>Hd?xrJk=;P2 z(b{z%!5sXwFXasA!K$o5pxjU)&na{t&m+QopDX6@_eB3MS_t9{``?#$Z?xh+Z{4|b zMgKo9`u}r9efHN(4#*IdZR% z{7K1=$Qc%fD_4r)NSkEy4$=-pNXFNlBSL4fVd&wi!*Ph{3y9U4P*^K^53?2dJ^xvdBtZuc&r!=>(}oWT5qion;rGLsIAavCWtZ}z4ir*B43YO;z&){q*OT*91-r> zoDGvOXF3jNJw$Q|n#jZs8^JWuqKr~!`GO&m18U_}WD)V4_{<#Rc{5bN4Y!2t1SxUK zmB~;*L?Mx0PODiptj3yS6WI1-#0Yv$XL)vvVrEEQsjK+1ewy=8rkpjaFpz?Jl^y^m zkUd~LjX^$0M!O4U$ze9h1_hfP&mTJ~`?n5bM!)9F-%lGV8VOE8BxR?VB>MAD=Mk17 zHTtJdA~{_={&S(+WC$!vWT%+_56#?r{e)V}>uj8-j15HemP_^KTS$LPi_*qb4LKzdt% zsf%lf=Fj|6c|DvK1Aa)Ti%Vf;1g%k1w?qm8z&gMHt4int!a)QEk%K(Sz?q}5fPzXc z<*Ga^*n3=fNq?$ZdR^4g5xaMYywT~82`S#kt3(AS#8+59ey@K}8|t@Ic*Kx)zSoK3 zhj_`TPd0V*WG$eIOxkHo0S%n9|E_%;*_T5j72yyQP zBMIKY)$W%VmgJZSa>kj<{858M4qkUpw3_(2_1kmOf0mlL?Do90>$3ZnGJvz_Kim2m z^#AUStNIV0A^l&l{J#zcz$9WO$?+xYMnu6zbB2*jhVv=n$8cPcQRPT8lbdWjUV#mW z-7C!oHB^C+8E|MIc!2AI*c=`HEK~{MN5%`d8xB6(IFhgem;Ef=z8uo8f!lZw$_5hT ze?Eqg9n4e*6Gn}i2~N-$IU2rzRmiOibBgVMR8DbD`p;NLDTb6zR!#^%gZ_VctA+o4 zYx_$6{~YOmWBGp_bRQ?u5teIpESswVhbXk@0i#M_LF^F9(LTv0E3g25EXfWzXl;i0 z?ZbwK5PezM5K7N0BXy=RqU)Rp3}YeDNHMno*(HBl3;`|uYm@kYSpt6%RbV!q=grr| z$O0fZ6&hr=^q0;T9gF;(%+P1f9?nVsFXRF`qyEFKTen*HU)#67yrTb~9sR#N7m)vw zn5EMxFvvS1zCBH&M~Q+Q7iCc&$M|4;IQZ0SH*0@f-8dH244-FHCQury%@kI>6^e;? zfGp9XlW?361yd!$neWF8*u{NuAW%jp>S{hk)=vlrvP#!?SQi1^;74c#sApYrw#&GX z0x2AAT`f$-#HMdw1lo!xM@ETMzlrBX z3M5Q;MJukh;pVHTJ)d(y+^$XBl~kmF?J+hKGcCD=AyI!>xk{~X_Q4t(XN}ajM!5;Kc^DYtPjR>BTI#fDB^Z zmq=_lVi?fUDUYHxDoWi+P7(~G)q&R*vz>t78f#=wHH<(oWNbv7L4aHVIC;1a^GO1! z#p;xF>aPCtZZ`?`n(QXUp5cLf!w)9?RQZuqbfC_+`#Z2TT;rS}6TM z48zUUPvC?AGwP1mC3r|12IDhDTE4{9IObz1>M_ixv*G}Lt|u0=E+Qd&b(!0{7q@hq z2=1#wkE!n^K&xdTGC0f8_7QI``-u%qmK(VSAY_(RP=+P|dkH4TQVaRp?rRPUttc&v zr0uZ_$`}-kvNJEgr8d1oZa6NSQ%=ae3R&!y>sf7vMN%xcLQOv4Jr=hq&Vrz=^SJm{ zkY+oC*`F@ct`P&xtRUkyjoLqboXjgC?@u3V1y?8Fxy4_H4s(71*kfY zcjg~Z$gGBSU+c#xnZ9eVgvJ;(u@5<(S|r`v2+wvpjPEHYfWpA3yy5&wI}w?F+pI zOy^(LtVYXPFIltDRsLJ4KL5!!A^z9bkl|lQ>gPXPkeoaMs(!(8nz5n#}-s^83J&yaEPl_RbNi9?SC)iQ+#rszIrSVnQewK z`_CF1S70T0uY^a=Pf*=BRBSqJ9XOGhD?TsBp-KCvUP16AhS5jQvL%Tx+@sYSGp5)p}^E$Vn=9)j?Ld(}% zwH;Z?OznPu1MQ+rFV`3#F>1s;V+rRdqj9d2!y?fVEK!` zFL8SYKVo?J$>0=q2-f@lB)w18LQJ7G5h{`o)HAL5i}^#D)q?*jA;QY+xpYrZMY8%Spc0P;BY=0 zyHY+}i&hbcF|Gjz!t*`M*onv_(V{R*)LKts%iN;o`3qb^iw2CCYns1mA|d-bXsh-y zikRb`j}@;qUfNk+K@8Ske!0OdUvKTshXQ^<8&uBi@5Q3fOXlU9vN|ch!lnec7thd- zb1qN9#wZx%xqyZgH?BmsJ{V_*hcLzV2jdC}6n*U9-|Zy0Q2TOYzoGfG9*OM#fQez*!N1qfc1qcnFcu6&pkLd(78<&~Ibl+R>0ob<|-P9u3 zi*BoKv*k9*3MM^zzP%>=?g!Zqi4>ifv$6wC zhe`ML!(hl8#L~Q>LY?gMWk9R*{cT zBLJ%){uskq)HAuGWooS8r7VFK>FcXysqd0@xQ8l)3d`}wS$Fh45Bgg_t6k^%-f9Q? z-fAcN-r}Rp!+sdfgUeYssQnDEbZvDUY18i}a-31=sS*=UIYO~=_R-LpzV1#pe*o?g z@6UAeKA#2kp>X?oABl=8~wOAgTrW7m|8oO;iC=e)q02ZoO85| zy>f47!Pen5^aJ-A&4Qtmbn=?`N=gH5?1l_risi*8PW`ou zZktNC@H802-72Ejn7Ume`*f8}9w5Ngi)a*6z#>FW$n9bGf~9J#T=xs}f*x~=!^_pM zv(&?*{5YeA)DCoG>+aT#wWbXXF(uDwl&@KRjVv)Qr^Ru>2Zl{3FSFqr{#Obw^Iz8Kl4zJR}Jb)Na}LJ^GP@1ud{$EDSUU$*S|Cv-O1 zC=`FcVD`r3P(B+OJ?M8esPpODpc{`Gtp%NFeQ05q%wP3*bl9;nDs+h1OJfBiD;Z~H zn^A0JKTJS@an@0F*YEp{PX_&N^(MBA3A*N(6Wr?n7F^+1uhp)=6PM&p*0pvwD_?Gl z^;`+>4XuU9zfvwv&6(pQsgVTshGe*!jzkSH%b_Z0=XNEksk=xQ>|rQ1Eqz0+tY_c8 zgz+Vz0pvWK7YCZN&+##RNR_U#xNUdz+x>6~B`i><_$W05v`<&I8=nZ4-yjw&kPBg! z!8Fkl(qnZt?x`j>Lh0Ge>^s@`Bs(>T1~BF3eg+h2_ud)g>`<*=SJ(zNo6e{zf9Y(% zc3KB}q@m_kbM@O$Ikwz_UxGkUKFU zZE`dwWjg__izQiips+hhw&Gb_-XZ_pfZ{hLaJA;|IEO%6ywaeD(67{#*L);I7>EA>Yf3e?GSA{Fv9J|&eo!y%J1=i; z>^QQTjY)l*(T0cq^J?(>Wv!;-pG%vXhXSnNI`eb8Qtc zV7bu^o_7IJV$NNQGTCvQnDnPu@V@YPXE#%jZ4nS&lSRK0uEyf2|HSeP9HN=V8k3 zWEFhY`R$E`@((1E2Pz71(*~2&=MMFg-z0smHQnD)&sLcyn?=1D0<S!{icbWB zU(}T3m1dc2!lZ@yTX#WZz}@HTd|5-VtgTwntdN`#LPx#2$#zsXl>YTTZ%3Hdr2CMA zxTER8GV63(`vp?!M#bA=G$$e0BMz!g z%bYTQM4B;Am1E7c-TzEINQQ z$=rQDdE+V@x!|UDcv2h2w7(%~b77aj6YcZIMGck!6wQ2mU`idsmr7dUF1*~9>=me4 zH9LzJEgR1}4J;cfZt zZVRIgAFwO#5oW)^WA4w6E{ag{1b#tOU4S_8!8Js?xg<>>Xf0~Iqs5`S57Vm@rC%Fb zOF`?eiC@t0xr2*M1WJxYJOv4ccdG#Kd-9A}u-BGP!R^nK?A4L7i(0wRR8!W|?I__|(dT-b!t zbxM03vt&AukSJbDCPW!AmV<*Fc@6f2D?KGTZk8Mni<=$E&}C*t`G|#&hc6yI{{H^+ zhktzWO5#Lc-hbE(Vx?7rzhY8|0n;{FBv0&(ULwe_DM|b7xsXjSmH`?}{DbSftr|1W zI^P?uBNE4+q*d4M?6%(!;9h!#(_m`%y=D*dh0881l+FHif_fps+cK}@Bg!^ zxHPDgKMd2i1+itL(KN56s2gzzfs%E1i?ZfW%Z%Gc>zM?`WFxTyAvg?CVSIxGn7&Sm z^C}n`rS%QD*+0&)ZKFNmMl8s?t?>#G-R)WiCZDb6g{pQuKMd$w>#dOZb-vr6mmLi> zp6F<07SP3310m7uc(;m3Ve9RfQto~cl02hUf!d4khTjq;VjF^({iqQZgb>Qb;17m9 zv5a8CMB!=XdY>QeC)blc9bEkDCXQ){<)lj=L@Kh*Z4OQY2=7gA+wufS$rYlOd$7Re zoNAC_4;rOS%X~g#yXSiU#_fLc-~Zpu4IhcL_lRvS$H&>!Y8QS1d3IVWdcn9l$)`xU zbHmz7Ugp!(6IY9+(~06y%Xse7kb8;#aN9xn!vFl||J_JVa-`b-Aca1%+9J0(u9q

ny%EcV^?R~*Q~f$uX? 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 literal 0 HcmV?d00001 From 68aa73f8a478f94ceb18dca314b34e3e2b7e9f48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 13:45:43 +0200 Subject: [PATCH 02/60] design: the mention policy, every prose mention a relation or a listed reason The Protocol's new validator warns once for each pair of Specs where one names the other in prose and no relation joins them: 83 pairs on this corpus. Of those, 70 were dependencies and are now backed by 56 declared relations (52 dependsOn, 3 constrainedBy to facts and constraints, 1 decidedBy), 12 stay prose and are listed with their reason in design/tools/prose-mentions.json, and one moves with the projection contract's history text in the next commit. check.py accepts a prose-mention warning only for a listed pair, refuses a listed pair that no longer warns, and resolves every entry address (spec:#design.) in the code, the tests, the register, the ledger and the work documents, which validate does not read. Ruled while triaging: a component Spec of kind rule is depended on with dependsOn, and constrainedBy stays for laws, facts and constraints (PLAN.md 3.3); event-envelope no longer dependsOn command-pipeline or persistence-adapter, which check the envelope's bounds and now depend on it instead, so the corpus keeps no dependsOn cycle. Co-Authored-By: Claude Opus 5.5 --- .../specs/application/first-experiment.sdp.md | 3 + .../application/generation-registry.sdp.md | 3 + .../orders-inventory-example.sdp.md | 1 + .../specs/application/parent-use-cases.sdp.md | 2 + design/specs/application/rebuild.sdp.md | 1 + design/specs/application/restore.sdp.md | 1 + design/specs/application/write-pause.sdp.md | 3 + .../specs/command/command-declaration.sdp.md | 3 + design/specs/command/command-pipeline.sdp.md | 8 +++ .../command/idempotency-and-receipts.sdp.md | 4 +- design/specs/command/receipt-table.sdp.md | 5 +- .../command/tenancy-and-authority.sdp.md | 1 + design/specs/context/context-component.sdp.md | 2 + design/specs/context/event-envelope.sdp.md | 3 +- design/specs/context/journal.sdp.md | 5 ++ .../specs/context/persistence-adapter.sdp.md | 3 + design/specs/context/queries.sdp.md | 5 ++ design/specs/context/tables.sdp.md | 4 +- design/specs/effects/claim-call-settle.sdp.md | 1 + design/specs/facts/probe-plan.sdp.md | 1 + design/specs/kernel/decider-contract.sdp.md | 4 +- .../obligations/fan-out-and-chains.sdp.md | 2 + .../obligations/local-reaction-wrapper.sdp.md | 3 + .../obligations/operator-operations.sdp.md | 1 + .../obligations/retention-and-restore.sdp.md | 1 + design/specs/obligations/sweeper.sdp.md | 1 + .../operations/baseline-operations.sdp.md | 4 ++ design/tools/check.py | 72 ++++++++++++++++--- design/tools/prose-mentions.json | 64 +++++++++++++++++ 29 files changed, 197 insertions(+), 14 deletions(-) create mode 100644 design/tools/prose-mentions.json diff --git a/design/specs/application/first-experiment.sdp.md b/design/specs/application/first-experiment.sdp.md index 9ea4446..2a0a494 100644 --- a/design/specs/application/first-experiment.sdp.md +++ b/design/specs/application/first-experiment.sdp.md @@ -19,6 +19,9 @@ relations: - spec:application.read-models - spec:application.rebuild - spec:application.restore + - spec:application.generation-registry + - spec:command.actor-and-scope + - spec:platform.native-harness constrainedBy: - spec:constraints.one-commit-per-successful-command - spec:constraints.zero-core-projection-jobs diff --git a/design/specs/application/generation-registry.sdp.md b/design/specs/application/generation-registry.sdp.md index 8fb4bc7..bfe1b8b 100644 --- a/design/specs/application/generation-registry.sdp.md +++ b/design/specs/application/generation-registry.sdp.md @@ -14,6 +14,9 @@ relations: - spec:laws.law11-tenant-scope-named - spec:facts.f17-migrations-fits-generation-backfill - spec:laws.law06-technical-failure-never-a-rejection + dependsOn: + - spec:application.projection-contract + - spec:command.actor-and-scope --- # Generation registry diff --git a/design/specs/application/orders-inventory-example.sdp.md b/design/specs/application/orders-inventory-example.sdp.md index fc111e4..34a422a 100644 --- a/design/specs/application/orders-inventory-example.sdp.md +++ b/design/specs/application/orders-inventory-example.sdp.md @@ -14,6 +14,7 @@ relations: constrainedBy: - spec:laws.law01-sanctioned-writes-only - spec:laws.law09-no-invariant-on-late-read-model + dependsOn: spec:context.batch-shaped-api --- # Orders and Inventory, the example domain diff --git a/design/specs/application/parent-use-cases.sdp.md b/design/specs/application/parent-use-cases.sdp.md index c9b3d5a..5d59a72 100644 --- a/design/specs/application/parent-use-cases.sdp.md +++ b/design/specs/application/parent-use-cases.sdp.md @@ -9,6 +9,8 @@ relations: - spec:context.context-component - spec:context.batch-shaped-api - spec:command.command-pipeline + - spec:command.command-declaration + - spec:context.persistence-adapter constrainedBy: - spec:laws.law01-sanctioned-writes-only - spec:laws.law02-state-and-events-commit-together diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 0a87d74..612b620 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -11,6 +11,7 @@ relations: - spec:application.generation-registry - spec:application.write-pause - spec:context.queries + - spec:command.actor-and-scope constrainedBy: - spec:laws.law10-replay-never-runs-commands-or-effects - spec:laws.law11-tenant-scope-named diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index 2989bff..8900130 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -14,6 +14,7 @@ relations: - spec:application.parent-use-cases - spec:context.journal - spec:context.queries + - spec:command.actor-and-scope constrainedBy: - spec:laws.law03-events-only-source-of-state - spec:laws.law08-durable-capability-ships-operations diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 7d60c78..2020045 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -15,6 +15,9 @@ relations: - spec:facts.f11-components-have-no-ctx-auth - spec:facts.f12-backups-exclude-pending-scheduled-functions - spec:facts.f09-scheduled-mutation-and-action-retry-semantics + dependsOn: + - spec:command.actor-and-scope + - spec:operations.baseline-operations --- # Write pause diff --git a/design/specs/command/command-declaration.sdp.md b/design/specs/command/command-declaration.sdp.md index 3f19d1f..8c14378 100644 --- a/design/specs/command/command-declaration.sdp.md +++ b/design/specs/command/command-declaration.sdp.md @@ -9,6 +9,9 @@ relations: - spec:command.command-pipeline - spec:command.outcome-boundary - spec:kernel.outcome-model + - spec:application.projection-contract + - spec:context.persistence-adapter + - spec:operations.baseline-operations decidedBy: spec:decisions.d12-one-declaration-per-command constrainedBy: - spec:facts.f13-transactions-have-limits diff --git a/design/specs/command/command-pipeline.sdp.md b/design/specs/command/command-pipeline.sdp.md index e3bf15b..c9003ea 100644 --- a/design/specs/command/command-pipeline.sdp.md +++ b/design/specs/command/command-pipeline.sdp.md @@ -10,6 +10,14 @@ relations: - spec:command.idempotency-and-receipts - spec:command.tenancy-and-authority - spec:command.outcome-boundary + - spec:command.actor-and-scope + - spec:application.projection-contract + - spec:application.write-pause + - spec:command.receipt-table + - spec:context.persistence-adapter + - spec:context.event-envelope + - spec:kernel.outcome-model + - spec:operations.baseline-operations constrainedBy: - spec:laws.law01-sanctioned-writes-only - spec:laws.law02-state-and-events-commit-together diff --git a/design/specs/command/idempotency-and-receipts.sdp.md b/design/specs/command/idempotency-and-receipts.sdp.md index 9cfe2db..49a43b0 100644 --- a/design/specs/command/idempotency-and-receipts.sdp.md +++ b/design/specs/command/idempotency-and-receipts.sdp.md @@ -5,7 +5,9 @@ altitude: feature readiness: defined relations: refines: spec:command.command-pipeline - dependsOn: spec:command.tenancy-and-authority + dependsOn: + - spec:command.tenancy-and-authority + - spec:context.queries constrainedBy: - spec:laws.law04-server-scoped-idempotency-key - spec:laws.law05-authorization-before-execution-and-disclosure diff --git a/design/specs/command/receipt-table.sdp.md b/design/specs/command/receipt-table.sdp.md index 34591b0..8d0455f 100644 --- a/design/specs/command/receipt-table.sdp.md +++ b/design/specs/command/receipt-table.sdp.md @@ -5,7 +5,10 @@ altitude: story readiness: defined relations: refines: spec:command.idempotency-and-receipts - dependsOn: spec:command.actor-and-scope + dependsOn: + - spec:command.actor-and-scope + - spec:context.queries + - spec:kernel.outcome-model constrainedBy: - spec:facts.f13-transactions-have-limits - spec:laws.law11-tenant-scope-named diff --git a/design/specs/command/tenancy-and-authority.sdp.md b/design/specs/command/tenancy-and-authority.sdp.md index a6aade7..a3c2169 100644 --- a/design/specs/command/tenancy-and-authority.sdp.md +++ b/design/specs/command/tenancy-and-authority.sdp.md @@ -14,6 +14,7 @@ relations: decidedBy: - spec:decisions.d11-tenant-scope-and-authority - spec:decisions.d06-idempotency-client-and-receipts + dependsOn: spec:application.write-pause --- # Tenancy and authority diff --git a/design/specs/context/context-component.sdp.md b/design/specs/context/context-component.sdp.md index 46dd4ea..c7b6e95 100644 --- a/design/specs/context/context-component.sdp.md +++ b/design/specs/context/context-component.sdp.md @@ -8,6 +8,7 @@ relations: dependsOn: - spec:kernel.domain-kernel - spec:command.actor-and-scope + - spec:context.event-envelope decidedBy: - spec:decisions.d02-context-owns-state-and-journal - spec:decisions.d05-rebuildable-history-with-baselines @@ -23,6 +24,7 @@ relations: - spec:facts.f01-serializable-mutations-under-occ - spec:facts.f03-nested-run-mutation-partial-rollback - spec:facts.f13-transactions-have-limits + - spec:facts.f19-nested-calls-share-time-budgets --- # The context component diff --git a/design/specs/context/event-envelope.sdp.md b/design/specs/context/event-envelope.sdp.md index 9a04760..e53b19b 100644 --- a/design/specs/context/event-envelope.sdp.md +++ b/design/specs/context/event-envelope.sdp.md @@ -6,14 +6,13 @@ readiness: defined relations: refines: spec:context.journal dependsOn: - - spec:context.persistence-adapter - spec:command.actor-and-scope - - spec:command.command-pipeline decidedBy: spec:decisions.d02-context-owns-state-and-journal constrainedBy: - spec:facts.f13-transactions-have-limits - spec:facts.f01-serializable-mutations-under-occ - spec:laws.law06-technical-failure-never-a-rejection + - spec:constraints.events-stay-small --- # The event envelope diff --git a/design/specs/context/journal.sdp.md b/design/specs/context/journal.sdp.md index a7d0af9..39c3766 100644 --- a/design/specs/context/journal.sdp.md +++ b/design/specs/context/journal.sdp.md @@ -8,6 +8,7 @@ relations: decidedBy: - spec:decisions.d02-context-owns-state-and-journal - spec:decisions.d05-rebuildable-history-with-baselines + - spec:kernel.state-document-mapping constrainedBy: - spec:laws.law03-events-only-source-of-state - spec:laws.law10-replay-never-runs-commands-or-effects @@ -20,6 +21,10 @@ relations: - spec:facts.f02-component-calls-commit-with-caller - spec:facts.f08-scheduling-commits-with-mutation - spec:facts.f09-scheduled-mutation-and-action-retry-semantics + - spec:constraints.events-stay-small + dependsOn: + - spec:application.write-pause + - spec:context.tables --- # The journal diff --git a/design/specs/context/persistence-adapter.sdp.md b/design/specs/context/persistence-adapter.sdp.md index 6d636ad..3ead6ea 100644 --- a/design/specs/context/persistence-adapter.sdp.md +++ b/design/specs/context/persistence-adapter.sdp.md @@ -9,6 +9,9 @@ relations: - spec:kernel.decider-contract - spec:kernel.state-document-mapping - spec:context.tables + - spec:context.journal + - spec:command.outcome-boundary + - spec:context.event-envelope decidedBy: - spec:decisions.d03-events-only-source-of-next-state - spec:decisions.d04-four-outcomes diff --git a/design/specs/context/queries.sdp.md b/design/specs/context/queries.sdp.md index da85f0d..f5c718d 100644 --- a/design/specs/context/queries.sdp.md +++ b/design/specs/context/queries.sdp.md @@ -13,6 +13,11 @@ relations: - spec:facts.f11-components-have-no-ctx-auth - spec:facts.f15-parent-query-over-component-query-stays-reactive - spec:facts.f13-transactions-have-limits + dependsOn: + - spec:context.journal + - spec:command.actor-and-scope + - spec:command.outcome-boundary + - spec:context.event-envelope --- # The context queries diff --git a/design/specs/context/tables.sdp.md b/design/specs/context/tables.sdp.md index 6525e7c..e3137e5 100644 --- a/design/specs/context/tables.sdp.md +++ b/design/specs/context/tables.sdp.md @@ -5,7 +5,9 @@ altitude: story readiness: defined relations: refines: spec:context.context-component - dependsOn: spec:kernel.state-document-mapping + dependsOn: + - spec:kernel.state-document-mapping + - spec:context.event-envelope decidedBy: spec:decisions.d02-context-owns-state-and-journal constrainedBy: - spec:facts.f13-transactions-have-limits diff --git a/design/specs/effects/claim-call-settle.sdp.md b/design/specs/effects/claim-call-settle.sdp.md index 93ee895..9b4c6d9 100644 --- a/design/specs/effects/claim-call-settle.sdp.md +++ b/design/specs/effects/claim-call-settle.sdp.md @@ -9,6 +9,7 @@ relations: - spec:obligations.record-contract - spec:obligations.lifecycle-transitions - spec:obligations.local-reaction-wrapper + - spec:command.actor-and-scope constrainedBy: - spec:facts.f09-scheduled-mutation-and-action-retry-semantics - spec:facts.f10-action-mutation-calls-are-separate-transactions diff --git a/design/specs/facts/probe-plan.sdp.md b/design/specs/facts/probe-plan.sdp.md index b7150f1..704be61 100644 --- a/design/specs/facts/probe-plan.sdp.md +++ b/design/specs/facts/probe-plan.sdp.md @@ -13,6 +13,7 @@ relations: - spec:facts.f15-parent-query-over-component-query-stays-reactive - spec:facts.f16-scheduled-functions-table-shows-failed-runs - spec:facts.f17-migrations-fits-generation-backfill + - spec:platform.native-harness constrainedBy: - spec:facts.f04-nested-calls-cost-more-than-helpers - spec:facts.f05-react-client-retries-until-confirmed diff --git a/design/specs/kernel/decider-contract.sdp.md b/design/specs/kernel/decider-contract.sdp.md index f079e31..8f9dccd 100644 --- a/design/specs/kernel/decider-contract.sdp.md +++ b/design/specs/kernel/decider-contract.sdp.md @@ -5,7 +5,9 @@ altitude: story readiness: defined relations: refines: spec:kernel.domain-kernel - dependsOn: spec:kernel.initial-state + dependsOn: + - spec:kernel.initial-state + - spec:kernel.outcome-model decidedBy: spec:decisions.d03-events-only-source-of-next-state constrainedBy: - spec:laws.law03-events-only-source-of-state diff --git a/design/specs/obligations/fan-out-and-chains.sdp.md b/design/specs/obligations/fan-out-and-chains.sdp.md index 846a8a6..b99266b 100644 --- a/design/specs/obligations/fan-out-and-chains.sdp.md +++ b/design/specs/obligations/fan-out-and-chains.sdp.md @@ -9,6 +9,8 @@ relations: - spec:obligations.record-contract - spec:command.command-pipeline - spec:command.actor-and-scope + - spec:command.command-declaration + - spec:context.event-envelope constrainedBy: - spec:facts.f13-transactions-have-limits - spec:facts.f08-scheduling-commits-with-mutation diff --git a/design/specs/obligations/local-reaction-wrapper.sdp.md b/design/specs/obligations/local-reaction-wrapper.sdp.md index 529aace..e727d4f 100644 --- a/design/specs/obligations/local-reaction-wrapper.sdp.md +++ b/design/specs/obligations/local-reaction-wrapper.sdp.md @@ -9,6 +9,9 @@ relations: - spec:obligations.record-contract - spec:obligations.lifecycle-transitions - spec:command.outcome-boundary + - spec:application.write-pause + - spec:command.actor-and-scope + - spec:obligations.fan-out-and-chains constrainedBy: - spec:facts.f03-nested-run-mutation-partial-rollback - spec:facts.f08-scheduling-commits-with-mutation diff --git a/design/specs/obligations/operator-operations.sdp.md b/design/specs/obligations/operator-operations.sdp.md index 98d7aaa..4de0a95 100644 --- a/design/specs/obligations/operator-operations.sdp.md +++ b/design/specs/obligations/operator-operations.sdp.md @@ -9,6 +9,7 @@ relations: - spec:obligations.record-contract - spec:obligations.lifecycle-transitions - spec:command.tenancy-and-authority + - spec:effects.claim-call-settle constrainedBy: - spec:laws.law05-authorization-before-execution-and-disclosure - spec:laws.law08-durable-capability-ships-operations diff --git a/design/specs/obligations/retention-and-restore.sdp.md b/design/specs/obligations/retention-and-restore.sdp.md index 194b773..c2bd259 100644 --- a/design/specs/obligations/retention-and-restore.sdp.md +++ b/design/specs/obligations/retention-and-restore.sdp.md @@ -10,6 +10,7 @@ relations: - spec:obligations.sweeper - spec:effects.claim-call-settle - spec:operations.baseline-operations + - spec:application.restore decidedBy: spec:decisions.d19-operations-travel-with-capability constrainedBy: - spec:facts.f12-backups-exclude-pending-scheduled-functions diff --git a/design/specs/obligations/sweeper.sdp.md b/design/specs/obligations/sweeper.sdp.md index 699579d..70cb0a0 100644 --- a/design/specs/obligations/sweeper.sdp.md +++ b/design/specs/obligations/sweeper.sdp.md @@ -8,6 +8,7 @@ relations: dependsOn: - spec:obligations.record-contract - spec:obligations.lifecycle-transitions + - spec:effects.claim-call-settle constrainedBy: - spec:facts.f16-scheduled-functions-table-shows-failed-runs - spec:facts.f13-transactions-have-limits diff --git a/design/specs/operations/baseline-operations.sdp.md b/design/specs/operations/baseline-operations.sdp.md index 044d595..8989343 100644 --- a/design/specs/operations/baseline-operations.sdp.md +++ b/design/specs/operations/baseline-operations.sdp.md @@ -18,6 +18,10 @@ relations: - spec:constraints.bulk-operations-bounded - spec:laws.law05-authorization-before-execution-and-disclosure - spec:facts.f01-serializable-mutations-under-occ + dependsOn: + - spec:command.actor-and-scope + - spec:command.outcome-boundary + - spec:context.event-envelope --- # Baseline operations diff --git a/design/tools/check.py b/design/tools/check.py index 55c94f8..9f81216 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -11,7 +11,8 @@ The Protocol's CLI is the pinned dependency in the repository's package.json; run `npm ci` once. What `sdp validate` checks is the Protocol's. What this script adds is this project's policy: -citations carry edges, extensions are registered, nobody but the owner states `ready`. +citations carry edges, extensions are registered, nobody but the owner states `ready`, a prose +mention with no relation is listed with its reason, and an entry address outside the Specs resolves. """ import collections import glob @@ -32,6 +33,20 @@ " const rank = (r) => (r === undefined ? -1 : rungs.indexOf(r));" " return g.specs().filter((s) => rank(s.derivedReadiness) < rank(s.statedReadiness)).map((s) => s.id)" ) +GRAPH_FACTS = ( + 'return { mentions: report.findings.filter((f) => f.validatorId === "conformance/prose-mentions")' + ".map((f) => [f.subjectId, f.relatedId, f.path])," + " keys: Object.fromEntries(g.specs().map((s) => { const sections = g.specContext(s.id)?.sections ?? {};" + " return [s.id, { design: Object.keys(sections.design ?? {}), ui: Object.keys(sections.ui ?? {}) }]; })) }" +) +PROSE_MENTIONS = os.path.join(DESIGN, "tools", "prose-mentions.json") +# An entry address, spec:#design. or #ui., as the Protocol's checked-mentions record rules it. +ADDRESS = re.compile(r"spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)+#(?:design|ui)\.[A-Za-z0-9_]*") +ADDRESS_KEY = re.compile(r"^[a-z][A-Za-z0-9]*$") +# Where an address outside the Specs lives: the code, the tests, the register, the ledger and the work documents. +# The Protocol checks an address inside a Spec's prose; nothing checks these unless this script does. +ADDRESS_SOURCES = ("src", "fixture", "example", "harness", "tests", "scripts") +ADDRESS_RECORDS = ("decisions/register.json", "reviews/consensus-ledger.json", "STATE.md", "ROADMAP.md", "README.md", "PLAN.md", "SESSIONS.md") TYPED_SECTIONS = {"Behavior", "Workflow", "Rule", "Contract", "Design", "Decision", "Constraints", "Constraint", "Model"} LEDGER_STATUSES = {"open", "fixed", "partially-fixed", "rejected", "owner"} @@ -65,11 +80,51 @@ def run(args): sys.exit(1) n_specs, n_packs, n_anchors, n_nodes, n_edges = (int(x) for x in graph.groups()) n_errors, n_warnings = (int(x) for x in verdict.groups()) -warnings = [l for l in text.splitlines() if "[warning]" in l] +warnings = [l for l in text.splitlines() if "[warning]" in l and "conformance/prose-mentions" not in l] if n_errors: fail(f"validate: {n_errors} errors") -if n_warnings: - fail(f"validate: {n_warnings} warnings, first: {(warnings or ['not printed'])[0][:200]}") + +out = run(["q", GRAPH_FACTS, "--root", ".", "--json"]) +try: + facts = json.loads(out.stdout) +except ValueError: + facts = None + fail("the graph facts query did not return JSON") + +# 1a. A prose mention with no declared relation is lawful when no typed relation fits; the pair is listed +# with its reason. A new pair fails until it gets a relation or a line, and a listed pair that stopped warning goes. +listed = {(p["from"], p["to"]): p["reason"] for p in json.load(open(PROSE_MENTIONS, encoding="utf-8"))["pairs"]} +warned = {(m[0], m[1]): m[2] for m in facts["mentions"]} if facts else {} +for (source, target), path in sorted(warned.items()): + if (source, target) not in listed: + fail(f"{source} mentions {target} at {path} with no relation: declare the relation that fits, or list the pair with its reason in design/tools/prose-mentions.json") +for source, target in sorted(set(listed) - set(warned)): + fail(f"{source} → {target} is listed in design/tools/prose-mentions.json and no longer warns; remove the line") +for (source, target), reason in sorted(listed.items()): + if not reason.strip(): + fail(f"{source} → {target} is listed in design/tools/prose-mentions.json with no reason") +if n_warnings != len(warned): + fail(f"validate: {n_warnings - len(warned)} warnings other than prose mentions, first: {(warnings or ['not printed'])[0][:200]}") + +# 1b. Entry addresses outside the Specs resolve: the Spec exists and its Design or UI section holds the key. +addresses = 0 +if facts: + files = [p for top in ADDRESS_SOURCES for ext in ("ts", "tsx", "mjs") for p in glob.glob(os.path.join(ROOT, top, "**", f"*.{ext}"), recursive=True)] + files = [p for p in files if "_generated" not in p and not p.endswith(".test.generated.ts")] + files += [os.path.join(DESIGN, name) for name in ADDRESS_RECORDS] + for path in sorted(files): + for number, line in enumerate(open(path, encoding="utf-8"), 1): + for token in ADDRESS.findall(line): + addresses += 1 + spec_id, entry = token.split("#", 1) + section, key = entry.split(".", 1) + where = f"{os.path.relpath(path, ROOT)}:{number}" + if not ADDRESS_KEY.match(key) or key == "description": + fail(f"entry address {token} at {where} has a key outside the address grammar") + elif spec_id not in facts["keys"]: + fail(f"entry address {token} at {where} names no Spec") + elif key not in facts["keys"][spec_id][section]: + fail(f"entry address {token} at {where}: {spec_id} has no {section} entry {key}") out = run(["q", READINESS_DIVERGENCE, "--root", ".", "--json"]) try: @@ -130,8 +185,8 @@ def run(args): expected_line = f"{n_specs} specs · {n_packs} packs · {n_anchors} anchors → {n_nodes} nodes · {n_edges} edges (0 errors, 0 warnings)" if expected_line not in readme: fail("README's expected validate output is stale; it should read: " + expected_line) -if "validate: 0 errors · 0 warnings" not in readme: - fail("README's expected validate verdict is stale; it should read 0 errors and 0 warnings") +if f"validate: 0 errors · {n_warnings} warnings" not in readme: + fail(f"README's expected validate verdict is stale; it should read 0 errors and {n_warnings} warnings, each a listed prose mention") registered = set(re.findall(r"^\| E-(\d+) \|", readme, re.M)) if cited_extensions - registered: fail(f"extensions cited in Specs but missing from README's register: E-{sorted(cited_extensions - registered, key=int)}") @@ -155,13 +210,14 @@ def run(args): digest = hashlib.sha256() tracked = sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)) -tracked += [os.path.join(DESIGN, name) for name in ("README.md", "PLAN.md", "SESSIONS.md", "reviews/consensus-ledger.json")] +tracked += [os.path.join(DESIGN, name) for name in ("README.md", "PLAN.md", "SESSIONS.md", "reviews/consensus-ledger.json", "tools/prose-mentions.json")] for path in tracked: digest.update(os.path.relpath(path, DESIGN).encode()) digest.update(open(path, "rb").read()) print(expected_line) -print(f"validate: {n_errors} errors · {n_warnings} warnings; readiness divergence: {diverging}") +print(f"validate: {n_errors} errors · {n_warnings} warnings, {len(listed)} prose mentions listed; readiness divergence: {diverging}") +print(f"entry addresses outside the Specs: {addresses}") print(f"open questions: {len(questions)} Specs, {n_questions} questions, {n_blocking} blocking; extensions registered: {len(registered)}") print(f"stated readiness: {dict(sorted(readiness.items()))}") print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") diff --git a/design/tools/prose-mentions.json b/design/tools/prose-mentions.json new file mode 100644 index 0000000..71bf9dc --- /dev/null +++ b/design/tools/prose-mentions.json @@ -0,0 +1,64 @@ +{ + "pairs": [ + { + "from": "spec:application.rebuild.write-pause-rebuild-abort", + "to": "spec:application.orders-inventory-example", + "reason": "An example keeps only its refines and verifies edges; the Verification bullet names the fixture view it runs on." + }, + { + "from": "spec:application.rebuild.write-pause-rebuild-interrupt", + "to": "spec:application.orders-inventory-example", + "reason": "An example keeps only its refines and verifies edges; the Verification bullet names the fixture view it runs on." + }, + { + "from": "spec:command.command-declaration.broken-argument-contract-fails-build", + "to": "spec:platform.acceptance-contract", + "reason": "An example keeps only its refines and verifies edges; the Verification bullet names where the compiled tier comes from." + }, + { + "from": "spec:command.command-declaration.renamed-handler-fails-build", + "to": "spec:platform.acceptance-contract", + "reason": "An example keeps only its refines and verifies edges; the Verification bullet names where the compiled tier comes from." + }, + { + "from": "spec:command.idempotency-and-receipts.ui-double-submit", + "to": "spec:application.parent-use-cases", + "reason": "An example keeps only its refines and verifies edges; the Verification bullet cites the call order the use case rules." + }, + { + "from": "spec:command.tenancy-and-authority.client-claims-agent-namespace", + "to": "spec:command.tenancy-and-authority.client-claims-system-namespace", + "reason": "The narrative names a sibling example as the first case; an example keeps only its refines and verifies edges." + }, + { + "from": "spec:command.tenancy-and-authority.client-claims-system-namespace", + "to": "spec:command.tenancy-and-authority.client-claims-agent-namespace", + "reason": "The narrative names a sibling example as the second case; an example keeps only its refines and verifies edges." + }, + { + "from": "spec:facts.probe-plan", + "to": "spec:facts.f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls", + "reason": "An open question points at the hosted example that runs Probe 3's quota half; the plan does not build on it." + }, + { + "from": "spec:kernel.decider-contract", + "to": "spec:command.actor-and-scope", + "reason": "The kernel's actor type is structural and imports nothing from the command family; the mention names what is passed." + }, + { + "from": "spec:operations.baseline-operations.broken-metrics-never-abort", + "to": "spec:operations.baseline-operations.broken-audit-aborts", + "reason": "A Verification bullet says two steps match a sibling example's; an example keeps only its refines and verifies edges." + }, + { + "from": "spec:platform.native-harness", + "to": "spec:command.tenancy-and-authority", + "reason": "An open question names the rule the fixture's stand-in entry bends; the harness does not build on it." + }, + { + "from": "spec:platform.vocabulary", + "to": "spec:command.actor-and-scope", + "reason": "A vocabulary term points at where the caller namespace union is pinned; the glossary depends on nothing here." + } + ] +} From 95b6733297de8c2e646b0df6924ee84824e57c14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:00:21 +0200 Subject: [PATCH 03/60] design: the projection contract split by maturity, and the history view's Pack The projection contract carried three forms at three maturities under one identity: the per-entity form, which code realizes; the history form, designed with one pure fold and its test; and the aggregate form, which no code realizes and whose build waits for a read model that needs it (OD-075). The graph could not tell them apart. Each form now has its own Spec, the moved text verbatim: - spec:application.projection-contract keeps the per-entity form and every convention the forms share, and stays implemented. - spec:application.history-projection (defined) takes the history form, its fold, the order allocation history and its bound. Nothing implements it, so the graph shows it designed and not built. - spec:application.aggregate-projection (scoped) takes the aggregate form, with a blocking question that names its trigger, as PLAN.md 6.5 writes a deferral. pack:history-view gathers, in reading order and across packages, the fifteen Specs the history view rests on. The two code comments that cited the fold by Spec and key now cite its entry address. The ledger's history and aggregate items name the new files. The split shows one consequence: generation-registry, command-declaration and command-pipeline pin ReadModelBinding and step 9 over all three forms, so they now depend on the scoped aggregate Spec and their ready floor drops from ready to defined. check.py: OK, 239 Specs, 6 packs, 12 listed prose mentions. Co-Authored-By: Claude Opus 5.5 --- design/README.md | 21 +++++-- design/reviews/consensus-ledger.json | 39 ++++++------ design/specs/application.pack.sdp.md | 4 +- .../application/aggregate-projection.sdp.md | 54 ++++++++++++++++ .../specs/application/first-experiment.sdp.md | 1 + .../application/generation-registry.sdp.md | 3 +- .../application/history-projection.sdp.md | 61 +++++++++++++++++++ .../orders-inventory-example.sdp.md | 4 +- .../application/projection-contract.sdp.md | 32 +--------- design/specs/application/rebuild.sdp.md | 1 + .../specs/command/command-declaration.sdp.md | 4 +- design/specs/command/command-pipeline.sdp.md | 2 + design/specs/history-view.pack.sdp.md | 24 ++++++++ example/domain/orderAllocationHistory.ts | 12 ++-- tests/pure/order-allocation-history.test.ts | 2 +- 15 files changed, 199 insertions(+), 65 deletions(-) create mode 100644 design/specs/application/aggregate-projection.sdp.md create mode 100644 design/specs/application/history-projection.sdp.md create mode 100644 design/specs/history-view.pack.sdp.md diff --git a/design/README.md b/design/README.md index 52db332..d58ad70 100644 --- a/design/README.md +++ b/design/README.md @@ -45,11 +45,11 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -237 specs · 5 packs · 142 anchors → 384 nodes · 1251 edges (0 errors, 0 warnings) -validate: 0 errors · 0 warnings (conformance + honesty over the one graph) +239 specs · 6 packs · 142 anchors → 387 nodes · 1348 edges (0 errors, 0 warnings) +validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` -Any warning and any error is a defect. Every example declares `verifies` toward its parent for fidelity to the acceptance contract. An example that a test's `specTest` anchor binds gives its parent a verifier; an example that no anchor binds is data below `ready`, and the Protocol does not warn; recipe 10 lists each such example as a declared verifier that is not enabled. `npx sdp validate --watch` is the authoring loop. +Any error is a defect, and so is any warning but the twelve `conformance/prose-mentions` warnings, one for each pair of Specs listed in [`tools/prose-mentions.json`](tools/prose-mentions.json) with the reason no typed relation fits; `check.py` refuses a mention pair that is neither declared nor listed, and an entry address (`spec:#design.`) in the code, the tests or the records that does not resolve. Every example declares `verifies` toward its parent for fidelity to the acceptance contract. An example that a test's `specTest` anchor binds gives its parent a verifier; an example that no anchor binds is data below `ready`, and the Protocol does not warn; recipe 10 lists each such example as a declared verifier that is not enabled. `npx sdp validate --watch` is the authoring loop. ## The component map @@ -68,7 +68,7 @@ Detail follows the build (decision method, rule 4). Full means interfaces, TypeS | 9 | Tenancy and authority: tenant on everything, actor vocabulary, grants, namespaces, worker provenance | 1 | full | [`tenancy-and-authority`](specs/command/tenancy-and-authority.sdp.md), [`actor-and-scope`](specs/command/actor-and-scope.sdp.md) | | 10 | Command declaration and bindings: one declaration per command, two static exports, generation later | 1 to 2 | full | [`command-declaration`](specs/command/command-declaration.sdp.md) | | 11 | Parent use cases: contexts meet only in the parent, in one transaction, one call per context | 2 | full | [`parent-use-cases`](specs/application/parent-use-cases.sdp.md) | -| 12 | Read models and projection contract: reads inside the command, the read-need table, one projection for live update and rebuild | 2 | full | [`read-models`](specs/application/read-models.sdp.md), [`projection-contract`](specs/application/projection-contract.sdp.md) | +| 12 | Read models and projection contract: reads inside the command, the read-need table, one projection for live update and rebuild | 2 | full | [`read-models`](specs/application/read-models.sdp.md), [`projection-contract`](specs/application/projection-contract.sdp.md), [`history-projection`](specs/application/history-projection.sdp.md), [`aggregate-projection`](specs/application/aggregate-projection.sdp.md) | | 13 | Rebuild: generations, backfill, write pause | 2 | full | [`rebuild`](specs/application/rebuild.sdp.md), [`generation-registry`](specs/application/generation-registry.sdp.md), [`write-pause`](specs/application/write-pause.sdp.md) | | 14 | Restore and baseline operations: the restore drill, audit fails closed, diagnostics never abort, bounds, retention | 2 | full | [`restore`](specs/application/restore.sdp.md), [`baseline-operations`](specs/operations/baseline-operations.sdp.md), [`events-stay-small`](specs/constraints/events-stay-small.sdp.md), [`bulk-operations-bounded`](specs/constraints/bulk-operations-bounded.sdp.md) | | 15 | First experiment and cost budgets: Orders and Inventory, the measurements, the six cost targets | 2 | full | [`first-experiment`](specs/application/first-experiment.sdp.md), [`orders-inventory-example`](specs/application/orders-inventory-example.sdp.md), the six cost constraints in [`specs/constraints/`](specs/constraints/) | @@ -85,12 +85,14 @@ Detail follows the build (decision method, rule 4). Full means interfaces, TypeS | all | `platform`, `laws`, `decisions`, `facts` | [`foundation`](specs/foundation.pack.sdp.md) | 98 | | 0 | `kernel` | [`kernel-and-context`](specs/kernel-and-context.pack.sdp.md) | 7 | | 1 | `context`, `command` | [`kernel-and-context`](specs/kernel-and-context.pack.sdp.md) (19 with the kernel), [`command-pipeline`](specs/command-pipeline.pack.sdp.md) | 12 + 24 | -| 2 | `application`, `operations`, `constraints` | [`application`](specs/application.pack.sdp.md) | 48 | +| 2 | `application`, `operations`, `constraints` | [`application`](specs/application.pack.sdp.md) | 50 | | 3 | `obligations`, `effects` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 22 (of the pack's 43) | | 4 | `processes` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 6 | | 5 | `agents` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 7 | | 6 | `advanced` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 8 | +One pack follows a capability rather than a layer. [`history-view`](specs/history-view.pack.sdp.md) gathers, in reading order and across packages, the fifteen Specs the history view rests on, so its Design Review page shows that design at the rung each part has reached (`PLAN.md` 6.7). + Counts by kind and by stated readiness are derived, not kept here: `npx sdp census` writes the census, and the session check prints the readiness tally. Every Layer 4 to 6 non-example Spec states `scoped`, held by its deferral; F17 states `defined` with its native Probe 6 evidence. Nothing states `ready`. Every pack carries `modelRefs: [spec:platform.vocabulary]`; the application pack also refs the example domain's model. What each layer fixes, in one paragraph each. @@ -192,7 +194,7 @@ An extension is a design claim the doc does not make. Each one is three things t | E-6 | [`command.actor-and-scope`](specs/command/actor-and-scope.sdp.md), [`command.tenancy-and-authority`](specs/command/tenancy-and-authority.sdp.md) | `Actor`, `ActorRef`, `TenantScope`, `CallerNamespace` (`public`, `service`, `worker`, `agent`, `system`), the `authorize` signature, the `grants` table; the tenant scope of an operation, a command and a query is the `tenantId` argument alone, with no separate scope argument; a parent query establishes and authorizes its actor through `authorizeQuery`, generic over the parent's data model, and its refusal is the command's `RejectionData` with the query's name in `commandType`; the worker's two modes as one `Authority` shape, `{ actor, scope, mode }` with `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated; a derived command carries `worker`, and `system` is reserved for the platform's own maintenance chains and operator operations | | E-7 | [`command.command-declaration`](specs/command/command-declaration.sdp.md) | `CommandDeclaration`, `publicCommand` and `internalCommand`, the executor that takes the minted `OperationRef` and returns the kernel's outcome plus `streams`, the read-model binding with its `source` and read model, what generation emits, and no standing map from command type to declaration, because the type check at a typed caller is the check of Sc L2-4; the cost of two registered mutations per command and the single-export dispatcher alternative it beat | | E-8 | [`application.generation-registry`](specs/application/generation-registry.sdp.md), [`application.write-pause`](specs/application/write-pause.sdp.md), [`application.rebuild`](specs/application/rebuild.sdp.md) | The `generations` table with seven states, every transition with who makes it, and one generation being built per read model; the `generationProgress` row that holds the cursor, the batch size and the counts, read by batches and operator entries only; the `projectionMarkers` table; a read model installed through its first rebuild, generation 1 starting as `building`, with no transition from nothing to active, a command that finds no generation to write and a query that finds no active generation each failing as a technical failure; `generationsToWrite` answering the active generation and the one being built as a list tagged by role, `active`, `building` or `verifying`; a 7-day rollback period in which the retired generation is kept and not written, and a rollback that is one verify pass, presence and absence, and then the switch of one write, a single mutation that patches both generation rows; one generation per read model spanning every tenant, so the registry's indexes lead with the read model name and not `tenantId`, a confirmed deviation from Law 11's index rule, and no rebuild for one tenant; one gate document per deployment with scope keys for the deployment, a tenant and a source stream type, read by the pipeline's step 7 after the restore door, with no fence or drain of its own; a paused rebuild closes the view's source stream types, one `source:` scope per binding; an exemption only for the generation a closed entry names; gate changes treated as mandatory audit; no acceptable length stated for a write pause | -| E-9 | [`application.projection-contract`](specs/application/projection-contract.sdp.md) | A per-entity read model declared as `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, each a `Projection` of `version`, `keyOf` and `project`, bound on a declaration with its source; `AggregateProjection` and `HistoryProjection`, the last folding events into the prior row for a view that depends on history across streams; `applyProjection` with modes `live-created`, `live-updated`, `backfill`, writing each generation by its role, where a live write to the active generation always lands and the rule that a newer row is never overwritten is the backfill path's, `applyAggregate` and `applyHistoryProjection`, called by the pipeline's step 9 and the rebuild's batches only; every row measured with `getConvexSize` against `rowBudgetBytes`; step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from the events; a read model declares its projection versions as a list, the latest first, and each generation is written with the projection whose version its row records; row conventions `tenantId`, `generation`, `key`, `projectionVersion`, `sourceVersions`; the `by_key` index; the created flag and the appended events read from the operation outcome's `streams` entry | +| E-9 | [`application.projection-contract`](specs/application/projection-contract.sdp.md), [`application.history-projection`](specs/application/history-projection.sdp.md), [`application.aggregate-projection`](specs/application/aggregate-projection.sdp.md) | A per-entity read model declared as `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, each a `Projection` of `version`, `keyOf` and `project`, bound on a declaration with its source; `AggregateProjection` and `HistoryProjection`, the last folding events into the prior row for a view that depends on history across streams; `applyProjection` with modes `live-created`, `live-updated`, `backfill`, writing each generation by its role, where a live write to the active generation always lands and the rule that a newer row is never overwritten is the backfill path's, `applyAggregate` and `applyHistoryProjection`, called by the pipeline's step 9 and the rebuild's batches only; every row measured with `getConvexSize` against `rowBudgetBytes`; step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from the events; a read model declares its projection versions as a list, the latest first, and each generation is written with the projection whose version its row records; row conventions `tenantId`, `generation`, `key`, `projectionVersion`, `sourceVersions`; the `by_key` index; the created flag and the appended events read from the operation outcome's `streams` entry | | E-10 | [`obligations.lifecycle-transitions`](specs/obligations/lifecycle-transitions.sdp.md), [`obligations.record-contract`](specs/obligations/record-contract.sdp.md) | The allowed transitions between the six states and who causes each; the `obligations` and `obligationRepairs` tables with seven and two indexes; a 64 KiB inline payload bound; ten late-evidence entries; two attention reasons beyond D13's four, `recoveryFailing` and `chainBound` | | E-11 | [`effects.claim-call-settle`](specs/effects/claim-call-settle.sdp.md) | The signatures of `claimAttempt`, `readForCall`, `callProvider`, `reconcileAttempt`, `settleAttempt`, `expireLease`; the `RepetitionPolicy` union with a fourth value `none` | | E-12 | [`constraints.events-stay-small`](specs/constraints/events-stay-small.sdp.md), [`context.event-envelope`](specs/context/event-envelope.sdp.md) | A 16 KiB payload bound and a 4,096-byte envelope bound measured with `getConvexSize` by the journal's `append`, so a fold of 500 stored events of at most 20,541 bytes each stays under 9.8 MiB under the 16 MiB read ceiling; the reserved `baseline` event's payload is exempt and bounded by its stream type's `budgetBytes`, and the stored baseline event is at most `budgetBytes + 4,096 + 61` bytes; the 1 second query timeout binds first and the first experiment measures it | @@ -370,6 +372,13 @@ The bound on a stock item ID added three examples that verify no doc row, each a Package D therefore has 30 examples. +The history form and the aggregate form of `spec:application.projection-contract` moved into contracts of their own, so that each Spec carries one maturity: + +| Sc | Added Spec | Reason | +|---|---|---| +| L2-6 | [`spec:application.history-projection`](specs/application/history-projection.sdp.md) | the history form, its fold and the order allocation history, checked by one pure test of the fold | +| none | [`spec:application.aggregate-projection`](specs/application/aggregate-projection.sdp.md) | the aggregate form and its marker, deferred until a read model needs an aggregate row (OD-075) | + ## Integration notes What the integration pass changed after the five packages landed, and what it left for the owner or the plan. diff --git a/design/reviews/consensus-ledger.json b/design/reviews/consensus-ledger.json index fd3419d..d504531 100644 --- a/design/reviews/consensus-ledger.json +++ b/design/reviews/consensus-ledger.json @@ -1617,7 +1617,8 @@ "specs/context/persistence-adapter.sdp.md", "specs/application/orders-inventory-example.sdp.md", "specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md", - "specs/application/rebuild.write-pause-rebuild-abort.sdp.md" + "specs/application/rebuild.write-pause-rebuild-abort.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "The only projection forms are `Projection⟨D, Row⟩.project(tenantId, dto, versions)` from one current DTO and `AggregateProjection.contribute(dto)`. The write pause exists for 'read models that depend on history across several streams', and the contract says a cross-context row 'holds one StreamVersion per context', yet no form takes history, a prior row, or two DTOs. On the live path step 9 calls `applyProjection` once per `streams` entry with that entry's DTO only, and the parent never receives the appended events (`StreamDto` is dto, version, appended, created). On the backfill the pause path reuses the online batch steps, one `list` page of current DTOs. So a history-dependent view cannot be written on either path, the cross-context read model the D8 table allows cannot be produced, and the L2-6 examples exercise a per-entity projection under a gate (they assert only that `PlaceOrder` is refused), which passes trivially; the example domain defines no history-dependent view at all, so the first experiment cannot run L2-6 as the doc's row reads.", "fix": "Either add the missing forms under E-9: `HistoryProjection⟨Row⟩ { project(tenantId, prior: Row | null, events: EventEnvelope[], versions) }` fed on the live path by the events the operation appended (add `events: EventEnvelope[]` to `StreamDto`, bounded by the 16 KiB payload bound times `appended`) and on the backfill, under the pause, by `history` pages per enumerated stream; and `CompositeProjection` taking the DTOs of every `streams` entry of one command for a cross-context row, with the backfill composing from one `list` DTO plus bounded `get` reads of the other context. Then name one history-dependent view in orders-inventory-example (for example a per-stock-item allocation history across orders) and make both L2-6 examples build it. Or, narrow the claim explicitly: state in rebuild and projection-contract that Layer 2 pins only per-entity and aggregate projections, that the write-pause path is designed for cross-context current-state rows needing a consistent cut, record the history-projection input shape as a [non-blocking] E-9 open question deferred to Layer 6's trigger, and retitle the L2-6 examples to the view they actually build.", @@ -1839,7 +1840,8 @@ "severity": "minor", "files": [ "specs/application/projection-contract.sdp.md", - "specs/application/generation-registry.sdp.md" + "specs/application/generation-registry.sdp.md", + "specs/application/aggregate-projection.sdp.md" ], "issue": "`AggregateProjection⟨D⟩` and `applyAggregate` are pinned and the pipeline's step 9 and the rebuild's step 4 call them, but the aggregate row itself is not: which field holds the sum, what `key` and `sourceVersions` mean for a row that derives from N entities (the row conventions say `sourceVersions` holds 'one per source stream', unbounded for an aggregate), and how `ApplyMode` and `ApplyResult` apply when the marker rather than the row's version decides. D9 names counts and sums explicitly, so an implementer of the transactional profile has to invent the row.", "fix": "Add an `aggregateRowConventions` bullet: `tenantId`, `generation`, `key` = `aggregateKeyOf`, `projectionVersion`, `value: number`, `entityCount: number`, and no `sourceVersions` (the markers carry them); state that `applyAggregate` ignores `mode` except that `backfill` never creates a marker the live path already wrote, returns `updated` or `unchanged`, and that the marker's `sourceVersions` are compared like a row's so a stale DTO never adjusts the sum.", @@ -1930,7 +1932,8 @@ "specs/application/projection-contract.sdp.md", "specs/application/rebuild.sdp.md", "specs/application/orders-inventory-example.sdp.md", - "specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md" + "specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "A `HistoryProjection` folds events of several streams into one row, and the two paths feed it in different orders. On the live path step 9 calls `applyHistoryProjection` per `streams` entry in the executor's order, command after command, so an order's row sees `OrderPlaced`, its `StockAllocated` events, later `OrderCancelled`, then `AllocationReleased`. On the backfill the rebuild pages one stream's whole history at a time (rebuild flow 'each history batch takes one stream from the enumeration'), so the same row sees every Orders event first and the stock events after, or the reverse. The contract asks only that `project` be 'deterministic in the prior row and the events' with 'version order within each stream'. It never says the fold must give the same row whatever the interleaving across streams, and D2 gives no order across streams to appeal to. A natural projection, where `OrderPlaced` creates the row and a stock event updates an existing one, backfills to a different row than it wrote live, against the contract's own value line that 'a rebuild cannot disagree with a live update'. The doc sends a consumer whose result depends on order to Layer 6's ordered consumer; Layer 2 does not say its history view must not be one. Deletion makes it worse: `null` from `project` deletes the row, and with it the `sourceVersions` that are the fold's only memory. A later event of the same key from another stream, such as `AllocationReleased` after `OrderCancelled` returned `null`, meets no prior row and recreates one, on either path.", "fix": "Add to projection-contract under E-9: a history projection's fold is independent of the order in which different streams' events arrive; only the order within one stream is given (D2), and a view whose meaning depends on cross-stream order waits for the ordered consumer of D18. Add to `determinismCheck` a test that folds one key's events in two interleavings and compares the rows, and have the L2-6 example compare a backfilled row with the live-written one. Rule on deletion: either a history row is never deleted once written and carries its own ended state, or the highest folded version per stream moves off the row into a marker, like `projectionMarkers`, that outlives it. State in orders-inventory-example that the order allocation history fold is written to hold under any interleaving, including a stock event arriving before `OrderPlaced`.", @@ -1963,8 +1966,8 @@ "severity": "major", "files": [ "specs/application/rebuild.sdp.md", - "specs/application/projection-contract.sdp.md", - "specs/application/write-pause.sdp.md" + "specs/application/write-pause.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "`rollbackGeneration` takes any read model: it sets the retired generation to `verifying`, 'live commands write it again from that commit', and a verify pass repairs it. For a history view nothing closes the sources: write-pause says no function other than `startGeneration` closes a source scope for a rebuild. So after a rollback the next live command folds its new events onto a retired row that never saw the events between the switch and the rollback, and `applyHistoryProjection` raises that row's `sourceVersions` to the new event's version. The missed events are now 'not above the recorded version' and are dropped by every later fold, and `historyVerify`, which only compares the last event's version, passes. The rolled-back generation becomes active with holes in it and no check says so. projection-contract's claim that 'the live path never meets a non-active generation of a history view because its building generation exists only while its source scopes are closed' is false on this path, and rebuild's own `rebuildClass` bullet says why it matters: 'a live fold onto a row backfill has not reached cannot be told apart from a complete one'.", "fix": "Rule one way under E-8. Either `rollbackGeneration` refuses a `pauseRequired` generation with a plain error, and rolling a history view back means a new paused generation at the old projection version; or it closes every source scope of the view in the same mutation, naming the reopened generation, runs its catch-up pass under the pause, and the scopes reopen only after the switch, exactly as a first build does. Correct the projection-contract sentence to match, and add the rollback of the history view, or its refusal, to the L2-6 examples.", @@ -2110,7 +2113,8 @@ "specs/command/command-pipeline.sdp.md", "specs/application/projection-contract.sdp.md", "specs/application/first-experiment.sdp.md", - "specs/application/orders-inventory-example.sdp.md" + "specs/application/orders-inventory-example.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "Step 9 calls `applyHistoryProjection` 'for each `streams` entry', and that helper reads and replaces the row once per key per call. `PlaceOrder` at 100 lines returns 101 entries that all key to the same order, so the order allocation history row is read and replaced 101 times in one mutation, about 200 operations and up to 3 MiB written for one row. The cost is recorded nowhere: `limitHistoryFold` counts rows per entry, E-45's four read-model rows per command is silent on repeated writes, and `limitExpectedDocuments` omits the view. The row itself, 100 lines plus 101 `sourceVersions` entries, is over the default `rowBudgetBytes` of 16 KiB and the table bullet declares no budget. And the Specs do not say whether the measured `PlaceOrder` binds the view: it 'exists in the experiment for Sc L2-6, not as an essential read', yet a binding on the declaration is written by every command.", "fix": "Have step 9 gather the events of every matching entry of one command per history projection and call `applyHistoryProjection` once, so each key costs one read and one write; say so in `limitHistoryFold`. Declare `rowBudgetBytes` for `orderAllocationHistory`, 64 KiB at the provisional maximum. State in first-experiment whether the Sc L2-3 runs measure `PlaceOrder` with the view bound, and add its row to `limitExpectedDocuments` if they do.", @@ -2586,8 +2590,8 @@ "lens": "completeness", "severity": "major", "files": [ - "specs/application/projection-contract.sdp.md", - "specs/application/generation-registry.sdp.md" + "specs/application/generation-registry.sdp.md", + "specs/application/aggregate-projection.sdp.md" ], "issue": "The round-2 fix r2-completeness-aggregate-row-shape-unpinned pinned `applyAggregate` in three steps that are wrong when an entity moves from one aggregate key to another, which is the case the Spec's own sample table is built for: `orderTotals` is 'an aggregate of order totals per status, where `key` is the status'. aggregateStep2 computes 'the difference is `contribution` minus the marker's recorded contribution'. aggregateStep3 'reads the aggregate row by `by_key` with `aggregateKeyOf(tenantId, dto)`, inserts it with `value` equal to the difference and `entityCount` 1 when missing, else adds the difference to `value` and adjusts `entityCount` by one for a new marker and by minus one for a removed one'. When an order goes from placed to cancelled its marker exists with `aggregateKey` placed and the same contribution, so the difference is zero: the cancelled row gains nothing and no count, or is inserted with `value` 0 and `entityCount` 1, and the placed row keeps the order's total and count for ever. The marker stores `aggregateKey`, and no step reads it. Two smaller holes sit in the same steps: a missing aggregate row is inserted with `entityCount` 1 even when the contribution is `null`, and the input's `entityKey` has no stated source, since `AggregateProjection` has no `entityKeyOf` and step 9 is said to call the helper 'with the entry's DTO and version'.", "fix": "In `spec:application.projection-contract` split aggregateStep3 on the marker's `aggregateKey`: when it differs from `aggregateKeyOf(tenantId, dto)`, read the old key's row, subtract the recorded contribution and one from `entityCount`, then add the whole new contribution and one to the new key's row; when it is the same, add the difference as now; never insert a row for a `null` contribution. State the cost, a second row read and write on a key change, and count it against E-45's four rows per command. Pin `entityKey` as the entry's stream identity, `streamType` and `streamId` from `dto.version`, in `fnApplyAggregate` and in the pipeline's step 9. Add a key change to `determinismCheck`.", @@ -2810,12 +2814,12 @@ "specs/context/journal.sdp.md", "specs/context/tables.sdp.md", "specs/application/parent-use-cases.sdp.md", - "specs/application/projection-contract.sdp.md", "specs/application/generation-registry.sdp.md", "specs/application/write-pause.sdp.md", "specs/application/first-experiment.sdp.md", "specs/kernel/domain-kernel.sdp.md", - "specs/obligations/obligation-module.sdp.md" + "specs/obligations/obligation-module.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "Small things in Layers 0 to 2 that are named and not pinned, each a short guess for the implementer. (1) `Bounds = { maxItems?: number; maxBytes?: number }` is checked 'when the input's items exceed `bounds.maxItems`', and nothing says which part of an input is its items; the L2-3 maximum example needs it to mean `lines`. (2) The pipeline lists parse as step 1 and authenticate as step 2, and parent-use-cases says the bound is 'checked by the pipeline's step 1 before authentication', but `runPipeline` takes a `PipelineCall` whose `actor` is required and the public helper 'establishes the actor ... and calls `runPipeline`', so for the public entry authentication runs first. (3) outcome-boundary says 'a code outside both is a technical failure by definition', while `normalizeThrown(error, commandType)` rethrows any bare kernel `Rejection` as a rejection and never sees the declaration's `rejections`; `irreversible` likewise 'requires' a tombstone with no check named. (4) receipt-table says 'a declaration may set a finite horizon' for `tombstoneHorizon`, and `Retention = { window; afterExpiry }` has no field for it. (5) `limitRequestKey` says a longer key 'is rejection `invalidInput` at step 1'; Step 1 and `errorCodeInvalidInput` do not mention it. (6) `canonicalJson` is defined for JSON values only; a Convex input may hold `v.int64()` or `v.bytes()`. (7) `get` returns `null` for a deleted subject 'unless the DTO policy shows deleted subjects', and no field declares that policy; `list` takes `includeDeleted` and its handler text never uses it. (8) `Journal` is the return type of `createJournal` with no members; `streamParts.streamVersion` has no rule for what is written to it or who reads it. (9) `carryOrReject(outcome, policy)` throws 'through the outcome boundary's `reject`', which requires `commandType`, and takes its `message` from nowhere. (10) `applyHistoryProjection` takes `mode: ApplyMode` and no step reads it; the `events` it is fed include `baseline` events, and the contract does not say `keyOf` must return `null` for them. (11) Validators and types used once and never given: `generationDoc`, `gateDoc`, `AuditRecordInput`, `DiagnosticSink`, `consoleSink`, and in Layer 3 `callInputValidator`, `obligationViewValidator`, `dispatchResultValidator`. (12) One bound has two names, `limitGrantsRead` in actor-and-scope and `limitGrantsPerPrincipal` in tenancy-and-authority, and the handler registry has two shapes, `HandlerRegistry` mapping to a `FunctionReference` in obligation-module while `createStep3` reads `entry.maxAttempts` from the wrapper's `HandlerEntry`. (13) `convexTypeImport` says a value import of `convex/values` 'is a type error'; `verbatimModuleSyntax` rejects only a type imported without `import type`, so `import { v }` compiles and only the dependency check catches it. (14) `limitExpectedDocuments` lists the reads of one `PlaceOrder` and leaves out the grants read of step 4. (15) The experiment's examples rely on 'the production `auth.config.ts`' and no Spec names its provider or issuer.", "fix": "One line each in the owning Spec: add `itemsOf?: (input: I) => number` to `Bounds` in `spec:command.command-declaration`, or say `maxItems` counts the elements of the input's one top-level array; state in the pipeline that the public entry authenticates before step 1's bound and refinement checks, and correct the parent-use-cases sentence; pass `decl.rejections` to `normalizeThrown` and rethrow an unlisted code as a plain error, or drop the 'technical failure by definition' sentence, and name the registration check as the place `irreversible` is checked; add `tombstoneHorizon?: number` to `Retention`; add the key-length check to Step 1; define `canonicalJson` over `convexToJson(value)`; add `showDeleted?: boolean` to `StreamRegistration` or drop the clause, and say `list` filters deleted rows after the page is read unless `includeDeleted`; give `Journal` its two fields and `streamParts.streamVersion` its rule or remove the field; let `carryOrReject` throw the bare kernel `Rejection` and let `normalizeThrown` add the command type; say `mode` is ignored by `applyHistoryProjection` and that `keyOf` returns `null` for `baseline`; define the listed validators beside their one use; keep one name for the grants bound and one registry type; reword `convexTypeImport`; add the grants read to `limitExpectedDocuments`; name the experiment's auth provider in `spec:application.first-experiment`.", @@ -3109,10 +3113,10 @@ "lens": "sdp", "severity": "major", "files": [ - "specs/application/projection-contract.sdp.md", "specs/command/command-pipeline.sdp.md", "specs/application/rebuild.sdp.md", - "specs/application/generation-registry.sdp.md" + "specs/application/generation-registry.sdp.md", + "specs/application/aggregate-projection.sdp.md" ], "issue": "`applyAggregate` takes `input: { tenantId: string; entityKey: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: number[] }` and reads the marker 'by `by_entity` with the tenant, read model, generation and `entityKey`'. No Spec says where `entityKey` comes from. `AggregateProjection⟨D⟩` has `aggregateKeyOf` and `contribute` and no entity key function; the pipeline's step 9 says only that it calls `applyAggregate` 'with the entry's DTO and version'; the rebuild's `step4` says 'for each item it calls `applyProjection` or `applyAggregate` in backfill mode'. The term `entityKey` appears in the corpus only in that signature and in the marker table. The marker exists so that 'live commands and backfill never count one entity twice', which holds only if the live caller and the backfill caller, pinned in two different Specs, derive the same key; a stream ID alone is also not unique when an aggregate is bound to two stream types.", "fix": "In `spec:application.projection-contract` add `entityKeyOf(tenantId: string, dto: D): string` to `AggregateProjection⟨D⟩` and have `applyAggregate` compute it, dropping `entityKey` from its input; or state once that `entityKey` is `contextId + \":\" + streamType + \":\" + streamId` of `dto.version`. Name the rule in the pipeline's step 9 and the rebuild's `step4`.", @@ -3430,7 +3434,8 @@ "specs/application/projection-contract.sdp.md", "specs/command/receipt-table.sdp.md", "specs/obligations/local-reaction-wrapper.sdp.md", - "specs/effects/claim-call-settle.sdp.md" + "specs/effects/claim-call-settle.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "Every stated `dependsOn` is used by its Spec's text, so that half of rubric 16 holds. The other direction of PLAN 3.3, 'Contract: ... `dependsOn` the contracts it composes', has gaps where a contract takes its types from another contract and carries no edge, so a query for what depends on a contract misses its consumers. persistence-adapter takes `StreamRegistration`, `load`, `append` and `migrateToSchemaVersion` from `spec:context.journal` and depends on the decider contract, the mapping and the tables only. tables uses `causedByValidator` and `actorValidator` 'of `spec:context.event-envelope`' with no edge to it. queries uses `tenantScopeValidator` and `authorize` of `spec:command.actor-and-scope` and `eventEnvelopeValidator`, with no `dependsOn` at all. projection-contract takes `EventEnvelope` from the envelope and the generations from the registry, with no `dependsOn`. receipt-table imports the kernel's `affectedRefValidator` and `streamVersionValidator`. local-reaction-wrapper and claim-call-settle call `authorize` and store `Authority` of `spec:command.actor-and-scope`. None of these edges would point from a lower layer to a higher one.", "fix": "Add the edges: persistence-adapter to `spec:context.journal`; tables to `spec:context.event-envelope`; queries to `spec:command.actor-and-scope` and `spec:context.event-envelope`; projection-contract to `spec:context.event-envelope` and `spec:application.generation-registry`; receipt-table to `spec:kernel.outcome-model`; local-reaction-wrapper and claim-call-settle to `spec:command.actor-and-scope`. Check for a cycle before adding journal to adapter, since the journal names the adapter only in prose.", @@ -3531,9 +3536,9 @@ "lens": "sdp", "severity": "minor", "files": [ - "specs/application/projection-contract.sdp.md", "specs/command/command-pipeline.sdp.md", - "specs/context/persistence-adapter.sdp.md" + "specs/context/persistence-adapter.sdp.md", + "specs/application/history-projection.sdp.md" ], "issue": "Lead 2, read for this lens: three small mismatches around the newest form. First, `applyHistoryProjection` takes `input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: number[] }` and its description never reads `mode`; for `applyAggregate` the contract says '`mode` is accepted for symmetry with `applyProjection` and read by nothing', for the history helper it says nothing, while callers pass 'backfill mode' and the live modes. Second, the pipeline's step 9 calls it 'with the entry's `events` and version', and the helper has no version argument; it reads `streamVersion` off each envelope. Third, the adapter's `streams` entry carries every envelope the call wrote, 'baselines included', and the `history` query returns baseline events 'like any other', so `HistoryProjection.keyOf` receives events of the reserved type `baseline`, whose payload is a whole migrated state of up to 512 KiB, on both paths; the contract speaks only of domain events and does not say that a baseline is skipped or what it means to a view whose fold reads history.", "fix": "In `spec:application.projection-contract` state that `applyHistoryProjection` ignores `mode` (or drop the field), that it reads versions from the envelopes, and that it drops events of type `baseline` before `keyOf`, with one sentence on why a meaning migration of a source needs a new generation of the view. In `spec:command.command-pipeline` step 9 write 'with the entry's `events`'.", @@ -3962,8 +3967,8 @@ "lens": "convex", "severity": "minor", "files": [ - "specs/application/projection-contract.sdp.md", - "specs/application/read-models.sdp.md" + "specs/application/read-models.sdp.md", + "specs/application/aggregate-projection.sdp.md" ], "issue": "An `AggregateProjection` keeps one row per aggregate key and `applyAggregate` reads and rewrites it in every command that contributes ('adds the difference to `value` and adjusts `entityCount`'); the pinned shape `orderTotals` has one row per order status per tenant. Every concurrent command that contributes to the same key therefore reads and writes the same document, and under optimistic concurrency all but one re-run: 'A mutation `updateCounter` always updates the same document ... If this mutation is called many times per second, many of its executions will conflict with each other', with the remediation 'Design your data model such that it doesn't require making many writes to the same document' (docs.convex.dev/error#1, read 2026-10-01). The marker rule makes the sum correct; it does not remove the contention, and the cost is recorded nowhere: projection-contract's limits count reads and writes per command, E-45 counts rows, and neither says that an aggregate with few keys serializes its writers. Convex's own answer is listed on the same page, the Sharded Counter component, and the components page names the Aggregate component, which 'can internally denormalize data'. The first experiment builds no aggregate, so nothing fails today.", "fix": "In `spec:application.projection-contract` add a risk to the aggregate form under E-9: commands that contribute to one aggregate key serialize on its row, so an aggregate whose key has few values is for low write rates, and name the two native options, the Aggregate and Sharded Counter components, as what the build weighs first when a count or sum sits on a hot key, with the marker rule kept for rebuild equality. Add the same sentence to read-models where it offers 'a read model updated in the command' for a summary.", diff --git a/design/specs/application.pack.sdp.md b/design/specs/application.pack.sdp.md index 0cdf186..30f1642 100644 --- a/design/specs/application.pack.sdp.md +++ b/design/specs/application.pack.sdp.md @@ -11,6 +11,8 @@ specs: - spec:application.read-models.query-refused-without-grant - spec:application.read-models.list-pages-by-cursor - spec:application.projection-contract + - spec:application.history-projection + - spec:application.aggregate-projection - spec:application.rebuild - spec:application.rebuild.online-rebuild-interrupt-resume - spec:application.rebuild.write-pause-rebuild-interrupt @@ -57,4 +59,4 @@ modelRefs: Package D. Layer 2: parent use cases, read models and the projection contract, online rebuild with the generation registry and the write pause, restore, baseline operations, the cost-target constraints and the first experiment, with the Layer 2 scenarios and the all-layers audit scenario. -Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract, rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Forty-eight Specs: nine application Specs, one operations Spec, eight constraints and thirty examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. +Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract with the history and aggregate projections, rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Fifty Specs: eleven application Specs, one operations Spec, eight constraints and thirty examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. diff --git a/design/specs/application/aggregate-projection.sdp.md b/design/specs/application/aggregate-projection.sdp.md new file mode 100644 index 0000000..c9c41aa --- /dev/null +++ b/design/specs/application/aggregate-projection.sdp.md @@ -0,0 +1,54 @@ +--- +id: spec:application.aggregate-projection +kind: contract +altitude: story +readiness: scoped +relations: + refines: spec:application.read-models + dependsOn: spec:application.projection-contract + decidedBy: + - spec:decisions.d02-context-owns-state-and-journal + - spec:decisions.d09-rebuild-online-by-default + constrainedBy: + - spec:laws.law11-tenant-scope-named + - spec:facts.f01-serializable-mutations-under-occ + - spec:facts.f13-transactions-have-limits +--- +# Aggregate projection + +Story · Detail: deferred until a read model needs an aggregate row · Traces: D2, D9, Law 11, F1, F13, E-8, E-9, E-45. + +An aggregate projection is the form of a read model whose row sums a number over every entity under one key, the counts and sums of D9, such as order totals per status. The contract pins the `AggregateProjection` shape; the aggregate row, which carries `value` and `entityCount` and no `sourceVersions`; the per-entity marker that carries the source versions, so that live commands and the backfill never count one entity twice; `applyAggregate` in four steps; and `orderTotals` as the shape of an aggregate table. No read model of the example domain takes this form, so its detail stops at the signature and the steps until a read model needs an aggregate row. + +## Intent + +- outcome: Pin the aggregate form of a projection, which sums one contribution per entity into one row per key and never counts an entity twice (D9, E-9) + +### Open questions + +- [blocking] Deferred until a read model needs an aggregate row: OD-075 keeps this form a signature to which no read model of the example domain is bound, `orderTotals` is the shape of an aggregate table and not a read model, and the rebuild has no path for an aggregate; the first read model that needs a count or a sum over its entities is the trigger, and with it this contract takes its rebuild path, its tests and the owner's confirmation of the form under E-9 (OD-075, E-9) + +## Contract + +- [extension] An aggregate row derives from every entity under its key, so it carries no `sourceVersions`; it carries `value`, the sum of the recorded contributions, and `entityCount`, the number of markers, and the per-entity marker carries the `sourceVersions` the row conventions would otherwise hold (E-9, D9) +- An aggregate projection contributes a number per entity to an aggregate row and keeps a per-entity marker so live commands and backfill never count one entity twice (D9) +- [extension] `applyAggregate` ignores the mode: the marker's `sourceVersions` decide, a marker that is not older than the input makes the write `skipped-newer`, and otherwise the marker's recorded contribution leaves the row of the marker's `aggregateKey` and the new contribution joins the row of `aggregateKeyOf`, one row moved by the difference when the key is the same and two rows when it changed, a row whose `entityCount` reaches 0 being deleted, and a `null` contribution joins no row and removes the marker; a live update on an entity backfill has not reached is therefore not partial, because `contribute` sees the whole DTO, which is why the missing-row rule of the per-entity path does not apply (E-9, D9, F1) +- [extension] An aggregate's entity is its source stream: `applyAggregate` derives the marker's `entityKey` from the input's one `StreamVersion` as `JSON.stringify([contextId, streamType, streamId])`, so the live path and the backfill, which pass `entry.version` and `dto.version`, name one marker, and equal stream IDs in two contexts or two stream types name two (E-9, D9, D2) + +## Design + +The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; `ApplyMode`, `ApplyResult`, `WritableGeneration` and the `by_key` index are those of `spec:application.projection-contract`; the marker is a row of the `projectionMarkers` table, read through its `by_entity` index, both pinned by `spec:application.generation-registry`; `MutationCtx` is Convex's mutation context. + +- typeAggregateProjection: `interface AggregateProjection { name: string; version: number; table: string; rowBudgetBytes?: number; aggregateKeyOf(tenantId: string, dto: D): string; contribute(tenantId: string, dto: D): number | null }` where `null` means the entity no longer contributes, such as a deleted subject, and `rowBudgetBytes` bounds the aggregate row and the marker alike (E-9, D9, F13) +- fnApplyAggregate: `applyAggregate(ctx: MutationCtx, projection: AggregateProjection, input: { tenantId: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise` answering, per generation in order, one result for each aggregate row it writes, the old key's row before the new key's on a key change, `inserted` for a row it created, `updated` for a row whose `value` or `entityCount` changed and `deleted` for a row whose `entityCount` reached 0, or one `skipped-newer` when the marker was not older and one `unchanged` when no row moved; `input.versions` holds the one `StreamVersion` of the entity's source stream, and another length throws a plain error; `mode` is accepted for symmetry with `applyProjection` and read by nothing (E-9, D9) +- aggregateStep1: for each generation it derives `entityKey` from `input.versions[0]` as the contract states, reads the marker by `by_entity` with the tenant, read model, generation and `entityKey`, and computes `contribution` as `contribute(tenantId, dto)` and, when that is not `null`, `aggregateKey` as `aggregateKeyOf(tenantId, dto)` (E-9, D9) +- aggregateStep2: when a marker exists and its `sourceVersions` are not older than `input.versions` for the same stream, the result is `skipped-newer` and nothing is written (E-9, D9, F1) +- aggregateStep3: when a marker exists and `contribution` is `null` or `aggregateKey` differs from the marker's, it reads the row of the marker's `aggregateKey` by `by_key`, throwing a plain error when it is missing, a defect, subtracts the marker's contribution from `value` and 1 from `entityCount`, and deletes the row when `entityCount` reaches 0 and replaces it otherwise; when `contribution` is not `null` and the marker is missing or its key differs, it reads the row of `aggregateKey`, inserts it with `value` equal to `contribution` and `entityCount` 1 when missing, and otherwise adds `contribution` to `value` and 1 to `entityCount`; when the marker exists with the same key and `contribution` is not `null`, it adds `contribution` minus the marker's to that row's `value`, leaves `entityCount`, and writes no row when the difference is 0; when the marker is missing and `contribution` is `null`, it reads and writes no row (E-9, D9) +- aggregateStep4: then it inserts or replaces the marker with `entityKey`, `contribution`, `aggregateKey` and `input.versions`, or deletes it when `contribution` is `null`, all in the same mutation; a key change reads and writes two aggregate rows and the marker in each generation, and its two rows count against `limitReadModelWritesPerCommand` of `spec:application.read-models` (E-9, D9, E-8, E-45) +- validatorAggregateRowConventions: `const aggregateRowConventions = { tenantId: v.string(), generation: v.number(), key: v.string(), projectionVersion: v.number(), value: v.number(), entityCount: v.number() }` spread into every aggregate read-model `defineTable`, with the same `by_key` index, where `key` is `aggregateKeyOf(tenantId, dto)` (E-9, Law 11, D9) +- tableOrderTotals: `orderTotals: defineTable({ ...aggregateRowConventions }).index("by_key", ["tenantId", "generation", "key"])` an aggregate of order totals per status, where `key` is the status, `value` the sum of the orders' totals and `entityCount` the number of orders in it, given as the shape of an aggregate table and not as a read model the first experiment builds (E-9, D9) +- deferred: the code of `AggregateProjection` and `applyAggregate`, a rebuild path for an aggregate read model and the tests of this contract, until a read model needs an aggregate row (E-9, OD-075) + +## Verification — reviewed + +- A reviewer confirms that `applyAggregate` compares the marker's `sourceVersions` before it touches `value`, that it reads no mode, that it derives `entityKey` from the input's stream version, that a key change moves the contribution and the count from the marker's key's row to the new key's row, and that a `null` contribution removes the marker and its recorded contribution and creates no row. diff --git a/design/specs/application/first-experiment.sdp.md b/design/specs/application/first-experiment.sdp.md index 2a0a494..19c844f 100644 --- a/design/specs/application/first-experiment.sdp.md +++ b/design/specs/application/first-experiment.sdp.md @@ -20,6 +20,7 @@ relations: - spec:application.rebuild - spec:application.restore - spec:application.generation-registry + - spec:application.history-projection - spec:command.actor-and-scope - spec:platform.native-harness constrainedBy: diff --git a/design/specs/application/generation-registry.sdp.md b/design/specs/application/generation-registry.sdp.md index bfe1b8b..0532246 100644 --- a/design/specs/application/generation-registry.sdp.md +++ b/design/specs/application/generation-registry.sdp.md @@ -16,6 +16,7 @@ relations: - spec:laws.law06-technical-failure-never-a-rejection dependsOn: - spec:application.projection-contract + - spec:application.aggregate-projection - spec:command.actor-and-scope --- # Generation registry @@ -80,7 +81,7 @@ Tables live in the parent's `schema.ts`, spread from the library's `readModelTab - indexProgressByGenerationUse: the one read a batch and an operator entry other than `interruptGeneration` make to find a generation's progress row; no command and no query over a read model reads the table (E-40, F1) - tableProjectionMarkers: `projectionMarkers: defineTable({ tenantId: v.string(), readModel: v.string(), generation: v.number(), entityKey: v.string(), aggregateKey: v.string(), contribution: v.number(), sourceVersions: v.array(streamVersionValidator) })` (E-8, D9, Law 11) - indexMarkersByEntity: `.index("by_entity", ["tenantId", "readModel", "generation", "entityKey"])` (E-8) -- indexMarkersByEntityUse: point read by `applyAggregate` before every aggregate write, with the `entityKey` it derives from the entity's source stream, `JSON.stringify([contextId, streamType, streamId])` of the input's stream version, as `spec:application.projection-contract` states (D9, E-8, E-9) +- indexMarkersByEntityUse: point read by `applyAggregate` before every aggregate write, with the `entityKey` it derives from the entity's source stream, `JSON.stringify([contextId, streamType, streamId])` of the input's stream version, as `spec:application.aggregate-projection` states (D9, E-8, E-9) - typeRegistryReader: `type RegistryReader = { db: GenericDatabaseReader }` and `type RegistryWriter = { db: GenericDatabaseWriter }`, the part of a ctx the registry's helpers use, where `ReadModelDataModel` is the data model of `readModelTables`, the schema fragment that holds `generations`, `generationProgress`, `projectionMarkers` and the tenant fill's `tenantFill` row of `spec:application.rebuild`; every helper that takes them is generic over the composition's data model, because a database reader is not covariant in its data model (E-8) - typeWritableGeneration: `type WritableGeneration = { role: "active" | "building" | "verifying"; generation: number; projectionVersion: number }` where the role is `active` for the state `active`, `building` for the state `building`, and `verifying` for the states `verifying` and `verified` (E-8, E-9, D9) - fnGenerationsToWrite: `generationsToWrite(ctx: RegistryReader, readModel: string): Promise` making at most two indexed reads, the ranges of `by_read_model_state` from `active` to `building` and from `verified` to `verifying`, throwing `"Read model " + readModel + " has " + a + " active generations and " + b + " in building, verifying or verified"` when they hold two active generations or two in-flight ones, and returning one entry per generation a command writes, the active generation first when there is one, then the in-flight one, and an empty list when the read model has neither; the answer is the same for every tenant (E-8, D9) diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md new file mode 100644 index 0000000..8570025 --- /dev/null +++ b/design/specs/application/history-projection.sdp.md @@ -0,0 +1,61 @@ +--- +id: spec:application.history-projection +kind: contract +altitude: story +readiness: defined +relations: + refines: spec:application.read-models + dependsOn: + - spec:application.projection-contract + - spec:context.event-envelope + decidedBy: + - spec:decisions.d02-context-owns-state-and-journal + - spec:decisions.d08-read-models-in-command + - spec:decisions.d09-rebuild-online-by-default + - spec:decisions.d18-everything-else-waits-for-trigger + constrainedBy: + - spec:laws.law06-technical-failure-never-a-rejection + - spec:laws.law10-replay-never-runs-commands-or-effects + - spec:facts.f01-serializable-mutations-under-occ + - spec:facts.f13-transactions-have-limits +--- +# History projection + +Story · Detail: full · Traces: D2, D8, D9, D18, Law 6, Law 10, F1, F13, Sc L2-6, E-7, E-9, E-25, E-40, E-46. + +A history projection is the form of a read model whose row depends on history across several streams: it folds events into the prior row, where a per-entity projection builds a row from one DTO. The contract pins the `HistoryProjection` shape and `applyHistoryProjection`, the one helper that folds and writes such a row, shared by the command pipeline's step 9 and the rebuild's history batches; a fold that gives one row whatever the order across streams and however the events are split between calls; a row that no fold deletes, which keeps its subject's ended state; baselines dropped before `keyOf`; the `sourceVersions` that keep an event from being folded twice; and the order allocation history of the example domain, with its table, its rules and the bound on what one call reads and writes. + +## Intent + +- outcome: Pin the history form of a projection, which folds the events of several streams into one row that the live path and the backfill write alike (E-9, D8, D9) + +### Open questions + +- [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) +- [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) + +## Contract + +- [extension] A history projection folds events into a row: `keyOf` maps each event to the row it belongs to or to none, and `project` folds the events of one key, each stream's in stream-version order and the streams interleaved in any order, into the prior row; it is deterministic in the prior row and the events, reads nothing else, and is the one form a read model that depends on history across several streams may take, which is why such a read model rebuilds only under the write pause (E-9, D8, D9, Law 10) +- [extension] A history projection's fold gives the same row whatever the order in which the events of different streams arrive and however they are split between calls: from one prior row, the events of one key folded in one call or in several, with the streams interleaved in any way that keeps each stream's events in version order, give equal rows; D2 orders events only within a stream, and the live path feeds a row command by command while the backfill feeds it stream by stream, so a view whose meaning depends on the order across streams is not a history projection and waits for the ordered consumer of D18 (E-9, D2, D8, D18) +- [extension] `project` never answers `null`: a history row, once written, keeps its subject's ended state, such as a cancelled order, and leaves its table only when its generation is purged, so its `sourceVersions`, the fold's one memory, outlive the subject's end, and an event that arrives after it, such as `AllocationReleased` after `OrderCancelled`, folds into the row and never makes a new one (E-9, D9) +- [extension] `applyHistoryProjection` drops every event of the reserved type `baseline` before `keyOf`, on both paths: a baseline holds a stream's migrated state and no fact a view folds, and a migration that changes what a source's earlier events mean to the view is a new projection version and so a new generation, never a rewrite of rows in place (E-9, E-25, D9) +- [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) +- [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` or an `AggregateProjection` takes one entry's DTO, so a read model of those forms derives each row from one source stream (E-9, E-7, D8) + +## Design + +The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:context.event-envelope` pins, which the adapter's `streams` entry carries on the live path and the context's `history` query on the backfill. `ApplyMode`, `ApplyResult`, `WritableGeneration`, `projectionOf`, `rowConventions` and the `by_key` index are those of `spec:application.projection-contract`, which this form shares with the per-entity form, and `MutationCtx` is Convex's mutation context. The example domain's rules read `HistoryEvent`, the part of `EventEnvelope` they need, and live in `example/domain/orderAllocationHistory.ts`. + +- typeHistoryProjection: `interface HistoryProjection { name: string; version: number; table: string; rowBudgetBytes?: number; keyOf(tenantId: string, event: EventEnvelope): string | null; project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row }` where `EventEnvelope` is the envelope of `spec:context.event-envelope`, `null` from `keyOf` means the event is not this view's, `prior` is `null` before the key's first event, `events` are the events of one key not yet folded into `prior`, each stream's in version order and the streams interleaved in any order, `project` answers a row and never `null`, and `rowBudgetBytes` is 16 KiB when absent; a history row is a bounded summary of history, never a list that grows with it, so `rowBudgetBytes` binds it like any row (E-9, D8, D9, F13) +- fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing, and a generation given whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf` before it reads a row, a technical failure (E-9, D8, D9, F1, Law 6) +- tableOrderAllocationHistory: `orderAllocationHistory: defineTable({ ...rowConventions, orderId: v.string(), placedAt: v.optional(v.number()), cancelledAt: v.optional(v.number()), allocations: v.array(v.object({ stockItemId: v.string(), quantity: v.number(), allocatedAt: v.number(), releasedAt: v.optional(v.number()) })) }).index("by_key", ["tenantId", "generation", "key"])` the history-dependent cross-stream view of the example domain, the `HistoryProjection` named `orderAllocationHistory` over the table of that name, keyed by order ID and folded from `OrderPlaced` and `OrderCancelled` in Orders and `StockAllocated` and `AllocationReleased` in Inventory, with one entry of `allocations` per stock item the order allocated on and `sourceVersions` holding the order stream and every stock stream folded, so a row holds at most 100 entries and 101 versions; `getConvexSize` measures the largest such row, at 256-byte tenant and order IDs and 100 stock item IDs of 64 bytes, every allocation released, at 55,803 bytes, so the view declares `rowBudgetBytes` 65,536, the ceiling; it is bound once per source stream type, rebuilds only under the write pause, and Sc L2-6 builds it (E-9, E-46, D9, F13, Sc L2-6) +- typeOrderAllocationHistoryFields: `type OrderAllocationHistoryFields = { orderId: string; placedAt?: number; cancelledAt?: number; allocations: OrderAllocation[] }` where `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the projected fields of the order allocation history, in `example/domain/orderAllocationHistory.ts` (E-9, E-46, Sc L2-6) +- fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) +- fnProjectOrderAllocationHistory: `projectOrderAllocationHistory(tenantId: string, prior: OrderAllocationHistoryFields | null, events: readonly HistoryEvent[]): OrderAllocationHistoryFields` in the same file, folding the events one by one into `prior`, or, when `prior` is `null`, into `{ orderId, allocations: [] }` with the key of the first event that has one, and throwing the plain `Error` `"The order allocation history needs a prior row or an event of an order"` when there is neither; the view's `HistoryProjection` holds this function and `orderAllocationHistoryKeyOf` as its `project` and `keyOf` (E-9, E-46, Sc L2-6) +- orderAllocationHistoryFold: each field is written by the events of one stream, each event's time being its `occurredAt`, or its `recordedAt` when absent: `OrderPlaced` sets `placedAt` and `OrderCancelled` sets `cancelledAt`; `StockAllocated` on a stock item sets that stock item's entry of `allocations` to the payload's `quantity` and the time as `allocatedAt`, with no `releasedAt`; `AllocationReleased` sets `releasedAt` on that entry and changes nothing when the order has none on that stock item; every other event changes nothing; `allocations` is kept sorted by stock item ID, compared by UTF-16 code units; so the fold gives one row whatever the order across streams, a stock event before `OrderPlaced` included, and a pure test folds one order's events in every interleaving of its three streams and every split into calls and finds one row (E-9, D2, Sc L2-6) +- limitHistoryFold: on the live path step 9 calls `applyHistoryProjection` once per history read model per command, so it reads and writes at most one row per distinct key among the command's events in each generation, each at most `rowBudgetBytes`, and a `PlaceOrder` of 100 lines, whose 101 `streams` entries key to one order, reads and writes the order allocation history's one row once; on the backfill it takes one `history` page of at most the progress row's `batchSize` events, as the rebuild's `limitHistoryBatch` bounds it, so one batch reads at most that many events plus as many rows (F13, E-9, E-40) + +## Verification — reviewed + +- A reviewer confirms that every `HistoryProjection` is rebuilt with `pauseRequired` on its generations, that `applyHistoryProjection` drops baselines before `keyOf` and already-folded events by the row's `sourceVersions` before it calls `project`, that no history projection's `project` answers `null`, and that the L2-6 examples assert the fold against the journal. diff --git a/design/specs/application/orders-inventory-example.sdp.md b/design/specs/application/orders-inventory-example.sdp.md index 34a422a..5842e28 100644 --- a/design/specs/application/orders-inventory-example.sdp.md +++ b/design/specs/application/orders-inventory-example.sdp.md @@ -14,7 +14,9 @@ relations: constrainedBy: - spec:laws.law01-sanctioned-writes-only - spec:laws.law09-no-invariant-on-late-read-model - dependsOn: spec:context.batch-shaped-api + dependsOn: + - spec:context.batch-shaped-api + - spec:application.history-projection --- # Orders and Inventory, the example domain diff --git a/design/specs/application/projection-contract.sdp.md b/design/specs/application/projection-contract.sdp.md index def3f02..d609090 100644 --- a/design/specs/application/projection-contract.sdp.md +++ b/design/specs/application/projection-contract.sdp.md @@ -19,7 +19,7 @@ relations: Story · Detail: full · Traces: D8, D9, Law 6, Law 10, Law 11, F1, F13, E-8, E-9. -A projection is the named, versioned, deterministic function that turns a context's DTO at a stream version into a read-model row, and `applyProjection` is the one helper that writes that row, shared by the use case's live update and the rebuild's backfill. The contract pins the projection's shape, the declaration of a per-entity read model, which names its table and row budget and holds its projection, the row conventions every read model follows, the write rule that decides between insert, update and skip, the aggregate form with its per-entity marker, and the history form that folds the events of several streams into one row. Everything here is an extension of D8 and D9: the doc fixes the properties, this contract fixes the signature. +A projection is the named, versioned, deterministic function that turns a context's DTO at a stream version into a read-model row, and `applyProjection` is the one helper that writes that row, shared by the use case's live update and the rebuild's backfill. The contract pins the projection's shape, the declaration of a per-entity read model, which names its table and row budget and holds its projection, the row conventions every read model follows, and the write rule that decides between insert, update and skip. The aggregate form with its per-entity marker and the history form that folds the events of several streams into one row have Specs of their own, `spec:application.aggregate-projection` and `spec:application.history-projection`. Everything here is an extension of D8 and D9: the doc fixes the properties, this contract fixes the signature. ## Intent @@ -33,9 +33,7 @@ A projection is the named, versioned, deterministic function that turns a contex - [non-blocking] Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input. The option taken here: a per-entity read model declared as a `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, a list of `Projection` with the latest first, each holding `version`, `keyOf` and `project` alone, rows with `tenantId`, `generation`, `key`, `projectionVersion` and `sourceVersions`, one `applyProjection` helper with a mode per caller that writes each generation by its role, active, building or verifying, with the projection whose version the generation records, for an `AggregateProjection` an aggregate row with `value` and `entityCount` and no `sourceVersions`, because the markers carry them, written by `applyAggregate` under the marker's version compare with the mode ignored, and for a history-dependent view a `HistoryProjection` that folds events into the prior row, fed on the live path by the events the operation appended, which the adapter's `streams` entry carries, and on the backfill by the context's `history` pages under the write pause, with `sourceVersions` recording the highest version folded per stream so that an event is never folded twice; a row that derives from more than one source stream type is a history row, its projection bound once per source stream type, and a small cross-context view of current state is D8's parent query over bounded component reads; the owner confirms the three forms and has not ruled on the split of a per-entity read model into `ReadModel` and `Projection`, on the write by generation role or on the row measured against its budget at every write (E-9, E-23, E-24, D8, D9) - [non-blocking] Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9) - [non-blocking] The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9) -- [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) - [non-blocking] Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole row from one DTO and a backfill enumerates one source; the option taken here is D8's other default, a parent query over bounded component reads, until a view needs such a row, which then needs a form whose `project` takes the DTO of every matching entry of one command and whose backfill reads the other context in the same mutation, online (E-9, D8, E-45) -- [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) ## Contract @@ -46,7 +44,6 @@ A projection is the named, versioned, deterministic function that turns a contex - The DTO a projection receives is the same `toDto(state, meta)` on both paths, the adapter's `streams` entry on the live path and the context's `list` page on the backfill, and it carries the stream's `StreamVersion` as `version`, so no adapter between two DTO shapes exists (D8, D9, E-9, E-24) - Every read-model row carries `tenantId`, `generation`, `key` and `projectionVersion`, a per-entity or history row carries `sourceVersions` as well, and every read-model table has the `by_key` index leading with the tenant (E-9, Law 11, D9) - `sourceVersions` holds one `StreamVersion` per source stream the row derives from; a per-entity row holds one, and a history row one per stream whose events it folded (E-9, D2, D8) -- [extension] An aggregate row derives from every entity under its key, so it carries no `sourceVersions`; it carries `value`, the sum of the recorded contributions, and `entityCount`, the number of markers, and the per-entity marker carries the `sourceVersions` the row conventions would otherwise hold (E-9, D9) - [extension] A read model declares its name, the parent table that holds its rows, `rowBudgetBytes`, the largest row it writes, 16 KiB by default and at most `limitRowSize`, and its projections, one per version it can still write, the latest first, with distinct versions and at least one; every version writes rows the one table's validator accepts, and a change of shape the table cannot hold beside the earlier one is a new read model; a projection is the versioned rules alone, so they are tested without a table; the rebuild derives its batch bound from the declared budget the way the context derives its page from the stream budget (E-9, E-40, F13) - On the backfill path a row is written only if it is missing or its `sourceVersions` are older than the input's for the same stream, and a row with a newer version is never overwritten; the rule is the backfill path's only, and a live write to the active generation always lands (D9) - In the active generation a live write always lands: a missing row is inserted and an existing row is replaced, in the live-created mode and the live-updated mode alike, because `project` sees the whole DTO and cannot build a partial row, so a subject whose row was deleted gets its row back from the next command that writes it (D9, E-9) @@ -54,15 +51,6 @@ A projection is the named, versioned, deterministic function that turns a contex - [extension] Every write of a read-model row measures the whole row, the conventions included, with `getConvexSize` and throws a plain error, a technical failure that rolls the command back, when it measures above the read model's `rowBudgetBytes`; a declared budget above the ceiling of `limitRowSize` throws the same way (E-9, F13, Law 6) - In the backfill mode the one generation the batch names is written whatever its role: the row is inserted if missing, updated if older, and, when the DTO projects to `null`, deleted if its `sourceVersions` are older than the input's and left as `skipped-newer` otherwise, which is how a verify pass makes absence right as well as presence (D9, E-8, E-9) - A projection may return `null` for a DTO that has no row, such as a deleted subject; `applyProjection` then deletes the row if present, in the backfill mode only when the row is older than the input, and does nothing when it is absent, and nothing records the deletion, because a backfill batch reads the source in the same mutation that writes the row, so a batch that read the subject before its deletion committed re-runs under optimistic concurrency and reads the deleted subject, as the rebuild's `occRace` states (E-9, D2, F1) -- An aggregate projection contributes a number per entity to an aggregate row and keeps a per-entity marker so live commands and backfill never count one entity twice (D9) -- [extension] `applyAggregate` ignores the mode: the marker's `sourceVersions` decide, a marker that is not older than the input makes the write `skipped-newer`, and otherwise the marker's recorded contribution leaves the row of the marker's `aggregateKey` and the new contribution joins the row of `aggregateKeyOf`, one row moved by the difference when the key is the same and two rows when it changed, a row whose `entityCount` reaches 0 being deleted, and a `null` contribution joins no row and removes the marker; a live update on an entity backfill has not reached is therefore not partial, because `contribute` sees the whole DTO, which is why the missing-row rule of the per-entity path does not apply (E-9, D9, F1) -- [extension] An aggregate's entity is its source stream: `applyAggregate` derives the marker's `entityKey` from the input's one `StreamVersion` as `JSON.stringify([contextId, streamType, streamId])`, so the live path and the backfill, which pass `entry.version` and `dto.version`, name one marker, and equal stream IDs in two contexts or two stream types name two (E-9, D9, D2) -- [extension] A history projection folds events into a row: `keyOf` maps each event to the row it belongs to or to none, and `project` folds the events of one key, each stream's in stream-version order and the streams interleaved in any order, into the prior row; it is deterministic in the prior row and the events, reads nothing else, and is the one form a read model that depends on history across several streams may take, which is why such a read model rebuilds only under the write pause (E-9, D8, D9, Law 10) -- [extension] A history projection's fold gives the same row whatever the order in which the events of different streams arrive and however they are split between calls: from one prior row, the events of one key folded in one call or in several, with the streams interleaved in any way that keeps each stream's events in version order, give equal rows; D2 orders events only within a stream, and the live path feeds a row command by command while the backfill feeds it stream by stream, so a view whose meaning depends on the order across streams is not a history projection and waits for the ordered consumer of D18 (E-9, D2, D8, D18) -- [extension] `project` never answers `null`: a history row, once written, keeps its subject's ended state, such as a cancelled order, and leaves its table only when its generation is purged, so its `sourceVersions`, the fold's one memory, outlive the subject's end, and an event that arrives after it, such as `AllocationReleased` after `OrderCancelled`, folds into the row and never makes a new one (E-9, D9) -- [extension] `applyHistoryProjection` drops every event of the reserved type `baseline` before `keyOf`, on both paths: a baseline holds a stream's migrated state and no fact a view folds, and a migration that changes what a source's earlier events mean to the view is a new projection version and so a new generation, never a rewrite of rows in place (E-9, E-25, D9) -- [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) -- [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` or an `AggregateProjection` takes one entry's DTO, so a read model of those forms derives each row from one source stream (E-9, E-7, D8) - A projection's version changes whenever its output for any input changes; a new version is added at the head of the read model's `projections` and is a new generation, never an in-place rewrite, and an earlier version leaves the list only when no generation in `building`, `verifying`, `verified` or `active` records it and none in `retired` is to be rolled back to (D8, D9) - The write rule reads and writes inside one mutation, so two writers of the same row serialize under optimistic concurrency and neither overwrites newer data (F1, D9) @@ -75,26 +63,11 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape w - fnProjectionOf: `projectionOf>(readModel: ReadModel, version: number): Projection` returning the declared projection of that version and throwing the plain `Error` `"Read model " + readModel.name + " declares no projection of version " + version` when there is none, a technical failure on the command path and a refusal of `startGeneration` and `rollbackGeneration` (E-9, D8, Law 6) - typeWritableGeneration: `type WritableGeneration = { role: "active" | "building" | "verifying"; generation: number; projectionVersion: number }`, one generation a command writes, as the registry's `generationsToWrite` returns it; the role `verifying` covers the states `verifying` and `verified` (E-8, E-9, D9) - typeRowWriter: `type RowWriter = { db: GenericDatabaseWriter }`, the part of a ctx `applyProjection` uses, generic over the composition's data model because a database writer is not covariant in its data model; `RowDataModel` is the data model of one table that spreads `rowConventions` and has `by_key`, and the library reads and writes the read model's own table, named by its `table`, under that table's type (E-9) -- typeAggregateProjection: `interface AggregateProjection { name: string; version: number; table: string; rowBudgetBytes?: number; aggregateKeyOf(tenantId: string, dto: D): string; contribute(tenantId: string, dto: D): number | null }` where `null` means the entity no longer contributes, such as a deleted subject, and `rowBudgetBytes` bounds the aggregate row and the marker alike (E-9, D9, F13) -- typeHistoryProjection: `interface HistoryProjection { name: string; version: number; table: string; rowBudgetBytes?: number; keyOf(tenantId: string, event: EventEnvelope): string | null; project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row }` where `EventEnvelope` is the envelope of `spec:context.event-envelope`, `null` from `keyOf` means the event is not this view's, `prior` is `null` before the key's first event, `events` are the events of one key not yet folded into `prior`, each stream's in version order and the streams interleaved in any order, `project` answers a row and never `null`, and `rowBudgetBytes` is 16 KiB when absent; a history row is a bounded summary of history, never a list that grows with it, so `rowBudgetBytes` binds it like any row (E-9, D8, D9, F13) -- fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing, and a generation given whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf` before it reads a row, a technical failure (E-9, D8, D9, F1, Law 6) - typeApplyMode: `type ApplyMode = "live-created" | "live-updated" | "backfill"` (E-9, D9) - typeApplyResult: `type ApplyResult = "inserted" | "updated" | "deleted" | "skipped-missing" | "skipped-newer" | "unchanged"` (E-9, D9) - fnApplyProjection: `applyProjection>(ctx: RowWriter, readModel: ReadModel, input: { tenantId: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise` writing one result per generation in the order given; the pipeline's step 9 calls it with `versions: [entry.version]` for a per-entity row and the rebuild's batch with `versions: [dto.version]` (E-9, D8, D9) - callers: the two callers are the command pipeline's step 9, with the mode from the `streams` entry's `created` flag and the list `generationsToWrite` returned, passed unchanged, and the rebuild's backfill and verify batches in `backfill` mode for the one generation they build or verify; a use case body never calls it, and the same two callers are the only callers of `applyAggregate` and `applyHistoryProjection`; step 9 calls `applyHistoryProjection` once per history read model per command, in the live-updated mode, with the events of every `streams` entry any of its bindings matches in the order of the entries, and a history batch calls it once with its one `history` page (E-9, D8, D9, E-7) -- tableOrderAllocationHistory: `orderAllocationHistory: defineTable({ ...rowConventions, orderId: v.string(), placedAt: v.optional(v.number()), cancelledAt: v.optional(v.number()), allocations: v.array(v.object({ stockItemId: v.string(), quantity: v.number(), allocatedAt: v.number(), releasedAt: v.optional(v.number()) })) }).index("by_key", ["tenantId", "generation", "key"])` the history-dependent cross-stream view of the example domain, the `HistoryProjection` named `orderAllocationHistory` over the table of that name, keyed by order ID and folded from `OrderPlaced` and `OrderCancelled` in Orders and `StockAllocated` and `AllocationReleased` in Inventory, with one entry of `allocations` per stock item the order allocated on and `sourceVersions` holding the order stream and every stock stream folded, so a row holds at most 100 entries and 101 versions; `getConvexSize` measures the largest such row, at 256-byte tenant and order IDs and 100 stock item IDs of 64 bytes, every allocation released, at 55,803 bytes, so the view declares `rowBudgetBytes` 65,536, the ceiling; it is bound once per source stream type, rebuilds only under the write pause, and Sc L2-6 builds it (E-9, E-46, D9, F13, Sc L2-6) -- typeOrderAllocationHistoryFields: `type OrderAllocationHistoryFields = { orderId: string; placedAt?: number; cancelledAt?: number; allocations: OrderAllocation[] }` where `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the projected fields of the order allocation history, in `example/domain/orderAllocationHistory.ts` (E-9, E-46, Sc L2-6) -- fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) -- fnProjectOrderAllocationHistory: `projectOrderAllocationHistory(tenantId: string, prior: OrderAllocationHistoryFields | null, events: readonly HistoryEvent[]): OrderAllocationHistoryFields` in the same file, folding the events one by one into `prior`, or, when `prior` is `null`, into `{ orderId, allocations: [] }` with the key of the first event that has one, and throwing the plain `Error` `"The order allocation history needs a prior row or an event of an order"` when there is neither; the view's `HistoryProjection` holds this function and `orderAllocationHistoryKeyOf` as its `project` and `keyOf` (E-9, E-46, Sc L2-6) -- orderAllocationHistoryFold: each field is written by the events of one stream, each event's time being its `occurredAt`, or its `recordedAt` when absent: `OrderPlaced` sets `placedAt` and `OrderCancelled` sets `cancelledAt`; `StockAllocated` on a stock item sets that stock item's entry of `allocations` to the payload's `quantity` and the time as `allocatedAt`, with no `releasedAt`; `AllocationReleased` sets `releasedAt` on that entry and changes nothing when the order has none on that stock item; every other event changes nothing; `allocations` is kept sorted by stock item ID, compared by UTF-16 code units; so the fold gives one row whatever the order across streams, a stock event before `OrderPlaced` included, and a pure test folds one order's events in every interleaving of its three streams and every split into calls and finds one row (E-9, D2, Sc L2-6) -- fnApplyAggregate: `applyAggregate(ctx: MutationCtx, projection: AggregateProjection, input: { tenantId: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise` answering, per generation in order, one result for each aggregate row it writes, the old key's row before the new key's on a key change, `inserted` for a row it created, `updated` for a row whose `value` or `entityCount` changed and `deleted` for a row whose `entityCount` reached 0, or one `skipped-newer` when the marker was not older and one `unchanged` when no row moved; `input.versions` holds the one `StreamVersion` of the entity's source stream, and another length throws a plain error; `mode` is accepted for symmetry with `applyProjection` and read by nothing (E-9, D9) -- aggregateStep1: for each generation it derives `entityKey` from `input.versions[0]` as the contract states, reads the marker by `by_entity` with the tenant, read model, generation and `entityKey`, and computes `contribution` as `contribute(tenantId, dto)` and, when that is not `null`, `aggregateKey` as `aggregateKeyOf(tenantId, dto)` (E-9, D9) -- aggregateStep2: when a marker exists and its `sourceVersions` are not older than `input.versions` for the same stream, the result is `skipped-newer` and nothing is written (E-9, D9, F1) -- aggregateStep3: when a marker exists and `contribution` is `null` or `aggregateKey` differs from the marker's, it reads the row of the marker's `aggregateKey` by `by_key`, throwing a plain error when it is missing, a defect, subtracts the marker's contribution from `value` and 1 from `entityCount`, and deletes the row when `entityCount` reaches 0 and replaces it otherwise; when `contribution` is not `null` and the marker is missing or its key differs, it reads the row of `aggregateKey`, inserts it with `value` equal to `contribution` and `entityCount` 1 when missing, and otherwise adds `contribution` to `value` and 1 to `entityCount`; when the marker exists with the same key and `contribution` is not `null`, it adds `contribution` minus the marker's to that row's `value`, leaves `entityCount`, and writes no row when the difference is 0; when the marker is missing and `contribution` is `null`, it reads and writes no row (E-9, D9) -- aggregateStep4: then it inserts or replaces the marker with `entityKey`, `contribution`, `aggregateKey` and `input.versions`, or deletes it when `contribution` is `null`, all in the same mutation; a key change reads and writes two aggregate rows and the marker in each generation, and its two rows count against `limitReadModelWritesPerCommand` of `spec:application.read-models` (E-9, D9, E-8, E-45) - validatorRowConventions: `const rowConventions = { tenantId: v.string(), generation: v.number(), key: v.string(), projectionVersion: v.number(), sourceVersions: v.array(streamVersionValidator) }` spread into every per-entity and history read-model `defineTable` (E-9, Law 11) -- validatorAggregateRowConventions: `const aggregateRowConventions = { tenantId: v.string(), generation: v.number(), key: v.string(), projectionVersion: v.number(), value: v.number(), entityCount: v.number() }` spread into every aggregate read-model `defineTable`, with the same `by_key` index, where `key` is `aggregateKeyOf(tenantId, dto)` (E-9, Law 11, D9) -- tableOrderTotals: `orderTotals: defineTable({ ...aggregateRowConventions }).index("by_key", ["tenantId", "generation", "key"])` an aggregate of order totals per status, where `key` is the status, `value` the sum of the orders' totals and `entityCount` the number of orders in it, given as the shape of an aggregate table and not as a read model the first experiment builds (E-9, D9) - validatorOrderSummaryFields: `const orderSummaryFields = { orderId: v.string(), status: v.union(v.literal("placed"), v.literal("cancelled")), lineCount: v.number(), total: v.number(), placedAt: v.number() }` the projected fields of the order summary, which its table spreads and its query's view validator spreads (E-9, E-46, First experiment) - tableOrderSummaries: `orderSummaries: defineTable({ ...rowConventions, ...orderSummaryFields }).index("by_key", ["tenantId", "generation", "key"]).index("by_status", ["tenantId", "generation", "status", "placedAt", "key"])` (E-9, E-46, First experiment) - indexByKeyUse: point read by `applyProjection` before every write and by the entity query; `key` is `keyOf(tenantId, dto)`, the application ID of the entity (E-9, D2) @@ -104,15 +77,12 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape w - step3: it decides by the mode and the generation's role: in the two live modes it inserts a missing row and replaces an existing one, except that live-updated in the role `building` answers `skipped-missing` for a missing row; in the backfill mode it inserts when missing and updates when the existing `sourceVersions` are older, else `skipped-newer`, whatever the role (D9, E-8, E-9) - step4: before a write it throws a plain error when the row measures above `rowBudgetBytes` with `getConvexSize`; then it writes with `ctx.db.insert`, `ctx.db.replace` or `ctx.db.delete` in the same mutation, a written row carrying the generation's `projectionVersion`, which is the version of the projection that built it, and returns the results in generation order (E-9, F1, F13) - limitRowSize: a read-model row stays under its read model's `rowBudgetBytes`, which `applyProjection` checks at every write, 16 KiB by default and at most 64 KiB, the library constant `limitRowBudgetBytes`, well under the 1 MiB document limit; the rebuild's batch bound is derived from the declared budget, and a row that would grow without bound with history is a wrong read model for this contract, a history projection included, whose row summarizes history within the same budget (F13, E-9, E-40) -- limitHistoryFold: on the live path step 9 calls `applyHistoryProjection` once per history read model per command, so it reads and writes at most one row per distinct key among the command's events in each generation, each at most `rowBudgetBytes`, and a `PlaceOrder` of 100 lines, whose 101 `streams` entries key to one order, reads and writes the order allocation history's one row once; on the backfill it takes one `history` page of at most the progress row's `batchSize` events, as the rebuild's `limitHistoryBatch` bounds it, so one batch reads at most that many events plus as many rows (F13, E-9, E-40) - limitGenerationsPerWrite: at most 2 generations are written per row per command, the active one and the one in building, verifying or verified if any; a retired generation is kept but never written, so one read model costs at most 2 point reads and 2 writes per command and exactly 1 of each outside a rebuild (E-9, E-8, F13) - determinismCheck: the acceptance suite folds a sample of DTOs through `project` twice and compares, and compares a backfilled row with the live-written row for the same entity; a pure test folds one order's events through the order allocation history's `project` in every interleaving of its streams and every split into calls and finds one row; a test of `applyAggregate` moves an entity from one aggregate key to another and finds the old key's row without its contribution and count and the new key's with them (D8, D9, Sc L2-5, Sc L2-6) ## Verification — reviewed - A reviewer confirms that every read model in the corpus and the experiment is declared as a `ReadModel` with its `Projection`, an `AggregateProjection` or a `HistoryProjection` bound on a command declaration, and that the pipeline's step 9 and the rebuild's batches are the only callers of `applyProjection`, `applyAggregate` and `applyHistoryProjection`. -- A reviewer confirms that every `HistoryProjection` is rebuilt with `pauseRequired` on its generations, that `applyHistoryProjection` drops baselines before `keyOf` and already-folded events by the row's `sourceVersions` before it calls `project`, that no history projection's `project` answers `null`, and that the L2-6 examples assert the fold against the journal. - A reviewer confirms that no `project` function touches `ctx`, the database, the scheduler or the environment. - A reviewer confirms that every per-entity or history read-model table spreads `rowConventions`, that every aggregate table spreads `aggregateRowConventions`, and that each carries the `by_key` index. -- A reviewer confirms that `applyAggregate` compares the marker's `sourceVersions` before it touches `value`, that it reads no mode, that it derives `entityKey` from the input's stream version, that a key change moves the contribution and the count from the marker's key's row to the new key's row, and that a `null` contribution removes the marker and its recorded contribution and creates no row. - A reviewer confirms that a `convex-test` test on the fixture composition writes one `CreateTwiceSummarizedDocument` into an active generation of `documentTitle` at version 1 and a generation being built at version 2 and finds on each row its own generation's `projectionVersion`, that a backfill batch of each generation over a document whose `title` is the depot's `deletedTitle` leaves version 1's row with that title and no row at version 2, the two versions' one difference, and that a test deletes a row through a `null` projection, `applyProjection` in the backfill mode at version 2 over that document, and finds the next live-updated write of the same document at a higher stream version with a live title, `applyProjection` called with the mode `live-updated` because no fixture command amends a document under `documentTitle`, answering `inserted` in the active generation and in a generation in `verifying`, and `skipped-missing` in one in `building`. diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 612b620..3db5089 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -8,6 +8,7 @@ relations: dependsOn: - spec:context.event-envelope - spec:application.projection-contract + - spec:application.history-projection - spec:application.generation-registry - spec:application.write-pause - spec:context.queries diff --git a/design/specs/command/command-declaration.sdp.md b/design/specs/command/command-declaration.sdp.md index 8c14378..d289836 100644 --- a/design/specs/command/command-declaration.sdp.md +++ b/design/specs/command/command-declaration.sdp.md @@ -10,6 +10,8 @@ relations: - spec:command.outcome-boundary - spec:kernel.outcome-model - spec:application.projection-contract + - spec:application.aggregate-projection + - spec:application.history-projection - spec:context.persistence-adapter - spec:operations.baseline-operations decidedBy: spec:decisions.d12-one-declaration-per-command @@ -66,7 +68,7 @@ What generation would emit, once two modules show the pattern: for each declarat - typePermissionPolicy: `type PermissionPolicy = { permission: string; subjectFrom?: (input: I) => SubjectRef }` (D11, D12) - typeExecutor: `type Executor = (ctx: MutationCtx, call: { tenantId: string; actor: Actor; operation: OperationRef; input: I }) => Promise>` where `OperationRef` is the one the pipeline minted at step 7, forwarded unchanged to every context call, and the executor's context calls are `ctx.runMutation` on component APIs with the facts it captured (D12, D10, D4, D3, E-26) - typeExecutorResult: `type ExecutorResult = CommittedOutcome & { streams: StreamDto[] }` where `CommittedOutcome` is the kernel's committed half of `Outcome` and `streams` concatenates the `streams` of every context outcome the executor received, the `StreamDto` of `spec:context.persistence-adapter`, so the pipeline's step 9 has every DTO, version and created flag it needs (D12, D4, D8, E-7, E-23) -- typeReadModelBinding: `type ReadModelBinding = { readModel: ReadModel | AggregateProjection | HistoryProjection; source: SourceRef }`, where `readModel` is a per-entity read model, an aggregate projection or a history projection as `spec:application.projection-contract` pins them and `source` selects which `streams` entries feed it; the binding repeats neither the read model's name nor its projection's version, a history projection is bound once per source stream type it folds while a per-entity read model or an aggregate projection is bound to its one source stream type, and the binding has no update function of its own (D8, D12, E-7, E-9) +- typeReadModelBinding: `type ReadModelBinding = { readModel: ReadModel | AggregateProjection | HistoryProjection; source: SourceRef }`, where `readModel` is a per-entity read model, an aggregate projection or a history projection as `spec:application.projection-contract`, `spec:application.aggregate-projection` and `spec:application.history-projection` pin them and `source` selects which `streams` entries feed it; the binding repeats neither the read model's name nor its projection's version, a history projection is bound once per source stream type it folds while a per-entity read model or an aggregate projection is bound to its one source stream type, and the binding has no update function of its own (D8, D12, E-7, E-9) - typeAudit: `audit?: { kind: "security" | "business" }` asks the pipeline's step 10 to write one audit record through `writeAudit` of `spec:operations.baseline-operations`, which fails closed, after an applied command and after a business failure; absent, the default, the command writes none (D19, E-38, E-43) - typeDiagnosticSinkField: `diagnosticSink?: DiagnosticSink`, the sink type of `spec:operations.baseline-operations`, names where the pipeline writes the command's diagnostic lines; absent, the default, it is `consoleSink`; the production composition names none, and the fixture composition's `PlaceOrder` names the sink through which Sc ALL-1 breaks metrics and logging (D19, E-38, E-43) - typeAdmissionPolicy: `type AdmissionPolicy = (ctx: MutationCtx, call: PipelineCall) => Promise<{ admitted: true } | { admitted: false; code: "rateLimited" | "capacity"; retryAfterMs?: number }>`; a consumption it writes commits only with the command, so it counts committed intent (D6, E-32) diff --git a/design/specs/command/command-pipeline.sdp.md b/design/specs/command/command-pipeline.sdp.md index c9003ea..29fa0b1 100644 --- a/design/specs/command/command-pipeline.sdp.md +++ b/design/specs/command/command-pipeline.sdp.md @@ -12,6 +12,8 @@ relations: - spec:command.outcome-boundary - spec:command.actor-and-scope - spec:application.projection-contract + - spec:application.aggregate-projection + - spec:application.history-projection - spec:application.write-pause - spec:command.receipt-table - spec:context.persistence-adapter diff --git a/design/specs/history-view.pack.sdp.md b/design/specs/history-view.pack.sdp.md new file mode 100644 index 0000000..f0e78a4 --- /dev/null +++ b/design/specs/history-view.pack.sdp.md @@ -0,0 +1,24 @@ +--- +id: pack:history-view +specs: + - spec:application.history-projection + - spec:application.projection-contract + - spec:application.read-models + - spec:application.rebuild + - spec:application.rebuild.write-pause-rebuild-interrupt + - spec:application.rebuild.write-pause-rebuild-abort + - spec:application.write-pause + - spec:application.generation-registry + - spec:application.orders-inventory-example + - spec:command.command-declaration + - spec:command.command-pipeline + - spec:context.event-envelope + - spec:context.journal + - spec:context.queries + - spec:decisions.d09-rebuild-online-by-default +modelRefs: + - spec:platform.vocabulary +--- +# History view + +The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. diff --git a/example/domain/orderAllocationHistory.ts b/example/domain/orderAllocationHistory.ts index 49dc70e..cf18703 100644 --- a/example/domain/orderAllocationHistory.ts +++ b/example/domain/orderAllocationHistory.ts @@ -1,10 +1,10 @@ // The order allocation history's rules: keyOf maps an event to the order it belongs to, and project -// folds one order's events into its row (spec:application.projection-contract, -// orderAllocationHistoryFold). Each field of the row is written by the events of one stream, -// placedAt and cancelledAt by the order's and each allocation by its stock item's, and the -// allocations are kept in stock item ID order, so the row is one value whatever the order in which -// the events of different streams arrive. The parent's HistoryProjection holds these rules; no -// context mounts them, so index.ts does not export them. +// folds one order's events into its row +// (spec:application.history-projection#design.orderAllocationHistoryFold). Each field of the row +// is written by the events of one stream, placedAt and cancelledAt by the order's and each +// allocation by its stock item's, and the allocations are kept in stock item ID order, so the row +// is one value whatever the order in which the events of different streams arrive. The parent's +// HistoryProjection holds these rules; no context mounts them, so index.ts does not export them. import type { OrderEvent } from "./order.js"; import type { StockItemEvent } from "./stockItem.js"; // The part of an event envelope the rules read; the context library's EventEnvelope has each field. diff --git a/tests/pure/order-allocation-history.test.ts b/tests/pure/order-allocation-history.test.ts index 269db31..86405a6 100644 --- a/tests/pure/order-allocation-history.test.ts +++ b/tests/pure/order-allocation-history.test.ts @@ -1,6 +1,6 @@ // The order allocation history's fold gives one row whatever the order in which the events of // different streams arrive and however they are split between calls -// (spec:application.projection-contract, orderAllocationHistoryFold). +// (spec:application.history-projection#design.orderAllocationHistoryFold). import { expect, test } from "vitest"; import { orderAllocationHistoryKeyOf, From 4179fd57c2e7d3e25df34ca6fc82037b080c3ec8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 13:53:49 +0200 Subject: [PATCH 04/60] build: the pinned module of the history view's Specs, emitted from recipe 24 Co-Authored-By: Claude Opus 5.5 --- package.json | 2 +- scripts/pinned.mjs | 571 +++++++++++++++++++++++++++++++++++ tests/types/pinned.test-d.ts | 253 ++++++++++++++++ 3 files changed, 825 insertions(+), 1 deletion(-) create mode 100644 scripts/pinned.mjs create mode 100644 tests/types/pinned.test-d.ts diff --git a/package.json b/package.json index aed6492..4bad80f 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "validate": "sdp validate", "view": "sdp view", "census": "sdp census", - "sdp:build": "npx sdp build", + "sdp:build": "npx sdp build && node scripts/pinned.mjs --name history-view --specs spec:application.projection-contract,spec:application.rebuild,spec:application.write-pause,spec:application.generation-registry,spec:application.orders-inventory-example,spec:context.queries,spec:context.journal,spec:context.event-envelope,spec:command.command-declaration,spec:command.command-pipeline # becomes --pack pack:history-view once the Pack exists", "typecheck": "npm run sdp:build && tsc", "lint": "eslint src fixture example harness tests scripts vitest.config.ts vitest.hosted.config.ts eslint.config.js", "format:check": "prettier --check src fixture example harness tests scripts evidence/README.md README.md package.json tsconfig.json convex.json vitest.config.ts vitest.hosted.config.ts eslint.config.js .github/workflows/ci.yml .github/workflows/hosted.yml .prettierrc.json", diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs new file mode 100644 index 0000000..f98c668 --- /dev/null +++ b/scripts/pinned.mjs @@ -0,0 +1,571 @@ +// Emits the pinned module of one scope of Specs, a TypeScript module the type tests import: +// `node scripts/pinned.mjs --pack ` or `node scripts/pinned.mjs --specs --name ` +// writes generated/pinned/.ts, where a Pack's name is its id without `pack:`. It reads the body +// of recipe 24, "Pinned declarations", from the pinned Protocol's recipes.md and runs it with the +// pinned CLI, so the list of declarations is the Protocol's own. spec:extraction.contract-declarations +// rules what the module is: a projection, regenerated and never edited, which earns its place when a +// changed pinned signature fails the typecheck against the implementation. +// +// Which entries become declarations is this project's policy, by the prefix of the entry's key: +// - `type*` whose span opens with `type ` or `interface `: `export ` and the span. +// - `validator*` whose span opens with `const `: `export ` and the span. +// - `fn*` whose span is a call signature `name<...>(...): R`: `export declare function ` and the span, +// where a parameter's default value, which a declaration cannot carry, makes the parameter optional. +// - `table*` whose span is `name: defineTable(...)`: one member of `export const tables = { ... }`. +// Every other entry is skipped and counted by its prefix. The module holds the scope's own entries +// and, marked, every entry of another Spec that pins a name they use, and so on until nothing is +// missing. A name pinned twice is never merged: the second pin is compiled beside the first and held +// identical to it. The summary goes to stderr. +// Exit 0: written. 1: written, but a name a declaration uses is declared nowhere, which the summary +// names. 2: it cannot run. +import { execFileSync } from "node:child_process"; +import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { join, relative } from "node:path"; +import ts from "typescript"; + +const root = join(import.meta.dirname, ".."); +const protocol = join( + root, + "node_modules/@libar-dev/software-delivery-protocol", +); + +function cannot(reason) { + console.error(`pinned: cannot emit · ${reason}`); + process.exit(2); +} + +// The preamble. Convex's own names are imported; a name Convex or a composition's generated code +// provides gets a placeholder over Convex's generic types. +const imports = [ + "import {", + " defineTable,", + " paginationOptsValidator,", + " paginationResultValidator,", + " type FunctionReference,", + " type GenericDataModel,", + " type GenericDatabaseReader,", + " type GenericDatabaseWriter,", + " type GenericDocument,", + " type GenericMutationCtx,", + " type GenericQueryCtx,", + " type PaginationOptions,", + " type PaginationResult,", + " type RegisteredMutation,", + " type RegisteredQuery,", + '} from "convex/server";', + "import {", + " v,", + " type GenericId,", + " type PropertyValidators,", + " type Validator,", + " type Value,", + '} from "convex/values";', +]; +const importedNames = [ + ...imports.join("\n").matchAll(/^ {2}(?:type )?([A-Za-z]\w*),$/gm), +].map(([, name]) => name); +const placeholders = { + MutationCtx: [ + "type MutationCtx = GenericMutationCtx;", + "A composition's _generated/server.js, over its own data model.", + ], + QueryCtx: [ + "type QueryCtx = GenericQueryCtx;", + "A composition's _generated/server.js, over its own data model.", + ], + Id: [ + "type Id = GenericId;", + "A composition's _generated/dataModel.js.", + ], + Doc: [ + "type Doc = GenericDocument & { _id: Id; _creationTime: number };", + "A composition's _generated/dataModel.js, over its own tables.", + ], +}; + +// Names the design uses that no Spec pins and Convex does not provide: each is a design gap. Where +// the implementation exports the name, its declaration stands in, so that a pin using the name can +// still be compared with the code; the module emits the gaps its own declarations use. +const gaps = { + ReadModelDataModel: [ + 'type ReadModelDataModel = import("../../src/read-model/index.js").ReadModelDataModel;', + "src/read-model/tables.ts", + ], + RowDataModel: [ + 'type RowDataModel = import("../../src/read-model/index.js").RowDataModel;', + "src/read-model/tables.ts", + ], + GateDataModel: [ + 'type GateDataModel = import("../../src/gate/index.js").GateDataModel;', + "src/gate/tables.ts", + ], + ListArgs: [ + 'type ListArgs = import("../../src/context/index.js").ListArgs;', + "src/context/queries.ts", + ], + AppendResult: [ + 'type AppendResult = import("../../src/context/index.js").AppendResult;', + "src/context/journal.ts", + ], + BatchRef: [ + 'type BatchRef = import("../../src/read-model/index.js").BatchRef;', + "src/read-model/rebuild.ts", + ], + FillBatchRef: [ + 'type FillBatchRef = import("../../src/read-model/index.js").FillBatchRef;', + "src/read-model/rebuild.ts", + ], + SubjectRef: [ + 'type SubjectRef = import("../../src/command/index.js").SubjectRef;', + "src/command/actor-and-scope.ts", + ], + DiagnosticSink: [ + 'type DiagnosticSink = import("../../src/operations/index.js").DiagnosticSink;', + "src/operations/diagnostic.ts", + ], + FailedCall: [ + 'type FailedCall = import("../../src/command/index.js").FailedCall;', + "src/command/pipeline.ts", + ], + HistoryEvent: [ + 'type HistoryEvent = import("../../example/domain/orderAllocationHistory.js").HistoryEvent;', + "example/domain/orderAllocationHistory.ts", + ], + OrderAllocation: [ + 'type OrderAllocation = import("../../example/domain/orderAllocationHistory.js").OrderAllocation;', + "example/domain/orderAllocationHistory.ts", + ], + outcomeKindValidator: [ + 'declare const outcomeKindValidator: typeof import("../../src/command/index.js").outcomeKindValidator;', + "src/command/pipeline.ts", + ], + actorValidator: [ + 'declare const actorValidator: typeof import("../../src/command/index.js").actorValidator;', + "src/command/actor-and-scope.ts", + ], + WriteBaselineArgs: [ + "type WriteBaselineArgs = Record;", + null, + ], + WriteBaselineResult: ["type WriteBaselineResult = unknown;", null], +}; + +// The names of TypeScript's own library a declaration may use. +const globals = new Set([ + "Array", + "Awaited", + "Date", + "Error", + "Exclude", + "Extract", + "NonNullable", + "Omit", + "Parameters", + "Partial", + "Pick", + "Promise", + "Readonly", + "ReadonlyArray", + "ReadonlyMap", + "ReadonlySet", + "Record", + "Required", + "ReturnType", + "Set", + "crypto", + "undefined", +]); + +function parseArguments(argv) { + const options = {}; + for (let at = 0; at < argv.length; at += 2) { + const [flag, value] = [argv[at], argv[at + 1]]; + if (!["--pack", "--specs", "--name"].includes(flag)) + cannot(`unknown argument ${flag}`); + if (value === undefined || value.startsWith("--")) + cannot(`${flag} takes a value`); + options[flag.slice(2)] = value; + } + if ((options.pack === undefined) === (options.specs === undefined)) + cannot("name one scope: --pack or --specs "); + if (options.specs !== undefined && options.name === undefined) + cannot("--specs needs --name for the module's file"); + const name = options.name ?? options.pack.replace(/^pack:/, ""); + if (!/^[a-z0-9][a-z0-9.-]*$/.test(name)) + cannot(`${name} is not a module name`); + return { ...options, name }; +} + +function query(body) { + try { + const out = execFileSync( + process.execPath, + [join(protocol, "dist/cli/sdp.js"), "q", body, "--root", root, "--json"], + { + cwd: root, + encoding: "utf8", + maxBuffer: 1 << 27, + stdio: ["ignore", "pipe", "inherit"], + }, + ); + return JSON.parse(out); + } catch (error) { + cannot(`the query failed: ${error.message.split("\n")[0]}`); + } +} + +// The body of recipe 24 as the Protocol ships it: the first js fence under its heading. +function recipe24() { + const recipes = readFileSync( + join(protocol, "docs/agent-surface/recipes.md"), + "utf8", + ); + const heading = /^## 24\. .*$/m.exec(recipes); + if (heading === null) cannot("recipes.md has no heading 24"); + const section = recipes + .slice(heading.index + heading[0].length) + .split(/^## /m)[0]; + const fence = /^```js\n([\s\S]*?)^```$/m.exec(section); + if (fence === null) cannot("recipe 24 has no js fence"); + return fence[1]; +} + +function scopeOf(options) { + if (options.pack !== undefined) { + const members = query( + `const context = g.packContext(${JSON.stringify(options.pack)});\nreturn context === undefined ? null : context.members.map((member) => member.id);`, + ); + if (members === null) cannot(`the graph has no ${options.pack}`); + return members; + } + const specs = options.specs.split(",").filter((id) => id !== ""); + const unknown = query( + `const known = new Set(g.specs().map((spec) => spec.id));\nreturn ${JSON.stringify(specs)}.filter((id) => !known.has(id));`, + ); + if (unknown.length > 0) cannot(`the graph has no ${unknown.join(", ")}`); + return specs; +} + +const parse = (text) => + ts.createSourceFile("pin.ts", text, ts.ScriptTarget.Latest, true); +// The parser's own diagnostics: a span that does not parse alone is no call signature. +const parsedCleanly = (file) => { + if (!Array.isArray(file.parseDiagnostics)) + cannot("this TypeScript parser keeps no parseDiagnostics"); + return file.parseDiagnostics.length === 0; +}; + +// A call signature: one bodiless function declaration with a return type. A default value becomes +// an optional parameter, with the value kept in a comment. +function callSignature(span) { + if (!/^[A-Za-z_$][\w$]*\s*[<(]/.test(span)) return null; + const prefix = "export declare function "; + const file = parse(`${prefix}${span};`); + const [statement] = file.statements; + if ( + !parsedCleanly(file) || + file.statements.length !== 1 || + !ts.isFunctionDeclaration(statement) || + statement.body !== undefined || + statement.type === undefined + ) + return null; + let text = file.text; + const defaults = statement.parameters + .filter((parameter) => parameter.initializer !== undefined) + .reverse(); + for (const parameter of defaults) { + const value = parameter.initializer.getText(file); + const end = parameter.initializer.getEnd(); + const typeEnd = (parameter.type ?? parameter.name).getEnd(); + const nameEnd = parameter.name.getEnd(); + text = `${text.slice(0, typeEnd)} /* = ${value} */${text.slice(end)}`; + text = `${text.slice(0, nameEnd)}?${text.slice(nameEnd)}`; + } + return { name: statement.name.text, text: text.replace(/;$/, "") }; +} + +// What one entry declares, or null when the policy skips it. +function declarationOf(row) { + const prefix = /^[a-z]+/.exec(row.key)?.[0] ?? row.key; + const span = row.declaration.trim(); + const base = { ...row, prefix, address: `${row.spec}#design.${row.key}` }; + if (prefix === "type") { + const named = /^(?:type|interface)\s+([A-Za-z_$][\w$]*)/.exec(span); + if (named !== null) + return { ...base, kind: "type", name: named[1], text: `export ${span}` }; + } + if (prefix === "validator") { + const named = /^const\s+([A-Za-z_$][\w$]*)/.exec(span); + if (named !== null) + return { ...base, kind: "value", name: named[1], text: `export ${span}` }; + } + if (prefix === "fn") { + const signature = callSignature(span); + if (signature !== null) return { ...base, kind: "function", ...signature }; + } + if (prefix === "table") { + const named = /^([A-Za-z_$][\w$]*):\s*defineTable\(/.exec(span); + if (named !== null) + return { ...base, kind: "table", name: named[1], text: span }; + } + return { ...base, kind: null }; +} + +// An identifier refers to a declaration unless it names a property, a member or what it declares. +function refersToADeclaration(node) { + const parent = node.parent; + if (ts.isShorthandPropertyAssignment(parent)) return true; + if (ts.isPropertyAccessExpression(parent)) return parent.expression === node; + if (ts.isQualifiedName(parent)) return parent.left === node; + return parent.name !== node && parent.propertyName !== node; +} + +// The names a declaration uses, less its own name and those of its parameters and type parameters. +function namesUsedBy(declaration) { + const text = + declaration.kind === "table" + ? `const tables = { ${declaration.text} };` + : declaration.text; + const own = new Set(); + const used = new Set(); + const visit = (node) => { + if ( + (ts.isTypeParameterDeclaration(node) || + ts.isParameter(node) || + ts.isBindingElement(node)) && + ts.isIdentifier(node.name) + ) + own.add(node.name.text); + if (ts.isIdentifier(node) && refersToADeclaration(node)) + used.add(node.text); + ts.forEachChild(node, visit); + }; + visit(parse(text)); + for (const name of own) used.delete(name); + used.delete(declaration.name); + return used; +} + +function emit(options) { + const scope = scopeOf(options); + const { totals, rows } = query(recipe24()); + const all = rows.map(declarationOf); + const pinnedBy = new Map(); + for (const declaration of all) { + if (declaration.kind === null || declaration.kind === "table") continue; + pinnedBy.set(declaration.name, [ + ...(pinnedBy.get(declaration.name) ?? []), + declaration, + ]); + } + for (const name of [...Object.keys(gaps), ...Object.keys(placeholders)]) { + const pins = pinnedBy.get(name); + if (pins !== undefined) + cannot( + `the preamble declares ${name}, which ${pins.map((pin) => pin.address).join(" and ")} pins: take it out of the preamble`, + ); + } + const inScope = new Set(scope); + const own = all.filter((row) => inScope.has(row.spec)); + const emitted = own.filter((row) => row.kind !== null); + const skipped = own.filter((row) => row.kind === null); + + // The closure: a name an emitted declaration uses is declared by the module, pinned by another + // Spec, which is then pulled in, or provided by the preamble or TypeScript. + const declared = new Set(emitted.map((row) => row.name)); + const pulled = []; + const gapUses = new Map(); + const missing = new Map(); + const queue = [...emitted]; + while (queue.length > 0) { + const declaration = queue.shift(); + for (const name of namesUsedBy(declaration)) { + if (declared.has(name)) continue; + if (pinnedBy.has(name)) { + declared.add(name); + for (const pin of pinnedBy.get(name)) { + pulled.push({ ...pin, pulledFor: declaration.address }); + queue.push(pin); + } + } else if (name in gaps) { + gapUses.set(name, [...(gapUses.get(name) ?? []), declaration.address]); + } else if ( + !(name in placeholders) && + !importedNames.includes(name) && + !globals.has(name) + ) { + missing.set(name, [...(missing.get(name) ?? []), declaration.address]); + } + } + } + + const everything = [...emitted, ...pulled]; + const comment = (declaration) => + declaration.pulledFor === undefined + ? `// ${declaration.address}` + : `// ${declaration.address} (pulled in: ${declaration.pulledFor} uses ${declaration.name})`; + + // A name pinned twice: the first pin declares it, each later one is compiled apart and held + // identical to the first. + const firstPin = new Map(); + const twice = []; + for (const declaration of everything) { + if (declaration.kind === "table") continue; + if (!firstPin.has(declaration.name)) + firstPin.set(declaration.name, declaration); + else twice.push(declaration); + } + const pinnedAgain = (declaration, index) => { + const first = firstPin.get(declaration.name); + const label = `PinnedAgain${index + 1}`; + const body = + declaration.kind === "value" + ? `const ${label} = (() => {\n ${declaration.text.replace(/^export /, "")};\n return ${declaration.name};\n})();` + : `declare namespace ${label} {\n ${declaration.text.replace(/^export (declare )?/, "export ")}${declaration.kind === "function" ? ";" : ""}\n}`; + const second = + declaration.kind === "value" + ? `typeof ${label}` + : declaration.kind === "function" + ? `typeof ${label}.${declaration.name}` + : `${label}.${declaration.name}`; + const firstType = + declaration.kind === "type" + ? declaration.name + : `typeof ${declaration.name}`; + return [ + `${comment(declaration)}`, + `// ${declaration.name} is pinned again here, and first at ${first.address}.`, + body, + `type ${label}HoldsTheFirstPin = Holds>;`, + ]; + }; + + // Values are declared after the values they use. + const values = []; + const placed = new Set(); + const valueNames = new Set( + everything + .filter((row) => row.kind === "value" && !twice.includes(row)) + .map((row) => row.name), + ); + const place = (declaration, path) => { + if (placed.has(declaration) || path.has(declaration)) return; + path.add(declaration); + for (const name of namesUsedBy(declaration)) + if (valueNames.has(name)) place(firstPin.get(name), path); + placed.add(declaration); + values.push(declaration); + }; + for (const declaration of everything) + if (declaration.kind === "value" && !twice.includes(declaration)) + place(declaration, new Set()); + + // A gap's name may open an entry the policy skips, such as an assignment without const. + const skippedPinOf = (name) => + all + .filter( + (row) => + row.kind === null && + new RegExp(`^(?:export\\s+)?(?:const\\s+)?${name}\\s*=`).test( + row.declaration.trim(), + ), + ) + .map((row) => row.address); + const lines = [ + `// The pinned declarations of ${options.pack ?? `${scope.length} Specs`}, emitted by scripts/pinned.mjs from recipe 24 of`, + "// the pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each", + "// declaration follows the address of its Design entry.", + ...(options.pack === undefined ? scope.map((id) => `// - ${id}`) : []), + ...imports, + "", + "// Provided by Convex or by a composition's generated code.", + ...Object.values(placeholders).map( + ([declaration, source]) => `${declaration} // ${source}`, + ), + "", + "// Used by the design and pinned by no Spec: each is a design gap. Where the implementation", + "// exports the name, its declaration stands in.", + ...[...gapUses.keys()].sort().flatMap((name) => { + const [declaration, source] = gaps[name]; + const skippedPin = skippedPinOf(name); + return [ + `// ${name}: used by ${[...new Set(gapUses.get(name))].join(", ")}.`, + ...(skippedPin.length === 0 + ? [] + : [ + `// Opens ${skippedPin.join(", ")}, as an assignment and not a declaration.`, + ]), + source === null + ? "// Nothing in the code stands in." + : `// From ${source}.`, + declaration, + ]; + }), + "", + "type Same =", + " (() => T extends A ? 1 : 2) extends () => T extends B ? 1 : 2", + " ? true", + " : false;", + "type Holds = Check;", + ]; + const section = (title, declarations) => { + if (declarations.length === 0) return; + lines.push("", `// ${title}`); + for (const declaration of declarations) + lines.push(comment(declaration), declaration.text); + }; + section( + "Types and functions.", + everything.filter( + (row) => + (row.kind === "type" || row.kind === "function") && + !twice.includes(row), + ), + ); + section("Validators.", values); + const tables = everything.filter((row) => row.kind === "table"); + if (tables.length > 0) { + lines.push("", "// Tables.", "export const tables = {"); + for (const table of tables) + lines.push(` ${comment(table)}`, ` ${table.text},`); + lines.push("};"); + } + if (twice.length > 0) { + lines.push("", "// Names pinned more than once."); + twice.forEach((declaration, index) => + lines.push(...pinnedAgain(declaration, index)), + ); + } + + const file = join(root, "generated/pinned", `${options.name}.ts`); + mkdirSync(join(root, "generated/pinned"), { recursive: true }); + writeFileSync(file, `${lines.join("\n")}\n`); + + const byPrefix = (list) => { + const counts = new Map(); + for (const row of list) + counts.set(row.prefix, (counts.get(row.prefix) ?? 0) + 1); + return [...counts] + .sort(([left], [right]) => left.localeCompare(right)) + .map(([prefix, count]) => `${prefix} ${count}`) + .join(", "); + }; + const notes = [ + ...[...missing].map( + ([name, uses]) => + `${name}, used by ${[...new Set(uses)].join(", ")}, is declared nowhere`, + ), + ...twice.map( + (declaration) => + `${declaration.name} is pinned at ${firstPin.get(declaration.name).address} and at ${declaration.address}`, + ), + ]; + console.error( + `pinned: ${relative(root, file)} · ${scope.length} Specs in scope; recipe 24 lists ${totals.entries} entries in ${totals.specs} Specs · emitted ${emitted.length} (${byPrefix(emitted)}) and ${pulled.length} pulled in · skipped ${skipped.length} (${byPrefix(skipped)}) · ${gapUses.size} names pinned by no Spec · ${twice.length} pinned twice`, + ); + for (const note of notes) console.error(`pinned: ${note}`); + return missing.size === 0 ? 0 : 1; +} + +process.exit(emit(parseArguments(process.argv.slice(2)))); diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts new file mode 100644 index 0000000..33e9147 --- /dev/null +++ b/tests/types/pinned.test-d.ts @@ -0,0 +1,253 @@ +// The history view's pinned declarations against the code that realizes them, through the module +// scripts/pinned.mjs emits from recipe 24. Each test is named by the Spec and the Design entry it +// binds, and its assertion fails the typecheck when the pin and the code part. A pin the code does +// not export, or one the code differs from, has no test here. +import { describe, expectTypeOf, test } from "vitest"; +import type * as pinned from "../../generated/pinned/history-view.js"; +import type * as orderSummary from "../../example/convex/orderSummary.js"; +import type schema from "../../example/convex/schema.js"; +import type * as allocationHistory from "../../example/domain/orderAllocationHistory.js"; +import type * as command from "../../src/command/index.js"; +import type * as context from "../../src/context/index.js"; +import type * as gate from "../../src/gate/index.js"; +import type * as readModel from "../../src/read-model/index.js"; + +// Representative arguments for the generic declarations. +type Dto = { orderId: string; lineCount: number }; +type Row = { orderId: string; total: number }; +type Input = { orderId: string }; +type Result = { allocated: boolean }; + +describe("spec:application.generation-registry", () => { + test("compiled: typeRegistryReader", () => { + expectTypeOf().toEqualTypeOf(); + expectTypeOf< + readModel.RegistryReader + >().toEqualTypeOf>(); + }); + test("compiled: typeWritableGeneration", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: fnGenerationsToWrite", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.generationsToWrite + >(); + }); + test("compiled: fnActiveGeneration", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.activeGeneration + >(); + }); + test("compiled: validatorGenerationState", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.generationStateValidator + >(); + }); + test("compiled: validatorProgressPass", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.progressPassValidator + >(); + }); + test("compiled: tableGenerations", () => { + expectTypeOf< + (typeof readModel.readModelTables)["generations"]["validator"] + >().toEqualTypeOf<(typeof pinned.tables)["generations"]["validator"]>(); + }); + test("compiled: tableProjectionMarkers", () => { + expectTypeOf< + (typeof readModel.readModelTables)["projectionMarkers"]["validator"] + >().toEqualTypeOf< + (typeof pinned.tables)["projectionMarkers"]["validator"] + >(); + }); +}); + +describe("spec:application.projection-contract", () => { + test("compiled: typeProjection", () => { + expectTypeOf>().toEqualTypeOf< + pinned.Projection + >(); + }); + test("compiled: typeReadModel", () => { + expectTypeOf>().toEqualTypeOf< + pinned.ReadModel + >(); + }); + test("compiled: fnProjectionOf", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.projectionOf + >(); + }); + test("compiled: typeWritableGeneration", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: typeRowWriter", () => { + expectTypeOf().toEqualTypeOf(); + expectTypeOf< + readModel.RowWriter + >().toEqualTypeOf>(); + }); + test("compiled: typeApplyMode", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: typeApplyResult", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: fnApplyProjection", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.applyProjection + >(); + }); + test("compiled: typeOrderAllocationHistoryFields", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: fnOrderAllocationHistoryKeyOf", () => { + expectTypeOf< + typeof allocationHistory.orderAllocationHistoryKeyOf + >().toEqualTypeOf(); + }); + test("compiled: fnProjectOrderAllocationHistory", () => { + expectTypeOf< + typeof allocationHistory.projectOrderAllocationHistory + >().toEqualTypeOf(); + }); + test("compiled: validatorRowConventions", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.rowConventions + >(); + }); + test("compiled: validatorOrderSummaryFields", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.orderSummaryFields + >(); + }); + test("compiled: tableOrderSummaries", () => { + expectTypeOf<(typeof schema)["tables"]["orderSummaries"]>().toEqualTypeOf< + (typeof pinned.tables)["orderSummaries"] + >(); + }); +}); + +describe("spec:application.rebuild", () => { + test("compiled: typeRebuildTarget", () => { + expectTypeOf>().toEqualTypeOf< + pinned.RebuildTarget + >(); + }); + test("compiled: tableTenantFill", () => { + expectTypeOf< + (typeof readModel.readModelTables)["tenantFill"] + >().toEqualTypeOf<(typeof pinned.tables)["tenantFill"]>(); + }); +}); + +describe("spec:application.write-pause", () => { + test("compiled: validatorClosedEntry", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.closedEntryValidator + >(); + }); + test("compiled: tableMaintenanceGates", () => { + expectTypeOf<(typeof gate.gateTables)["maintenanceGates"]>().toEqualTypeOf< + (typeof pinned.tables)["maintenanceGates"] + >(); + }); +}); + +describe("spec:command.command-declaration", () => { + test("compiled: typeSourceRef", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: typePermissionPolicy", () => { + expectTypeOf>().toEqualTypeOf< + pinned.PermissionPolicy + >(); + }); + test("compiled: typeExecutorResult", () => { + expectTypeOf>().toEqualTypeOf< + pinned.ExecutorResult + >(); + }); + test("compiled: typeBounds", () => { + expectTypeOf().toEqualTypeOf(); + }); +}); + +describe("spec:command.command-pipeline", () => { + test("compiled: typePipelineCall", () => { + expectTypeOf>().toEqualTypeOf< + pinned.PipelineCall + >(); + }); + test("compiled: typeCommandResponse", () => { + expectTypeOf>().toEqualTypeOf< + pinned.CommandResponse + >(); + }); + test("compiled: validatorCommandResponse", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.commandResponseValidator + >(); + }); +}); + +describe("spec:context.event-envelope", () => { + test("compiled: typeCausedBy", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: validatorCausedBy", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.causedByValidator + >(); + }); + test("compiled: typeOperationRef", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: validatorOperationRef", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.operationRefValidator + >(); + }); + test("compiled: typeEventEnvelope", () => { + expectTypeOf().toEqualTypeOf(); + expectTypeOf>().toEqualTypeOf< + pinned.EventEnvelope + >(); + }); + test("compiled: validatorEventEnvelope", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.eventEnvelopeValidator + >(); + }); + test("compiled: typeEnvelopeInput", () => { + expectTypeOf().toEqualTypeOf(); + }); +}); + +describe("spec:context.journal", () => { + test("compiled: fnCreateJournal", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.createJournal + >(); + }); + test("compiled: typeJournal", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: typeStreamMeta", () => { + expectTypeOf().toEqualTypeOf(); + }); +}); + +describe("spec:context.queries", () => { + test("compiled: typeQueryArgs", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: typePageLimit", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("compiled: fnBoundedPage", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.boundedPage + >(); + }); +}); From 7a2e88aa6a6acd2611bd77865bbb2f41f09ec245 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:01:36 +0200 Subject: [PATCH 05/60] design: the history view, the implementation pass The first pass over pack:history-view, read through the pinned module (scripts/pinned.mjs) and its compatibility test. Four rulings change Specs: - WritableGeneration was pinned twice, identically, in the projection contract and the generation registry. One owner: the projection contract, where the code declares it. The registry's entry becomes writableGenerationRole and keeps only the state-to-role mapping, citing the shape by entry address; rebuild's step5 cites it the same way. - ScopeKey takes the code's spelling, "all" | (string & {}): the same values, and the literal stays visible to an editor. - validatorActor opens with const, so it is a declaration the module emits. - HistoryEvent and OrderAllocation, which the history design used and no Spec pinned, are pinned in the history projection from the pure fold's code. A test comment that cited Spec lines (step5:125 had held step1 since an earlier edit) now cites entry addresses, which check.py resolves. The pinned module refuses to emit until its preamble drops the stand-in for HistoryEvent; the next commit does that. Co-Authored-By: Claude Opus 5.5 --- design/specs/application/generation-registry.sdp.md | 2 +- design/specs/application/history-projection.sdp.md | 2 ++ design/specs/application/rebuild.sdp.md | 2 +- design/specs/application/write-pause.sdp.md | 2 +- design/specs/command/actor-and-scope.sdp.md | 2 +- tests/simulator/rebuild.test.ts | 4 ++-- 6 files changed, 8 insertions(+), 6 deletions(-) diff --git a/design/specs/application/generation-registry.sdp.md b/design/specs/application/generation-registry.sdp.md index 0532246..d1f3e16 100644 --- a/design/specs/application/generation-registry.sdp.md +++ b/design/specs/application/generation-registry.sdp.md @@ -83,7 +83,7 @@ Tables live in the parent's `schema.ts`, spread from the library's `readModelTab - indexMarkersByEntity: `.index("by_entity", ["tenantId", "readModel", "generation", "entityKey"])` (E-8) - indexMarkersByEntityUse: point read by `applyAggregate` before every aggregate write, with the `entityKey` it derives from the entity's source stream, `JSON.stringify([contextId, streamType, streamId])` of the input's stream version, as `spec:application.aggregate-projection` states (D9, E-8, E-9) - typeRegistryReader: `type RegistryReader = { db: GenericDatabaseReader }` and `type RegistryWriter = { db: GenericDatabaseWriter }`, the part of a ctx the registry's helpers use, where `ReadModelDataModel` is the data model of `readModelTables`, the schema fragment that holds `generations`, `generationProgress`, `projectionMarkers` and the tenant fill's `tenantFill` row of `spec:application.rebuild`; every helper that takes them is generic over the composition's data model, because a database reader is not covariant in its data model (E-8) -- typeWritableGeneration: `type WritableGeneration = { role: "active" | "building" | "verifying"; generation: number; projectionVersion: number }` where the role is `active` for the state `active`, `building` for the state `building`, and `verifying` for the states `verifying` and `verified` (E-8, E-9, D9) +- writableGenerationRole: each `WritableGeneration` that `generationsToWrite` returns, the shape `spec:application.projection-contract#design.typeWritableGeneration` pins, takes its role from its generation's state: the role is `active` for the state `active`, `building` for the state `building`, and `verifying` for the states `verifying` and `verified` (E-8, E-9, D9) - fnGenerationsToWrite: `generationsToWrite(ctx: RegistryReader, readModel: string): Promise` making at most two indexed reads, the ranges of `by_read_model_state` from `active` to `building` and from `verified` to `verifying`, throwing `"Read model " + readModel + " has " + a + " active generations and " + b + " in building, verifying or verified"` when they hold two active generations or two in-flight ones, and returning one entry per generation a command writes, the active generation first when there is one, then the in-flight one, and an empty list when the read model has neither; the answer is the same for every tenant (E-8, D9) - fnActiveGeneration: `activeGeneration(ctx: RegistryReader, readModel: string): Promise` making one indexed read and answering `undefined` when the read model has no active generation, which a query over the read model then turns into the plain error `"The read model " + readModel + " has no active generation"`; the answer is the same for every tenant, and the query narrows the rows it reads by its own `tenantId` argument (E-8, D9, Law 11) - errorNoGenerationToWrite: the pipeline's step 9 throws `commandType + " writes the read model " + readModel + ", which has no generation to write"` when `generationsToWrite` answers an empty list, which is the case before `startGeneration` and after the only generation was aborted (E-8, D8, Law 6) diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 8570025..4fa8133 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -50,6 +50,8 @@ The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:c - typeHistoryProjection: `interface HistoryProjection { name: string; version: number; table: string; rowBudgetBytes?: number; keyOf(tenantId: string, event: EventEnvelope): string | null; project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row }` where `EventEnvelope` is the envelope of `spec:context.event-envelope`, `null` from `keyOf` means the event is not this view's, `prior` is `null` before the key's first event, `events` are the events of one key not yet folded into `prior`, each stream's in version order and the streams interleaved in any order, `project` answers a row and never `null`, and `rowBudgetBytes` is 16 KiB when absent; a history row is a bounded summary of history, never a list that grows with it, so `rowBudgetBytes` binds it like any row (E-9, D8, D9, F13) - fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing, and a generation given whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf` before it reads a row, a technical failure (E-9, D8, D9, F1, Law 6) - tableOrderAllocationHistory: `orderAllocationHistory: defineTable({ ...rowConventions, orderId: v.string(), placedAt: v.optional(v.number()), cancelledAt: v.optional(v.number()), allocations: v.array(v.object({ stockItemId: v.string(), quantity: v.number(), allocatedAt: v.number(), releasedAt: v.optional(v.number()) })) }).index("by_key", ["tenantId", "generation", "key"])` the history-dependent cross-stream view of the example domain, the `HistoryProjection` named `orderAllocationHistory` over the table of that name, keyed by order ID and folded from `OrderPlaced` and `OrderCancelled` in Orders and `StockAllocated` and `AllocationReleased` in Inventory, with one entry of `allocations` per stock item the order allocated on and `sourceVersions` holding the order stream and every stock stream folded, so a row holds at most 100 entries and 101 versions; `getConvexSize` measures the largest such row, at 256-byte tenant and order IDs and 100 stock item IDs of 64 bytes, every allocation released, at 55,803 bytes, so the view declares `rowBudgetBytes` 65,536, the ceiling; it is bound once per source stream type, rebuilds only under the write pause, and Sc L2-6 builds it (E-9, E-46, D9, F13, Sc L2-6) +- typeHistoryEvent: `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }`, the part of an event envelope the order allocation history's rules read, so that every `EventEnvelope` of `spec:context.event-envelope` is one and `keyOf` and `project` of the view take it where `HistoryProjection` hands them envelopes (E-9) +- typeOrderAllocation: `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the quantity one stock item allocated to the order, when, and when it was released (E-9) - typeOrderAllocationHistoryFields: `type OrderAllocationHistoryFields = { orderId: string; placedAt?: number; cancelledAt?: number; allocations: OrderAllocation[] }` where `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the projected fields of the order allocation history, in `example/domain/orderAllocationHistory.ts` (E-9, E-46, Sc L2-6) - fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) - fnProjectOrderAllocationHistory: `projectOrderAllocationHistory(tenantId: string, prior: OrderAllocationHistoryFields | null, events: readonly HistoryEvent[]): OrderAllocationHistoryFields` in the same file, folding the events one by one into `prior`, or, when `prior` is `null`, into `{ orderId, allocations: [] }` with the key of the first event that has one, and throwing the plain `Error` `"The order allocation history needs a prior row or an event of an order"` when there is neither; the view's `HistoryProjection` holds this function and `orderAllocationHistoryKeyOf` as its `project` and `keyOf` (E-9, E-46, Sc L2-6) diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 3db5089..893a1d1 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -128,7 +128,7 @@ The enumeration is the context's `list` query with `includeDeleted`, the one rea - step2: it takes its tenant: the cursor's `tenantId`, or `nextTenant(ctx, null)` when the cursor is `null`; when the tenant list is empty the batch has no tenant, reads the gate as step 3 states, and goes to step 6 with the pass done (E-49, Law 11) - step3: it calls the write pause's `gateAllows(ctx, ["all", "tenant:" + tenantId], generationId)`, with `["all"]` alone when it has no tenant, and when the answer is not allowed it parks: it patches the progress row's `lastError` to `"write paused for " + scopeKey + ": " + reason` and `updatedAt`, schedules nothing and returns, so the generation waits for `resumeGeneration` after the gate reopens; no batch calls `assertWritable`, because a batch parks its generation rather than failing its scheduled mutation with a thrown refusal (E-8, E-42, D9) - step4: it calls `list` once as `fnEnumerateCall` states, with the cursor's `pageCursor` (D10, E-40) -- step5: for each DTO of the page it calls `applyProjection(ctx, target.readModel, { tenantId, dto, versions: [dto.version], mode: "backfill", generations: [thisGeneration] })` for this generation alone, where `thisGeneration` is `{ role, generation: n, projectionVersion }` with the role `typeWritableGeneration` of `spec:application.generation-registry` gives the generation's state, adding one to `rowsWritten` for `inserted`, `updated` or `deleted` and one to `rowsSkipped` for `skipped-newer` or `unchanged` (D9, E-9) +- step5: for each DTO of the page it calls `applyProjection(ctx, target.readModel, { tenantId, dto, versions: [dto.version], mode: "backfill", generations: [thisGeneration] })` for this generation alone, where `thisGeneration` is `{ role, generation: n, projectionVersion }` with the role `spec:application.generation-registry#design.writableGenerationRole` gives the generation's state, adding one to `rowsWritten` for `inserted`, `updated` or `deleted` and one to `rowsSkipped` for `skipped-newer` or `unchanged` (D9, E-9) - step6: it checkpoints: when the page is not done the cursor becomes `{ tenantId, pageCursor: continueCursor }`; when it is done the cursor becomes `{ tenantId: next, pageCursor: null }` for `next = nextTenant(ctx, tenantId)`, and the pass is done when `next` is `null`; a pass that is not done patches the progress row with the cursor, the counts, `batchesDone` plus 1, no `lastError` and `updatedAt`, and schedules `refs.backfillBatch` with the same fence through `ctx.scheduler.runAfter(0, ...)`; a pass that is done patches the generation row to `state: "verifying"` and nothing else on it, patches the progress row to `pass: "verify"`, `cursor: null`, `misses: 0`, the counts, `batchesDone` plus 1 and `updatedAt`, and schedules `refs.verifyBatch` with the same fence (D9, F8, E-40, E-49) - verifySteps: `verifyBatch` runs the same six steps with `state` `verifying` and `pass` `verify`, adding one to `misses` for `inserted`, `updated` or `deleted` and one to `rowsSkipped` otherwise; a pass that is not done schedules `refs.verifyBatch`; a pass that is done patches the generation row to `state: "verified"` and nothing else on it, and the progress row to `pass: "idle"`, `cursor: null`, the counts, `batchesDone` plus 1 and `updatedAt`, and schedules nothing (D9, E-8, Sc L2-5) - purgeSteps: `purgeBatch` runs steps 1 to 3 with `state` `retired` or `aborted` and `pass` `purge`; it then reads `ctx.db.query(readModel.table).withIndex("by_key", (q) => q.eq("tenantId", tenantId).eq("generation", n)).take(Math.min(batchSize, limitPurgeBatch(readModel)))` with `batchSize` the progress row's and `readModel` the generation's read model, whose cap `limitPurgeBatch` declares, deletes each row and adds their number to `rowsPurged`; when it deleted that many rows the cursor stays on the tenant, and otherwise it moves to `nextTenant(ctx, tenantId)`, a purge cursor being `{ tenantId, pageCursor: null }`; a pass that is not done checkpoints, patching the progress row with the cursor, `rowsPurged`, `batchesDone` plus 1, no `lastError` and `updatedAt`, and schedules `refs.purgeBatch`; a pass that is done patches the generation row to `state: "purged"`, no `retiredAt` and no `retireAfter`, and nothing else on it, and the progress row to `pass: "idle"`, `cursor: null`, `rowsPurged`, `batchesDone` plus 1 and `updatedAt` (D19, E-40, E-49, Law 11) diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 2020045..098edcc 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -66,7 +66,7 @@ The gate is one document so that a command pays one point read. Scopes are strin - validatorClosedEntry: `const closedEntryValidator = v.object({ scopeKey: v.string(), reason: v.string(), generationId: v.optional(v.id("generations")), changedAt: v.number(), changedBy: v.string() })` where `changedBy` is the stated operator and `changedAt` the closing mutation's `Date.now()` (E-8, E-48) - tableMaintenanceGates: `maintenanceGates: defineTable({ key: v.literal("gates"), closed: v.array(closedEntryValidator), updatedAt: v.number() }).index("by_key", ["key"])` holding at most one document, whose `closed` lists the entries in the order they were closed (E-8, D9) - indexGatesByKeyUse: the one point read every writer makes, `.withIndex("by_key", (q) => q.eq("key", "gates")).unique()`; an absent document reads as no closed scope (E-8, D9) -- typeScopeKey: `type ScopeKey = "all" | string` where a tenant scope is `"tenant:" + tenantId` and a source scope is `"source:" + contextId + ":" + streamType`, built only by `scopesOfUseCase`, `startGeneration`, the rebuild's batches, the journal's baseline driver and the operator entries (E-8, E-38, D11) +- typeScopeKey: `type ScopeKey = "all" | (string & {})` where a tenant scope is `"tenant:" + tenantId` and a source scope is `"source:" + contextId + ":" + streamType`, built only by `scopesOfUseCase`, `startGeneration`, the rebuild's batches, the journal's baseline driver and the operator entries (E-8, E-38, D11) - fnGateAllows: `gateAllows(ctx: { db: GenericDatabaseReader }, scopes: readonly ScopeKey[], allowGeneration?: Id<"generations">): Promise<{ allowed: true } | { allowed: false; scopeKey: ScopeKey; reason: string }>` the one gate read: it first reads `process.env.MAINTENANCE_MODE` and answers `{ allowed: false, scopeKey: "all", reason: "restore" }` without reading the document when the value is `restore`; otherwise it reads the gate document once and answers not allowed with the `scopeKey` and `reason` of the first entry of `closed`, in array order, whose `scopeKey` is one of `scopes` and which is not exempt, and allowed when there is none; an entry is exempt only when `allowGeneration` is given, the entry has a `generationId`, and the two are equal; it writes nothing (E-8, E-42, D9, F9) - fnAssertWritable: `assertWritable(ctx: { db: GenericDatabaseReader }, scopes: readonly ScopeKey[]): Promise` calling `gateAllows` with no generation and, when the answer is not allowed, throwing through the boundary's `refuseTransient({ code: "writePaused", message: "write paused for " + scopeKey + ": " + reason })`; the command pipeline's step 7 calls it before it mints the operation, and `insertGrant` and `revokeGrant` of `spec:command.actor-and-scope` call it with `scopesOfUseCase(grant.tenantId, [])` before their first read; nothing else does (E-8, D9, E-35, E-37) - errorCodeWritePaused: `writePaused`, the transient code the outcome boundary reserves; the refusal's data is exactly `{ kind: "transient", code: "writePaused", message }` with no `retryAfterMs`, where `message` is `"write paused for all: restore"` under the restore door and `"write paused for tenant:" + tenantId + ": " + reason` for a closed tenant; a transient refusal, never a stored rejection, so no receipt, event, read-model row or audit record exists for the refused command (D4, Law 6, E-35) diff --git a/design/specs/command/actor-and-scope.sdp.md b/design/specs/command/actor-and-scope.sdp.md index c106d49..5aa8d68 100644 --- a/design/specs/command/actor-and-scope.sdp.md +++ b/design/specs/command/actor-and-scope.sdp.md @@ -60,7 +60,7 @@ This contract pins the shapes the parent establishes and passes into components: - typeActorRef: `type ActorRef = { kind: ActorKind; id: string }` (D11, E-6) - typeActor: `type Actor = { kind: ActorKind; id: string; issuer?: string; onBehalfOf?: ActorRef; delegationRef?: string }` where `delegationRef` names the obligation, approval or agent run the delegation rests on (D11, D2, E-6) - validatorActorKind: `actorKindValidator = v.union(v.literal("human"), v.literal("service"), v.literal("agent"), v.literal("reviewer"), v.literal("operator"))` (D11) -- validatorActor: `actorValidator = v.object({ kind: actorKindValidator, id: v.string(), issuer: v.optional(v.string()), onBehalfOf: v.optional(v.object({ kind: actorKindValidator, id: v.string() })), delegationRef: v.optional(v.string()) })` (D11, D2, E-6) +- validatorActor: `const actorValidator = v.object({ kind: actorKindValidator, id: v.string(), issuer: v.optional(v.string()), onBehalfOf: v.optional(v.object({ kind: actorKindValidator, id: v.string() })), delegationRef: v.optional(v.string()) })` (D11, D2, E-6) - typeTenantScope: `type TenantScope = { tenantId: string }` (Law 11) - validatorTenantScope: `tenantScopeValidator = v.object({ tenantId: v.string() })` (Law 11) - typeCallerNamespace: `type CallerNamespace = "public" | "service" | "worker" | "agent" | "system"` (D6, D11, D13, E-6) diff --git a/tests/simulator/rebuild.test.ts b/tests/simulator/rebuild.test.ts index 1e28998..c179811 100644 --- a/tests/simulator/rebuild.test.ts +++ b/tests/simulator/rebuild.test.ts @@ -928,8 +928,8 @@ test.each(projectionCases)( }, ); -// projection-contract.sdp.md step3:92; generation-registry.sdp.md typeWritableGeneration; -// rebuild.sdp.md rule:69, rule:70, step5:125. +// spec:application.projection-contract#design.step3, spec:application.generation-registry#design.writableGenerationRole, +// spec:application.rebuild#design.step5 and its rule that live commands also write the generation being built. test.each(["building", "verifying", "verified"] as const)( "convex-test: live commands create and update rows in %s with that state's role", async (state) => { From 87c710cb3f63f15635d3111232246c01ee3ba988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:10:41 +0200 Subject: [PATCH 06/60] build: the pinned module of pack:history-view, with bound, ahead and not-compared pairs Co-Authored-By: Claude Opus 5.5 --- package.json | 2 +- scripts/pinned.mjs | 703 +++++++++++------------------------ tests/types/pinned.test-d.ts | 282 +++++++++----- 3 files changed, 409 insertions(+), 578 deletions(-) diff --git a/package.json b/package.json index 4bad80f..d311e5b 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ "validate": "sdp validate", "view": "sdp view", "census": "sdp census", - "sdp:build": "npx sdp build && node scripts/pinned.mjs --name history-view --specs spec:application.projection-contract,spec:application.rebuild,spec:application.write-pause,spec:application.generation-registry,spec:application.orders-inventory-example,spec:context.queries,spec:context.journal,spec:context.event-envelope,spec:command.command-declaration,spec:command.command-pipeline # becomes --pack pack:history-view once the Pack exists", + "sdp:build": "npx sdp build && node scripts/pinned.mjs --pack pack:history-view --name history-view", "typecheck": "npm run sdp:build && tsc", "lint": "eslint src fixture example harness tests scripts vitest.config.ts vitest.hosted.config.ts eslint.config.js", "format:check": "prettier --check src fixture example harness tests scripts evidence/README.md README.md package.json tsconfig.json convex.json vitest.config.ts vitest.hosted.config.ts eslint.config.js .github/workflows/ci.yml .github/workflows/hosted.yml .prettierrc.json", diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index f98c668..d7a4ee9 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -1,26 +1,22 @@ -// Emits the pinned module of one scope of Specs, a TypeScript module the type tests import: -// `node scripts/pinned.mjs --pack ` or `node scripts/pinned.mjs --specs --name ` -// writes generated/pinned/.ts, where a Pack's name is its id without `pack:`. It reads the body -// of recipe 24, "Pinned declarations", from the pinned Protocol's recipes.md and runs it with the -// pinned CLI, so the list of declarations is the Protocol's own. spec:extraction.contract-declarations -// rules what the module is: a projection, regenerated and never edited, which earns its place when a -// changed pinned signature fails the typecheck against the implementation. +// Emits the pinned module of one Pack, which the type tests import: +// `node scripts/pinned.mjs --pack [--name ]` writes generated/pinned/.ts, by +// default the Pack's id without `pack:`. It runs the body of recipe 24, "Pinned declarations", read +// from the pinned Protocol's recipes.md, with the pinned CLI. spec:extraction.contract-declarations +// rules the module: a projection, regenerated and never edited, which earns its place when a +// changed pin fails the typecheck against the code. // -// Which entries become declarations is this project's policy, by the prefix of the entry's key: -// - `type*` whose span opens with `type ` or `interface `: `export ` and the span. -// - `validator*` whose span opens with `const `: `export ` and the span. -// - `fn*` whose span is a call signature `name<...>(...): R`: `export declare function ` and the span, -// where a parameter's default value, which a declaration cannot carry, makes the parameter optional. -// - `table*` whose span is `name: defineTable(...)`: one member of `export const tables = { ... }`. -// Every other entry is skipped and counted by its prefix. The module holds the scope's own entries -// and, marked, every entry of another Spec that pins a name they use, and so on until nothing is -// missing. A name pinned twice is never merged: the second pin is compiled beside the first and held -// identical to it. The summary goes to stderr. -// Exit 0: written. 1: written, but a name a declaration uses is declared nowhere, which the summary -// names. 2: it cannot run. +// This project's policy, by the prefix of the entry's key: `type*` opening with `type ` or +// `interface ` and `validator*` opening with `const ` are exported as written; `fn*` that is a call +// signature `name<...>(...): R` becomes `export declare function`, where a default value makes its +// parameter optional; `table*` of the form `name: defineTable(...)` is a member of +// `export const tables`. Every other entry is skipped and counted by its prefix on stderr. Each pin +// of another Spec that a declaration uses is pulled in, marked. A name pinned twice is emitted twice, +// so the compiler refuses it, and stderr names it. +// Exit 0: written. 2: it cannot emit. import { execFileSync } from "node:child_process"; import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; -import { join, relative } from "node:path"; +import { join } from "node:path"; +import { parseArgs } from "node:util"; import ts from "typescript"; const root = join(import.meta.dirname, ".."); @@ -28,185 +24,66 @@ const protocol = join( root, "node_modules/@libar-dev/software-delivery-protocol", ); - function cannot(reason) { console.error(`pinned: cannot emit · ${reason}`); process.exit(2); } -// The preamble. Convex's own names are imported; a name Convex or a composition's generated code -// provides gets a placeholder over Convex's generic types. -const imports = [ - "import {", - " defineTable,", - " paginationOptsValidator,", - " paginationResultValidator,", - " type FunctionReference,", - " type GenericDataModel,", - " type GenericDatabaseReader,", - " type GenericDatabaseWriter,", - " type GenericDocument,", - " type GenericMutationCtx,", - " type GenericQueryCtx,", - " type PaginationOptions,", - " type PaginationResult,", - " type RegisteredMutation,", - " type RegisteredQuery,", - '} from "convex/server";', - "import {", - " v,", - " type GenericId,", - " type PropertyValidators,", - " type Validator,", - " type Value,", - '} from "convex/values";', -]; -const importedNames = [ - ...imports.join("\n").matchAll(/^ {2}(?:type )?([A-Za-z]\w*),$/gm), -].map(([, name]) => name); -const placeholders = { - MutationCtx: [ - "type MutationCtx = GenericMutationCtx;", - "A composition's _generated/server.js, over its own data model.", - ], - QueryCtx: [ - "type QueryCtx = GenericQueryCtx;", - "A composition's _generated/server.js, over its own data model.", - ], - Id: [ - "type Id = GenericId;", - "A composition's _generated/dataModel.js.", - ], - Doc: [ - "type Doc = GenericDocument & { _id: Id; _creationTime: number };", - "A composition's _generated/dataModel.js, over its own tables.", - ], -}; +const preamble = `import { + defineTable, + type FunctionReference, + type GenericDataModel, + type GenericDatabaseReader, + type GenericDatabaseWriter, + type GenericMutationCtx, + type GenericQueryCtx, + type PaginationOptions, + type PaginationResult, + type RegisteredMutation, + type RegisteredQuery, +} from "convex/server"; +import { v, type GenericId, type Validator, type Value } from "convex/values"; + +// Provided by Convex or by a composition's generated code. +type MutationCtx = GenericMutationCtx; // _generated/server.js, over the composition's data model. +type QueryCtx = GenericQueryCtx; // _generated/server.js, over the composition's data model. +type Id = GenericId; // _generated/dataModel.js.`; -// Names the design uses that no Spec pins and Convex does not provide: each is a design gap. Where -// the implementation exports the name, its declaration stands in, so that a pin using the name can -// still be compared with the code; the module emits the gaps its own declarations use. +// Names the design uses that no Spec pins as a declaration: the code's module that declares each, +// or the type that stands in when the code declares none. const gaps = { - ReadModelDataModel: [ - 'type ReadModelDataModel = import("../../src/read-model/index.js").ReadModelDataModel;', - "src/read-model/tables.ts", - ], - RowDataModel: [ - 'type RowDataModel = import("../../src/read-model/index.js").RowDataModel;', - "src/read-model/tables.ts", - ], - GateDataModel: [ - 'type GateDataModel = import("../../src/gate/index.js").GateDataModel;', - "src/gate/tables.ts", - ], - ListArgs: [ - 'type ListArgs = import("../../src/context/index.js").ListArgs;', - "src/context/queries.ts", - ], - AppendResult: [ - 'type AppendResult = import("../../src/context/index.js").AppendResult;', - "src/context/journal.ts", - ], - BatchRef: [ - 'type BatchRef = import("../../src/read-model/index.js").BatchRef;', - "src/read-model/rebuild.ts", - ], - FillBatchRef: [ - 'type FillBatchRef = import("../../src/read-model/index.js").FillBatchRef;', - "src/read-model/rebuild.ts", - ], - SubjectRef: [ - 'type SubjectRef = import("../../src/command/index.js").SubjectRef;', - "src/command/actor-and-scope.ts", - ], - DiagnosticSink: [ - 'type DiagnosticSink = import("../../src/operations/index.js").DiagnosticSink;', - "src/operations/diagnostic.ts", - ], - FailedCall: [ - 'type FailedCall = import("../../src/command/index.js").FailedCall;', - "src/command/pipeline.ts", - ], - HistoryEvent: [ - 'type HistoryEvent = import("../../example/domain/orderAllocationHistory.js").HistoryEvent;', - "example/domain/orderAllocationHistory.ts", - ], - OrderAllocation: [ - 'type OrderAllocation = import("../../example/domain/orderAllocationHistory.js").OrderAllocation;', - "example/domain/orderAllocationHistory.ts", - ], - outcomeKindValidator: [ - 'declare const outcomeKindValidator: typeof import("../../src/command/index.js").outcomeKindValidator;', - "src/command/pipeline.ts", - ], - actorValidator: [ - 'declare const actorValidator: typeof import("../../src/command/index.js").actorValidator;', - "src/command/actor-and-scope.ts", - ], - WriteBaselineArgs: [ - "type WriteBaselineArgs = Record;", - null, - ], - WriteBaselineResult: ["type WriteBaselineResult = unknown;", null], + AppendResult: "src/context", + BatchRef: "src/read-model", + DiagnosticSink: "src/operations", + FailedCall: "src/command", + FillBatchRef: "src/read-model", + GateDataModel: "src/gate", + ListArgs: "src/context", + ReadModelDataModel: "src/read-model", + RowDataModel: "src/read-model", + SubjectRef: "src/command", + WriteBaselineArgs: "Record", + WriteBaselineResult: "unknown", + actorKindValidator: "src/command", + outcomeKindValidator: "src/command", }; - -// The names of TypeScript's own library a declaration may use. -const globals = new Set([ - "Array", - "Awaited", - "Date", - "Error", - "Exclude", - "Extract", - "NonNullable", - "Omit", - "Parameters", - "Partial", - "Pick", - "Promise", - "Readonly", - "ReadonlyArray", - "ReadonlyMap", - "ReadonlySet", - "Record", - "Required", - "ReturnType", - "Set", - "crypto", - "undefined", -]); - -function parseArguments(argv) { - const options = {}; - for (let at = 0; at < argv.length; at += 2) { - const [flag, value] = [argv[at], argv[at + 1]]; - if (!["--pack", "--specs", "--name"].includes(flag)) - cannot(`unknown argument ${flag}`); - if (value === undefined || value.startsWith("--")) - cannot(`${flag} takes a value`); - options[flag.slice(2)] = value; - } - if ((options.pack === undefined) === (options.specs === undefined)) - cannot("name one scope: --pack or --specs "); - if (options.specs !== undefined && options.name === undefined) - cannot("--specs needs --name for the module's file"); - const name = options.name ?? options.pack.replace(/^pack:/, ""); - if (!/^[a-z0-9][a-z0-9.-]*$/.test(name)) - cannot(`${name} is not a module name`); - return { ...options, name }; +function gapDeclaration(name) { + const source = gaps[name]; + const code = `import("../../${source}/index.js").${name}`; + if (!source.startsWith("src/")) + return `type ${name} = ${source}; // nothing in the code stands in.`; + return /^[a-z]/.test(name) + ? `declare const ${name}: typeof ${code};` + : `type ${name} = ${code};`; } function query(body) { + const sdp = join(protocol, "dist/cli/sdp.js"); try { const out = execFileSync( process.execPath, - [join(protocol, "dist/cli/sdp.js"), "q", body, "--root", root, "--json"], - { - cwd: root, - encoding: "utf8", - maxBuffer: 1 << 27, - stdio: ["ignore", "pipe", "inherit"], - }, + [sdp, "q", body, "--root", root, "--json"], + { cwd: root, encoding: "utf8", maxBuffer: 1 << 27 }, ); return JSON.parse(out); } catch (error) { @@ -220,50 +97,22 @@ function recipe24() { join(protocol, "docs/agent-surface/recipes.md"), "utf8", ); - const heading = /^## 24\. .*$/m.exec(recipes); - if (heading === null) cannot("recipes.md has no heading 24"); - const section = recipes - .slice(heading.index + heading[0].length) - .split(/^## /m)[0]; - const fence = /^```js\n([\s\S]*?)^```$/m.exec(section); - if (fence === null) cannot("recipe 24 has no js fence"); + const section = recipes.split(/^## /m).find((part) => /^24\. /.test(part)); + const fence = /^```js\n([\s\S]*?)^```$/m.exec(section ?? ""); + if (fence === null) cannot("recipes.md has no recipe 24 with a js fence"); return fence[1]; } -function scopeOf(options) { - if (options.pack !== undefined) { - const members = query( - `const context = g.packContext(${JSON.stringify(options.pack)});\nreturn context === undefined ? null : context.members.map((member) => member.id);`, - ); - if (members === null) cannot(`the graph has no ${options.pack}`); - return members; - } - const specs = options.specs.split(",").filter((id) => id !== ""); - const unknown = query( - `const known = new Set(g.specs().map((spec) => spec.id));\nreturn ${JSON.stringify(specs)}.filter((id) => !known.has(id));`, - ); - if (unknown.length > 0) cannot(`the graph has no ${unknown.join(", ")}`); - return specs; -} - const parse = (text) => ts.createSourceFile("pin.ts", text, ts.ScriptTarget.Latest, true); -// The parser's own diagnostics: a span that does not parse alone is no call signature. -const parsedCleanly = (file) => { - if (!Array.isArray(file.parseDiagnostics)) - cannot("this TypeScript parser keeps no parseDiagnostics"); - return file.parseDiagnostics.length === 0; -}; -// A call signature: one bodiless function declaration with a return type. A default value becomes -// an optional parameter, with the value kept in a comment. +// A call signature parses alone as one bodiless function declaration with a return type. function callSignature(span) { - if (!/^[A-Za-z_$][\w$]*\s*[<(]/.test(span)) return null; - const prefix = "export declare function "; - const file = parse(`${prefix}${span};`); + if (!/^[\w$]+\s*[<(]/.test(span)) return null; + const file = parse(`export declare function ${span}`); const [statement] = file.statements; if ( - !parsedCleanly(file) || + file.parseDiagnostics.length > 0 || file.statements.length !== 1 || !ts.isFunctionDeclaration(statement) || statement.body !== undefined || @@ -271,301 +120,175 @@ function callSignature(span) { ) return null; let text = file.text; - const defaults = statement.parameters - .filter((parameter) => parameter.initializer !== undefined) - .reverse(); - for (const parameter of defaults) { - const value = parameter.initializer.getText(file); - const end = parameter.initializer.getEnd(); - const typeEnd = (parameter.type ?? parameter.name).getEnd(); - const nameEnd = parameter.name.getEnd(); - text = `${text.slice(0, typeEnd)} /* = ${value} */${text.slice(end)}`; - text = `${text.slice(0, nameEnd)}?${text.slice(nameEnd)}`; - } - return { name: statement.name.text, text: text.replace(/;$/, "") }; + for (const { name, type, initializer } of [...statement.parameters].reverse()) + if (initializer !== undefined) + text = `${text.slice(0, name.end)}?${text.slice(name.end, (type ?? name).end)} /* = ${initializer.getText(file)} */${text.slice(initializer.end)}`; + return { name: statement.name.text, text }; } -// What one entry declares, or null when the policy skips it. +// What one entry declares under the policy, or kind null. +const exported = { + type: [/^(?:type|interface)\s+([\w$]+)/, "type"], + validator: [/^const\s+([\w$]+)/, "value"], +}; function declarationOf(row) { - const prefix = /^[a-z]+/.exec(row.key)?.[0] ?? row.key; + const prefix = /^[a-z]+/.exec(row.key)[0]; const span = row.declaration.trim(); const base = { ...row, prefix, address: `${row.spec}#design.${row.key}` }; - if (prefix === "type") { - const named = /^(?:type|interface)\s+([A-Za-z_$][\w$]*)/.exec(span); - if (named !== null) - return { ...base, kind: "type", name: named[1], text: `export ${span}` }; - } - if (prefix === "validator") { - const named = /^const\s+([A-Za-z_$][\w$]*)/.exec(span); - if (named !== null) - return { ...base, kind: "value", name: named[1], text: `export ${span}` }; - } - if (prefix === "fn") { - const signature = callSignature(span); - if (signature !== null) return { ...base, kind: "function", ...signature }; - } - if (prefix === "table") { - const named = /^([A-Za-z_$][\w$]*):\s*defineTable\(/.exec(span); - if (named !== null) - return { ...base, kind: "table", name: named[1], text: span }; - } + const named = exported[prefix]?.[0].exec(span)?.[1]; + if (named !== undefined) + return { + ...base, + kind: exported[prefix][1], + name: named, + text: `export ${span}`, + }; + const signature = prefix === "fn" ? callSignature(span) : null; + if (signature !== null) return { ...base, kind: "type", ...signature }; + if (prefix === "table" && /^[\w$]+:\s*defineTable\(/.test(span)) + return { ...base, kind: "table", name: "", text: span }; return { ...base, kind: null }; } -// An identifier refers to a declaration unless it names a property, a member or what it declares. -function refersToADeclaration(node) { - const parent = node.parent; - if (ts.isShorthandPropertyAssignment(parent)) return true; - if (ts.isPropertyAccessExpression(parent)) return parent.expression === node; - if (ts.isQualifiedName(parent)) return parent.left === node; - return parent.name !== node && parent.propertyName !== node; -} - -// The names a declaration uses, less its own name and those of its parameters and type parameters. +// The names a declaration uses: identifiers that are not a property, a member, what is declared, or +// one of its parameters or type parameters. function namesUsedBy(declaration) { - const text = - declaration.kind === "table" - ? `const tables = { ${declaration.text} };` - : declaration.text; - const own = new Set(); + const own = new Set([declaration.name]); const used = new Set(); const visit = (node) => { + const parent = node.parent; if ( - (ts.isTypeParameterDeclaration(node) || - ts.isParameter(node) || - ts.isBindingElement(node)) && + (ts.isTypeParameterDeclaration(node) || ts.isParameter(node)) && ts.isIdentifier(node.name) ) own.add(node.name.text); - if (ts.isIdentifier(node) && refersToADeclaration(node)) + else if ( + ts.isIdentifier(node) && + (ts.isShorthandPropertyAssignment(parent) || + (ts.isPropertyAccessExpression(parent) + ? parent.expression === node + : ts.isQualifiedName(parent) + ? parent.left === node + : parent.name !== node)) + ) used.add(node.text); ts.forEachChild(node, visit); }; - visit(parse(text)); - for (const name of own) used.delete(name); - used.delete(declaration.name); - return used; + visit( + parse( + declaration.kind === "table" + ? `const tables = { ${declaration.text} };` + : declaration.text, + ), + ); + return [...used].filter((name) => !own.has(name)); } -function emit(options) { - const scope = scopeOf(options); - const { totals, rows } = query(recipe24()); - const all = rows.map(declarationOf); - const pinnedBy = new Map(); - for (const declaration of all) { - if (declaration.kind === null || declaration.kind === "table") continue; - pinnedBy.set(declaration.name, [ - ...(pinnedBy.get(declaration.name) ?? []), - declaration, - ]); - } - for (const name of [...Object.keys(gaps), ...Object.keys(placeholders)]) { - const pins = pinnedBy.get(name); - if (pins !== undefined) - cannot( - `the preamble declares ${name}, which ${pins.map((pin) => pin.address).join(" and ")} pins: take it out of the preamble`, - ); - } - const inScope = new Set(scope); - const own = all.filter((row) => inScope.has(row.spec)); - const emitted = own.filter((row) => row.kind !== null); - const skipped = own.filter((row) => row.kind === null); +const { values: options } = parseArgs({ + options: { pack: { type: "string" }, name: { type: "string" } }, +}); +if (options.pack === undefined) cannot("name the Pack: --pack "); +const name = options.name ?? options.pack.replace(/^pack:/, ""); +const scope = query( + `return g.packContext(${JSON.stringify(options.pack)})?.members.map((member) => member.id) ?? null;`, +); +if (scope === null) cannot(`the graph has no ${options.pack}`); + +const all = query(recipe24()).rows.map(declarationOf); +const pinnedBy = Map.groupBy( + all.filter((row) => row.kind === "type" || row.kind === "value"), + (row) => row.name, +); +for (const provided of ["MutationCtx", "QueryCtx", "Id", ...Object.keys(gaps)]) + if (pinnedBy.has(provided)) + cannot( + `the preamble declares ${provided}, which ${pinnedBy + .get(provided) + .map((pin) => pin.address) + .join(" and ")} pins: take it out of the preamble`, + ); - // The closure: a name an emitted declaration uses is declared by the module, pinned by another - // Spec, which is then pulled in, or provided by the preamble or TypeScript. - const declared = new Set(emitted.map((row) => row.name)); - const pulled = []; - const gapUses = new Map(); - const missing = new Map(); - const queue = [...emitted]; - while (queue.length > 0) { - const declaration = queue.shift(); - for (const name of namesUsedBy(declaration)) { - if (declared.has(name)) continue; - if (pinnedBy.has(name)) { - declared.add(name); - for (const pin of pinnedBy.get(name)) { - pulled.push({ ...pin, pulledFor: declaration.address }); - queue.push(pin); - } - } else if (name in gaps) { - gapUses.set(name, [...(gapUses.get(name) ?? []), declaration.address]); - } else if ( - !(name in placeholders) && - !importedNames.includes(name) && - !globals.has(name) - ) { - missing.set(name, [...(missing.get(name) ?? []), declaration.address]); - } - } +// The scope's own entries, then every other pin of a name the module declares or uses. +const own = all.filter((row) => scope.includes(row.spec)); +const emitted = own.filter((row) => row.kind !== null); +const gapUses = new Map(); +const pull = (name, why) => { + for (const pin of pinnedBy.get(name) ?? []) + if (!emitted.includes(pin)) emitted.push(Object.assign(pin, { why })); +}; +for (let at = 0; at < emitted.length; at++) { + const { address, name: declares } = emitted[at]; + pull(declares, `${address} pins ${declares} too`); + for (const used of namesUsedBy(emitted[at])) { + if (used in gaps) + gapUses.set(used, [...(gapUses.get(used) ?? []), address]); + pull(used, `${address} uses ${used}`); } +} - const everything = [...emitted, ...pulled]; - const comment = (declaration) => - declaration.pulledFor === undefined - ? `// ${declaration.address}` - : `// ${declaration.address} (pulled in: ${declaration.pulledFor} uses ${declaration.name})`; +// A value is declared after the values it uses. +const values = []; +const place = (declaration, path = new Set()) => { + if (values.includes(declaration) || path.has(declaration)) return; + path.add(declaration); + for (const used of namesUsedBy(declaration)) + for (const pin of pinnedBy.get(used) ?? []) + if (pin.kind === "value") place(pin, path); + values.push(declaration); +}; +emitted.filter((row) => row.kind === "value").forEach((row) => place(row)); - // A name pinned twice: the first pin declares it, each later one is compiled apart and held - // identical to the first. - const firstPin = new Map(); - const twice = []; - for (const declaration of everything) { - if (declaration.kind === "table") continue; - if (!firstPin.has(declaration.name)) - firstPin.set(declaration.name, declaration); - else twice.push(declaration); - } - const pinnedAgain = (declaration, index) => { - const first = firstPin.get(declaration.name); - const label = `PinnedAgain${index + 1}`; - const body = - declaration.kind === "value" - ? `const ${label} = (() => {\n ${declaration.text.replace(/^export /, "")};\n return ${declaration.name};\n})();` - : `declare namespace ${label} {\n ${declaration.text.replace(/^export (declare )?/, "export ")}${declaration.kind === "function" ? ";" : ""}\n}`; - const second = - declaration.kind === "value" - ? `typeof ${label}` - : declaration.kind === "function" - ? `typeof ${label}.${declaration.name}` - : `${label}.${declaration.name}`; - const firstType = - declaration.kind === "type" - ? declaration.name - : `typeof ${declaration.name}`; +const comment = (row) => + `// ${row.address}${row.why === undefined ? "" : ` (pulled in: ${row.why})`}`; +const block = (rows, indent = "") => + rows.flatMap((row) => [ + `${indent}${comment(row)}`, + `${indent}${row.text}${indent === "" ? "" : ","}`, + ]); +const lines = [ + `// The pinned declarations of ${options.pack}, emitted by scripts/pinned.mjs from recipe 24 of the`, + "// pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each declaration", + "// follows the address of its Design entry.", + preamble, + "", + "// Used by the design and pinned by no Spec. Where the code declares one, its declaration stands in.", + ...[...gapUses.keys()].sort().flatMap((gap) => { + const skippedPin = all.find( + (row) => row.kind === null && row.declaration.startsWith(`${gap} =`), + ); return [ - `${comment(declaration)}`, - `// ${declaration.name} is pinned again here, and first at ${first.address}.`, - body, - `type ${label}HoldsTheFirstPin = Holds>;`, + `// ${gap}: used by ${[...new Set(gapUses.get(gap))].join(", ")}.${skippedPin === undefined ? "" : ` ${skippedPin.address} opens with it, without const.`}`, + gapDeclaration(gap), ]; - }; - - // Values are declared after the values they use. - const values = []; - const placed = new Set(); - const valueNames = new Set( - everything - .filter((row) => row.kind === "value" && !twice.includes(row)) - .map((row) => row.name), - ); - const place = (declaration, path) => { - if (placed.has(declaration) || path.has(declaration)) return; - path.add(declaration); - for (const name of namesUsedBy(declaration)) - if (valueNames.has(name)) place(firstPin.get(name), path); - placed.add(declaration); - values.push(declaration); - }; - for (const declaration of everything) - if (declaration.kind === "value" && !twice.includes(declaration)) - place(declaration, new Set()); + }), + "", + ...block(emitted.filter((row) => row.kind === "type")), + ...block(values), + "export const tables = {", + ...block( + emitted.filter((row) => row.kind === "table"), + " ", + ), + "};", +]; +mkdirSync(join(root, "generated/pinned"), { recursive: true }); +writeFileSync( + join(root, "generated/pinned", `${name}.ts`), + `${lines.join("\n")}\n`, +); - // A gap's name may open an entry the policy skips, such as an assignment without const. - const skippedPinOf = (name) => - all - .filter( - (row) => - row.kind === null && - new RegExp(`^(?:export\\s+)?(?:const\\s+)?${name}\\s*=`).test( - row.declaration.trim(), - ), - ) - .map((row) => row.address); - const lines = [ - `// The pinned declarations of ${options.pack ?? `${scope.length} Specs`}, emitted by scripts/pinned.mjs from recipe 24 of`, - "// the pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each", - "// declaration follows the address of its Design entry.", - ...(options.pack === undefined ? scope.map((id) => `// - ${id}`) : []), - ...imports, - "", - "// Provided by Convex or by a composition's generated code.", - ...Object.values(placeholders).map( - ([declaration, source]) => `${declaration} // ${source}`, - ), - "", - "// Used by the design and pinned by no Spec: each is a design gap. Where the implementation", - "// exports the name, its declaration stands in.", - ...[...gapUses.keys()].sort().flatMap((name) => { - const [declaration, source] = gaps[name]; - const skippedPin = skippedPinOf(name); - return [ - `// ${name}: used by ${[...new Set(gapUses.get(name))].join(", ")}.`, - ...(skippedPin.length === 0 - ? [] - : [ - `// Opens ${skippedPin.join(", ")}, as an assignment and not a declaration.`, - ]), - source === null - ? "// Nothing in the code stands in." - : `// From ${source}.`, - declaration, - ]; - }), - "", - "type Same =", - " (() => T extends A ? 1 : 2) extends () => T extends B ? 1 : 2", - " ? true", - " : false;", - "type Holds = Check;", - ]; - const section = (title, declarations) => { - if (declarations.length === 0) return; - lines.push("", `// ${title}`); - for (const declaration of declarations) - lines.push(comment(declaration), declaration.text); - }; - section( - "Types and functions.", - everything.filter( - (row) => - (row.kind === "type" || row.kind === "function") && - !twice.includes(row), - ), - ); - section("Validators.", values); - const tables = everything.filter((row) => row.kind === "table"); - if (tables.length > 0) { - lines.push("", "// Tables.", "export const tables = {"); - for (const table of tables) - lines.push(` ${comment(table)}`, ` ${table.text},`); - lines.push("};"); - } - if (twice.length > 0) { - lines.push("", "// Names pinned more than once."); - twice.forEach((declaration, index) => - lines.push(...pinnedAgain(declaration, index)), +const counted = (rows) => + [...Map.groupBy(rows, (row) => row.prefix)] + .sort(([left], [right]) => left.localeCompare(right)) + .map(([prefix, group]) => `${prefix} ${group.length}`) + .join(", "); +const ownEmitted = emitted.filter((row) => row.why === undefined); +const skipped = own.filter((row) => row.kind === null); +console.error( + `pinned: generated/pinned/${name}.ts · ${scope.length} Specs · emitted ${ownEmitted.length} (${counted(ownEmitted)}) and ${emitted.length - ownEmitted.length} pulled in · skipped ${skipped.length} (${counted(skipped)}) · ${gapUses.size} names pinned by no Spec`, +); +for (const [twice, pins] of pinnedBy) + if (pins.length > 1 && emitted.includes(pins[0])) + console.error( + `pinned: ${twice} is pinned twice, at ${pins.map((pin) => pin.address).join(" and ")}`, ); - } - - const file = join(root, "generated/pinned", `${options.name}.ts`); - mkdirSync(join(root, "generated/pinned"), { recursive: true }); - writeFileSync(file, `${lines.join("\n")}\n`); - - const byPrefix = (list) => { - const counts = new Map(); - for (const row of list) - counts.set(row.prefix, (counts.get(row.prefix) ?? 0) + 1); - return [...counts] - .sort(([left], [right]) => left.localeCompare(right)) - .map(([prefix, count]) => `${prefix} ${count}`) - .join(", "); - }; - const notes = [ - ...[...missing].map( - ([name, uses]) => - `${name}, used by ${[...new Set(uses)].join(", ")}, is declared nowhere`, - ), - ...twice.map( - (declaration) => - `${declaration.name} is pinned at ${firstPin.get(declaration.name).address} and at ${declaration.address}`, - ), - ]; - console.error( - `pinned: ${relative(root, file)} · ${scope.length} Specs in scope; recipe 24 lists ${totals.entries} entries in ${totals.specs} Specs · emitted ${emitted.length} (${byPrefix(emitted)}) and ${pulled.length} pulled in · skipped ${skipped.length} (${byPrefix(skipped)}) · ${gapUses.size} names pinned by no Spec · ${twice.length} pinned twice`, - ); - for (const note of notes) console.error(`pinned: ${note}`); - return missing.size === 0 ? 0 : 1; -} - -process.exit(emit(parseArguments(process.argv.slice(2)))); diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index 33e9147..8876020 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -1,7 +1,8 @@ -// The history view's pinned declarations against the code that realizes them, through the module -// scripts/pinned.mjs emits from recipe 24. Each test is named by the Spec and the Design entry it -// binds, and its assertion fails the typecheck when the pin and the code part. A pin the code does -// not export, or one the code differs from, has no test here. +// pack:history-view's pinned declarations against the code, through the module scripts/pinned.mjs +// emits from recipe 24. Each test is named by the Design entry it binds. Bound: the code equals the +// pin, so a changed pin fails the typecheck. Ahead: the design leads the code, so the day the code +// catches up the assertion fails and the pair moves to bound. Not compared: the pin and the code +// differ only in the ctx they take, and nothing is asserted. import { describe, expectTypeOf, test } from "vitest"; import type * as pinned from "../../generated/pinned/history-view.js"; import type * as orderSummary from "../../example/convex/orderSummary.js"; @@ -17,237 +18,344 @@ type Dto = { orderId: string; lineCount: number }; type Row = { orderId: string; total: number }; type Input = { orderId: string }; type Result = { allocated: boolean }; +type State = { status: "open" | "closed" }; +type Command = { kind: "close" }; +type Event = { eventType: "closed"; eventSchemaVersion: 1; payload: null }; +type Document = { _id: string; _creationTime: number; generation: number }; -describe("spec:application.generation-registry", () => { - test("compiled: typeRegistryReader", () => { +describe("bound: the code equals the pin", () => { + test("spec:application.generation-registry#design.typeRegistryReader", () => { expectTypeOf().toEqualTypeOf(); expectTypeOf< readModel.RegistryReader >().toEqualTypeOf>(); }); - test("compiled: typeWritableGeneration", () => { - expectTypeOf().toEqualTypeOf(); - }); - test("compiled: fnGenerationsToWrite", () => { + test("spec:application.generation-registry#design.fnGenerationsToWrite", () => { expectTypeOf().toEqualTypeOf< typeof pinned.generationsToWrite >(); }); - test("compiled: fnActiveGeneration", () => { + test("spec:application.generation-registry#design.fnActiveGeneration", () => { expectTypeOf().toEqualTypeOf< typeof pinned.activeGeneration >(); }); - test("compiled: validatorGenerationState", () => { + test("spec:application.generation-registry#design.validatorGenerationState", () => { expectTypeOf().toEqualTypeOf< typeof pinned.generationStateValidator >(); }); - test("compiled: validatorProgressPass", () => { + test("spec:application.generation-registry#design.validatorProgressPass", () => { expectTypeOf().toEqualTypeOf< typeof pinned.progressPassValidator >(); }); - test("compiled: tableGenerations", () => { + test("spec:application.generation-registry#design.tableGenerations", () => { expectTypeOf< (typeof readModel.readModelTables)["generations"]["validator"] >().toEqualTypeOf<(typeof pinned.tables)["generations"]["validator"]>(); }); - test("compiled: tableProjectionMarkers", () => { + test("spec:application.generation-registry#design.tableProjectionMarkers", () => { expectTypeOf< (typeof readModel.readModelTables)["projectionMarkers"]["validator"] >().toEqualTypeOf< (typeof pinned.tables)["projectionMarkers"]["validator"] >(); }); -}); - -describe("spec:application.projection-contract", () => { - test("compiled: typeProjection", () => { + test("spec:application.history-projection#design.typeHistoryEvent", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("spec:application.history-projection#design.typeOrderAllocation", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("spec:application.history-projection#design.typeOrderAllocationHistoryFields", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf", () => { + expectTypeOf< + typeof allocationHistory.orderAllocationHistoryKeyOf + >().toEqualTypeOf(); + }); + test("spec:application.history-projection#design.fnProjectOrderAllocationHistory", () => { + expectTypeOf< + typeof allocationHistory.projectOrderAllocationHistory + >().toEqualTypeOf(); + }); + test("spec:application.projection-contract#design.typeProjection", () => { expectTypeOf>().toEqualTypeOf< pinned.Projection >(); }); - test("compiled: typeReadModel", () => { + test("spec:application.projection-contract#design.typeReadModel", () => { expectTypeOf>().toEqualTypeOf< pinned.ReadModel >(); }); - test("compiled: fnProjectionOf", () => { + test("spec:application.projection-contract#design.fnProjectionOf", () => { expectTypeOf().toEqualTypeOf< typeof pinned.projectionOf >(); }); - test("compiled: typeWritableGeneration", () => { + test("spec:application.projection-contract#design.typeWritableGeneration", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: typeRowWriter", () => { + test("spec:application.projection-contract#design.typeRowWriter", () => { expectTypeOf().toEqualTypeOf(); expectTypeOf< readModel.RowWriter >().toEqualTypeOf>(); }); - test("compiled: typeApplyMode", () => { + test("spec:application.projection-contract#design.typeApplyMode", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: typeApplyResult", () => { + test("spec:application.projection-contract#design.typeApplyResult", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: fnApplyProjection", () => { + test("spec:application.projection-contract#design.fnApplyProjection", () => { expectTypeOf().toEqualTypeOf< typeof pinned.applyProjection >(); }); - test("compiled: typeOrderAllocationHistoryFields", () => { - expectTypeOf().toEqualTypeOf(); - }); - test("compiled: fnOrderAllocationHistoryKeyOf", () => { - expectTypeOf< - typeof allocationHistory.orderAllocationHistoryKeyOf - >().toEqualTypeOf(); - }); - test("compiled: fnProjectOrderAllocationHistory", () => { - expectTypeOf< - typeof allocationHistory.projectOrderAllocationHistory - >().toEqualTypeOf(); - }); - test("compiled: validatorRowConventions", () => { + test("spec:application.projection-contract#design.validatorRowConventions", () => { expectTypeOf().toEqualTypeOf< typeof pinned.rowConventions >(); }); - test("compiled: validatorOrderSummaryFields", () => { + test("spec:application.projection-contract#design.validatorOrderSummaryFields", () => { expectTypeOf().toEqualTypeOf< typeof pinned.orderSummaryFields >(); }); - test("compiled: tableOrderSummaries", () => { + test("spec:application.projection-contract#design.tableOrderSummaries", () => { expectTypeOf<(typeof schema)["tables"]["orderSummaries"]>().toEqualTypeOf< (typeof pinned.tables)["orderSummaries"] >(); }); -}); - -describe("spec:application.rebuild", () => { - test("compiled: typeRebuildTarget", () => { + test("spec:application.read-models#design.fnReadModelView", () => { + expectTypeOf>().toEqualTypeOf< + typeof pinned.readModelView + >(); + }); + test("spec:application.rebuild#design.typeRebuildTarget", () => { expectTypeOf>().toEqualTypeOf< pinned.RebuildTarget >(); }); - test("compiled: tableTenantFill", () => { + test("spec:application.rebuild#design.tableTenantFill", () => { expectTypeOf< (typeof readModel.readModelTables)["tenantFill"] >().toEqualTypeOf<(typeof pinned.tables)["tenantFill"]>(); }); -}); - -describe("spec:application.write-pause", () => { - test("compiled: validatorClosedEntry", () => { + test("spec:application.write-pause#design.typeScopeKey", () => { + expectTypeOf().toEqualTypeOf(); + }); + test("spec:application.write-pause#design.fnGateAllows", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.gateAllows + >(); + }); + test("spec:application.write-pause#design.fnAssertWritable", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.assertWritable + >(); + }); + test("spec:application.write-pause#design.fnScopesOfUseCase", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.scopesOfUseCase + >(); + }); + test("spec:application.write-pause#design.validatorClosedEntry", () => { expectTypeOf().toEqualTypeOf< typeof pinned.closedEntryValidator >(); }); - test("compiled: tableMaintenanceGates", () => { + test("spec:application.write-pause#design.tableMaintenanceGates", () => { expectTypeOf<(typeof gate.gateTables)["maintenanceGates"]>().toEqualTypeOf< (typeof pinned.tables)["maintenanceGates"] >(); }); -}); - -describe("spec:command.command-declaration", () => { - test("compiled: typeSourceRef", () => { + test("spec:command.command-declaration#design.typeSourceRef", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: typePermissionPolicy", () => { + test("spec:command.command-declaration#design.typePermissionPolicy", () => { expectTypeOf>().toEqualTypeOf< pinned.PermissionPolicy >(); }); - test("compiled: typeExecutorResult", () => { + test("spec:command.command-declaration#design.typeExecutorResult", () => { expectTypeOf>().toEqualTypeOf< pinned.ExecutorResult >(); }); - test("compiled: typeBounds", () => { + test("spec:command.command-declaration#design.typeBounds", () => { expectTypeOf().toEqualTypeOf(); }); -}); - -describe("spec:command.command-pipeline", () => { - test("compiled: typePipelineCall", () => { + test("spec:command.command-pipeline#design.typePipelineCall", () => { expectTypeOf>().toEqualTypeOf< pinned.PipelineCall >(); }); - test("compiled: typeCommandResponse", () => { + test("spec:command.command-pipeline#design.typeCommandResponse", () => { expectTypeOf>().toEqualTypeOf< pinned.CommandResponse >(); }); - test("compiled: validatorCommandResponse", () => { + test("spec:command.command-pipeline#design.validatorCommandResponse", () => { expectTypeOf().toEqualTypeOf< typeof pinned.commandResponseValidator >(); }); -}); - -describe("spec:context.event-envelope", () => { - test("compiled: typeCausedBy", () => { + test("spec:context.event-envelope#design.typeCausedBy", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: validatorCausedBy", () => { + test("spec:context.event-envelope#design.validatorCausedBy", () => { expectTypeOf().toEqualTypeOf< typeof pinned.causedByValidator >(); }); - test("compiled: typeOperationRef", () => { + test("spec:context.event-envelope#design.typeOperationRef", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: validatorOperationRef", () => { + test("spec:context.event-envelope#design.validatorOperationRef", () => { expectTypeOf().toEqualTypeOf< typeof pinned.operationRefValidator >(); }); - test("compiled: typeEventEnvelope", () => { + test("spec:context.event-envelope#design.typeEventEnvelope", () => { expectTypeOf().toEqualTypeOf(); expectTypeOf>().toEqualTypeOf< pinned.EventEnvelope >(); }); - test("compiled: validatorEventEnvelope", () => { + test("spec:context.event-envelope#design.validatorEventEnvelope", () => { expectTypeOf().toEqualTypeOf< typeof pinned.eventEnvelopeValidator >(); }); - test("compiled: typeEnvelopeInput", () => { + test("spec:context.event-envelope#design.typeEnvelopeInput", () => { expectTypeOf().toEqualTypeOf(); }); -}); - -describe("spec:context.journal", () => { - test("compiled: fnCreateJournal", () => { + test("spec:context.journal#design.fnCreateJournal", () => { expectTypeOf().toEqualTypeOf< typeof pinned.createJournal >(); }); - test("compiled: typeJournal", () => { + test("spec:context.journal#design.typeJournal", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: typeStreamMeta", () => { + test("spec:context.journal#design.typeStreamMeta", () => { expectTypeOf().toEqualTypeOf(); }); -}); - -describe("spec:context.queries", () => { - test("compiled: typeQueryArgs", () => { + test("spec:context.queries#design.typeQueryArgs", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: typePageLimit", () => { + test("spec:context.queries#design.typePageLimit", () => { expectTypeOf().toEqualTypeOf(); }); - test("compiled: fnBoundedPage", () => { + test("spec:context.queries#design.fnBoundedPage", () => { expectTypeOf().toEqualTypeOf< typeof pinned.boundedPage >(); }); }); + +describe("ahead: the design leads the code", () => { + test("spec:application.generation-registry#design.validatorBatchCursor: the history view's build adds sourceIndex", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.batchCursorValidator + >(); + }); + test("spec:application.generation-registry#design.tableGenerationProgress: its cursor, through validatorBatchCursor", () => { + expectTypeOf< + (typeof readModel.readModelTables)["generationProgress"]["validator"] + >().not.toEqualTypeOf< + (typeof pinned.tables)["generationProgress"]["validator"] + >(); + }); + test("spec:application.rebuild#design.typeRebuildConfig: the history view's build adds history targets", () => { + expectTypeOf().not.toEqualTypeOf(); + }); + test("spec:application.rebuild#design.fnBatchSizeFor: the history view's build takes a history projection", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.batchSizeFor + >(); + }); + test("spec:application.rebuild#design.fnResumeChain: through typeRebuildConfig, and its ctx", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.resumeChain + >(); + }); + test("spec:command.command-declaration#design.typeReadModelBinding: the history view's build binds history and aggregate projections", () => { + expectTypeOf().not.toEqualTypeOf(); + }); + test("spec:command.command-pipeline#design.fnWriteReadModels: through typeReadModelBinding", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.writeReadModels + >(); + }); + test("spec:command.command-declaration#design.typeRetention: a receipt's tombstone expiry", () => { + expectTypeOf().not.toEqualTypeOf(); + }); + test("spec:command.command-declaration#design.typeCommandDeclaration: through typeReadModelBinding and typeRetention, the irreversible flag a tombstone serves, and its executor's ctx", () => { + expectTypeOf>().not.toEqualTypeOf< + pinned.CommandDeclaration + >(); + }); + test("spec:command.command-declaration#design.fnPublicCommand: through typeCommandDeclaration", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.publicCommand + >(); + }); + test("spec:command.command-declaration#design.fnInternalCommand: through typeCommandDeclaration", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.internalCommand + >(); + }); + test("spec:command.command-pipeline#design.fnRunPipeline: through typeCommandDeclaration, and its ctx", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.runPipeline + >(); + }); + test("spec:command.command-pipeline#design.fnRelayFailure: through typeCommandDeclaration", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.relayFailure + >(); + }); + test("spec:context.journal#design.typeStreamRegistration: baselines and migration, and the deferred streamParts for the derived mapping", () => { + expectTypeOf< + context.StreamRegistration + >().not.toEqualTypeOf< + pinned.StreamRegistration + >(); + }); + test("spec:context.journal#design.typeLoadedStream: the deferred streamParts", () => { + expectTypeOf>().not.toEqualTypeOf< + pinned.LoadedStream + >(); + }); + test("spec:context.journal#design.fnLoad: through typeStreamRegistration and typeLoadedStream, and its ctx", () => { + expectTypeOf().not.toEqualTypeOf(); + }); + test("spec:context.journal#design.fnAppend: through typeLoadedStream, and its ctx", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.append + >(); + }); + test("spec:context.queries#design.fnDefineGet: through typeStreamRegistration", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.defineGet + >(); + }); + test("spec:context.queries#design.fnDefineList: through typeStreamRegistration", () => { + expectTypeOf().not.toEqualTypeOf< + typeof pinned.defineList + >(); + }); +}); + +describe("not compared: the pin takes Convex's generic MutationCtx, the code a composition's own ctx", () => { + test.skip("spec:command.command-declaration#design.typeExecutor"); + test.skip("spec:command.command-declaration#design.typeAdmissionPolicy"); + test.skip("spec:application.write-pause#design.fnCloseScope"); + test.skip("spec:application.write-pause#design.fnResumeScope"); +}); From 3fe06079cab01e0662e2a65488f29a5a02e9ae58 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:11:47 +0200 Subject: [PATCH 07/60] design: the implementation pass, two more pins the module found The rework of the pinned module found two more things, ruled the way the first four were: - validatorActorKind opens with const, so actorKindValidator is a declaration and leaves the emitter's list of names no Spec pins. - pageInGeneration's prefix is readonly Value[], the code's spelling: a readonly parameter takes every array the mutable one did. The pair is bound in tests/types/pinned.test-d.ts. The compatibility test now holds 53 bound pairs, 19 ahead and 4 not compared. npm test passed 1,122 with 4 skipped, the 4 not-compared pairs; typecheck, lint and format are clean; check.py prints OK. Co-Authored-By: Claude Opus 5.5 --- design/specs/application/read-models.sdp.md | 2 +- design/specs/command/actor-and-scope.sdp.md | 2 +- scripts/pinned.mjs | 1 - tests/types/pinned.test-d.ts | 5 +++++ 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/design/specs/application/read-models.sdp.md b/design/specs/application/read-models.sdp.md index 3e8f240..1113326 100644 --- a/design/specs/application/read-models.sdp.md +++ b/design/specs/application/read-models.sdp.md @@ -97,7 +97,7 @@ Nothing here schedules, and nothing here reads `ctx.auth` inside a component. Th - convexSurface: one static `query` export per read need in the parent; component queries are reached through `ctx.runQuery(components.orders.queries.order.get, args)`, its siblings `list`, `history` and `rebuild`, and `components.orders.queries.operations.byOperation`, as the queries contract names them; no scheduled function, no cron, no action (D8, F11) - fnEntityDetail: `getOrder` as `spec:context.queries` pins it under `parentGet`: it calls `authorizeQuery` and then `ctx.runQuery(components.orders.queries.order.get, { tenantId, streamId: orderId })` (D8, D11, F15) - fnListOrSummary: `export const listOrderSummaries = query({ args: { tenantId: v.string(), status: v.union(v.literal("placed"), v.literal("cancelled")), paginationOpts: paginationOptsValidator }, returns: paginationResultValidator(orderSummaryView), handler: async (ctx, { tenantId, status, paginationOpts }) => { await authorizeQuery(ctx, { name: "listOrderSummaries", tenantId, permission: "orders.read" }); const generation = await activeGeneration(ctx, "orderSummary"); if (generation === undefined) throw new Error("The read model orderSummary has no active generation"); const result = await paginator(ctx.db, schema).query("orderSummaries").withIndex("by_status", (q) => q.eq("tenantId", tenantId).eq("generation", generation).eq("status", status)).paginate(boundedPage(pageInGeneration(paginationOpts, [tenantId, generation, status], 5), limitReadModelList(orderSummary))); return { ...result, page: result.page.map(readModelView) }; } })` one `paginate` of `paginator` from `convex-helpers/server/pagination` with the composition's `schema`, over the active generation's rows in `placedAt` then `key` order within a status, where `orderSummary` is the read model, whose name is `"orderSummary"` and whose table is `orderSummaries` (D8, D9, Law 5, Law 11, E-24) -- fnPageInGeneration: `pageInGeneration(opts: PaginationOptions, prefix: Value[], indexFields: number): PaginationOptions` returns `opts` with its `cursor` and its `endCursor`, when set, each moved into the generation of `prefix`, the query's equality values in index order, `tenantId`, `generation` and the list's equality fields, the generation second: a cursor of `paginator` is the JSON of a row's index key, which the function reads and writes as `paginator` encodes it, `undefined` as the string `"undefined"` and a string that ends in `undefined` with one leading underscore added, so it compares the equality elements and replaces the generation in the decoded values; it replaces the key's second element, the generation that wrote the row, with the prefix's and drops the last two, `_creationTime` and `_id`, which belong to that generation's document, when the key carries them, which it tells by a length of `indexFields`, the index's own field count, plus two, so that a cursor already moved, which `paginator` returns as a pinned page's `continueCursor`, keeps its length and has only its generation replaced; a cursor whose key's length is neither `indexFields` nor `indexFields` plus two, whose generation is not a number, whose other equality elements differ from the prefix's, or that is not a key, throws a plain `Error` `"The cursor is not from this list"`, after `authorizeQuery` and the read of the active generation and before the list reads a row, so a saved cursor never overrides the query's tenant or status; `null` passes as a start or an end cursor and `undefined` as an end cursor, the validator requiring a start cursor, and `"[]"`, the helper's end-of-list mark, passes as the lawful `endCursor` of the last pinned page and, as a start cursor, reads the list from its first row, which is the helper's behavior and discloses nothing; the read-model library exports the function beside `readModelView` (D9, E-24, Probe 5, Law 11) +- fnPageInGeneration: `pageInGeneration(opts: PaginationOptions, prefix: readonly Value[], indexFields: number): PaginationOptions` returns `opts` with its `cursor` and its `endCursor`, when set, each moved into the generation of `prefix`, the query's equality values in index order, `tenantId`, `generation` and the list's equality fields, the generation second: a cursor of `paginator` is the JSON of a row's index key, which the function reads and writes as `paginator` encodes it, `undefined` as the string `"undefined"` and a string that ends in `undefined` with one leading underscore added, so it compares the equality elements and replaces the generation in the decoded values; it replaces the key's second element, the generation that wrote the row, with the prefix's and drops the last two, `_creationTime` and `_id`, which belong to that generation's document, when the key carries them, which it tells by a length of `indexFields`, the index's own field count, plus two, so that a cursor already moved, which `paginator` returns as a pinned page's `continueCursor`, keeps its length and has only its generation replaced; a cursor whose key's length is neither `indexFields` nor `indexFields` plus two, whose generation is not a number, whose other equality elements differ from the prefix's, or that is not a key, throws a plain `Error` `"The cursor is not from this list"`, after `authorizeQuery` and the read of the active generation and before the list reads a row, so a saved cursor never overrides the query's tenant or status; `null` passes as a start or an end cursor and `undefined` as an end cursor, the validator requiring a start cursor, and `"[]"`, the helper's end-of-list mark, passes as the lawful `endCursor` of the last pinned page and, as a start cursor, reads the list from its first row, which is the helper's behavior and discloses nothing; the read-model library exports the function beside `readModelView` (D9, E-24, Probe 5, Law 11) - indexReadModelList: the index a read-model list reads has `tenantId`, `generation` and the list's equality fields first, then its order field, then `key`, as `by_status` of `tableOrderSummaries` in `spec:application.projection-contract`, so a position within a tenant names at most one row of each generation and a cursor moved into another generation lands between the same rows there (D9, E-9, Law 11) - fnReadModelView: `readModelView(row: Row): Omit` what a read-model query returns for a row: the tenant, the key, the projection version, the source versions and the projected fields; the built-in page's rows carry `_id` and `_creationTime`, which an object validator of the row's fields refuses, and no document ID or generation number leaves the parent in a row; a page's cursors are the position tokens of `fnPageInGeneration`, which carry the generation and, as `paginator` issues them, the row's `_creationTime` and `_id`, and a client passes them back unread, since the list refuses a cursor that is not its own (D8, D2, E-9) - validatorReadModelView: `orderSummaryView = v.object({ tenantId: v.string(), key: v.string(), projectionVersion: v.number(), sourceVersions: v.array(streamVersionValidator), ...orderSummaryFields })` where `orderSummaryFields` are the projected fields `spec:application.projection-contract` declares for `tableOrderSummaries` (E-9, D8) diff --git a/design/specs/command/actor-and-scope.sdp.md b/design/specs/command/actor-and-scope.sdp.md index 5aa8d68..649b494 100644 --- a/design/specs/command/actor-and-scope.sdp.md +++ b/design/specs/command/actor-and-scope.sdp.md @@ -59,7 +59,7 @@ This contract pins the shapes the parent establishes and passes into components: - typeActorKind: `type ActorKind = "human" | "service" | "agent" | "reviewer" | "operator"` (D11) - typeActorRef: `type ActorRef = { kind: ActorKind; id: string }` (D11, E-6) - typeActor: `type Actor = { kind: ActorKind; id: string; issuer?: string; onBehalfOf?: ActorRef; delegationRef?: string }` where `delegationRef` names the obligation, approval or agent run the delegation rests on (D11, D2, E-6) -- validatorActorKind: `actorKindValidator = v.union(v.literal("human"), v.literal("service"), v.literal("agent"), v.literal("reviewer"), v.literal("operator"))` (D11) +- validatorActorKind: `const actorKindValidator = v.union(v.literal("human"), v.literal("service"), v.literal("agent"), v.literal("reviewer"), v.literal("operator"))` (D11) - validatorActor: `const actorValidator = v.object({ kind: actorKindValidator, id: v.string(), issuer: v.optional(v.string()), onBehalfOf: v.optional(v.object({ kind: actorKindValidator, id: v.string() })), delegationRef: v.optional(v.string()) })` (D11, D2, E-6) - typeTenantScope: `type TenantScope = { tenantId: string }` (Law 11) - validatorTenantScope: `tenantScopeValidator = v.object({ tenantId: v.string() })` (Law 11) diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index d7a4ee9..36b1ea5 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -64,7 +64,6 @@ const gaps = { SubjectRef: "src/command", WriteBaselineArgs: "Record", WriteBaselineResult: "unknown", - actorKindValidator: "src/command", outcomeKindValidator: "src/command", }; function gapDeclaration(name) { diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index 8876020..a0706a6 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -131,6 +131,11 @@ describe("bound: the code equals the pin", () => { (typeof pinned.tables)["orderSummaries"] >(); }); + test("spec:application.read-models#design.fnPageInGeneration", () => { + expectTypeOf().toEqualTypeOf< + typeof pinned.pageInGeneration + >(); + }); test("spec:application.read-models#design.fnReadModelView", () => { expectTypeOf>().toEqualTypeOf< typeof pinned.readModelView From 5e32a690e4a3fb9c45c45350216ad531750ab68a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:15:17 +0200 Subject: [PATCH 08/60] design: a design ahead of its code, the conventions and the pass PLAN.md 6.7 says how a capability is designed in its Specs before its code and how the graph shows it: one maturity per Spec, a capability Pack, pinned declarations that compile and bind to the code, entries cited by address, every prose mention a relation or a listed reason, and passes that read the design from one perspective each before the build. design/advisors/task-pass.md is the advisor task for a pass: one lens over one Pack, a memo of at most fifteen findings, each naming the entry address it concerns and proposing Spec text, an open question, a register row or nothing. The advisor README says how the main thread runs one, and protocol.md admits an entry address as the citation of a Design entry. docs/sdp-feedback.md records what adopting the Protocol's pull request 27 asked of this corpus and what it found: the mention warnings were mostly missing edges, declaring them closed cycles nothing reports, addresses outside the Specs need a check of their own, the declarations module needs a list of pins that lead their code, and a Pack's page sorts its members. Co-Authored-By: Claude Opus 5.5 --- AGENTS.md | 2 +- design/PLAN.md | 15 +++++++++++++++ design/advisors/README.md | 13 ++++++++++++- design/advisors/protocol.md | 1 + design/advisors/task-pass.md | 32 ++++++++++++++++++++++++++++++++ docs/sdp-feedback.md | 11 +++++++++++ 6 files changed, 72 insertions(+), 2 deletions(-) create mode 100644 design/advisors/task-pass.md diff --git a/AGENTS.md b/AGENTS.md index b27e4bf..c4990db 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -24,7 +24,7 @@ The Convex transactional domain platform. `docs/` holds the inputs. `design/` ho ## The advisor panel and the roadmap - `design/ROADMAP.md` is the aggregated roadmap: the next units in rounds, what each needs first and shows, what is deferred and why. The owner rules on it; the main thread keeps it current at each close. The slices of `design/STATE.md` keep their names, and the roadmap orders the units inside and between them. -- Four advisors, `advisor-convex`, `advisor-domain`, `advisor-operator` and `advisor-product`, are Fable agents defined under `.claude/agents/`. Each is launched with a task file under `design/advisors/`: `task-sort.md` sorts the open decisions of its lens, `task-fork.md` writes one owner decision as a fork, `task-roadmap.md` proposes the milestones of one subject. The four run at once, with disjoint subjects, and the main thread merges or cuts. +- Four advisors, `advisor-convex`, `advisor-domain`, `advisor-operator` and `advisor-product`, are Fable agents defined under `.claude/agents/`. Each is launched with a task file under `design/advisors/`: `task-sort.md` sorts the open decisions of its lens, `task-fork.md` writes one owner decision as a fork, `task-roadmap.md` proposes the milestones of one subject, `task-pass.md` reads one capability's Pack from its lens before the capability is built. The four run at once, with disjoint subjects, and the main thread merges or cuts. - Every lean, fork or memo is checked by a `gpt-6.1-sol` job of the other family before the owner sees it, on a copy that carries one planted false citation. `design/advisors/README.md` says how each run goes and what the first runs showed; `design/advisors/protocol.md` binds every sentence an advisor writes. - The memos, briefs and plants of a run live outside the repository, in the unit folder the project notes name. A check job's report stays in its job directory. diff --git a/design/PLAN.md b/design/PLAN.md index 8b69e96..90abc7c 100644 --- a/design/PLAN.md +++ b/design/PLAN.md @@ -568,6 +568,21 @@ The design never resolves an inconsistency it finds in the doc. It records the t Use the doc's terms as `spec:platform.vocabulary` fixes them. Stream version, never revision. Obligation for the record, effect for the change it makes, attempt for one try. Receipt for the stored idempotency outcome. Generation for a numbered read-model build. Where a Convex term and a doc term differ, the doc's word names the design concept and the Convex word names the mechanism (`obligation` is the record, `scheduled function` is the dispatch). +### 6.7 A design ahead of its code + +A capability is designed in its Specs before anyone writes its code, at the rung its design has reached, and the graph shows which parts are realized, which are designed and which are deferred. These conventions keep it so. + +1. **One maturity per Spec.** When part of a Spec's design is realized, deferred or reviewed apart from the rest, it moves into a Spec of its own, with its own readiness, open questions, relations, anchors and verifiers. This is the Protocol's promotion rule, and the content moves out. What the parts share keeps one home, and each part `dependsOn` it. The projection contracts show the three cases side by side: `spec:application.projection-contract` holds the per-entity form, which code realizes, and the conventions every form shares; `spec:application.history-projection` holds the history form, designed and checked by one pure test; `spec:application.aggregate-projection` holds the aggregate form at `scoped`, deferred with its trigger. +2. **A capability Pack.** A Pack gathers, in reading order and across packages, the Specs one capability rests on, such as `pack:history-view`. Its page in the Design Review (`npx sdp view`, then `generated/design-review/pack/`) presents the design: each member's stated rung, the floor it reaches, its implementation binding and its verifier binding. Recipes 5, 19, 20 and 21 read a Pack's members for review, planning, open questions and dependency footing. +3. **Pinned declarations compile.** A Design entry whose value opens with a code span is a pinned declaration (6.3), and recipe 24 lists them. `scripts/pinned.mjs` emits the declarations of one scope by key prefix into `generated/pinned/.ts`, with the declarations other Specs pin that the scope uses; `npm run sdp:build` runs it and `npm run test:types` compiles it, so a name used and never declared, or declared twice, fails. A name the design uses and no Spec pins is listed in the emitter's preamble, one line each, until a Spec pins it. Where code realizes a pin, `tests/types/pinned.test-d.ts` asserts that the code's type equals it, so a changed pin, or code that drifts from it, fails the typecheck. Where the design leads its code on purpose, the test lists the pair as ahead, with what closes it, and asserts that the two still differ, so the build that catches up fails the test until it moves the pair to the bound list. The module states shapes only; a rule in prose is still read by a person. +4. **An entry is cited by its address.** `spec:#design.` names one Design entry, as in `spec:application.history-projection#design.fnApplyHistoryProjection`. Validate checks an address in a Spec's prose, and `check.py` checks one in the code, the tests, the register, the ledger and the work documents. A line number is a pointer that the next edit moves; it never stands for an entry. +5. **A mention is a relation or a listed reason.** A Spec id in prose with no relation between the two Specs is a validate warning. Declare the relation when the mentioning Spec could not be built or read correctly without the other. Otherwise list the pair in `design/tools/prose-mentions.json` with a one-line reason; `check.py` refuses a pair that is neither, and a listed pair that no longer warns. +6. **A design is read from several perspectives before its code.** A pass reads a capability's Pack from one lens and changes Spec text only through the main thread's rulings; what it cannot settle becomes an open question or a register row. A pass needs no status: git holds the passes and the Pack shows the design as it stands. The questions each lens asks of a design, as a start: + - domain: does every interleaving of the sources give the same row, what survives a subject's end, what a migrated stream's baseline means to the design; + - Convex: what one transaction reads and writes, whether the stated bounds hold on the pinned release, what changes atomically and what across transactions; + - operator: what an interruption, a resume and an abort leave, who closes and opens a pause, what a deploy or a restore does to work in flight; + - implementation and verification: the pinned module compiles and the code agrees with it, each dependency stands at its rung (recipe 21), and each example names its tier and has a planned verifier. + ## 7. Review rubric Reviewers judge the merged corpus. Each item is checkable; an item that fails names the Spec and line. diff --git a/design/advisors/README.md b/design/advisors/README.md index 20d3316..92c9231 100644 --- a/design/advisors/README.md +++ b/design/advisors/README.md @@ -11,7 +11,7 @@ An advisor is three layers, kept apart so that a change to one leaves the other | Layer | File | Changes when | |---|---|---| | The lens: the questions a field asks of any decision, its hazards, its reading list | `lenses/.md` | The field's questions get sharper | -| The protocol: how an advisor stands on the corpus, what a lean is, the limits | `protocol.md`, with `task-sort.md` and `task-fork.md` | The way of working changes | +| The protocol: how an advisor stands on the corpus, what a lean is, the limits | `protocol.md`, with `task-sort.md`, `task-fork.md`, `task-roadmap.md` and `task-pass.md` | The way of working changes | | The project: what the corpus holds and where to look | `project-context.md` | A close moves a path | | Advisor | Slug | Lens | Definition | @@ -44,6 +44,17 @@ The main thread merges each patch with `python3 design/tools/decisions.py apply `python3 design/tools/decisions.py --owner --before ` lists what the owner must decide first. One launch for each fork, or one for a few forks of the same advisor, with `design/advisors/task-fork.md`, the ids and a patch path. Forks of different advisors run at once: each writes `design/decisions/forks/.md` and its own patch. +## How the main thread runs a pass + +The owner asked on 2026-10-03 for designs of coming work to be first-class in the corpus and iterated from several perspectives before the work is committed to. A pass is one advisor reading one capability's Pack from its lens, with `task-pass.md`, before the capability is built; `design/PLAN.md` 6.7 says how such a design sits in the graph and what each lens asks of it. Passes of different lenses over one Pack may run at once, since each writes only its memo. + +``` +Agent(subagent_type: "advisor-convex", + prompt: "Your task is design/advisors/task-pass.md. Your slug is convex. Your Pack is pack:history-view. Write your memo to /pass-convex.md.") +``` + +The memo's facts are checked like a roadmap memo's, on a copy with a plant. The main thread then rules each finding: a Spec change written by an Opus agent, an open question, a register row, or nothing. The pass closes as `design: , the pass`, and the next pass reads the Specs as that one left them. The implementation and verification pass needs no advisor: `npm run test:types` compiles the Pack's pinned module, recipe 21 gives its dependency footing, and the main thread rules on what they show. + ## How the main thread runs a roadmap The owner asked on 2026-10-02 for the panel to propose the upcoming milestones as a short-term roadmap. The task is `task-roadmap.md`, and the aggregated result is `design/ROADMAP.md`, a work document the main thread cuts from the four memos and the owner rules on. diff --git a/design/advisors/protocol.md b/design/advisors/protocol.md index 5a5c492..5144b9d 100644 --- a/design/advisors/protocol.md +++ b/design/advisors/protocol.md @@ -21,6 +21,7 @@ Your field is not evidence. What you know from practice says where to look and w 1. **A sentence about the platform, about Convex or about the code carries its citation, or it opens with its basis.** No third kind exists. 2. **Five kinds of evidence, each written one way.** - A Spec line: `[design/specs/command/command-pipeline.sdp.md:61]`. It shows what is intended. + - A Design entry: its entry address, `[spec:application.history-projection#design.fnApplyHistoryProjection]`. It shows what is intended, like a Spec line, and it still points at the entry after an edit moves the lines. Prefer it whenever the claim rests on one Design entry. - The doc: its token, `[D7]`, `[Law 3]`, `[F13]`, `[Sc L2-4]`, `[OQ1]`, with the line of the doc when you quote it. - Code: `[src/command/receipts.ts:40]`. It shows what is written, not what happens. - A measured fact: the tier, the pins and the record, `[native backend, convex 1.46.0, backend precompiled-2026-09-28-5c7cb5b, evidence/.json]`. diff --git a/design/advisors/task-pass.md b/design/advisors/task-pass.md new file mode 100644 index 0000000..4f32716 --- /dev/null +++ b/design/advisors/task-pass.md @@ -0,0 +1,32 @@ +# Task: read one capability's design from your lens + +Your launch names your slug, a Pack and the path of the memo you write, written below as ``, `` and ``. Work for about thirty minutes. + +## Why this work exists + +A capability is designed in its Specs before anyone builds it. The owner asked on 2026-10-03 for designs of coming work to be first-class in the corpus and to be iterated from several perspectives before the work is committed to. `design/PLAN.md` 6.7 says how such a design sits in the graph: one maturity per Spec, a Pack that gathers what the capability rests on, pinned declarations that compile, entries cited by address. A pass is one reading of that design from one lens. It finds what the design leaves an implementer to guess, what it gets wrong, and what it cannot settle yet. The main thread rules on what you find, and the next pass reads the result. + +## Before you read + +Read `design/advisors/protocol.md`, then `design/advisors/project-context.md`, then `design/advisors/lenses/.md`. Then read the Pack through the graph, from the repository root, with bodies copied verbatim from `node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md`: + +- recipe 5, the Pack review backbone, with ``: the members, their rungs and bindings; +- recipe 20, the open questions, and recipe 21, the dependency footing, for each member that pins what the capability builds; +- recipe 24, the pinned declarations, filtered to the members, and `generated/pinned/` after `npm run sdp:build` has run, for the shapes as one module; +- the member Specs themselves, where a question turns on their text. + +## What you look for + +The questions of your lens, asked of this design: what a specialist of your field would want settled before the first line of code. `design/PLAN.md` 6.7 lists a few per lens; they are a start, not a limit. Keep to your lens. A question of another lens is one line in your return. + +## The memo + +One Markdown file at ``, at most fifteen findings, the most consequential first. Each finding is one short paragraph under a heading of a few words, and it says: + +- **Where:** the entry address of the Design entry it concerns, `spec:#design.`, or the Spec id and the section when no entry holds it. +- **What:** the gap, the error or the open point, every sentence on its basis as `protocol.md` writes it. +- **Proposed:** one of four things. Exact text for a Spec, with the entry address it replaces or follows, in the words of `CONTEXT.md` and none of the work's. An open question for a Spec, with `[blocking]` or `[non-blocking]`. A row for the decision register, with the class you would give it. Or nothing, when the finding only informs. + +## What you return + +Text only, at most twelve lines: the path of the memo, the findings by kind of proposal, the three you are least sure of, every question you left to another lens, and each word you needed that `CONTEXT.md` does not have. diff --git a/docs/sdp-feedback.md b/docs/sdp-feedback.md index e9ba105..48899a2 100644 --- a/docs/sdp-feedback.md +++ b/docs/sdp-feedback.md @@ -4,6 +4,17 @@ A running file, addressed to the Protocol's maintainers. Each `adopt` unit and e Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-03, adopting the merge of pull request 27 at `5e29c03` + +The pin moved from `5993da7` to the merge commit of pull request 27, packed from a clean clone as before. The graph kept its shape (237 Specs, 384 nodes, 1,251 edges) and graph schema `0.6.0` changed nothing this corpus reads: `npm test` passed 1,050 and the typecheck was clean on the new pin with no other change. What the version gave, and what it asked of this corpus: + +- **The mention warnings were mostly missing edges.** Validate reported 83 `conformance/prose-mentions` pairs. Read one by one, 70 were dependencies the frontmatter never declared, now 56 relations (52 `dependsOn`, 3 `constrainedBy`, 1 `decidedBy`, one relation backing both directions where two Specs name each other); 12 are prose that no typed relation fits, eight of them in examples, which keep only `refines` and `verifies`; one moved with the text that carried it. The impact recipes read more of the corpus now. On the pull request's question whether "let the warning stand" teaches readers to skip warnings: this corpus answers it in its own gate. `check.py` accepts a pair warning only when the pair is listed with a one-line reason in `design/tools/prose-mentions.json`, and refuses a listed pair that no longer warns. No Protocol change is asked for. +- **Declaring the missing edges closed `dependsOn` cycles.** Two older edges ran backwards (the event envelope depended on the pipeline and the adapter, which check its bounds), and the new edges closed nine Specs into loops through them. Nothing in validate or recipe 21 reports a `dependsOn` cycle; a script found it. A cycle may be lawful data, but a recipe that lists the strongly connected sets of typed dependencies would let an adopter see one when it forms. +- **Entry addresses outside the Specs.** Validate checks an address in a Spec's prose, and it refused a broken one here as the Spec says. This corpus also cites Spec content from code comments, tests, the decision register, the ledger and the advisors' memos, and those cited lines: one test comment named `step5:125` of a Spec whose line 125 had held `step1` since an earlier edit. `check.py` now resolves every `spec:#design.` in those files through one `sdp q` body over `g.specContext(id).sections`. A shipped recipe that resolves a list of addresses would save every adopter writing that body. The register's own references to open questions, `spec:#`, use the `#` the Protocol now reserves; they live in JSON and nothing refuses them, but an open question has no address, and a register that cites one by index moves when a question above it moves. +- **Recipe 24 and the declarations module.** Recipe 24 listed 400 declarations in 37 Specs here at adoption, 401 in 39 after the split below. The module is the adopter's recipe, as the ruling says, and this corpus built it: `scripts/pinned.mjs` reads the recipe's body from the shipped catalog, takes one Pack's declarations and the closure of the names they use that other Specs pin, emits by this corpus's key prefixes (`type`, `fn`, `validator`, `table`), and `tests/types/pinned.test-d.ts` asserts the code's type equals the pin for each pair the code realizes. A changed pin fails `npm run test:types` at the pair's entry address. Three things the ruling's text did not foresee. First, a pin can lead its code on purpose: a design for coming work pins `ReadModelBinding` over three forms while the code admits one, so the test keeps such pairs in a list that asserts the two still differ, which fails the day the code catches up. Second, the first compile found a name pinned twice and sixteen names the design uses and no Spec pins, which is the module's whole value before code exists; two of them were the history design's own and are pinned now. Third, declarations that do not emit are common: `index*` fragments, `limit*` formulas, and the 51 `fn*` entries written as Convex registrations, `export const name = mutation({ ... })`, which no `declare` form takes. +- **Maturity is per Spec, so a Spec of mixed maturity had to split.** The projection contract held a per-entity form with code, a history form designed and not built, and an aggregate form deferred, under one readiness and one implementation binding. It is three Specs now, at `defined` with an anchor, `defined` without one, and `scoped` with its trigger, and the Pack of the history view shows the difference in its member table. The split also surfaced, through the `ready` floor's typed-dependency clause, that three implemented Specs promise the deferred form in their signatures. That is the graph working, and it is a design question for this corpus, not the Protocol. +- **The Design Review sorts a Pack's members by id.** The authoring skill says to preserve authored membership order, and `pack:history-view` is written in reading order, but its page lists members alphabetically. For a Pack that presents one capability's design, the authored order is the reading order. + ## 2026-10-03, round 2 of the roadmap - A model Spec now owns an example space: `orders-inventory-example.sdp.md` holds the `gwt-vocabulary` of its six examples, and the pinned Protocol validates it with 0 errors and 0 warnings, while the model template of this corpus's `design/PLAN.md` 6.1 lists only Intent and Model, so nothing told the author it was allowed. From 1ee24b5f832f0805e7721d16b9919fd8972cee9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:25:33 +0200 Subject: [PATCH 09/60] design: the history view, the Convex pass The second pass over pack:history-view, by advisor-convex with design/advisors/task-pass.md (11.7 min): ten findings in a memo outside the repository. gpt-6.1-sol checked its facts on a copy with one planted false citation and caught it (job-musctnbl-f5337dfb, 4.6 min); every claim the proposals rest on held, and the claims that did not are wording outside them. The main thread ruled: - Six open questions, each a register row (OD-156 to OD-161): the shape of a history batch, one stream per batch and a pause linear in the streams (rebuild); whether the verify pass under the pause, which by historyVerify finds nothing over a covered generation, is needed (rebuild, OD-157 sorted as the owner's, since it reads the doc's words of D9 and Sc L2-6); the batch chain against the write throughput limit (rebuild); the tenant ID repeated in every sourceVersions entry, three quarters of the largest history row (projection contract); the live cost of the binding, unmeasured (history projection); and the gate's generation exemption, which no reader reaches (write pause). - Three F13 entries from the limits page read on 2026-10-03: limitDocument split into document and value limits, limitWriteThroughput, and limitIoOperations. - A pure test that builds the largest order allocation history row from the example's own sources and holds it at the 55,803 bytes the Spec states, under the 65,536 budget, with a reviewed bullet that names it. The roadmap's 5d names its Pack and the domain and operator passes that come before its build. Co-Authored-By: Claude Opus 5.5 --- design/ROADMAP.md | 4 +- design/decisions/register.json | 198 ++++++++++++++++++ .../application/history-projection.sdp.md | 2 + .../application/projection-contract.sdp.md | 1 + design/specs/application/rebuild.sdp.md | 3 + design/specs/application/write-pause.sdp.md | 1 + .../facts/f13-transactions-have-limits.sdp.md | 6 +- .../order-allocation-history-row-size.test.ts | 119 +++++++++++ 8 files changed, 331 insertions(+), 3 deletions(-) create mode 100644 tests/pure/order-allocation-history-row-size.test.ts diff --git a/design/ROADMAP.md b/design/ROADMAP.md index 3bf2057..14a51b7 100644 --- a/design/ROADMAP.md +++ b/design/ROADMAP.md @@ -36,7 +36,7 @@ The slices of `STATE.md` keep their names. S3 is round 1's attribution and round | 5 | a | Baselines, migration and the fold bound, Sc L2-7 at the native tier; the history-reading sweep with its transient refusal and the restore check's pending-work inventory, at `convex-test` for the interleavings and natively for the sweep | mixed | domain | a night or more | OD-041 (ruled), 3b | | 5 | b | The restore procedure and the drill, Sc L2-8 | mixed | operator | unknown until 4b | 4b, 5a | | 5 | c | The first adopter-facing cut: README, the example walkthrough, the package shape | mixed | product | a night | OD-047, OD-048, Sc L2-5 to L2-8 bound | -| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10 | build | domain | a night | 3b, 4c | +| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10. Its design is `pack:history-view`; the implementation and Convex passes ran in the unit `design-in-the-graph` | build | domain | a night | 3b, 4c, the domain and operator passes over `pack:history-view` | ## Round 1: what blocks nothing @@ -107,6 +107,8 @@ Every item is done but the hosted tier's first runs, which are the owner's after **5c. The adopter-facing cut.** The root README's first hour, an `example/README.md` that walks `PlaceOrder` from its declaration to the order summary, and the package kept private with nothing of the first-release list. No name, export or version is a contract yet. +**5d. The history view's build.** Its design is `pack:history-view`, read before the build in passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation pass ran in the unit `design-in-the-graph`: the pinned module compiles the Pack's declarations and binds 53 of them to the code, and the pass pinned the two names the history design used and no Spec pinned. The Convex pass ran in the same unit and left its open questions on the rebuild, the write pause and the two projection Specs. The domain and operator passes come next, one advisor launch each, at once; the Convex pass's memo names what it left to each. The build then binds `spec:application.history-projection` to its code, moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the two Sc L2-6 examples at the native tier. + ## Deferred, with the trigger - Layers 3 to 6: at their trigger, after Probe 7, as the doc and tactical decision 3 say. OD-050 to OD-054 and OD-056 stay waiting until an activation record names a consumer. diff --git a/design/decisions/register.json b/design/decisions/register.json index 7c77a94..06e4c1a 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6363,6 +6363,204 @@ "decidedBy": "owner", "decidedOn": "2026-10-03", "ruling": "The owner's words in the tooling unit, on the advisor's eight hosted recommendations: \"I agree with all recommendations. We have unused Convex Professional account. Let me know how to login.\" Taken as the lean: one hosted development deployment, dev/hosted in the project libar-platform-hosted of the owner's otherwise unused team on the Professional plan, with one development deploy key, hosted-ci-scoped, limited to the fourteen actions, held as the one secret HOSTED_DEPLOY_KEY by the GitHub environment hosted, which admits the default branch only; run twice a week and on dispatch. The owner made the key, the environment and the secret by hand on 2026-10-03." + }, + { + "id": "OD-156", + "title": "Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation ", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.rebuild#6", + "file": "design/specs/application/rebuild.sdp.md", + "line": 66 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-40", + "E-9", + "D9", + "F13", + "F19" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "convex", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-157", + "title": "The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass ", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.rebuild#7", + "file": "design/specs/application/rebuild.sdp.md", + "line": 67 + } + ], + "families": [ + "application" + ], + "cites": [ + "D9", + "Sc L2-6" + ], + "provisionalReading": "the option kept here is the pass, as D9's \"Verify coverage, then switch\" and Sc L2-6's \"writes reopen only after verification\" read", + "blocks": "S5", + "advisor": "convex", + "status": "sorted", + "foldedInto": [], + "class": "owner", + "reason": "Reads the doc's words of D9 and Sc L2-6 for one row of the acceptance table, which only the owner rules.", + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-158", + "title": "Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the depl", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.rebuild#8", + "file": "design/specs/application/rebuild.sdp.md", + "line": 68 + } + ], + "families": [ + "application", + "facts" + ], + "cites": [ + "E-40", + "F13" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "convex", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-159", + "title": "Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, ", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.projection-contract#5", + "file": "design/specs/application/projection-contract.sdp.md", + "line": 37 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "F13", + "Law 11" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "convex", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-160", + "title": "The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measu", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.history-projection#3", + "file": "design/specs/application/history-projection.sdp.md", + "line": 36 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "E-47", + "F13" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "convex", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-161", + "title": "Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of ei", + "sources": [ + { + "kind": "specQuestion", + "ref": "spec:application.write-pause#2", + "file": "design/specs/application/write-pause.sdp.md", + "line": 40 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-8", + "D9" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "convex", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null } ], "possiblySame": [ diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 4fa8133..d3e78d3 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -33,6 +33,7 @@ A history projection is the form of a read model whose row depends on history ac - [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) - [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) +- [non-blocking] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) ## Contract @@ -61,3 +62,4 @@ The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:c ## Verification — reviewed - A reviewer confirms that every `HistoryProjection` is rebuilt with `pauseRequired` on its generations, that `applyHistoryProjection` drops baselines before `keyOf` and already-folded events by the row's `sourceVersions` before it calls `project`, that no history projection's `project` answers `null`, and that the L2-6 examples assert the fold against the journal. +- A reviewer confirms that a pure test builds the largest order allocation history row, 256-byte tenant and order IDs, 100 allocations on stock item IDs at the stock item ID bound, every allocation released and 101 source versions, measures it with `getConvexSize` and asserts the measure equals the number `spec:application.history-projection#design.tableOrderAllocationHistory` states and sits under the view's `rowBudgetBytes`, so a change of the stock item ID bound, the line count or the row's fields moves that number on purpose. diff --git a/design/specs/application/projection-contract.sdp.md b/design/specs/application/projection-contract.sdp.md index d609090..0247052 100644 --- a/design/specs/application/projection-contract.sdp.md +++ b/design/specs/application/projection-contract.sdp.md @@ -34,6 +34,7 @@ A projection is the named, versioned, deterministic function that turns a contex - [non-blocking] Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9) - [non-blocking] The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9) - [non-blocking] Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole row from one DTO and a backfill enumerates one source; the option taken here is D8's other default, a parent query over bounded component reads, until a view needs such a row, which then needs a form whose `project` takes the DTO of every matching entry of one command and whose backfill reads the other context in the same mutation, online (E-9, D8, E-45) +- [non-blocking] Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by `spec:application.history-projection#design.tableOrderAllocationHistory`; whether a row's `sourceVersions` may omit `tenantId`, equal to the row's on every entry, and the write rule compare three identity fields, is a choice the owner may take with the pinned conventions (E-9, Law 11, F13) ## Contract diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 893a1d1..f3ddaa2 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -63,6 +63,9 @@ The registry, the progress row, the per-entity marker and the gate document are - [non-blocking] Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9) - [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources; an `AggregateProjection` has no rebuild here and gets one when a view needs it, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) - [non-blocking] Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no tenant and still ends; the option taken here is that `startGeneration` refuses an empty list beside a grant with a message naming `fillTenants`, and `fillTenants`, an operator entry, walks the grants in bounded batches through a progress row of its own and inserts each missing tenant once; a list that holds a tenant whose first grant came after the table and misses an older one is not detected by that refusal, so the operator runs `fillTenants` on such a deployment before its first `startGeneration` (E-49, E-48, E-40, Law 11) +- [non-blocking] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) +- [non-blocking] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) +- [non-blocking] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) ## Workflow diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 098edcc..4cea00d 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -37,6 +37,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its ### Open questions - [non-blocking] Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1) +- [non-blocking] Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9) ## Contract diff --git a/design/specs/facts/f13-transactions-have-limits.sdp.md b/design/specs/facts/f13-transactions-have-limits.sdp.md index b5d32b9..5fef61c 100644 --- a/design/specs/facts/f13-transactions-have-limits.sdp.md +++ b/design/specs/facts/f13-transactions-have-limits.sdp.md @@ -10,7 +10,7 @@ relations: F13 · Status: documented · Doc status: Documented, S9 · Decisions: D10, D19. -The numbers below were read from the limits page on 2026-09-30 and match the plan's section 9. Every batch, sweeper, fan-out and backfill in the design states its own bound below them, because platform limits are ceilings, not batch sizes. The limits page states no limit on nested `runQuery` or `runMutation` calls per function. The page on writing data, read on 2026-10-01, states that "a mutation or query called by another mutation or query share the overall transaction limits" and documents `ctx.meta.getTransactionMetrics()` and the `transactionLimits` option; it does not name components. Probe 4 ran on a native backend on 2026-10-01, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0: the 16 MiB read limit and the 16 MiB write limit are each one budget across a nested call and across a component boundary, and a call stack of nine functions commits where ten fails. +The numbers below were read from the limits page on 2026-09-30 and match the plan's section 9. The limits page was read again on 2026-10-03 for three entries, `limitDocument`, `limitWriteThroughput` and `limitIoOperations`. Every batch, sweeper, fan-out and backfill in the design states its own bound below them, because platform limits are ceilings, not batch sizes. The limits page states no limit on nested `runQuery` or `runMutation` calls per function. The page on writing data, read on 2026-10-01, states that "a mutation or query called by another mutation or query share the overall transaction limits" and documents `ctx.meta.getTransactionMetrics()` and the `transactionLimits` option; it does not name components. Probe 4 ran on a native backend on 2026-10-01, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0: the 16 MiB read limit and the 16 MiB write limit are each one budget across a nested call and across a component boundary, and a call stack of nine functions commits where ten fails. ## Intent @@ -27,11 +27,13 @@ The numbers below were read from the limits page on 2026-09-30 and match the pla The documented numbers bound batches. Probe 4 observes transaction budgets; Probe 7 distinguishes the scheduled-argument page values from the pinned backend's enforced budget. A warning on this release does not remove the documented ceiling from the design. -- limitDocument: 1 MiB per document, 1024 fields, nesting depth 16, 8192 array elements (F13, S9) +- limitDocument: 1 MiB per document and 1024 top-level fields, the system fields included, with nesting depth 16; per value, 1024 fields per object, 8192 elements per array and nesting depth 64 (F13, S9) - limitTransactionRead: 16 MiB read, 32,000 documents scanned and 4,096 index ranges read per transaction (F13, S9) - limitTransactionWrite: 16 MiB written and 16,000 documents written per transaction (F13, S9) +- limitWriteThroughput: the limits page lists a mutation write throughput limit per deployment class, 4 MiB for S16, 8 MiB for S256, 32 MiB for D1024 and 64 MiB for D2048, and states no unit on that row; the native harness paces its writes at 4,194,304 bytes a second; a batch chain that writes near its per-batch bound is measured against it before a bound is raised (F13, S9) - limitFunctionPayload: 16 MiB per function argument set and 16 MiB per return value; a Node action's arguments are capped at 5 MiB (F13, S9) - limitQueryMutationTimeout: 1 second of execution per query or mutation, a limit on the function's own computation and not on the elapsed time of its call tree, because nested calls draw on a separate system-operation budget (F13, S9, F19) +- limitIoOperations: the limits page states 1000 concurrent IO operations per function, a database operation among them, and does not say whether a sequence of awaited operations counts; no probe has reached it (F13, S9) - limitActionTimeout: 30 minutes in the Convex runtime and 10 minutes in the Node runtime (F13, S9) - limitScheduling: the limits page states 1000 scheduled functions per mutation, 4 MiB per scheduled argument set, 16 MiB summed arguments per mutation and 1000000 outstanding functions; the scheduling page states 8 MB total, both read 2026-10-02; the design keeps 4 MiB per call as its ceiling because this release names that limit as a future hard error (F13, S9, Probe 7) - limitSchema: 32 indexes per table, 16 fields per index, 10,000 tables per deployment (F13, S9) diff --git a/tests/pure/order-allocation-history-row-size.test.ts b/tests/pure/order-allocation-history-row-size.test.ts new file mode 100644 index 0000000..1d46e9b --- /dev/null +++ b/tests/pure/order-allocation-history-row-size.test.ts @@ -0,0 +1,119 @@ +// The largest row of the order allocation history measures 55,803 bytes with getConvexSize, within +// the row budget the view declares, the ceiling of 65,536 +// (spec:application.history-projection#design.tableOrderAllocationHistory). The row is the stored +// document: the row conventions every read-model row carries +// (spec:application.projection-contract#design.validatorRowConventions) beside the fields the fold +// writes, with the tenant and order IDs at their bound, the most stock items an order names, each +// ID at the example's bound, and every allocation released. +import { getConvexSize, type ObjectType } from "convex/values"; +import { expect, test } from "vitest"; +import { journal as inventoryJournal } from "../../example/convex/inventory/streams.js"; +import { maxOrderLines } from "../../example/convex/ordering.js"; +import { journal as ordersJournal } from "../../example/convex/orders/streams.js"; +import { maxStockItemIdBytes } from "../../example/convex/receiving.js"; +import { + orderDecider, + stockItemDecider, + type OrderEvent, + type StockItemEvent, +} from "../../example/domain/index.js"; +import { + projectOrderAllocationHistory, + type HistoryEvent, + type OrderAllocationHistoryFields, +} from "../../example/domain/orderAllocationHistory.js"; +import { limitIdLength, utf8Length } from "../../src/command/index.js"; +import type { StreamVersion } from "../../src/kernel/index.js"; +import { + limitRowBudgetBytes, + rowConventions, +} from "../../src/read-model/index.js"; +const tenantId = "t".padEnd(limitIdLength, "x"); +const orderId = "o".padEnd(limitIdLength, "x"); +// One distinct stock item per line of the largest order. +const stockItemIds = Array.from({ length: maxOrderLines }, (_, i) => + String(i).padStart(3, "0").padEnd(maxStockItemIdBytes, "x"), +); +const historyEvent = ( + streamId: string, + recordedAt: number, + { eventType, payload }: OrderEvent | StockItemEvent, +): HistoryEvent => ({ streamId, eventType, recordedAt, payload }); +// The order placed and cancelled, and every stock item allocated to it and released. +const fields: OrderAllocationHistoryFields = projectOrderAllocationHistory( + tenantId, + null, + [ + historyEvent(orderId, 1, { + eventType: "OrderPlaced", + eventSchemaVersion: 1, + payload: { + lines: stockItemIds.map((stockItemId) => ({ + stockItemId, + quantity: 1, + unitPrice: 0, + })), + total: 0, + }, + }), + ...stockItemIds.map((stockItemId) => + historyEvent(stockItemId, 2, { + eventType: "StockAllocated", + eventSchemaVersion: 1, + payload: { orderId, quantity: 1 }, + }), + ), + ...stockItemIds.map((stockItemId) => + historyEvent(stockItemId, 3, { + eventType: "AllocationReleased", + eventSchemaVersion: 1, + payload: { orderId, quantity: 1 }, + }), + ), + historyEvent(orderId, 4, { + eventType: "OrderCancelled", + eventSchemaVersion: 1, + payload: {}, + }), + ], +); +// The highest version folded of the order's stream and of each stock item's. +const sourceVersions: StreamVersion[] = [ + { + tenantId, + contextId: ordersJournal.contextId, + streamType: orderDecider.streamType, + streamId: orderId, + version: 2, + }, + ...stockItemIds.map((streamId) => ({ + tenantId, + contextId: inventoryJournal.contextId, + streamType: stockItemDecider.streamType, + streamId, + version: 3, + })), +]; +const row: ObjectType & OrderAllocationHistoryFields = { + ...fields, + tenantId, + generation: 1, + key: orderId, + projectionVersion: 1, + sourceVersions, +}; + +test("pure: the largest order allocation history row measures 55,803 bytes, within the view's row budget of 65,536", () => { + expect([tenantId, orderId].map(utf8Length)).toStrictEqual([256, 256]); + expect(new Set(stockItemIds.map(utf8Length))).toStrictEqual(new Set([64])); + expect(row.allocations).toHaveLength(100); + expect( + row.allocations.every(({ releasedAt }) => releasedAt !== undefined), + ).toBe(true); + expect([row.placedAt, row.cancelledAt]).toStrictEqual([1, 4]); + expect(row.sourceVersions).toHaveLength(101); + const size = getConvexSize(row); + expect(size).toBe(55803); + expect(limitRowBudgetBytes).toBe(65536); + expect(size).toBeLessThanOrEqual(limitRowBudgetBytes); +}); From 15fc5746735af092a3d951c9d951173ec514b3c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:26:06 +0200 Subject: [PATCH 10/60] design: the close of the unit design-in-the-graph STATE.md: the unit in "Where the work stands", the measured lines, the register's totals after OD-156 to OD-161, tactical decisions 53 to 57 (the mention policy, one maturity per Spec, the pinned module, entry addresses, the pass), three items for the owner (what ready states, the aggregate's reach into built Specs, the design words this unit used) and lead 44. check.py: OK. Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 64 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 45 insertions(+), 19 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index dc4e86b..a7cb78e 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -1,27 +1,28 @@ # State of the design corpus -Written on 2026-10-03 at the close of round 3 and of `feature/round-2`, which followed sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. +Written on 2026-10-03 at the close of the unit `design-in-the-graph`, a pull request stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. ## Measured at close ``` -237 specs · 5 packs · 142 anchors → 384 nodes · 1251 edges (0 errors, 0 warnings) -validate: 0 errors · 0 warnings; readiness divergence: [] -open questions: 69 Specs, 153 questions, 9 blocking; extensions registered: 54 -stated readiness: {'defined': 227, 'idea': 1, 'scoped': 9} +239 specs · 6 packs · 142 anchors → 387 nodes · 1348 edges (0 errors, 0 warnings) +validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] +entry addresses outside the Specs: 84 +open questions: 71 Specs, 160 questions, 10 blocking; extensions registered: 54 +stated readiness: {'defined': 228, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 90b4b34a0c53c54a -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-5993da7.tgz +corpus digest: 7e0bc2107a16b129 +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz ``` -`python3 design/tools/decisions.py`, after this unit's two register commits, `19738b4` and `c1bdf80`: +`python3 design/tools/decisions.py`, after this unit's register commit, which adds OD-156 to OD-161 from the Convex pass: ``` -total: 155 -status: unsorted=0, sorted=80, waiting=21, decided=39, folded=15 -class: tactical=3, delegated=86, owner=51, null=15 -advisor: convex=37, domain=45, operator=34, product=39 +total: 161 +status: unsorted=5, sorted=81, waiting=21, decided=39, folded=15 +class: tactical=3, delegated=86, owner=52, null=20 +advisor: convex=43, domain=45, operator=34, product=39 ``` **Round 2, the tooling unit, round 3's unit 3b, sitting two and the close of round 3 are on `feature/round-2`, not on `main`.** `main` is still at `592f1dc`, the close of round 1. The close of round 3 did the rest of the mini roadmap (4f, the hosted tier, 4c, 4a and 4d) and ends the branch: `feature/round-2` goes to `main` as one pull request, which the main thread opens at this close for the owner's review and merge. The owner's words at the opening of the close: "forks have been resolved and mini roadmap unlocked. please complete the work to wrap up the feature branch and PR. use Opus, GPT 6 Astra and 6.1 Sol and orchestrate from the main thread". The main thread was Opus 5.5; no Fable agent and no advisor ran. Its head is this close's commit, on top of the fold-in's follow-up `651fcc3`. Tactical decision 42 holds the branch and its one pull request. @@ -34,6 +35,14 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` ## Where the work stands +**The unit `design-in-the-graph`**, on 2026-10-03, on `unit/design-in-the-graph` from `77acdf2`, a pull request stacked on `feature/round-2`. The owner, after the Protocol's pull request 27 merged: "My primary motivation was to unlock management of specs at different levels of maturity and ability to capture and present designs for upcoming implementations as SDP first-class citizens and enable iterative design with iterations focusing on different perspectives of the system, before committing to implementation.", then "please investigate opportunities to better use SDP sepecs and designs (stubs) and propose a stacked PR for platform to showcase that." The main thread was Opus 5.5 at xhigh effort. It showed, on the history view as the subject: + +- The adoption. The pin moved to `5e29c03`, the merge of pull request 27; the graph kept its shape and `npm test` passed unchanged. The 83 prose-mention warnings were read pair by pair: 70 were dependencies, now 56 declared relations, 12 stay prose and are listed with their reason in `design/tools/prose-mentions.json`, one moved with its text. Two older `dependsOn` edges of the event envelope ran backwards and closed nine Specs into cycles with the new edges; they are reversed and the corpus has no cycle. `check.py` accepts a mention warning only for a listed pair and resolves every entry address in the code, the tests and the records. +- One maturity per Spec. The projection contract is three Specs: `spec:application.projection-contract` (per-entity form and shared conventions, implemented), `spec:application.history-projection` (`defined`, floor `ready`, nothing implements it) and `spec:application.aggregate-projection` (`scoped`, deferred with OD-075 as its trigger). `pack:history-view` gathers the fifteen Specs the history view rests on; its Design Review page shows each member's rung, floor and bindings. +- The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations from recipe 24, with the declarations of other Specs they use, into `generated/pinned/history-view.ts` on every `sdp:build`; `tests/types/pinned.test-d.ts` binds 53 pairs where the code equals the pin, asserts 19 pairs where the design leads the code, and lists 4 that differ only in the ctx they take. Adding a literal to a pinned `ApplyMode` fails `npm run test:types` at its entry address. Thirteen names the design uses and no Spec pins stand in the emitter's preamble as one list. +- Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes: one owner for `WritableGeneration`, the code's spelling of `ScopeKey` and of `pageInGeneration`'s prefix, `const` on two validators, and `HistoryEvent` and `OrderAllocation` pinned in the history projection. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min); the rulings added six open questions (OD-156 to OD-161, OD-157 the owner's), three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. +- What it found beside: the Design Review sorts a Pack's members by ID, not in authored order; `spec:application.rebuild` and `spec:application.write-pause` show no implementation binding though code realizes both; three implemented Specs now depend on the deferred aggregate Spec, so their `ready` floor waits on it. `docs/sdp-feedback.md` has the section for the Protocol's maintainers. + Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. On `feature/round-2` follow round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. The close of round 3, `application-platform-round-3-close`, on 2026-10-03 from about 09:15 to 11:15, on the ThinkPad, on `feature/round-2` from `d2a8d1b`. The cut was the list "Round 3, as it now stands" of `ROADMAP.md`, whose items 1 and 3 (3b, sitting two) were done: the hosted tier, 4a, 4c, 4d and lane 4f, which sitting two created, then an integration, a review, one fold-in, one read of it and this close. Five lanes ran at once, each in a worktree from `d2a8d1b`: language (4f, an Opus agent), hosted (an Opus lead), history (4c on paper, an Opus agent), audit (4a, an Opus designer, then an Opus builder with astra writing the proof apart) and sweep (4d, sol). `rulings-1-close.md` and `foldin-list.md` in the unit folder hold every ruling. What each showed, at the tier named: @@ -217,11 +226,11 @@ Thirty-eight more findings are `partially-fixed`, each waiting for its slice. Re ## Next unit -`ROADMAP.md` is the order, ruled as cut by decision 36. Rounds 1 and 2 are done, and so is round 3's mini roadmap but for the hosted tier's first runs. The next unit is the owner's: the review and merge of the pull request of `feature/round-2` into `main`, which the main thread opens at this close. After the merge: +`ROADMAP.md` is the order, ruled as cut by decision 36. Rounds 1 and 2 are done, and so is round 3's mini roadmap but for the hosted tier's first runs. The next unit is the owner's: the review and merge of the pull request of `feature/round-2` into `main`, and of the pull request of `unit/design-in-the-graph` stacked on it, which the main thread opens at this close; the stacked one merges into `feature/round-2` first or follows it into `main`. After the merge: - The hosted tier's first runs, the owner's steps 10 and 11 of `design-hosted-tier.md`: first from the owner's machine with `npm run test:hosted`, then the workflow on `main`, which the `hosted` environment admits, since GitHub runs a schedule only from the default branch. They settle the design's eight "built when" items, OD-036's count, and Leads 39 and 43's assumptions about a hosted deployment. - The dashboard check of `clean-capybara-16`: a production deployment, reference `production`, never deployed, with no tables and no keys, made by the project's default. The design wants `dev/hosted` only, so the owner deletes it if nothing uses it. Deletion is permanent and an agent does not do it. -- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b, 5c and 5d, discussed with the owner before they are prepared (decision 42). +- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b, 5c and 5d, discussed with the owner before they are prepared (decision 42). 5d's design is `pack:history-view`; its domain and operator passes, one advisor launch each with `design/advisors/task-pass.md`, come before its build. The setup is done: the project `libar-platform-hosted` and its development deployment `dev/hosted` (`wandering-mule-403`, `HOSTED_DEPLOYMENT_URL` in the regional form the CLI printed), the GitHub environment `hosted` with its `main` branch policy and its three variables (`HOSTED_PLAN` is `Professional`, `HOSTED_DEPLOY_KEY_NAME` is `hosted-ci-scoped`), and the key `hosted-ci-scoped` with exactly the fourteen actions as the secret `HOSTED_DEPLOY_KEY`, which passed the key-only check (Owner queue); the first key, with 25 actions, is revoked. The local backend stays primary, by the owner's words of 2026-10-03: "Local backend should be primary, IMO. But happy to take the hosted as default if easier for start." @@ -313,22 +322,31 @@ The owner accepted the first nine on the session's recommendation. The session t 51. A paper sitting renames nothing in the code. The words sitting two ruled leave the refusal field, the tier names in the examples' opening lines and the harness parser, and the harness's backup archive names disagreeing with the Specs on purpose, as roadmap lane 4f, so that the branch the owner reviews stays green and small. 52. How the close of round 3 ran, at the owner's word in 42. The main thread was Opus 5.5 and no Fable agent ran: Opus agents designed on paper where a Fable designer did before (4c, and 4a's Spec text), and the main thread ruled every sentence they wrote. 4a ran proof apart from fix (decision 29): an Opus builder and astra wrote from the ruled text alone, and the integrator merged them. The integration ran in four stages as the lanes finished (decision 49). The review over the branch since `840b32c` was four line reads by sol and one behavior review by astra at xhigh, with an Opus agent reading the GPT-written code and sol the Claude-written code (decision 30). One fold-in and one read of it followed, then the stop (decision 19). +53. A prose mention of a Spec is a declared relation or a listed reason. The Protocol's validator warns once per pair with no relation; `check.py` accepts a warning only for a pair in `design/tools/prose-mentions.json` with its one-line reason, and refuses a listed pair that no longer warns. A relation is declared when the mentioning Spec could not be built or read correctly without the other; `constrainedBy` stays for laws, facts and constraints and a component Spec of kind `rule` is depended on with `dependsOn` (`PLAN.md` 3.3); the corpus keeps no `dependsOn` cycle. +54. One maturity per Spec (`PLAN.md` 6.7). The projection contract is split into the per-entity, history and aggregate projections, the moved text verbatim. The new IDs follow the code's names, `HistoryProjection` and `AggregateProjection`, while the language rows "history view" and "history projection" wait for the owner; a ruling of other words renames them. +55. The pinned module is this corpus's recipe for the Protocol's declarations module: `scripts/pinned.mjs` over one Pack, run by `sdp:build`, and `tests/types/pinned.test-d.ts` with three lists named by entry address, bound, ahead and not compared. A pin that leads its code is listed ahead with what closes it, and a duplicate pin fails the compile. The scope grows a Pack at a time. +56. A Design entry is cited by its entry address, `spec:#design.`, in code comments, test names, the register, the ledger and the advisors' memos; `check.py` resolves each one outside the Specs. A line pointer into a Spec is replaced when its file is next touched. +57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. + ## Owner queue Every open decision is a row of `design/decisions/register.json`, and `python3 design/tools/decisions.py` filters it: `--owner` lists what waits for the owner, forks first, `--owner --before S4` what the owner must decide before S4, `--decided --by advisor --since ` what agents decided. The register at the close: ``` -total: 155 -status: unsorted=0, sorted=80, waiting=21, decided=39, folded=15 -class: tactical=3, delegated=86, owner=51, null=15 -advisor: convex=37, domain=45, operator=34, product=39 +total: 161 +status: unsorted=5, sorted=81, waiting=21, decided=39, folded=15 +class: tactical=3, delegated=86, owner=52, null=20 +advisor: convex=43, domain=45, operator=34, product=39 ``` The key check is done ("Next unit"). For the record, the procedure that worked with CLI 1.46.0, which refuses a directory with no `package.json`: in a fresh temporary directory, write `{"name":"libar-hosted-key-check","private":true,"dependencies":{"convex":"1.46.0"}}` as `package.json`, install nothing, paste the key at a silent `read -rs CONVEX_DEPLOY_KEY`, export it, run the repository's `node_modules/.bin/convex env list --names-only` under a fresh temporary `HOME`, then unset the variable. An empty list with no error means the key authenticates. What waits for the owner at the close of round 3: -- The pull request of `feature/round-2` into `main`, which the main thread opens at this close: the owner reviews and merges it. +- The pull request of `feature/round-2` into `main`, which the main thread opens at this close: the owner reviews and merges it. And the pull request of `unit/design-in-the-graph`, stacked on it. +- What `ready` states. The Protocol reads `ready` as approved for building: its build backlog (recipe 1) is `ready` and not implemented, and its drift alarm (recipe 2) is implemented and not `ready`. This corpus states `ready` after a Spec's slice passes (4e). With designs ahead of their code first-class, the owner chooses: keep the convention, and read "designed, not built" as `defined` with no implementation binding, as the history view's Pack page shows; or state `ready` on a design the owner approves for its build, such as the history projection, whose floor reaches `ready`. No Spec states `ready` until the owner rules. +- The aggregate's reach into built Specs. `spec:application.generation-registry`, `spec:command.command-declaration` and `spec:command.command-pipeline` pin `ReadModelBinding`, the markers and step 9 over all three projection forms, so they depend on the deferred aggregate Spec and their `ready` floor waits on it, which 4e meets for the command family. Either narrow those pins to the forms the code admits and keep the aggregate's in its own Spec until it is built (the platform review's "narrow an unsupported generic promise"), or keep the promise and let the floor wait. +- Words for the design language that this unit used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack; and from the Convex pass, batch, source, consistent cut, history view. - The doc's two hunks, from OD-008 and OD-044, in `patch-doc-sitting-two.diff` of sitting two's folder: `git apply ~/dev-libar-supporting-context/calibration/application-platform-sitting-two/patch-doc-sitting-two.diff` from the repository root, then a commit. Only the owner edits the doc. - The hosted tier's first run, from the owner's machine and then by the workflow on `main`, and the dashboard check of `clean-capybara-16` ("Next unit"). OD-036, Probe 3's quota half, is `waiting` for that run. - The untracked `tmp-convex-findings.txt` at the repository root, the owner's notes of the hosted key rotation, makes every local run record "not clean" until the owner moves it. @@ -469,6 +487,14 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - OD-093's provisional reading quotes the old E-9 text, and the register tool does not patch that field. - The interrupt accepts a `retired` or `aborted` generation, because its row does not show whether a purge's batches run; a fence bump with nothing running is harmless, and a purge marker on the row would tell the two apart if an interrupt of a purge must ever be refused. +44. From the unit `design-in-the-graph`. Each is a gap a later unit takes when it touches its subject. + - `spec:application.rebuild` and `spec:application.write-pause` carry no implementation binding, though `src/read-model/rebuild.ts` and `src/gate/` realize them: no `codeAnchor` satisfies either, so the Pack's page and the drift alarm do not see them. + - Four ahead pairs of `tests/types/pinned.test-d.ts` also differ in the ctx they take (`typeCommandDeclaration`, `fnRunPipeline`, `fnLoad`, `fnResumeChain`), and four pairs are not compared for that alone: the pinned `MutationCtx` is the emitter's generic stand-in, so a pin compared with a composition's ctx never matches. Either the notation pins a ctx generic over the data model, or the emitter compares with the ctx parameter erased. + - Thirteen names the design uses and no Spec pins stand in the emitter's preamble, each pointing at the code's type: `ReadModelDataModel`, `RowDataModel`, `GateDataModel`, `ListArgs`, `BatchRef`, `FillBatchRef`, `AppendResult`, `SubjectRef`, `DiagnosticSink`, `FailedCall`, `outcomeKindValidator`, `WriteBaselineArgs`, `WriteBaselineResult`. The Spec that uses one may pin it when next touched. + - The emitter takes no Convex registration (`export const name = mutation({ ... })`, 51 `fn*` entries in the corpus), no `index*` fragment and no `limit*` formula; the module covers shapes, not the registered surface. + - The Convex pass left questions to two lenses: the operator's, whether an entry computes the pause length from the tenant list and the stream counts before `startGeneration` and who takes the batch time; the domain's, what `verified` asserts for a history view nothing could change, if OD-157 keeps the pass. + - `python3 -m unittest design/tools/test_decisions.py` errors in its test of the real register, already at `77acdf2`: OD-006's source `spec:application.first-experiment#7` no longer exists, and the test expects 144 open questions. CI does not run it. + The reports behind leads 1 to 3 and 6 are outside the repository, because they quote a private repository. The project notes file named in `AGENTS.md` lists them, with the reports, briefs and rulings of S0. ## Inputs From 5b226be2e710b6ebddcd06a9f85a3f47ab9d4fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:31:51 +0200 Subject: [PATCH 11/60] design: check.py reads an entry address whole, and the row test says what it measures From the review of the unit's code (gpt-6.1-sol, job-musd8wu4-575a7bee): - check.py matched an address by a pattern that stopped at the first character outside a key, so spec:#design.typeApplyMode-bogus resolved as its valid prefix, and it required two segments, so spec:missing#design.x was never checked. It now takes a token from spec: to a separator, drops trailing punctuation and checks it whole against the address grammar, as the Protocol's mention validator does; a # that opens neither design nor ui is the register's reference to an open question and is not an address. - The row-size test measures the row as applyProjection does, without the system fields the stored document adds; its comment said the stored document. Co-Authored-By: Claude Opus 5.5 --- design/tools/check.py | 23 ++++++++++++------- .../order-allocation-history-row-size.test.ts | 5 ++-- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/design/tools/check.py b/design/tools/check.py index 9f81216..6970457 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -41,8 +41,11 @@ ) PROSE_MENTIONS = os.path.join(DESIGN, "tools", "prose-mentions.json") # An entry address, spec:#design. or #ui., as the Protocol's checked-mentions record rules it. -ADDRESS = re.compile(r"spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)+#(?:design|ui)\.[A-Za-z0-9_]*") -ADDRESS_KEY = re.compile(r"^[a-z][A-Za-z0-9]*$") +# A token runs from `spec:` to a separator, loses trailing punctuation, and is checked whole, so a malformed +# key is refused rather than read as its valid prefix. A `#` that opens neither section is the register's +# own reference to an open question by number, which is not an address. +MENTION_TOKEN = re.compile(r"spec:[^\s`'\"()\[\]{}<>|,;]+") +ADDRESS = re.compile(r"^(spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)*)#(design|ui)\.([a-z][A-Za-z0-9]*)$") # Where an address outside the Specs lives: the code, the tests, the register, the ledger and the work documents. # The Protocol checks an address inside a Spec's prose; nothing checks these unless this script does. ADDRESS_SOURCES = ("src", "fixture", "example", "harness", "tests", "scripts") @@ -114,14 +117,18 @@ def run(args): files += [os.path.join(DESIGN, name) for name in ADDRESS_RECORDS] for path in sorted(files): for number, line in enumerate(open(path, encoding="utf-8"), 1): - for token in ADDRESS.findall(line): + for token in MENTION_TOKEN.findall(line): + token = token.rstrip(".:!?") + if not re.search(r"#(design|ui)\b", token): + continue addresses += 1 - spec_id, entry = token.split("#", 1) - section, key = entry.split(".", 1) where = f"{os.path.relpath(path, ROOT)}:{number}" - if not ADDRESS_KEY.match(key) or key == "description": - fail(f"entry address {token} at {where} has a key outside the address grammar") - elif spec_id not in facts["keys"]: + match = ADDRESS.match(token) + if not match or match.group(3) == "description": + fail(f"entry address {token} at {where} is outside the address grammar") + continue + spec_id, section, key = match.groups() + if spec_id not in facts["keys"]: fail(f"entry address {token} at {where} names no Spec") elif key not in facts["keys"][spec_id][section]: fail(f"entry address {token} at {where}: {spec_id} has no {section} entry {key}") diff --git a/tests/pure/order-allocation-history-row-size.test.ts b/tests/pure/order-allocation-history-row-size.test.ts index 1d46e9b..3ad6fe3 100644 --- a/tests/pure/order-allocation-history-row-size.test.ts +++ b/tests/pure/order-allocation-history-row-size.test.ts @@ -1,7 +1,8 @@ // The largest row of the order allocation history measures 55,803 bytes with getConvexSize, within // the row budget the view declares, the ceiling of 65,536 -// (spec:application.history-projection#design.tableOrderAllocationHistory). The row is the stored -// document: the row conventions every read-model row carries +// (spec:application.history-projection#design.tableOrderAllocationHistory). The row is what +// applyProjection measures before a write, without the system fields _id and _creationTime, which +// the stored document adds: the row conventions every read-model row carries // (spec:application.projection-contract#design.validatorRowConventions) beside the fields the fold // writes, with the tenant and order IDs at their bound, the most stock items an order names, each // ID at the example's bound, and every allocation released. From b81982ab42b32d54b2c413d6a1192322a2ba82c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:37:06 +0200 Subject: [PATCH 12/60] build: the pinned module refuses a duplicate pin, and its ahead and table pairs compare what they claim Co-Authored-By: Claude Opus 5.5 --- scripts/pinned.mjs | 65 +++++++++--------- tests/types/pinned.test-d.ts | 128 ++++++++++++++++++++--------------- 2 files changed, 105 insertions(+), 88 deletions(-) diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index 36b1ea5..8751765 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -9,9 +9,10 @@ // `interface ` and `validator*` opening with `const ` are exported as written; `fn*` that is a call // signature `name<...>(...): R` becomes `export declare function`, where a default value makes its // parameter optional; `table*` of the form `name: defineTable(...)` is a member of -// `export const tables`. Every other entry is skipped and counted by its prefix on stderr. Each pin -// of another Spec that a declaration uses is pulled in, marked. A name pinned twice is emitted twice, -// so the compiler refuses it, and stderr names it. +// `export const tables`, and each `index*` of the form `.index(...)` is chained onto the table +// entry its Spec wrote last before it. Every other entry is skipped and counted by its prefix on +// stderr. Each pin of another Spec that a declaration uses is pulled in, marked. A name pinned in two +// entries, in any form, is refused, as is a preamble name a Spec pins. // Exit 0: written. 2: it cannot emit. import { execFileSync } from "node:child_process"; import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; @@ -145,7 +146,9 @@ function declarationOf(row) { const signature = prefix === "fn" ? callSignature(span) : null; if (signature !== null) return { ...base, kind: "type", ...signature }; if (prefix === "table" && /^[\w$]+:\s*defineTable\(/.test(span)) - return { ...base, kind: "table", name: "", text: span }; + return { ...base, kind: "table", name: "", text: span, indexes: [] }; + if (prefix === "index" && /^\.index\(/.test(span)) + return { ...base, kind: "index", name: "", text: span }; return { ...base, kind: null }; } @@ -194,34 +197,38 @@ const scope = query( if (scope === null) cannot(`the graph has no ${options.pack}`); const all = query(recipe24()).rows.map(declarationOf); +let table; +for (const row of all) + if (row.kind === "table") table = row; + else if (row.kind === "index" && table?.spec === row.spec) + table.indexes.push(row); + else if (row.kind === "index") row.kind = null; const pinnedBy = Map.groupBy( all.filter((row) => row.kind === "type" || row.kind === "value"), (row) => row.name, ); +const addresses = (pins) => pins.map((pin) => pin.address).join(" and "); +for (const [twice, pins] of pinnedBy) + if (pins.length > 1) + cannot(`${twice} is pinned in two entries, ${addresses(pins)}`); for (const provided of ["MutationCtx", "QueryCtx", "Id", ...Object.keys(gaps)]) if (pinnedBy.has(provided)) cannot( - `the preamble declares ${provided}, which ${pinnedBy - .get(provided) - .map((pin) => pin.address) - .join(" and ")} pins: take it out of the preamble`, + `the preamble declares ${provided}, which ${addresses(pinnedBy.get(provided))} pins: take it out of the preamble`, ); -// The scope's own entries, then every other pin of a name the module declares or uses. +// The scope's own entries, then the pin of each name they use that another Spec pins. const own = all.filter((row) => scope.includes(row.spec)); -const emitted = own.filter((row) => row.kind !== null); +const emitted = own.filter((row) => row.kind !== null && row.kind !== "index"); const gapUses = new Map(); -const pull = (name, why) => { - for (const pin of pinnedBy.get(name) ?? []) - if (!emitted.includes(pin)) emitted.push(Object.assign(pin, { why })); -}; for (let at = 0; at < emitted.length; at++) { - const { address, name: declares } = emitted[at]; - pull(declares, `${address} pins ${declares} too`); + const { address } = emitted[at]; for (const used of namesUsedBy(emitted[at])) { if (used in gaps) gapUses.set(used, [...(gapUses.get(used) ?? []), address]); - pull(used, `${address} uses ${used}`); + const [pin] = pinnedBy.get(used) ?? []; + if (pin !== undefined && !emitted.includes(pin)) + emitted.push(Object.assign(pin, { why: `${address} uses ${used}` })); } } @@ -239,11 +246,11 @@ emitted.filter((row) => row.kind === "value").forEach((row) => place(row)); const comment = (row) => `// ${row.address}${row.why === undefined ? "" : ` (pulled in: ${row.why})`}`; -const block = (rows, indent = "") => - rows.flatMap((row) => [ - `${indent}${comment(row)}`, - `${indent}${row.text}${indent === "" ? "" : ","}`, - ]); +const block = (rows) => rows.flatMap((row) => [comment(row), row.text]); +const member = (table) => + [...block([table]), ...block(table.indexes).map((line) => ` ${line}`)].map( + (line, at, lines) => ` ${line}${at === lines.length - 1 ? "," : ""}`, + ); const lines = [ `// The pinned declarations of ${options.pack}, emitted by scripts/pinned.mjs from recipe 24 of the`, "// pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each declaration", @@ -264,10 +271,7 @@ const lines = [ ...block(emitted.filter((row) => row.kind === "type")), ...block(values), "export const tables = {", - ...block( - emitted.filter((row) => row.kind === "table"), - " ", - ), + ...emitted.filter((row) => row.kind === "table").flatMap(member), "};", ]; mkdirSync(join(root, "generated/pinned"), { recursive: true }); @@ -281,13 +285,8 @@ const counted = (rows) => .sort(([left], [right]) => left.localeCompare(right)) .map(([prefix, group]) => `${prefix} ${group.length}`) .join(", "); -const ownEmitted = emitted.filter((row) => row.why === undefined); +const ownEmitted = own.filter((row) => row.kind !== null); const skipped = own.filter((row) => row.kind === null); console.error( - `pinned: generated/pinned/${name}.ts · ${scope.length} Specs · emitted ${ownEmitted.length} (${counted(ownEmitted)}) and ${emitted.length - ownEmitted.length} pulled in · skipped ${skipped.length} (${counted(skipped)}) · ${gapUses.size} names pinned by no Spec`, + `pinned: generated/pinned/${name}.ts · ${scope.length} Specs · emitted ${ownEmitted.length} (${counted(ownEmitted)}) and ${emitted.length - emitted.filter((row) => row.why === undefined).length} pulled in · skipped ${skipped.length} (${counted(skipped)}) · ${gapUses.size} names pinned by no Spec`, ); -for (const [twice, pins] of pinnedBy) - if (pins.length > 1 && emitted.includes(pins[0])) - console.error( - `pinned: ${twice} is pinned twice, at ${pins.map((pin) => pin.address).join(" and ")}`, - ); diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index a0706a6..47d05ef 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -1,8 +1,10 @@ // pack:history-view's pinned declarations against the code, through the module scripts/pinned.mjs // emits from recipe 24. Each test is named by the Design entry it binds. Bound: the code equals the -// pin, so a changed pin fails the typecheck. Ahead: the design leads the code, so the day the code -// catches up the assertion fails and the pair moves to bound. Not compared: the pin and the code -// differ only in the ctx they take, and nothing is asserted. +// pin, so a changed pin fails the typecheck; a table's pair holds its indexes too. Ahead: the design +// leads the code, so the day the code catches up the assertion fails and the pair moves to bound; a +// function's ctx is erased first where the pin's and the code's differ. Not compared: the pair +// differs only in the ctx, or carries a ctx inside a type no erasing reaches; nothing is asserted. +import type { TableDefinition } from "convex/server"; import { describe, expectTypeOf, test } from "vitest"; import type * as pinned from "../../generated/pinned/history-view.js"; import type * as orderSummary from "../../example/convex/orderSummary.js"; @@ -22,6 +24,20 @@ type State = { status: "open" | "closed" }; type Command = { kind: "close" }; type Event = { eventType: "closed"; eventSchemaVersion: 1; payload: null }; type Document = { _id: string; _creationTime: number; generation: number }; +// A table's document and its indexes, names and fields, which comparing the table type does not reach. +type TableShape = + Table extends TableDefinition< + infer Document, + infer Indexes, + infer Search, + infer Vector + > + ? { document: Document; indexes: Indexes; search: Search; vector: Vector } + : never; +// A function without its first parameter, the ctx, for a pair whose ctx notation differs. +type WithoutCtx = F extends (ctx: never, ...rest: infer Rest) => infer Return + ? (...rest: Rest) => Return + : never; describe("bound: the code equals the pin", () => { test("spec:application.generation-registry#design.typeRegistryReader", () => { @@ -52,14 +68,14 @@ describe("bound: the code equals the pin", () => { }); test("spec:application.generation-registry#design.tableGenerations", () => { expectTypeOf< - (typeof readModel.readModelTables)["generations"]["validator"] - >().toEqualTypeOf<(typeof pinned.tables)["generations"]["validator"]>(); + TableShape<(typeof readModel.readModelTables)["generations"]> + >().toEqualTypeOf>(); }); test("spec:application.generation-registry#design.tableProjectionMarkers", () => { expectTypeOf< - (typeof readModel.readModelTables)["projectionMarkers"]["validator"] + TableShape<(typeof readModel.readModelTables)["projectionMarkers"]> >().toEqualTypeOf< - (typeof pinned.tables)["projectionMarkers"]["validator"] + TableShape<(typeof pinned.tables)["projectionMarkers"]> >(); }); test("spec:application.history-projection#design.typeHistoryEvent", () => { @@ -127,9 +143,9 @@ describe("bound: the code equals the pin", () => { >(); }); test("spec:application.projection-contract#design.tableOrderSummaries", () => { - expectTypeOf<(typeof schema)["tables"]["orderSummaries"]>().toEqualTypeOf< - (typeof pinned.tables)["orderSummaries"] - >(); + expectTypeOf< + TableShape<(typeof schema)["tables"]["orderSummaries"]> + >().toEqualTypeOf>(); }); test("spec:application.read-models#design.fnPageInGeneration", () => { expectTypeOf().toEqualTypeOf< @@ -148,8 +164,8 @@ describe("bound: the code equals the pin", () => { }); test("spec:application.rebuild#design.tableTenantFill", () => { expectTypeOf< - (typeof readModel.readModelTables)["tenantFill"] - >().toEqualTypeOf<(typeof pinned.tables)["tenantFill"]>(); + TableShape<(typeof readModel.readModelTables)["tenantFill"]> + >().toEqualTypeOf>(); }); test("spec:application.write-pause#design.typeScopeKey", () => { expectTypeOf().toEqualTypeOf(); @@ -175,9 +191,9 @@ describe("bound: the code equals the pin", () => { >(); }); test("spec:application.write-pause#design.tableMaintenanceGates", () => { - expectTypeOf<(typeof gate.gateTables)["maintenanceGates"]>().toEqualTypeOf< - (typeof pinned.tables)["maintenanceGates"] - >(); + expectTypeOf< + TableShape<(typeof gate.gateTables)["maintenanceGates"]> + >().toEqualTypeOf>(); }); test("spec:command.command-declaration#design.typeSourceRef", () => { expectTypeOf().toEqualTypeOf(); @@ -272,9 +288,9 @@ describe("ahead: the design leads the code", () => { }); test("spec:application.generation-registry#design.tableGenerationProgress: its cursor, through validatorBatchCursor", () => { expectTypeOf< - (typeof readModel.readModelTables)["generationProgress"]["validator"] + TableShape<(typeof readModel.readModelTables)["generationProgress"]> >().not.toEqualTypeOf< - (typeof pinned.tables)["generationProgress"]["validator"] + TableShape<(typeof pinned.tables)["generationProgress"]> >(); }); test("spec:application.rebuild#design.typeRebuildConfig: the history view's build adds history targets", () => { @@ -285,9 +301,9 @@ describe("ahead: the design leads the code", () => { typeof pinned.batchSizeFor >(); }); - test("spec:application.rebuild#design.fnResumeChain: through typeRebuildConfig, and its ctx", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.resumeChain + test("spec:application.rebuild#design.fnResumeChain: through typeRebuildConfig, its ctx erased", () => { + expectTypeOf>().not.toEqualTypeOf< + WithoutCtx >(); }); test("spec:command.command-declaration#design.typeReadModelBinding: the history view's build binds history and aggregate projections", () => { @@ -301,31 +317,6 @@ describe("ahead: the design leads the code", () => { test("spec:command.command-declaration#design.typeRetention: a receipt's tombstone expiry", () => { expectTypeOf().not.toEqualTypeOf(); }); - test("spec:command.command-declaration#design.typeCommandDeclaration: through typeReadModelBinding and typeRetention, the irreversible flag a tombstone serves, and its executor's ctx", () => { - expectTypeOf>().not.toEqualTypeOf< - pinned.CommandDeclaration - >(); - }); - test("spec:command.command-declaration#design.fnPublicCommand: through typeCommandDeclaration", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.publicCommand - >(); - }); - test("spec:command.command-declaration#design.fnInternalCommand: through typeCommandDeclaration", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.internalCommand - >(); - }); - test("spec:command.command-pipeline#design.fnRunPipeline: through typeCommandDeclaration, and its ctx", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.runPipeline - >(); - }); - test("spec:command.command-pipeline#design.fnRelayFailure: through typeCommandDeclaration", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.relayFailure - >(); - }); test("spec:context.journal#design.typeStreamRegistration: baselines and migration, and the deferred streamParts for the derived mapping", () => { expectTypeOf< context.StreamRegistration @@ -338,14 +329,18 @@ describe("ahead: the design leads the code", () => { pinned.LoadedStream >(); }); - test("spec:context.journal#design.fnLoad: through typeStreamRegistration and typeLoadedStream, and its ctx", () => { - expectTypeOf().not.toEqualTypeOf(); - }); - test("spec:context.journal#design.fnAppend: through typeLoadedStream, and its ctx", () => { - expectTypeOf().not.toEqualTypeOf< - typeof pinned.append + test("spec:context.journal#design.fnLoad: through typeStreamRegistration and typeLoadedStream, its ctx erased", () => { + expectTypeOf< + WithoutCtx> + >().not.toEqualTypeOf< + WithoutCtx> >(); }); + test("spec:context.journal#design.fnAppend: through typeLoadedStream, its ctx erased", () => { + expectTypeOf< + WithoutCtx> + >().not.toEqualTypeOf>>(); + }); test("spec:context.queries#design.fnDefineGet: through typeStreamRegistration", () => { expectTypeOf().not.toEqualTypeOf< typeof pinned.defineGet @@ -359,8 +354,31 @@ describe("ahead: the design leads the code", () => { }); describe("not compared: the pin takes Convex's generic MutationCtx, the code a composition's own ctx", () => { - test.skip("spec:command.command-declaration#design.typeExecutor"); - test.skip("spec:command.command-declaration#design.typeAdmissionPolicy"); - test.skip("spec:application.write-pause#design.fnCloseScope"); - test.skip("spec:application.write-pause#design.fnResumeScope"); + test.skip( + "spec:command.command-declaration#design.typeExecutor: differs only in ctx", + ); + test.skip( + "spec:command.command-declaration#design.typeAdmissionPolicy: differs only in ctx", + ); + test.skip( + "spec:application.write-pause#design.fnCloseScope: differs only in ctx", + ); + test.skip( + "spec:application.write-pause#design.fnResumeScope: differs only in ctx", + ); + test.skip( + "spec:command.command-declaration#design.typeCommandDeclaration: leads the code and differs in ctx, in its executor and admission", + ); + test.skip( + "spec:command.command-declaration#design.fnPublicCommand: leads the code and differs in ctx, through typeCommandDeclaration", + ); + test.skip( + "spec:command.command-declaration#design.fnInternalCommand: leads the code and differs in ctx, through typeCommandDeclaration", + ); + test.skip( + "spec:command.command-pipeline#design.fnRunPipeline: leads the code and differs in ctx, through typeCommandDeclaration", + ); + test.skip( + "spec:command.command-pipeline#design.fnRelayFailure: leads the code and differs in ctx, through typeCommandDeclaration", + ); }); From d39c89e970d71a9bc9252fda636f291928d4bb98 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 3 Oct 2026 14:37:49 +0200 Subject: [PATCH 13/60] design: STATE.md takes the module's counts after the review's fold-in 53 bound, 14 ahead (three compared with the ctx erased), 9 not compared; lead 44 names the five pairs whose ctx sits inside the executor type. Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index a7cb78e..ebb7af8 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -39,7 +39,7 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` - The adoption. The pin moved to `5e29c03`, the merge of pull request 27; the graph kept its shape and `npm test` passed unchanged. The 83 prose-mention warnings were read pair by pair: 70 were dependencies, now 56 declared relations, 12 stay prose and are listed with their reason in `design/tools/prose-mentions.json`, one moved with its text. Two older `dependsOn` edges of the event envelope ran backwards and closed nine Specs into cycles with the new edges; they are reversed and the corpus has no cycle. `check.py` accepts a mention warning only for a listed pair and resolves every entry address in the code, the tests and the records. - One maturity per Spec. The projection contract is three Specs: `spec:application.projection-contract` (per-entity form and shared conventions, implemented), `spec:application.history-projection` (`defined`, floor `ready`, nothing implements it) and `spec:application.aggregate-projection` (`scoped`, deferred with OD-075 as its trigger). `pack:history-view` gathers the fifteen Specs the history view rests on; its Design Review page shows each member's rung, floor and bindings. -- The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations from recipe 24, with the declarations of other Specs they use, into `generated/pinned/history-view.ts` on every `sdp:build`; `tests/types/pinned.test-d.ts` binds 53 pairs where the code equals the pin, asserts 19 pairs where the design leads the code, and lists 4 that differ only in the ctx they take. Adding a literal to a pinned `ApplyMode` fails `npm run test:types` at its entry address. Thirteen names the design uses and no Spec pins stand in the emitter's preamble as one list. +- The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations from recipe 24, with the declarations of other Specs they use, into `generated/pinned/history-view.ts` on every `sdp:build`; `tests/types/pinned.test-d.ts` binds 53 pairs where the code equals the pin, asserts 14 pairs where the design leads the code (three of them compared with the ctx parameter erased), and lists 9 it does not compare because they differ in the ctx they take, five of those also leading the code. A name pinned in two entries stops the emitter, and a bound table pair compares its indexes. Adding a literal to a pinned `ApplyMode` fails `npm run test:types` at its entry address. Thirteen names the design uses and no Spec pins stand in the emitter's preamble as one list. - Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes: one owner for `WritableGeneration`, the code's spelling of `ScopeKey` and of `pageInGeneration`'s prefix, `const` on two validators, and `HistoryEvent` and `OrderAllocation` pinned in the history projection. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min); the rulings added six open questions (OD-156 to OD-161, OD-157 the owner's), three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. - What it found beside: the Design Review sorts a Pack's members by ID, not in authored order; `spec:application.rebuild` and `spec:application.write-pause` show no implementation binding though code realizes both; three implemented Specs now depend on the deferred aggregate Spec, so their `ready` floor waits on it. `docs/sdp-feedback.md` has the section for the Protocol's maintainers. @@ -489,7 +489,7 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo 44. From the unit `design-in-the-graph`. Each is a gap a later unit takes when it touches its subject. - `spec:application.rebuild` and `spec:application.write-pause` carry no implementation binding, though `src/read-model/rebuild.ts` and `src/gate/` realize them: no `codeAnchor` satisfies either, so the Pack's page and the drift alarm do not see them. - - Four ahead pairs of `tests/types/pinned.test-d.ts` also differ in the ctx they take (`typeCommandDeclaration`, `fnRunPipeline`, `fnLoad`, `fnResumeChain`), and four pairs are not compared for that alone: the pinned `MutationCtx` is the emitter's generic stand-in, so a pin compared with a composition's ctx never matches. Either the notation pins a ctx generic over the data model, or the emitter compares with the ctx parameter erased. + - Nine pairs of `tests/types/pinned.test-d.ts` are not compared because they differ in the ctx they take: the pinned `MutationCtx` is the emitter's generic stand-in, so it never equals a composition's ctx. Five of them (`typeCommandDeclaration`, `fnPublicCommand`, `fnInternalCommand`, `fnRunPipeline`, `fnRelayFailure`) also lead the code and carry the ctx inside the executor type, so nothing flips when their build lands. Either the notation pins a ctx generic over the data model, or the emitter compares with the ctx erased throughout. - Thirteen names the design uses and no Spec pins stand in the emitter's preamble, each pointing at the code's type: `ReadModelDataModel`, `RowDataModel`, `GateDataModel`, `ListArgs`, `BatchRef`, `FillBatchRef`, `AppendResult`, `SubjectRef`, `DiagnosticSink`, `FailedCall`, `outcomeKindValidator`, `WriteBaselineArgs`, `WriteBaselineResult`. The Spec that uses one may pin it when next touched. - The emitter takes no Convex registration (`export const name = mutation({ ... })`, 51 `fn*` entries in the corpus), no `index*` fragment and no `limit*` formula; the module covers shapes, not the registered surface. - The Convex pass left questions to two lenses: the operator's, whether an entry computes the pause length from the tenant list and the stream counts before `startGeneration` and who takes the batch time; the domain's, what `verified` asserts for a history view nothing could change, if OD-157 keeps the pass. From 746782c507fbc511f24567229bb95ea013d778cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:27:35 +0200 Subject: [PATCH 14/60] docs: the feedback to the Protocol moves to docs/feedback/, with the two reads that select the next work The owner's move of docs/sdp-feedback.md into docs/feedback/ as it was made: sdp-feedback-01.md is the running file, 02 and 03-selection are the reads of 2026-10-04 that chose the next work. SESSIONS.md and STATE.md point at the new path, and the running file's link to the first report goes up one level. Co-Authored-By: Claude Opus 5.5 --- design/SESSIONS.md | 2 +- design/STATE.md | 6 +- .../sdp-feedback-01.md} | 14 +- docs/feedback/sdp-feedback-02.md | 183 ++++++++++++++++++ docs/feedback/sdp-feedback-03-selection.md | 67 +++++++ 5 files changed, 267 insertions(+), 5 deletions(-) rename docs/{sdp-feedback.md => feedback/sdp-feedback-01.md} (85%) create mode 100644 docs/feedback/sdp-feedback-02.md create mode 100644 docs/feedback/sdp-feedback-03-selection.md diff --git a/design/SESSIONS.md b/design/SESSIONS.md index b53376d..95ad40a 100644 --- a/design/SESSIONS.md +++ b/design/SESSIONS.md @@ -101,7 +101,7 @@ Paper only, for findings no slice will build soon: Layer 3 and later, and polish ### adopt -For a new Protocol version. Change the pin in `package.json`, run the check, apply what the version changes to the corpus, and write what the adoption found into `docs/sdp-feedback.md` for the Protocol's maintainers. +For a new Protocol version. Change the pin in `package.json`, run the check, apply what the version changes to the corpus, and write what the adoption found into `docs/feedback/sdp-feedback-01.md`, the running file for the Protocol's maintainers. ### recover diff --git a/design/STATE.md b/design/STATE.md index ebb7af8..5a8cb3e 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -41,7 +41,7 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` - One maturity per Spec. The projection contract is three Specs: `spec:application.projection-contract` (per-entity form and shared conventions, implemented), `spec:application.history-projection` (`defined`, floor `ready`, nothing implements it) and `spec:application.aggregate-projection` (`scoped`, deferred with OD-075 as its trigger). `pack:history-view` gathers the fifteen Specs the history view rests on; its Design Review page shows each member's rung, floor and bindings. - The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations from recipe 24, with the declarations of other Specs they use, into `generated/pinned/history-view.ts` on every `sdp:build`; `tests/types/pinned.test-d.ts` binds 53 pairs where the code equals the pin, asserts 14 pairs where the design leads the code (three of them compared with the ctx parameter erased), and lists 9 it does not compare because they differ in the ctx they take, five of those also leading the code. A name pinned in two entries stops the emitter, and a bound table pair compares its indexes. Adding a literal to a pinned `ApplyMode` fails `npm run test:types` at its entry address. Thirteen names the design uses and no Spec pins stand in the emitter's preamble as one list. - Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes: one owner for `WritableGeneration`, the code's spelling of `ScopeKey` and of `pageInGeneration`'s prefix, `const` on two validators, and `HistoryEvent` and `OrderAllocation` pinned in the history projection. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min); the rulings added six open questions (OD-156 to OD-161, OD-157 the owner's), three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. -- What it found beside: the Design Review sorts a Pack's members by ID, not in authored order; `spec:application.rebuild` and `spec:application.write-pause` show no implementation binding though code realizes both; three implemented Specs now depend on the deferred aggregate Spec, so their `ready` floor waits on it. `docs/sdp-feedback.md` has the section for the Protocol's maintainers. +- What it found beside: the Design Review sorts a Pack's members by ID, not in authored order; `spec:application.rebuild` and `spec:application.write-pause` show no implementation binding though code realizes both; three implemented Specs now depend on the deferred aggregate Spec, so their `ready` floor waits on it. `docs/feedback/sdp-feedback-01.md` has the section for the Protocol's maintainers. Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. On `feature/round-2` follow round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. @@ -398,7 +398,7 @@ A session confirms or drops each. None is a finding yet. 14. Left by the review of S1 on purpose. Tests of fixture code that would not catch a removal: the evaluate-twice test compares its two outputs only after the second evaluation, states that `evolve` produces are never frozen, the reference stream has no purity or rebuild example, and the submitted event's schema stamp is pinned by no test. `tests/native/depot-operation-commits.test.ts` sends its calls with admin access, and the pure guard that forbids it looks only for the token `adminKey`. The rule for repeated document items in one call (identical items merge, items that differ are `invalidInput`) is the fixture's and no Spec states a general one. 15. The native tests of S1 read function-log fields no Convex page promises: `willRetry` and `occInfo`, the absence of a record for a component sub-call, `usageStats.databaseReadDocuments`. They are `observed` entries of the native harness Spec and are read again when the backend pin moves. The two race tests rerun on a fresh key until the log shows an engine retry, up to twenty rounds. 16. About ten older Spec sentences still name a slice or a date, such as "slice S2 decides" in `spec:context.queries` and "ran on 2026-10-01" in open questions. The owner's direction is against them; a unit that touches those Specs moves them out, and a sweep waits for the owner's word. -17. The kernel's code anchor lives in `tests/pure/kernel.test.ts`, because the kernel may not import the Protocol package, so the graph cannot say what a change under `src/kernel` reaches. `npx sdp build` writes `*.test.generated.ts` files beside a suite that binds an example whose parent has an example space; they are ignored by git, Prettier and ESLint. Both are in `docs/sdp-feedback.md`. +17. The kernel's code anchor lives in `tests/pure/kernel.test.ts`, because the kernel may not import the Protocol package, so the graph cannot say what a change under `src/kernel` reaches. `npx sdp build` writes `*.test.generated.ts` files beside a suite that binds an example whose parent has an example space; they are ignored by git, Prettier and ESLint. Both are in `docs/feedback/sdp-feedback-01.md`. 18. `append` refuses a stream row whose version has no event in the journal. A later audit-only context that imports rows with incomplete history would trip it. 19. Dropped at the close of the roadmap unit: the root `README.md` now names every `_generated` directory under both compositions. What remains: nobody ran `npm run dev` to see that it rewrites them, and `scripts/dev.mjs` names only `annex/_generated` in a comment. @@ -507,7 +507,7 @@ The doc is `docs/convex-transactional-domain-platform-decisions.md`, unchanged s - First release: dual ESM and CJS, `publint` and the type-resolution check, packed-consumer fixtures, the Node and TypeScript matrix, changesets, trusted publishing, the compatibility policy for error codes, handler versions and event schema versions. - Not taken: its repository blueprint, which puts journal, receipts and obligations in one component against D2; the Node 18 floor and the TypeScript 5 promise, which came from its prompt; its sample types and error codes, which differ from what the corpus pins; test functions shipped behind a runtime guard; its sample CI, which builds before component codegen. -`docs/sdp-development-from-application-platform.md` is the first report to the Protocol's maintainers. `docs/sdp-feedback.md` is the running file that follows it; the `adopt` unit and each slice add to it. +`docs/sdp-development-from-application-platform.md` is the first report to the Protocol's maintainers. `docs/feedback/sdp-feedback-01.md` is the running file that follows it; the `adopt` unit and each slice add to it. Beside it, `sdp-feedback-02.md` and `sdp-feedback-03-selection.md` are the two reads of 2026-10-04 that chose the next work from it. ## Leftovers diff --git a/docs/sdp-feedback.md b/docs/feedback/sdp-feedback-01.md similarity index 85% rename from docs/sdp-feedback.md rename to docs/feedback/sdp-feedback-01.md index 48899a2..dde004c 100644 --- a/docs/sdp-feedback.md +++ b/docs/feedback/sdp-feedback-01.md @@ -1,9 +1,21 @@ # Feedback to the Software Delivery Protocol from this corpus -A running file, addressed to the Protocol's maintainers. Each `adopt` unit and each slice that learns something about the Protocol adds a dated section at the top. The first report, with its eight proposals, is [`sdp-development-from-application-platform.md`](sdp-development-from-application-platform.md). +A running file, addressed to the Protocol's maintainers. Each `adopt` unit and each slice that learns something about the Protocol adds a dated section at the top. The first report, with its eight proposals, is [`sdp-development-from-application-platform.md`](../sdp-development-from-application-platform.md). Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-04, the design as a person working in the repository reads it + +The unit `design-in-the-graph` gave this corpus the content a design ahead of its code needs. It has one maturity per Spec, `pack:history-view` in reading order, pinned declarations compiled and compared with the code, entry addresses in code, tests and the register, and two passes. Read through `npx sdp view` at `d39c89e` on the pin `5e29c03`, little of it reaches a person who navigates the repository and works on it. This section describes that reader and what the reader meets. It asks for no particular feature. + +- **A design reads as escaped JSON.** A Spec page prints `## Design` as one fenced JSON object. The history projection's ten entries, `HistoryProjection` and `applyHistoryProjection` among them, are escaped strings, each on one line. The corpus has 977 Design entries in 59 Specs, and its reviewers read the `.sdp.md` files instead. `spec:decisions.authored-entry-order` drafts a list rendering, and its blocking question waits for the owner to read ordered output. This corpus is that output. +- **A reader has no way in.** The index is one table with a row for each of the 239 Specs. Where to start comes from `design/STATE.md`, `design/ROADMAP.md` and memory, and no page answers it. +- **A Pack page shows no shape.** `pack:history-view` is authored in reading order with the history projection first, and its page lists the 15 members by id, every row alike. A reader cannot tell which members the design adds, which it rests on, or which built members its pins will change. The page also shows `spec:application.rebuild` with no implementation binding although `src/read-model/rebuild.ts` realizes its online path. That one is this corpus's missing anchor, lead 44 of `design/STATE.md`, and it misleads the reader all the same. +- **What the corpus knows about its own design is on no page.** In `tests/types/pinned.test-d.ts`, 53 pins equal their code, 14 lead it and 9 are not compared. `check.py` resolves 84 entry addresses outside the Specs, `design/decisions/register.json` joins open questions to decisions, and git holds the passes. A person learns any of it only by reading those files. The pinned module is the adopter's recipe under the Protocol's ruling, so presenting it is this corpus's work, but no shipped view has a place for the status of one entry. +- **Spec, code and test connect one way, and only for a whole Spec.** A Spec page lists each implementation anchor's file and line. The read-model library cannot import the Protocol, so its anchors sit in `tests/pure/read-model.test.ts`, and the link leads to a test and not to `src/read-model/`. From a file, the reader's `byFile` and recipe 4 name the Specs it touches, and no page does. Below the Spec, an entry address is a citation with no edge, as pull request 27 ruled. + +The data each of these needs is already in the graph or beside it: the authored member order, the delivery facts, the open questions, the examples with their tier in the opening line, the pinned module's three lists and the entry addresses. The Protocol's plan 35 defers Spec Studio until a recorded ruling names "the reader Markdown Design Review does not serve". The reader here is that one: a person inside the repository, working on it. + ## 2026-10-03, adopting the merge of pull request 27 at `5e29c03` The pin moved from `5993da7` to the merge commit of pull request 27, packed from a clean clone as before. The graph kept its shape (237 Specs, 384 nodes, 1,251 edges) and graph schema `0.6.0` changed nothing this corpus reads: `npm test` passed 1,050 and the typecheck was clean on the new pin with no other change. What the version gave, and what it asked of this corpus: diff --git a/docs/feedback/sdp-feedback-02.md b/docs/feedback/sdp-feedback-02.md new file mode 100644 index 0000000..427fa19 --- /dev/null +++ b/docs/feedback/sdp-feedback-02.md @@ -0,0 +1,183 @@ +**I would make the human reading experience the next SDP milestone.** The platform now has enough design content to support useful review, but the reader still has to reconstruct the design from several files and tools. The next work should let a person open one capability and understand its design, unresolved choices, relationship to code, and available proof. + +I read the updated [feedback](/Users/darkomijic/dev-libar/libar-platform/docs/sdp-feedback.md:7), [platform PR #12](https://github.com/libar-dev/libar-platform/pull/12), and [SDP PR #27](https://github.com/libar-dev/software-delivery-protocol/pull/27). I also queried the platform at `d39c89e` using its installed SDP pin, `5e29c03`, and rendered the existing pages in memory. + +The current graph confirms 239 Specs, six Packs, 977 Design entries across 59 Specs, and 401 declaration entries across 39 Specs. All 15 members of `pack:history-view` state `defined`. That last fact explains why a maturity table alone cannot present this work well. + +Three implementation details affect the recommendations: + +- Pack membership retains authored order in the freshly derived edges, but `packContext` sorts members by ID, and graph serialization sorts the edges. Preserving reading order needs to survive the whole path. +- `byFile("src/read-model/rebuild.ts")` returns no Specs. A file browser would expose the existing binding gap unless that is addressed. +- `sdp validate` calls the build routine, which removes generated projection directories. A viewer needs a refresh path that does not remove the pages being read. These behaviors are visible in the [installed engine](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/dist/cli/sdp.js:7756). + +Here are the changes I would consider, starting with the most immediately useful. + +The first group makes individual Specs readable. + +1. **Finish the proposed rendering of Design entries.** Render each keyed entry as a readable item in authored order. Show the key, its value, and a link to the source. Keep JSON only for structured values that need it. This has a carrying decision already, [authored-entry-order](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/specs/decisions/authored-entry-order.sdp.md). It is the smallest change that improves all 977 entries at once. + +2. **Format declarations for reading in the generated view.** The source can retain the one-line declaration shape while the page displays a formatted code block, followed by the explanatory prose. For example, the existing declaration could appear as: + + ```ts + interface HistoryProjection { + name: string; + version: number; + table: string; + rowBudgetBytes?: number; + + keyOf( + tenantId: string, + event: EventEnvelope + ): string | null; + + project( + tenantId: string, + prior: Row | null, + events: EventEnvelope[] + ): Row; + } + ``` + + This would be a proposed presentation change. It would not require changing the authored carrier to accept multiline declarations. The platform can supply the TypeScript formatter because SDP deliberately treats declaration contents as language-independent text. Preserve the original text for copying, and fall back to it when formatting fails. + +3. **Give every addressable entry a working page link.** A citation such as `spec:application.history-projection#design.typeHistoryProjection` should open the corresponding entry, with a “Copy address” action. Generate the link from the existing address grammar. Entries that the grammar cannot address should remain visibly unaddressable rather than receiving an invented canonical identity. + +4. **Give a Spec a short table of contents.** A person should be able to jump to intent, questions, contract, declarations, examples, and bindings. A long Spec such as rebuild especially needs this. Entry keys can form a second level under Design, preserving authored order. + +5. **Separate declaration text from its behavioral explanation.** Many Design entries combine a signature with a long description of ordering, errors, bounds, and special cases. The page can present the opening code span as code and the remainder as prose without changing ownership or meaning. This would make `fnApplyHistoryProjection` substantially easier to review. + +6. **Make the page lead with what the reader needs to decide.** My suggested anatomy is: title and intent, stated readiness and structural floor, open questions, contract and design, examples and evidence, then the full relation and binding inventory. Keep all the content, but put exhaustive metadata after the material a reviewer needs first. + +7. **Show reference previews.** Hovering or focusing a Spec reference should show its title, intent, readiness, and relationship to the current Spec. An entry reference should preview that entry. This would reduce the constant navigation between the history projection, envelope, row conventions, and rebuild without duplicating their text in authored Specs. + +SDP #27 explicitly leaves readable Design rendering as a follow-up requiring a narrow reopening of the projection freeze. It also retains the one-line declaration ruling. Those are useful boundaries for the first implementation. [SDP PR #27](https://github.com/libar-dev/software-delivery-protocol/pull/27) + +The next group gives a reader a way into the corpus. + +8. **Make Packs the main entrance to active design work.** The home page should start with capability Packs and a brief description of what each lets the reader understand. The complete Spec table remains available as an inventory. The existing package Packs can continue serving broad orientation; smaller capability Packs serve decisions and implementation preparation. + +9. **Preserve Pack order through extraction, serialization, the reader, and rendering.** Add an explicit representation of authored order, either on the Pack or its membership data, and validate that it agrees with membership. The acceptance case should serialize and reload the graph before rendering. A fix that only reads the in-memory edge order would leave consumers of `graph.json` with different behavior. + +10. **Give a Pack an authored reading guide.** The [history-view Pack](/Users/darkomijic/dev-libar/libar-platform/design/specs/history-view.pack.sdp.md) already explains why each group belongs. Present that guide as short reading stages beside the member list. A future Pack extension could support named groups containing references, but those groups should organize reading only. They should not restate contracts or store implementation status. + +11. **Distinguish the design being considered from its supporting context.** A capability page should identify the focal Spec, shared contracts, examples, supporting facts, and shaping decisions. Start with presentation configuration or explicit reading groups. Derive “changed in this PR” from the selected Git comparison. Avoid permanently recording “new” or “already built” in a Pack, since those descriptions change. + +12. **Show dependencies outside the Pack.** `aggregate-projection` is an excellent example. It is outside `pack:history-view`, yet its `scoped` readiness affects three members’ ability to state `ready`. The page should show that dependency at the boundary, explain why it matters, and offer to expand it. Automatically adding every transitive dependency to Pack membership would make the Pack unwieldy. + +13. **Offer a refinement outline as well as Pack navigation.** Packs answer “what should I read together?” The `refines` graph answers “where does this promise belong?” Both are useful. Display the authored refinement hierarchy, with cross-links for other relations. Do not turn folder names into an additional authoritative hierarchy. + +14. **Give humans the same search entrances agents have.** One search box should accept a concept, title, Spec ID, entry key, declaration name, or file path. Results should say why they matched: title, Design entry, declaration, or source binding. Existing `findByConcept`, `byFile`, and recipes 23–24 provide most of the underlying data. Search for `HistoryProjection` should land on the declaration itself. + +15. **Split Specs when they need independent decisions, then reunite them in a Pack.** Continue the projection-contract split where it helps, but avoid splitting every type into its own Spec. A useful boundary is independent readiness, unresolved questions, behavioral ownership, or review scope. Shared content keeps one home. The Pack restores the readable capability narrative across those boundaries. + +A proposed history-view page could present its reading guide like this. These are suggested presentation groups, not new SDP states: + +| Reading purpose | Material | What the page should explain | +|---|---|---| +| Understand the proposed form | History projection | Shape, fold rules, bounds, and remaining questions | +| Understand shared conventions | Projection contract and read models | What the history form reuses | +| Understand operation | Rebuild, write pause, generation registry | How interruption, resume, abort, and switching work | +| Understand integration | Command declaration and pipeline | Which existing promises extend to the history form | +| Inspect proof obligations | Paused-rebuild examples | Required tier and whether a verifier is bound | +| Inspect assumptions | Event envelope, journal, queries, D9 | The contracts and decision this design rests on | +| Inspect an external dependency | Aggregate projection | Why it affects the readiness floor of three members | + +This is the shape missing from the current alphabetic table. + +The next group makes status and evidence useful without overstating them. + +16. **Keep readiness, design detail, bindings, and test results separate.** A page should be able to say: + + - Stated readiness: `defined`. + - Structural floor reached: `ready`. + - Declaration present: yes. + - Implementation binding: none recorded. + - Verifier binding: none recorded. + - Selected test result: unavailable. + + These facts answer different questions. A single “designed,” “implemented,” or percentage-complete badge would hide distinctions the platform needs. + +17. **Explain what prevents the next readiness rung.** Current `floorFailures` describes whether the stated rung is honest. It can be empty while a higher rung remains unavailable. I checked the three aggregate-dependent Specs: evaluating their prospective `ready` statement produces the typed-dependency failure. A human view should explain the target and clause, for example: “Cannot state ready because aggregate projection states scoped.” This can begin as a recipe using the existing floor evaluator, without editing the Spec. + +18. **Put the pinned type-test inventory beside the declaration.** The current [type-test file](/Users/darkomijic/dev-libar/libar-platform/tests/types/pinned.test-d.ts:42) declares 53 matching pairs, 14 expected differences, and nine pairs it does not compare. A platform adapter can expose each pair’s address, comparison mode, code symbol, and test location. A declaration page can then show “expected to match” or “expected to differ,” with the actual execution result loaded separately. + +19. **Expose what a type comparison leaves out.** “Compared after removing the context parameter” matters. So do placeholder declarations, imported fallback types, and declarations the emitter skips. Display these qualifications beside the comparison. Also distinguish an entry with no comparison from an entry that the emitter cannot emit. The [emitter](/Users/darkomijic/dev-libar/libar-platform/scripts/pinned.mjs) already contains much of this information. + +20. **Strengthen selected “ahead” checks around the intended difference.** An inequality assertion shows that the types differ. It does not establish that they differ for the expected reason. For consequential pairs, add compiled-tier assertions for the supported common shape and the specific proposed extension. For example, check the intended projection forms explicitly. This is worth doing selectively where unrelated drift could otherwise remain green. + +21. **Show behavioral proof beside type compatibility.** A declaration matching its implementation does not prove event interleaving, cancellation behavior, or interruption recovery. The page should place relevant examples and their required tiers beside the signature. This creates a useful distinction between “the shapes agree” and “the promised behavior has evidence.” + +22. **Repair missing bindings before using their absence to guide work.** Rebuild and write pause are already recorded as binding gaps. Address those, while checking whether each carrying Spec’s scope is narrow enough for an honest binding. A broad workflow with only one realized path may need a better boundary. Until then, render “no implementation binding recorded,” which is what the graph actually knows. + +23. **Represent the binding location and implementation location separately.** The read-model anchors live in [a test file](/Users/darkomijic/dev-libar/libar-platform/tests/pure/read-model.test.ts:17) because deployed code cannot import SDP. A useful page needs to show both where that assertion is made and which implementation it points to. Start with an explicit platform mapping or an extractor-owned companion-binding design. If SDP generalizes this, preserve the authored binding and validate its target. Do not silently treat a test import as proof that the imported module satisfies the Spec. + +24. **Add a reverse file view.** Opening a source file should show the Specs bound to it, relevant declarations, examples, and affected Packs. Use `byFile` for recorded coverage, and display “coverage unknown” when it has none. This is especially useful during implementation and review, where the reader often arrives holding a filename rather than a Spec ID. + +25. **Attach test results as a separate, clearly identified input.** The platform already has run records. Join them by verifier identity and show commit, tier, composition, target, and result. Keep compiled, pure test, `convex-test`, and native backend distinct. If the selected run predates the source being read, say so. This should consume existing test output rather than introduce another manually maintained proof log. + +The next group supports repeated design passes. + +26. **Present unresolved choices as an actionable decision list.** Join recipe 20 with [the decision register](/Users/darkomijic/dev-libar/libar-platform/design/decisions/register.json:6403). Show the question, provisional reading, class, advisor, affected Specs, and downstream consequences. Preserve the difference between a question that blocks an SDP readiness floor and a register decision that blocks a platform unit. OD-157 is a concrete case: its Spec question is non-blocking for readiness, while the register assigns an owner decision affecting S5. + +27. **Give open questions stable identities.** Positional references such as `spec:application.rebuild#7` are fragile and are not current SDP entry addresses. A small SDP extension could add optional question keys and a ruled address form. Migration should validate uniqueness and detect missing references. Until then, the existing `OD-*` identity can be the stable presentation link, with its Spec association checked by platform tooling. Any proposed question-address syntax should remain explicitly a proposal until ruled. + +28. **Make a review lens a filter over the same capability.** Domain, Convex, operator, and implementation views can reorder or emphasize relevant questions, entries, examples, and constraints. They should open the same carrying Specs. The existing [pass task](/Users/darkomijic/dev-libar/libar-platform/design/advisors/task-pass.md) already supplies the working pattern. A lens does not need a new Spec kind or a compulsory stage sequence. + +29. **Generate the next pass’s reading material.** Given a Pack and lens, produce a disposable view containing the reading order, open questions, dependency concerns, relevant declarations, and examples. This could be copied into an advisor brief or read directly by a person. Start with a platform recipe. Generalize it only after repeated use shows which joins are stable. + +30. **Show changes at Spec-entry granularity.** Compare two graph snapshots by Spec ID, section, and entry key. Distinguish changed declaration text, changed explanatory prose, moved entries, readiness edits, relation edits, and new or removed examples. A Git diff remains available underneath. For the stacked platform PR, compare against its PR base so the reader sees the design adoption separately from the much larger underlying branch. + +31. **Show what changed since a design pass.** If a pass read a known commit, compare that version with the current one. Display “this declaration changed since the operator pass” or “a dependency gained a blocking question.” This is review context derived from Git, not a new approval fact in the graph. Begin at Spec granularity; entry-level precision can follow. + +32. **Keep decision rationale close to the affected design.** A decision panel should show the chosen or provisional option, the do-nothing option, alternatives, consequences, and the Specs it shapes. This is particularly useful for the paused verify pass: the reader needs the tradeoff and affected scenarios, not just an `OD-157` link. Draw from the existing register and decision Specs rather than maintaining another summary by hand. + +Several supporting changes would make these views dependable. + +33. **Add a dependency-cycle recipe.** Report strongly connected sets for selected relation types, including self-loops, and show an actual path through each set. Begin with `dependsOn`; offer the broader typed-dependency view separately. A cycle should be visible without automatically becoming an error, since its acceptability depends on what the relations mean. + +34. **Provide batch address resolution through the existing query mechanism.** Accept a list of addresses and return the resolved Spec, section, key, value, and a precise failure reason. This would serve the platform’s external citations, a viewer’s links, and decision-register checks. It can be a shipped recipe first. Preserve the exact mention/address grammar instead of teaching every adopter a slightly different regular expression. + +35. **Show accepted prose mentions with their reasons.** The platform’s exception policy is already useful. Present the exception reason in the relationship view, along with new unclassified pairs and stale exceptions. This helps readers distinguish “there is intentionally no typed relation” from “someone forgot the dependency.” + +36. **Separate inspection from artifact publication.** A local viewer should use in-memory extraction, validation, and rendering. It should not call the build path on every refresh. A future CLI cleanup could provide the same separation for checks, but the first viewer can use the exported APIs. When extraction fails, display the diagnostics and clearly identify any retained page as the last successful snapshot. + +37. **Keep changing context outside the pure Design Review.** The current Design Review is specified as a function of the graph alone, without timestamps or commit identities. A repository browser can surround that content with the selected commit, engine pin, Git comparison, and test run. That separation lets the pure pages stay deterministic while the browser answers practical questions about freshness. The current boundary is explicit in the [Design Review Spec](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/specs/consumers/design-review.sdp.md:19). + +38. **Build a small read-only browser with static output first.** It needs a navigation column, a readable content column, search, filters, entry links, and an optional context panel. Static HTML with client-side search is sufficient for an initial export; local refresh can be added around the same renderer. Keyboard navigation, readable line lengths, text labels beside colors, and print output should be part of that first cut. + +39. **Make PR review open on the rendered capability.** CI can generate the changed Packs and Specs as a downloadable review artifact, with a short job summary linking to it. Include the selected comparison base and generation provenance in the artifact wrapper. Keep generated status out of authored Specs. This would make #12’s design work inspectable without requiring reviewers to install and navigate the repository. + +40. **Test the human tasks that motivated the work.** Use the history view as the acceptance corpus. Ask a reader to find the history contract, locate OD-157, explain the aggregate dependency, find the type comparison for one declaration, and determine whether a paused-rebuild example has native-backend evidence. Record where they get stuck. Renderer snapshots are useful, but they cannot establish that someone can find those answers. + +There is a natural division of responsibility. + +| Responsibility | Best home | +|---|---| +| Readable Design entries, stable entry links, preserved Pack order | SDP | +| Generic Spec, Pack, relation, and file navigation | SDP reader and human view | +| Question identity and reusable address resolution | SDP, with explicit model decisions | +| TypeScript declaration formatting and comparison details | Platform adapter initially | +| Decision-register classes, owner queue, and roadmap associations | Platform | +| Tier, composition, target, and test-run presentation | Platform adapter | +| Git comparison and review freshness | Repository browser context | +| Authored intent | Existing Specs | +| Work history | Git and existing work records | + +That division avoids making SDP understand Convex-specific declarations, platform decision classes, or the platform’s test harness. + +I would package the work into a short sequence of reviewable PRs: + +| Order | Change | Concrete completion test | +|---|---|---| +| 1 | **Readable Design Review.** Narrowly reopen the rendering rule; render entries and address links. | The history projection’s ten entries can be read without opening JSON or the carrier file. | +| 2 | **Ordered capability navigation.** Preserve Pack order end to end; improve the Pack page and entrance page. | History projection remains first after graph serialization and reload; external dependencies are visible. | +| 3 | **Platform design context.** Expose declaration comparisons and decision-register associations; resolve the known binding gaps. | From a declaration, a reader can reach its comparison and code; from OD-157, the affected design and examples. | +| 4 | **Small repository browser.** Add search, file navigation, lens filters, and a read-only refresh path. | The acceptance tasks above can be completed without querying the CLI manually. | +| 5 | **Iteration review.** Add entry-level comparisons, changes since a pass, and CI review artifacts. | A reviewer can identify what changed in the design since the previous pass and inspect the source diff. | +| 6 | **Reusable integrity improvements.** Add question identities, cycle reporting, and batch address resolution. | Reordering questions preserves references; dependency loops and broken external citations are explained directly. | + +The current projection freeze and Studio deferral should be addressed explicitly in those proposals. The freeze requires a superseding decision for changes to the shipped views. [Plan 35](/Users/darkomijic/dev-libar/software-delivery-protocol/plans/35-agent-surface-adoption-and-self-binding.md:80) also asks for a named underserved reader and a package home before Studio resumes. Your updated feedback supplies a concrete reader: a person working inside this repository who needs to inspect and iterate on a capability. I would recommend `@libar-dev/` as the proposed home for that developer tool and keep the first scope to reading and review. + +**My first choice would be PRs 1–3, followed promptly by the small browser.** Formatting the pages will provide immediate value; navigation and the platform adapters will make them useful for actual design decisions. I would postpone new maturity rungs and changes to the declaration carrier until that readable view has been used for the remaining history-view passes. + +This session remained read-only. I used graph queries, source inspection, and in-memory rendering; I did not rerun the platform’s proof tiers. The existing edit to the feedback file is unchanged. \ No newline at end of file diff --git a/docs/feedback/sdp-feedback-03-selection.md b/docs/feedback/sdp-feedback-03-selection.md new file mode 100644 index 0000000..5a81c71 --- /dev/null +++ b/docs/feedback/sdp-feedback-03-selection.md @@ -0,0 +1,67 @@ +I'm done verifying. Writing the refined selection now, with what each check found. + +**Two facts about the checkouts first.** The local SDP checkout at `~/dev-libar/software-delivery-protocol` is on `main` at the merge of pull request 26 and has not fetched the merge of 27, so I verified every SDP claim against the platform's pinned tarball under `node_modules` instead. In the platform, `docs/sdp-feedback.md` is deleted in the working tree and its content now sits in `docs/feedback/` as three files, the third being my earlier answer. Nothing below depends on that move. + +**What I had wrong or unclear in the first answer** + +- I wrote that the declaration ruling "leaves" formatting to the platform. The ruling says only that the Protocol parses no language inside the span. It is silent on rendering. Formatting is platform work because SDP is language-independent, not because a ruling assigns it. +- I presented the platform's own reading of Pack order and the SDP fix as if they were alternatives. They are one sequence: the platform reads the `.pack.sdp.md` list today, and the SDP fix retires that workaround. +- Step 1 looked like a small Spec Studio while I said Studio should wait. The difference is that step 1 emits static Markdown from existing data and keeps the Design Review untouched. It is the probe that gives plan 35 the named reader it asks for before Studio resumes. + +## Round 1, platform, in order + +1. **One generated page per capability Pack.** A script reads the member list from the Pack file in authored order, because both the reader and the serialized graph sort it: `packContext` sorts members by code units, and `generated/graph.json` already lists the history view's `belongsTo` edges alphabetically with the generation registry first. Per member it prints the stated rung, the floor, the clause blocking the next rung, the implementation and verifier bindings, and the pair's state from the three describe blocks of the pinned type test. Below the members: dependencies outside the Pack, and open questions joined to register rows. The page may carry the commit and the engine pin, which the Design Review may not, since its Spec rules that the page set carries no timestamp, commit or run identity. +2. **Two owner rulings the page depends on.** Both already sit in the STATE.md owner queue. First, what `ready` states. I recommend the Protocol's reading, approved to build, stated on the history projection after the two remaining passes. It makes recipe 1 answer the backlog instead of the local `defined` query in lead 10, and it changes what roadmap unit 4e, `ready` by family, means. Second, the aggregate form's reach into three built Specs. Narrow those pins to the forms the code admits, or the page will show three built members whose floor waits on a deferred Spec for the whole history view's life. +3. **Close the two binding gaps.** STATE.md records that rebuild and write pause show no implementation binding although code realizes both. Anchor them, and add a small mapping from each anchor that lives in a test to the implementation file it stands for, since the read-model anchors sit in a pure test because `src/` cannot import the Protocol. +4. **Stop citing questions by position.** The register holds 137 references of the form `spec:#`. That form now collides with the entry-address grammar, and one is already broken: OD-006 cites a question that no longer exists, which is why `test_decisions.py` fails. Make the OD number the link, store the question's opening text beside it, and let `check.py` verify text rather than index. +5. **Run the domain and operator passes against the page.** The roadmap already orders them before 5d. Add one line to the task: read the page before the recipes, and report what it could not answer. That report is the acceptance test for step 1 and the evidence for round 2. + +## Round 2, SDP, as four pull requests + +| Order | Change | What I verified | +| ----- | --------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| 1 | Ratify `spec:decisions.authored-entry-order` | Its blocking question asks whether to reopen the freeze now or after `open-section-order` has landed and the ordered JSON has been read. Both conditions are met: order landed at schema 0.6.0, and the 2026-10-04 feedback section is the read. The record needs `supersedes` on the freeze and the three-part ADR test, as its own text says. | +| 2 | Pack authored order through the graph | The loss is in serialization as well as the reader, so a reader-only fix would leave `graph.json` consumers different. The authoring skill already tells authors to keep membership order. | +| 3 | Two shipped recipes: batch address resolution, and `dependsOn` strongly connected sets with one path each | Neither exists. Recipe 21 has no cycle text, and the catalog ends at 24. Recipes add no query verb, so plan 35's exclusions do not apply. | +| 4 | Optional question keys with a ruled address form | The platform's 137 positional references are the use case. The grammar question, what `#` means after a Spec id, needs a model ruling. | + +**Not now.** A `designed` rung, the `ts` fenced block, declaration formatting inside SDP, and Spec Studio. The first two change the model before step 5 shows what a reader needs. Studio waits on the ruling plan 35 names, and step 1 is what produces that evidence. + +**Order.** Step 1 and SDP PR 1 start together. Steps 2 to 4 are each a day and gate step 5. SDP PRs 2 to 4 follow step 5's report. + + +--- + + +Go. The updated selection is the right approach. It's narrow. It uses work you already have to do next, the domain and operator passes before 5d, as the acceptance test. And it starts the one SDP change that helps every page, readable Design entries, with a single ruling. Treat the long Astra-style list (02) as the backlog behind it, not as the plan. + +## Why this one over 02 + +02 is good analysis, and its 40 items are mostly correct. Its sequence, though, builds a browser in PR 4 and diff-based review in PR 5 before anyone has learned what a reader needs. 03 learns that first from the two passes, then lets SDP PRs 2 to 4 follow the report. That's cheaper, and it gives plan 35 the evidence it asks for before Spec Studio is reconsidered. The revision also fixed most of what I raised. The order holds now, `ready` and the aggregate's reach are rulings rather than steps, and Pack order is clearly a workaround that SDP PR 2 retires. + +## Conditions for the go + +1. **Split before anchoring `rebuild`.** This is still my one real disagreement. Step 3 anchors it as it stands, which tells the page and the drift alarm that the history path is built. That's the mixed-maturity problem this PR just fixed for the projection contract. Either move the history path out first, or have the page say which path the anchor covers. 02 kept this caveat (item 22), and 03 lost it. `write-pause` can be anchored now. +2. **Two data sources in step 1 don't exist yet.** + - **Pinned state.** Reading it from the describe blocks of `pinned.test-d.ts` means parsing test names. Move the three lists into a small data module that both the test and the page import. + - **The next-rung clause.** Recipe 9 doesn't give "the clause blocking the next rung". For `command-declaration` it returns floor `defined`, next rung `ready` and `firstUnmetClause: null`, because it only reports failures of the stated rung. The page needs its own floor evaluation for the next rung, and recipe 9's behavior is worth a line in round 2. +3. **Say where the page lives.** `sdp validate` wipes `generated/`, and git ignores it. Put the page somewhere else, or regenerate it after validate. Also decide between committing it with a staleness check and publishing it as a CI artifact only. +4. **Make step 5's acceptance concrete.** Use 02's task list (item 40). A reader should be able to: + - find the history contract; + - locate OD-157; + - explain the aggregate dependency; + - find one declaration's type comparison; + - say whether a paused-rebuild example has native-backend evidence. + + "Report what it could not answer" is too open to compare across the two passes. + +## One cheap addition + +`generated/pinned/history-view.ts` already holds every pinned declaration of the Pack, each one under its entry address. They're one line each. If `pinned.mjs` ran Prettier on the file as it writes it, the Pack would have a readable contract listing on day one. The page could link to it by address, and nothing would wait on SDP PR 1. Formatting doesn't change any type the test compares. + +## Two facts to correct in 03 + +- **The register's references.** I count 151 references of the form `spec:#`, not 137. Six already point past the last question of their Spec, not only OD-006: OD-006, OD-007, OD-064 twice, OD-074 and OD-123. +- **SDP PR 1.** "Ratify" is your statement of `ready` on the decision record, with `supersedes` on the freeze. The rendering change follows it, so it's two acts, the ruling and then the build. + +Its "not now" list matches mine: no `designed` rung, no `ts` fence, no declaration formatting inside SDP, no Studio yet. \ No newline at end of file From d2889c9ea9c45a11ada4b2beeb3a45a0436a358a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:37:20 +0200 Subject: [PATCH 15/60] build: the pinned pairs as data beside the type test, and the pinned module formatted tests/types/pinned-pairs.json lists the 76 pairs of tests/types/pinned.test-d.ts in file order, with state, comparison, the code compared and a reason for each ahead and not-compared pair. A pure test fails when the two disagree on a name, a state or the order. scripts/pinned.mjs formats its module with the repository's Prettier; the parsed declarations are unchanged and the compiled tier keeps 53 bound, 14 ahead and 9 not compared. Written by gpt-6.1-sol (job-mut363vp-ed05a575) from the unit's rulings. Co-Authored-By: Claude Opus 5.5 --- scripts/pinned.mjs | 21 +- tests/pure/pinned-pairs.test.ts | 172 ++++++++++ tests/types/pinned-pairs.json | 538 ++++++++++++++++++++++++++++++++ 3 files changed, 726 insertions(+), 5 deletions(-) create mode 100644 tests/pure/pinned-pairs.test.ts create mode 100644 tests/types/pinned-pairs.json diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index 8751765..509892c 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -3,7 +3,7 @@ // default the Pack's id without `pack:`. It runs the body of recipe 24, "Pinned declarations", read // from the pinned Protocol's recipes.md, with the pinned CLI. spec:extraction.contract-declarations // rules the module: a projection, regenerated and never edited, which earns its place when a -// changed pin fails the typecheck against the code. +// changed pin fails the compiled tier's typecheck against the code. // // This project's policy, by the prefix of the entry's key: `type*` opening with `type ` or // `interface ` and `validator*` opening with `const ` are exported as written; `fn*` that is a call @@ -18,6 +18,7 @@ import { execFileSync } from "node:child_process"; import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { parseArgs } from "node:util"; +import * as prettier from "prettier"; import ts from "typescript"; const root = join(import.meta.dirname, ".."); @@ -274,11 +275,21 @@ const lines = [ ...emitted.filter((row) => row.kind === "table").flatMap(member), "};", ]; +const outputPath = join(root, "generated/pinned", `${name}.ts`); +let formatted; +try { + const config = JSON.parse( + readFileSync(join(root, ".prettierrc.json"), "utf8"), + ); + formatted = await prettier.format(`${lines.join("\n")}\n`, { + ...config, + filepath: outputPath, + }); +} catch (error) { + cannot(`${outputPath}: Prettier failed: ${error.message}`); +} mkdirSync(join(root, "generated/pinned"), { recursive: true }); -writeFileSync( - join(root, "generated/pinned", `${name}.ts`), - `${lines.join("\n")}\n`, -); +writeFileSync(outputPath, formatted); const counted = (rows) => [...Map.groupBy(rows, (row) => row.prefix)] diff --git a/tests/pure/pinned-pairs.test.ts b/tests/pure/pinned-pairs.test.ts new file mode 100644 index 0000000..9de5100 --- /dev/null +++ b/tests/pure/pinned-pairs.test.ts @@ -0,0 +1,172 @@ +import { readFileSync } from "node:fs"; +import { dirname, resolve } from "node:path"; +import ts from "typescript"; +import { expect, test } from "vitest"; + +const root = resolve(import.meta.dirname, "../.."); +const testFile = "tests/types/pinned.test-d.ts"; +const source = ts.createSourceFile( + testFile, + readFileSync(resolve(root, testFile), "utf8"), + ts.ScriptTarget.Latest, + true, +); +const titles = new Map([ + ["bound: the code equals the pin", "bound"], + ["ahead: the design leads the code", "ahead"], + [ + "not compared: the pin takes Convex's generic MutationCtx, the code a composition's own ctx", + "notCompared", + ], +]); + +type Pair = { + address: string; + state: string; + comparison: string; + code: string | null; + reason: string | null; +}; + +const imports = new Map(); +for (const statement of source.statements) { + if ( + !ts.isImportDeclaration(statement) || + !ts.isStringLiteral(statement.moduleSpecifier) + ) + continue; + const clause = statement.importClause; + const bindings = clause?.namedBindings; + const alias = + clause?.name?.text ?? + (bindings && ts.isNamespaceImport(bindings) + ? bindings.name.text + : undefined); + if (alias && alias !== "pinned") + imports.set( + alias, + resolve(root, dirname(testFile), statement.moduleSpecifier.text) + .slice(root.length + 1) + .replace(/\.js$/, ".ts"), + ); +} + +function readTests(): Pair[] { + const pairs: Pair[] = []; + const found = new Set(); + for (const statement of source.statements) { + if ( + !ts.isExpressionStatement(statement) || + !ts.isCallExpression(statement.expression) || + statement.expression.expression.getText(source) !== "describe" + ) + continue; + const [title, callback] = statement.expression.arguments; + if (!title || !ts.isStringLiteral(title)) continue; + const state = titles.get(title.text); + if (!state) throw new Error(`Unknown pinned pair block: ${title.text}`); + found.add(title.text); + if ( + !callback || + !ts.isArrowFunction(callback) || + !ts.isBlock(callback.body) + ) + throw new Error(`No test block: ${title.text}`); + for (const entry of callback.body.statements) { + if ( + !ts.isExpressionStatement(entry) || + !ts.isCallExpression(entry.expression) + ) + continue; + const call = entry.expression; + if (!["test", "test.skip"].includes(call.expression.getText(source))) + continue; + const [name, body] = call.arguments; + if (!name || !ts.isStringLiteral(name)) + throw new Error(`No test name in ${title.text}`); + const address = name.text.split(": ")[0]!; + const text = body?.getText(source) ?? ""; + let code: string | null = null; + for (const [alias, file] of imports) { + const member = text.match( + new RegExp(`\\b${alias}\\.([A-Za-z_$][\\w$]*)`), + ); + if (member) { + code = `${file}#${member[1]}`; + break; + } + if (new RegExp(`\\b${alias}\\b`).test(text)) { + code = `${file}#default`; + break; + } + } + pairs.push({ + address, + state, + comparison: + state === "notCompared" + ? "none" + : text.includes("WithoutCtx<") + ? "typeWithoutCtx" + : text.includes("TableShape<") + ? "table" + : "type", + code, + reason: + state === "bound" ? null : name.text.split(": ").slice(1).join(": "), + }); + } + } + expect([...found], "The compiled tier's three pair blocks").toEqual([ + ...titles.keys(), + ]); + return pairs; +} + +test("pure: pinned pairs match the compiled tier's test names, states and order", () => { + // A scratch JSON path lets the pure test tier check drift without editing the repository. + const pairsFile = + process.env.PINNED_PAIRS_FILE ?? + resolve(root, "tests/types/pinned-pairs.json"); + const listing = JSON.parse(readFileSync(pairsFile, "utf8")) as { + pack: string; + test: string; + pairs: Pair[]; + }; + expect(listing.pack).toBe("pack:history-view"); + expect(listing.test).toBe(testFile); + const tests = readTests(); + const addresses = new Set(); + for (const pair of listing.pairs) { + expect(addresses.has(pair.address), `${pair.address}: duplicate pair`).toBe( + false, + ); + addresses.add(pair.address); + expect( + tests.some((entry) => entry.address === pair.address), + `${pair.address}: pair absent from test`, + ).toBe(true); + expect( + pair.reason === null || + (pair.reason.length > 0 && !/[\r\n]/.test(pair.reason)), + `${pair.address}: reason must be one line or null`, + ).toBe(true); + expect( + pair.state === "bound" ? pair.reason === null : pair.reason !== null, + `${pair.address}: reason follows state`, + ).toBe(true); + } + for (const [index, entry] of tests.entries()) { + const pair = listing.pairs.find((pair) => pair.address === entry.address); + expect(pair, `${entry.address}: test absent from JSON`).toBeDefined(); + expect(pair?.state, `${entry.address}: wrong state`).toBe(entry.state); + expect(listing.pairs[index]?.address, `${entry.address}: wrong order`).toBe( + entry.address, + ); + expect(pair?.comparison, `${entry.address}: wrong comparison`).toBe( + entry.comparison, + ); + expect(pair?.code, `${entry.address}: wrong code export`).toBe(entry.code); + expect(pair?.reason, `${entry.address}: wrong reason`).toBe(entry.reason); + } +}); diff --git a/tests/types/pinned-pairs.json b/tests/types/pinned-pairs.json new file mode 100644 index 0000000..b7953fc --- /dev/null +++ b/tests/types/pinned-pairs.json @@ -0,0 +1,538 @@ +{ + "pack": "pack:history-view", + "test": "tests/types/pinned.test-d.ts", + "pairs": [ + { + "address": "spec:application.generation-registry#design.typeRegistryReader", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#RegistryReader", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.fnGenerationsToWrite", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#generationsToWrite", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.fnActiveGeneration", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#activeGeneration", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.validatorGenerationState", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#generationStateValidator", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.validatorProgressPass", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#progressPassValidator", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.tableGenerations", + "state": "bound", + "comparison": "table", + "code": "src/read-model/index.ts#readModelTables", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.tableProjectionMarkers", + "state": "bound", + "comparison": "table", + "code": "src/read-model/index.ts#readModelTables", + "reason": null + }, + { + "address": "spec:application.history-projection#design.typeHistoryEvent", + "state": "bound", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#HistoryEvent", + "reason": null + }, + { + "address": "spec:application.history-projection#design.typeOrderAllocation", + "state": "bound", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#OrderAllocation", + "reason": null + }, + { + "address": "spec:application.history-projection#design.typeOrderAllocationHistoryFields", + "state": "bound", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#OrderAllocationHistoryFields", + "reason": null + }, + { + "address": "spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf", + "state": "bound", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#orderAllocationHistoryKeyOf", + "reason": null + }, + { + "address": "spec:application.history-projection#design.fnProjectOrderAllocationHistory", + "state": "bound", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#projectOrderAllocationHistory", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeProjection", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#Projection", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeReadModel", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#ReadModel", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.fnProjectionOf", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#projectionOf", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeWritableGeneration", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#WritableGeneration", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeRowWriter", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#RowWriter", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeApplyMode", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#ApplyMode", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.typeApplyResult", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#ApplyResult", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.fnApplyProjection", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#applyProjection", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.validatorRowConventions", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#rowConventions", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.validatorOrderSummaryFields", + "state": "bound", + "comparison": "type", + "code": "example/convex/orderSummary.ts#orderSummaryFields", + "reason": null + }, + { + "address": "spec:application.projection-contract#design.tableOrderSummaries", + "state": "bound", + "comparison": "table", + "code": "example/convex/schema.ts#default", + "reason": null + }, + { + "address": "spec:application.read-models#design.fnPageInGeneration", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#pageInGeneration", + "reason": null + }, + { + "address": "spec:application.read-models#design.fnReadModelView", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#readModelView", + "reason": null + }, + { + "address": "spec:application.rebuild#design.typeRebuildTarget", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#RebuildTarget", + "reason": null + }, + { + "address": "spec:application.rebuild#design.tableTenantFill", + "state": "bound", + "comparison": "table", + "code": "src/read-model/index.ts#readModelTables", + "reason": null + }, + { + "address": "spec:application.write-pause#design.typeScopeKey", + "state": "bound", + "comparison": "type", + "code": "src/gate/index.ts#ScopeKey", + "reason": null + }, + { + "address": "spec:application.write-pause#design.fnGateAllows", + "state": "bound", + "comparison": "type", + "code": "src/gate/index.ts#gateAllows", + "reason": null + }, + { + "address": "spec:application.write-pause#design.fnAssertWritable", + "state": "bound", + "comparison": "type", + "code": "src/gate/index.ts#assertWritable", + "reason": null + }, + { + "address": "spec:application.write-pause#design.fnScopesOfUseCase", + "state": "bound", + "comparison": "type", + "code": "src/gate/index.ts#scopesOfUseCase", + "reason": null + }, + { + "address": "spec:application.write-pause#design.validatorClosedEntry", + "state": "bound", + "comparison": "type", + "code": "src/gate/index.ts#closedEntryValidator", + "reason": null + }, + { + "address": "spec:application.write-pause#design.tableMaintenanceGates", + "state": "bound", + "comparison": "table", + "code": "src/gate/index.ts#gateTables", + "reason": null + }, + { + "address": "spec:command.command-declaration#design.typeSourceRef", + "state": "bound", + "comparison": "type", + "code": "src/read-model/index.ts#SourceRef", + "reason": null + }, + { + "address": "spec:command.command-declaration#design.typePermissionPolicy", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#PermissionPolicy", + "reason": null + }, + { + "address": "spec:command.command-declaration#design.typeExecutorResult", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#ExecutorResult", + "reason": null + }, + { + "address": "spec:command.command-declaration#design.typeBounds", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#Bounds", + "reason": null + }, + { + "address": "spec:command.command-pipeline#design.typePipelineCall", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#PipelineCall", + "reason": null + }, + { + "address": "spec:command.command-pipeline#design.typeCommandResponse", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#CommandResponse", + "reason": null + }, + { + "address": "spec:command.command-pipeline#design.validatorCommandResponse", + "state": "bound", + "comparison": "type", + "code": "src/command/index.ts#commandResponseValidator", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.typeCausedBy", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#CausedBy", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.validatorCausedBy", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#causedByValidator", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.typeOperationRef", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#OperationRef", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.validatorOperationRef", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#operationRefValidator", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.typeEventEnvelope", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#EventEnvelope", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.validatorEventEnvelope", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#eventEnvelopeValidator", + "reason": null + }, + { + "address": "spec:context.event-envelope#design.typeEnvelopeInput", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#EnvelopeInput", + "reason": null + }, + { + "address": "spec:context.journal#design.fnCreateJournal", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#createJournal", + "reason": null + }, + { + "address": "spec:context.journal#design.typeJournal", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#Journal", + "reason": null + }, + { + "address": "spec:context.journal#design.typeStreamMeta", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#StreamMeta", + "reason": null + }, + { + "address": "spec:context.queries#design.typeQueryArgs", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#GetArgs", + "reason": null + }, + { + "address": "spec:context.queries#design.typePageLimit", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#PageLimit", + "reason": null + }, + { + "address": "spec:context.queries#design.fnBoundedPage", + "state": "bound", + "comparison": "type", + "code": "src/context/index.ts#boundedPage", + "reason": null + }, + { + "address": "spec:application.generation-registry#design.validatorBatchCursor", + "state": "ahead", + "comparison": "type", + "code": "src/read-model/index.ts#batchCursorValidator", + "reason": "the history view's build adds sourceIndex" + }, + { + "address": "spec:application.generation-registry#design.tableGenerationProgress", + "state": "ahead", + "comparison": "table", + "code": "src/read-model/index.ts#readModelTables", + "reason": "its cursor, through validatorBatchCursor" + }, + { + "address": "spec:application.rebuild#design.typeRebuildConfig", + "state": "ahead", + "comparison": "type", + "code": "src/read-model/index.ts#RebuildConfig", + "reason": "the history view's build adds history targets" + }, + { + "address": "spec:application.rebuild#design.fnBatchSizeFor", + "state": "ahead", + "comparison": "type", + "code": "src/read-model/index.ts#batchSizeFor", + "reason": "the history view's build takes a history projection" + }, + { + "address": "spec:application.rebuild#design.fnResumeChain", + "state": "ahead", + "comparison": "typeWithoutCtx", + "code": "src/read-model/index.ts#resumeChain", + "reason": "through typeRebuildConfig, its ctx erased" + }, + { + "address": "spec:command.command-declaration#design.typeReadModelBinding", + "state": "ahead", + "comparison": "type", + "code": "src/read-model/index.ts#ReadModelBinding", + "reason": "the history view's build binds history and aggregate projections" + }, + { + "address": "spec:command.command-pipeline#design.fnWriteReadModels", + "state": "ahead", + "comparison": "type", + "code": "src/read-model/index.ts#writeReadModels", + "reason": "through typeReadModelBinding" + }, + { + "address": "spec:command.command-declaration#design.typeRetention", + "state": "ahead", + "comparison": "type", + "code": "src/command/index.ts#Retention", + "reason": "a receipt's tombstone expiry" + }, + { + "address": "spec:context.journal#design.typeStreamRegistration", + "state": "ahead", + "comparison": "type", + "code": "src/context/index.ts#StreamRegistration", + "reason": "baselines and migration, and the deferred streamParts for the derived mapping" + }, + { + "address": "spec:context.journal#design.typeLoadedStream", + "state": "ahead", + "comparison": "type", + "code": "src/context/index.ts#LoadedStream", + "reason": "the deferred streamParts" + }, + { + "address": "spec:context.journal#design.fnLoad", + "state": "ahead", + "comparison": "typeWithoutCtx", + "code": "src/context/index.ts#load", + "reason": "through typeStreamRegistration and typeLoadedStream, its ctx erased" + }, + { + "address": "spec:context.journal#design.fnAppend", + "state": "ahead", + "comparison": "typeWithoutCtx", + "code": "src/context/index.ts#append", + "reason": "through typeLoadedStream, its ctx erased" + }, + { + "address": "spec:context.queries#design.fnDefineGet", + "state": "ahead", + "comparison": "type", + "code": "src/context/index.ts#defineGet", + "reason": "through typeStreamRegistration" + }, + { + "address": "spec:context.queries#design.fnDefineList", + "state": "ahead", + "comparison": "type", + "code": "src/context/index.ts#defineList", + "reason": "through typeStreamRegistration" + }, + { + "address": "spec:command.command-declaration#design.typeExecutor", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "differs only in ctx" + }, + { + "address": "spec:command.command-declaration#design.typeAdmissionPolicy", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "differs only in ctx" + }, + { + "address": "spec:application.write-pause#design.fnCloseScope", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "differs only in ctx" + }, + { + "address": "spec:application.write-pause#design.fnResumeScope", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "differs only in ctx" + }, + { + "address": "spec:command.command-declaration#design.typeCommandDeclaration", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "leads the code and differs in ctx, in its executor and admission" + }, + { + "address": "spec:command.command-declaration#design.fnPublicCommand", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "leads the code and differs in ctx, through typeCommandDeclaration" + }, + { + "address": "spec:command.command-declaration#design.fnInternalCommand", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "leads the code and differs in ctx, through typeCommandDeclaration" + }, + { + "address": "spec:command.command-pipeline#design.fnRunPipeline", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "leads the code and differs in ctx, through typeCommandDeclaration" + }, + { + "address": "spec:command.command-pipeline#design.fnRelayFailure", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "leads the code and differs in ctx, through typeCommandDeclaration" + } + ] +} From 4c95892ab4c986989bce88d61a99f88fd29bf7bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:43:24 +0200 Subject: [PATCH 16/60] design: the register cites an open question by its text, and check.py verifies it Every specQuestion source names its Spec and the opening of the question it was written for, resolved from the commit that introduced it, in place of a position that moved and that collides with the entry-address grammar. 151 sources rewritten; six whose question was answered and removed keep their last text with open: false, which check.py admits only on a decided or folded row. test_decisions.py asserts what holds at every commit, and CI runs it. OD-162 and OD-163 record the owner's rulings of 2026-10-04 on the aggregate's reach and on what ready states. Written by gpt-6.1-sol (job-mut363o8-7111f411) from the unit's rulings. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/ci.yml | 3 +- design/decisions/register.json | 959 ++++++++++++++++++--------------- design/tools/check.py | 20 +- design/tools/decisions.py | 45 +- design/tools/test_decisions.py | 104 ++-- 5 files changed, 639 insertions(+), 492 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e6cb5c2..025507c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,8 @@ jobs: with: python-version: "3.x" - run: npm ci - - run: python3 design/tools/check.py + - run: PYTHONDONTWRITEBYTECODE=1 python3 design/tools/check.py + - run: PYTHONDONTWRITEBYTECODE=1 python3 -m unittest design/tools/test_decisions.py - run: npm run typecheck - run: npm run lint - run: npm run format:check diff --git a/design/decisions/register.json b/design/decisions/register.json index 06e4c1a..bef48b6 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -149,9 +149,9 @@ }, { "kind": "specQuestion", - "ref": "spec:platform.acceptance-contract#2", - "file": "design/specs/platform/acceptance-contract.sdp.md", - "line": 25 + "spec": "spec:platform.acceptance-contract", + "question": "Extension E-17: the doc says that a link between source and test is not a passing run and that the first experiment passes when every Layer 0, 1 and 2 scenario passes, and it does not say how a pass of the whole is established from runs; the option taken here is the acceptance check: the required scenarios are generated from the graph, one per example of a required row with its tier, composition and verifiers, and read against one run's record, so that a scenario with no verifier, with no result or with a result other than passed keeps the whole from passing; the alternative, a list of scenarios and verifiers kept by hand beside the tests, was not taken because the graph already holds each example's row, tier, composition and verifiers; the owner confirms (E-17, Acceptance scenarios, First experiment)", + "file": "design/specs/platform/acceptance-contract.sdp.md" }, { "kind": "extension", @@ -200,9 +200,9 @@ }, { "kind": "specQuestion", - "ref": "spec:application.first-experiment#7", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 65 + "spec": "spec:application.first-experiment", + "question": "Extension E-17, the rows the experiment requires: the doc says the experiment passes when every Layer 0, 1 and 2 scenario passes, and its one all-layer row, Sc ALL-1, applies to every installed layer; the option taken here requires the twenty-three rows the doc's table gives Layer 0, 1 or 2 and Sc ALL-1, each at the tier the acceptance contract names for it, so that the native proof of the audit and the diagnostic is part of the experiment; the owner confirmed both (E-17, First experiment, Sc ALL-1)", + "file": "design/specs/application/first-experiment.sdp.md" } ], "families": [ @@ -241,9 +241,10 @@ }, { "kind": "specQuestion", - "ref": "spec:application.first-experiment.native-acceptance-production-configuration#1", + "spec": "spec:application.first-experiment.native-acceptance-production-configuration", + "question": "The row's pass condition names concurrency and this example binds no concurrency claim: no native observation shows that the disposable backend's concurrency matches a release's, and the test shows only that the deployment's environment holds the three variables its `auth.config.ts` reads and no other; the owner rules whether that reading is enough for the row or the row needs an example that runs commands at once on the production composition (Sc L2-9, E-15)", "file": "design/specs/application/first-experiment.native-acceptance-production-configuration.sdp.md", - "line": 21 + "open": false } ], "families": [ @@ -358,9 +359,9 @@ }, { "kind": "specQuestion", - "ref": "spec:application.generation-registry#4", - "file": "design/specs/application/generation-registry.sdp.md", - "line": 36 + "spec": "spec:application.generation-registry", + "question": "Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, generation 1 starting as `building` like any other, so a read model added to a deployment that has history serves that history from its first switch and no transition claims coverage it did not build; a command that finds no generation to write fails as a technical failure and a query that finds no active generation fails the same way (E-8, D9, D19)", + "file": "design/specs/application/generation-registry.sdp.md" } ], "families": [ @@ -486,9 +487,9 @@ }, { "kind": "specQuestion", - "ref": "spec:platform.native-harness#2", - "file": "design/specs/platform/native-harness.sdp.md", - "line": 25 + "spec": "spec:platform.native-harness", + "question": "Extension E-15: the doc does not say what the fixture app contains, how a fault enters a run, what a test may observe, or what a test controls on a backend that offers no clock and no scheduler switch; the option taken here is the rules below; two of them read the doc for the owner: the production-configuration run of Sc L2-9 is taken as the scenarios routed to the production composition, where the corpus earlier asked for the full Layer 0 to 2 suite on a release build, and evidence records that back a pass claim are kept in the repository; whether the durations Layer 3 pins become configuration, so that a test can outwait them, is left to Layer 3; and because the Convex CLI reads `convex.json` and `package.json` from its working directory, a composition is a name, a project directory and a functions directory, the production composition's project directory is `example/` with a `package.json` that links to the repository's one, and both compositions' generated files are committed; the owner has not ruled on the layout (E-15, Acceptance scenarios, Sc L2-9)", + "file": "design/specs/platform/native-harness.sdp.md" }, { "kind": "extension", @@ -532,9 +533,9 @@ }, { "kind": "specQuestion", - "ref": "spec:application.projection-contract#2", - "file": "design/specs/application/projection-contract.sdp.md", - "line": 34 + "spec": "spec:application.projection-contract", + "question": "Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9)", + "file": "design/specs/application/projection-contract.sdp.md" } ], "families": [ @@ -578,9 +579,9 @@ }, { "kind": "specQuestion", - "ref": "spec:command.command-declaration#2", - "file": "design/specs/command/command-declaration.sdp.md", - "line": 35 + "spec": "spec:command.command-declaration", + "question": "Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration exists; the conditional dispatcher of `spec:command.outcome-boundary` is the one thing that would need such a map and brings it with it; this is a provisional reading the owner rules (E-7, D12, D18, OQ2)", + "file": "design/specs/command/command-declaration.sdp.md" } ], "families": [ @@ -656,15 +657,15 @@ }, { "kind": "specQuestion", - "ref": "spec:application.read-models#3", - "file": "design/specs/application/read-models.sdp.md", - "line": 51 + "spec": "spec:application.read-models", + "question": "Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field `entry` and the codes `unauthenticated` or `forbidden`; the owner confirmed the word, and nothing else of the shape is new (E-6, D7, D11, Law 5)", + "file": "design/specs/application/read-models.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:command.outcome-boundary#2", - "file": "design/specs/command/outcome-boundary.sdp.md", - "line": 39 + "spec": "spec:command.outcome-boundary", + "question": "Extension E-5: the doc says a query authorizes before it discloses and does not say how a refused query is answered; here a parent query's refusal is the same `RejectionData` a command's is, with the name of the entry that refused in the field `entry` and only the codes `unauthenticated` and `forbidden`, and a use case's own rejection is thrown as the kernel's bare `Rejection`, the way a context throws one, while a context query's transient refusal `writePaused` reaches the caller unchanged, in the transient shape with no `entry`, because it is not a refusal of the caller; the owner confirmed the shared shape, the two codes, the bare use-case rejection and the word entry for the field (E-5, D7, Law 5)", + "file": "design/specs/command/outcome-boundary.sdp.md" } ], "families": [ @@ -745,15 +746,15 @@ }, { "kind": "specQuestion", - "ref": "spec:application.first-experiment#3", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 61 + "spec": "spec:application.first-experiment", + "question": "Extension E-46: the doc asks for one more lifecycle command and one essential summary without naming them; the option taken here is `CancelOrder`, which releases the allocation, and the order summary read model (E-46, First experiment)", + "file": "design/specs/application/first-experiment.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:application.orders-inventory-example#1", - "file": "design/specs/application/orders-inventory-example.sdp.md", - "line": 27 + "spec": "spec:application.orders-inventory-example", + "question": "Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream budgets of the two stream types, the order of the two context calls and the history-dependent view Sc L2-6 builds are choices the doc leaves open; two of them are decided, that the stock item keeps totals only and `release` takes its quantities from the cancelled order's own lines, and that the order allocation history view stays in the experiment; the owner may substitute the others, and the experiment's terms move with them (E-46, E-2, E-9, First experiment)", + "file": "design/specs/application/orders-inventory-example.sdp.md" }, { "kind": "extension", @@ -800,9 +801,9 @@ }, { "kind": "specQuestion", - "ref": "spec:application.projection-contract#3", - "file": "design/specs/application/projection-contract.sdp.md", - "line": 35 + "spec": "spec:application.projection-contract", + "question": "The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9)", + "file": "design/specs/application/projection-contract.sdp.md" } ], "families": [ @@ -976,9 +977,9 @@ }, { "kind": "specQuestion", - "ref": "spec:command.tenancy-and-authority#3", - "file": "design/specs/command/tenancy-and-authority.sdp.md", - "line": 39 + "spec": "spec:command.tenancy-and-authority", + "question": "Extension E-37: the design takes grants as written by plain library helpers, `insertGrant` and `revokeGrant`, over which the application registers its own internal mutations, with a tenant's first grant created with admin access through the composition's own internal grant mutation, and later grants the same way or by whatever command the composition registers; the library registers no grant function and promises no recorded bootstrap, first-admin flow or invitation, which are an adopter's to build on the helpers (E-37, D11, Law 5)", + "file": "design/specs/command/tenancy-and-authority.sdp.md" } ], "families": [ @@ -1018,9 +1019,9 @@ }, { "kind": "specQuestion", - "ref": "spec:command.actor-and-scope#2", - "file": "design/specs/command/actor-and-scope.sdp.md", - "line": 32 + "spec": "spec:command.actor-and-scope", + "question": "Extension E-6: the tenant scope of an operation, of a command and of a query is the `tenantId` argument alone, so none takes a separate scope argument; this is a provisional reading the owner rules (E-6, Law 11, D11)", + "file": "design/specs/command/actor-and-scope.sdp.md" } ], "families": [ @@ -1064,9 +1065,9 @@ }, { "kind": "specQuestion", - "ref": "spec:facts.f11-components-have-no-ctx-auth#1", - "file": "design/specs/facts/f11-components-have-no-ctx-auth.sdp.md", - "line": 21 + "spec": "spec:facts.f11-components-have-no-ctx-auth", + "question": "Observed against the documentation on 2026-10-01: the components page says `ctx.auth` is not available within a component; on the pinned native backend, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0, `ctx.auth.getUserIdentity()` inside a component query returned the caller's identity, and `convex-test` 0.0.60 returns null for the same call; the design does not depend on which holds, because D11 passes the actor explicitly and no component function reads `ctx.auth`; whether this fact's wording and status follow the documentation or the backend is the owner's ruling; the design takes the provisional reading that the documentation's sentence stays the fact and that the Specs of the kernel, context and command families state no component function reads `ctx.auth` or `process.env` as the design's rule, which a lint check over `src/context` and every component directory of the fixture composition enforces (F11, D11)", + "file": "design/specs/facts/f11-components-have-no-ctx-auth.sdp.md" } ], "families": [ @@ -1105,33 +1106,33 @@ }, { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#4", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 62 + "spec": "spec:command.command-pipeline", + "question": "Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of `ConvexHttpClient` needs when it retries, and the internal entry always requires one (E-33, D6, Probe 1)", + "file": "design/specs/command/command-pipeline.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:command.idempotency-and-receipts#1", - "file": "design/specs/command/idempotency-and-receipts.sdp.md", - "line": 42 + "spec": "spec:command.idempotency-and-receipts", + "question": "Probe 1 showed on the pinned backend that a closed client leaves its mutation executed once or not at all, that a backend restart leaves it executed once, and that `ConvexHttpClient` does not retry, so a caller's retry is a second execution; whether the public entry requires a request key from callers of the HTTP client, or leaves it optional, is the owner's ruling; the design takes it optional on the public entry and required on the internal entry, a provisional reading the owner rules (Probe 1, D6, E-33)", + "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:command.idempotency-and-receipts#2", - "file": "design/specs/command/idempotency-and-receipts.sdp.md", - "line": 43 + "spec": "spec:command.idempotency-and-receipts", + "question": "Extension E-33: a public caller may supply a request key to opt into a receipt, and the internal entry always requires one; the doc lists the callers that need receipts and does not say whether a UI caller may opt in (E-33, D6)", + "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d06-idempotency-client-and-receipts#1", - "file": "design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md", - "line": 33 + "spec": "spec:decisions.d06-idempotency-client-and-receipts", + "question": "Probe 1 ran on 2026-10-01: the guarantee holds across a backend restart, a closed client leaves its mutation executed once or not at all, and the HTTP client does not retry; `ConvexHttpClient` is a Convex client the guarantee does not reach, so whether its callers join the callers that need receipts is the owner's ruling (Probe 1, D6)", + "file": "design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#1", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 38 + "spec": "spec:facts.probe-plan", + "question": "Probe 1 ran on 2026-10-01: a closed client leaves its mutation executed once or not at all, a backend restart leaves it executed once, and the HTTP client does not retry; whether callers of `ConvexHttpClient` must supply a request key is D6's question for the owner (Probe 1, D6)", + "file": "design/specs/facts/probe-plan.sdp.md" }, { "kind": "extension", @@ -1209,9 +1210,9 @@ }, { "kind": "specQuestion", - "ref": "spec:platform.native-harness#3", - "file": "design/specs/platform/native-harness.sdp.md", - "line": 26 + "spec": "spec:platform.native-harness", + "question": "Extension E-15: the design takes the fixture action `nonUiCaller:send`, which any authenticated client of the fixture composition may call to run any fixture command's internal entry under any namespace and actor kind, as the fixture's stand-in for trusted server code, kept out of the production composition; it is a provisional reading the owner rules, because within the fixture composition it lets a client do what `spec:command.tenancy-and-authority` refuses a client (E-15, D11, Sc L1-7)", + "file": "design/specs/platform/native-harness.sdp.md" } ], "families": [ @@ -1282,9 +1283,9 @@ }, { "kind": "specQuestion", - "ref": "spec:platform.native-harness#1", - "file": "design/specs/platform/native-harness.sdp.md", - "line": 24 + "spec": "spec:platform.native-harness", + "question": "Extension E-13: the doc says native acceptance runs with production authority and a disposable backend per test and does not say how a test obtains a signed identity, which a production issuer cannot mint for a throwaway backend; the option taken here is a fixture issuer: a composition that runs natively reads its issuer, application ID and key set from the deployment's environment variables, the harness sets the key set to a data URI whose private key it holds, and each caller under test is an ordinary client carrying a token the harness signs; the option first taken, the backend's admin key acting as an identity, was dropped because such a caller passes Convex's visibility check for internal functions, which `spec:platform.native-harness.admin-key-acting-as-identity-reaches-internal-function` shows; this reading reaches into production, because running the production composition natively with no changed file means the example application's `auth.config.ts` is a `customJwt` provider whose trust root is whatever the deployment's environment names, and a provider that fetches its keys from an issuer's own endpoint cannot be run on a disposable backend this way; the owner rules on both halves, the test identity and the production provider (E-13, S13, Sc L2-9, D11)", + "file": "design/specs/platform/native-harness.sdp.md" }, { "kind": "extension", @@ -1329,9 +1330,9 @@ }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#6", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 43 + "spec": "spec:facts.probe-plan", + "question": "Extension E-16: the doc says each probe is one small test on a native backend and that a probed fact is one a native backend test showed, and does not say how a test that settles an unknown states what it expects or what follows when the backend answers otherwise; the option taken here: a probe is written as example Specs that verify its fact, each bound to its native test; an example's bound values are the expectation written before the first run; a first run that shows another value is a finding recorded on the fact, and the example is then bound to what that release does and says so; an example fails when its run did not reach the boundary it is about; a later run on a new release that shows another value is again a finding, and the test is not repaired to keep the old value; a size is recorded and not asserted, while a limit the backend enforces is bound as observed; and what a local backend cannot answer is named on the example and stays open on the fact; the owner confirms (E-16, Probes, Acceptance scenarios)", + "file": "design/specs/facts/probe-plan.sdp.md" }, { "kind": "extension", @@ -1449,9 +1450,9 @@ }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#2", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 44 + "spec": "spec:facts.probe-plan", + "question": "Probe 3 ran on 2026-10-01 for latency on a local backend; a local backend has no function-call quota, so that half is the hosted example `spec:facts.f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls`, which only a hosted deployment can run (Probe 3, F4, D2, D8, E-59)", + "file": "design/specs/facts/probe-plan.sdp.md" } ], "families": [ @@ -1935,9 +1936,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:advanced.coalesced-recomputation#1", - "file": "design/specs/advanced/coalesced-recomputation.sdp.md", - "line": 29 + "spec": "spec:advanced.coalesced-recomputation", + "question": "The dirty-mark table, the recompute scheduling and the staleness field are deferred to the build on this trigger (D18, Decision method rule 4)", + "file": "design/specs/advanced/coalesced-recomputation.sdp.md" } ], "families": [ @@ -1969,9 +1970,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:advanced.cross-stream-online-rebuild#1", - "file": "design/specs/advanced/cross-stream-online-rebuild.sdp.md", - "line": 29 + "spec": "spec:advanced.cross-stream-online-rebuild", + "question": "The dependency protocol or the consistent source cut, and the online cutover for this class, are deferred to the build on this trigger (D18, Decision method rule 4)", + "file": "design/specs/advanced/cross-stream-online-rebuild.sdp.md" } ], "families": [ @@ -2003,9 +2004,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:advanced.ordered-consumer#1", - "file": "design/specs/advanced/ordered-consumer.sdp.md", - "line": 28 + "spec": "spec:advanced.ordered-consumer", + "question": "The sequence allocation, the consumer position record, the worker's batch bound and the skip authorization are deferred to the build on this trigger (D18, Decision method rule 4)", + "file": "design/specs/advanced/ordered-consumer.sdp.md" } ], "families": [ @@ -2037,9 +2038,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:advanced.trigger-table#1", - "file": "design/specs/advanced/trigger-table.sdp.md", - "line": 22 + "spec": "spec:advanced.trigger-table", + "question": "No trigger has fired; each capability's design is deferred until its activation record exists (D18, Decision method rule 4)", + "file": "design/specs/advanced/trigger-table.sdp.md" } ], "families": [ @@ -2071,9 +2072,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:agents.agent-runs#1", - "file": "design/specs/agents/agent-runs.sdp.md", - "line": 36 + "spec": "spec:agents.agent-runs", + "question": "The trigger has not fired; the run, proposal and attempt tables, the proposal schema, the policy engine's inputs and the provider adapters are deferred to the build (D17, Decision method rule 4)", + "file": "design/specs/agents/agent-runs.sdp.md" } ], "families": [ @@ -2105,21 +2106,21 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:agents.agent-runs#2", - "file": "design/specs/agents/agent-runs.sdp.md", - "line": 37 + "spec": "spec:agents.agent-runs", + "question": "OQ2 dependency: whether a rejected agent proposal must be recorded as a fact decides whether the generic internal dispatcher of D7 is needed at the agent boundary; the design carries it as a conditional (OQ2, D7)", + "file": "design/specs/agents/agent-runs.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:command.outcome-boundary#4", - "file": "design/specs/command/outcome-boundary.sdp.md", - "line": 41 + "spec": "spec:command.outcome-boundary", + "question": "OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides whether the generic internal dispatcher below exists; until then it is a conditional design and no command uses it (OQ2, D7)", + "file": "design/specs/command/outcome-boundary.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d07-rejections-thrown-not-stored#1", - "file": "design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md", - "line": 31 + "spec": "spec:decisions.d07-rejections-thrown-not-stored", + "question": "OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides where the nested mutation is required and whether the generic internal dispatcher exists (OQ2, D7)", + "file": "design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md" }, { "kind": "planAmbiguity", @@ -2159,9 +2160,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:agents.budget-accounting#1", - "file": "design/specs/agents/budget-accounting.sdp.md", - "line": 23 + "spec": "spec:agents.budget-accounting", + "question": "The reservation and usage records, the slot allocator and the reconciliation operation are deferred to the build on the agent trigger (D17, Decision method rule 4)", + "file": "design/specs/agents/budget-accounting.sdp.md" } ], "families": [ @@ -2193,27 +2194,27 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:facts.f17-migrations-fits-generation-backfill#1", - "file": "design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md", - "line": 22 + "spec": "spec:facts.f17-migrations-fits-generation-backfill", + "question": "Hosted quotas, sustained contention, automatic stall detection, backup replacement, old encrypted cursors, fence advancement, parallel callbacks and a rebuild across changing tenants are not run by these examples; the native backend evidence proves only the named boundaries and does not settle those behaviors.", + "file": "design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:application.rebuild#1", - "file": "design/specs/application/rebuild.sdp.md", - "line": 57 + "spec": "spec:application.rebuild", + "question": "`@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9)", + "file": "design/specs/application/rebuild.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d09-rebuild-online-by-default#1", - "file": "design/specs/decisions/d09-rebuild-online-by-default.sdp.md", - "line": 30 + "spec": "spec:decisions.d09-rebuild-online-by-default", + "question": "Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9)", + "file": "design/specs/decisions/d09-rebuild-online-by-default.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#4", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 41 + "spec": "spec:facts.probe-plan", + "question": "Probe 6 records native backend evidence on the pins named by F17: a row race, cancel and resume, thrown-batch rollback, restart, table scope and a parent batch returning a context cursor to the migrations driver; hosted quotas and sustained contention are not run.", + "file": "design/specs/facts/probe-plan.sdp.md" } ], "families": [ @@ -2254,9 +2255,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:processes.approvals#1", - "file": "design/specs/processes/approvals.sdp.md", - "line": 22 + "spec": "spec:processes.approvals", + "question": "The approvals table, its indexes and the approval command's declaration are deferred to the build on the process trigger; the rules here are the promise the build must keep (D16, Decision method rule 4)", + "file": "design/specs/processes/approvals.sdp.md" } ], "families": [ @@ -2287,9 +2288,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:processes.start-checkout-example#1", - "file": "design/specs/processes/start-checkout-example.sdp.md", - "line": 26 + "spec": "spec:processes.start-checkout-example", + "question": "The trigger has not fired; the workflow definition, the process record, the reservation's business expiry and the payment obligation's handler are deferred to the build until the operation spans time, external systems or human decisions (D16, Decision method rule 4)", + "file": "design/specs/processes/start-checkout-example.sdp.md" } ], "families": [ @@ -2320,9 +2321,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:processes.start-checkout-example#2", - "file": "design/specs/processes/start-checkout-example.sdp.md", - "line": 27 + "spec": "spec:processes.start-checkout-example", + "question": "Which of the three late-payment policies applies is a product decision the build records per deployment: reallocate, ask a person, or refund as a separately tracked operation (D16)", + "file": "design/specs/processes/start-checkout-example.sdp.md" }, { "kind": "productDecision", @@ -2359,9 +2360,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:processes.workflow-processes#1", - "file": "design/specs/processes/workflow-processes.sdp.md", - "line": 37 + "spec": "spec:processes.workflow-processes", + "question": "The trigger has not fired; the process record's table, the step signatures, the wait mechanism for an obligation's result and the deploy procedure are deferred to the build (D16, Decision method rule 4)", + "file": "design/specs/processes/workflow-processes.sdp.md" } ], "families": [ @@ -2392,9 +2393,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:processes.workflow-processes#2", - "file": "design/specs/processes/workflow-processes.sdp.md", - "line": 38 + "spec": "spec:processes.workflow-processes", + "question": "Whether an old run is kept, migrated or blocked on a given deploy is a per-release choice the build records; the README's determinism rule means keeping requires the old definition to stay registered under its version (D16, S11)", + "file": "design/specs/processes/workflow-processes.sdp.md" }, { "kind": "productDecision", @@ -2431,27 +2432,27 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.first-experiment#1", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 59 + "spec": "spec:application.first-experiment", + "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on this experiment's local measurement of component call cost, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, Probe 3)", + "file": "design/specs/application/first-experiment.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:context.context-component#1", - "file": "design/specs/context/context-component.sdp.md", - "line": 49 + "spec": "spec:context.context-component", + "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, with the hosted usage reading as the one measurement still to take, and a measured workload that misses an agreed target or a usage reading above an agreed share reopens it (OQ1, D2)", + "file": "design/specs/context/context-component.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d02-context-owns-state-and-journal#2", - "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md", - "line": 31 + "spec": "spec:decisions.d02-context-owns-state-and-journal", + "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, D2)", + "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.obligation-module#3", - "file": "design/specs/obligations/obligation-module.sdp.md", - "line": 55 + "spec": "spec:obligations.obligation-module", + "question": "OQ1 dependency: OQ1 is answered with a component for every context, so a local reaction's body runs as a nested mutation; if a measured workload reopens it, only the bodies change shape (OQ1, Probe 3)", + "file": "design/specs/obligations/obligation-module.sdp.md" }, { "kind": "planAmbiguity", @@ -2495,27 +2496,31 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.first-experiment#2", + "spec": "spec:application.first-experiment", + "question": "OQ3: the largest order `PlaceOrder` supports is a product decision; the experiment measures with a provisional maximum of 100 lines and reports the numbers per line so the owner can choose (OQ3)", "file": "design/specs/application/first-experiment.sdp.md", - "line": 60 + "open": false }, { "kind": "specQuestion", - "ref": "spec:application.parent-use-cases#1", + "spec": "spec:application.parent-use-cases", + "question": "OQ3: the largest order `PlaceOrder` supports is a product decision; the limit bullet below carries a placeholder and the first experiment measures with a provisional maximum (OQ3, D10)", "file": "design/specs/application/parent-use-cases.sdp.md", - "line": 54 + "open": false }, { "kind": "specQuestion", - "ref": "spec:context.batch-shaped-api#1", + "spec": "spec:context.batch-shaped-api", + "question": "OQ3: the largest order the placement command supports is a product decision; each operation's `maxStreams` is set from it and the default ceiling of 256 stands until then (OQ3, D10)", "file": "design/specs/context/batch-shaped-api.sdp.md", - "line": 26 + "open": false }, { "kind": "specQuestion", - "ref": "spec:decisions.d10-contexts-meet-in-parent-use-cases#1", + "spec": "spec:decisions.d10-contexts-meet-in-parent-use-cases", + "question": "OQ3: the largest order the placement command supports is a product decision; until it is made the limit is a placeholder in the first experiment (OQ3, D10)", "file": "design/specs/decisions/d10-contexts-meet-in-parent-use-cases.sdp.md", - "line": 31 + "open": false } ], "families": [ @@ -2551,9 +2556,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.first-experiment#4", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 62 + "spec": "spec:application.first-experiment", + "question": "Extension E-47: the doc lists what to count but not how; the option taken here is a measurement record per run captured from the disposable backend's function execution log, documents and bytes from the `usageStats` of the command's top-level completion record, and the calls per context from a pure test of the use case's executor, because the log holds no record of a component call inside a mutation, with any count the backend does not expose recorded as a gap; the owner has not ruled (E-47, First experiment)", + "file": "design/specs/application/first-experiment.sdp.md" }, { "kind": "extension", @@ -2595,9 +2600,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.first-experiment#5", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 63 + "spec": "spec:application.first-experiment", + "question": "Extension E-47, the documents a command reads: the design expected one `PlaceOrder` of N lines to read about N + 6 documents, and the pinned backend counted 3N + 5; the measurement run decides where the other 2N reads come from (E-47, F13)", + "file": "design/specs/application/first-experiment.sdp.md" } ], "families": [ @@ -2634,9 +2639,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.first-experiment#6", - "file": "design/specs/application/first-experiment.sdp.md", - "line": 64 + "spec": "spec:application.first-experiment", + "question": "Extensions E-8, E-13, E-15 and E-37, as the experiment's setup takes them: stock exists only through `ReceiveStock`, a run seeds its grants and makes the order summary writable with admin access before its first command, the production composition names no service issuer, its `auth.config.ts` reads its issuer from environment variables, and it is the Convex app whose project directory is `example/`; these are options taken here and the owner has not ruled (E-8, E-13, E-15, E-37, E-46)", + "file": "design/specs/application/first-experiment.sdp.md" } ], "families": [ @@ -2677,15 +2682,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.generation-registry#1", - "file": "design/specs/application/generation-registry.sdp.md", - "line": 33 + "spec": "spec:application.generation-registry", + "question": "Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` and `projectionMarkers` tables below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5)", + "file": "design/specs/application/generation-registry.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:application.rebuild#3", - "file": "design/specs/application/rebuild.sdp.md", - "line": 59 + "spec": "spec:application.rebuild", + "question": "Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9)", + "file": "design/specs/application/rebuild.sdp.md" }, { "kind": "extension", @@ -2728,9 +2733,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.generation-registry#2", - "file": "design/specs/application/generation-registry.sdp.md", - "line": 34 + "spec": "spec:application.generation-registry", + "question": "Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows and the markers among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57)", + "file": "design/specs/application/generation-registry.sdp.md" } ], "families": [ @@ -2766,9 +2771,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.generation-registry#3", - "file": "design/specs/application/generation-registry.sdp.md", - "line": 35 + "spec": "spec:application.generation-registry", + "question": "Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the restore's proof that the generation is still stranded, and `resumeChain` bumping it is the proof that it is not (E-42, F12)", + "file": "design/specs/application/generation-registry.sdp.md" } ], "families": [ @@ -2805,9 +2810,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.generation-registry#5", - "file": "design/specs/application/generation-registry.sdp.md", - "line": 37 + "spec": "spec:application.generation-registry", + "question": "Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight on the read model once per batch; the progress row is the one checkpoint of every batch whatever drives it (E-40, F1)", + "file": "design/specs/application/generation-registry.sdp.md" } ], "families": [ @@ -2844,9 +2849,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.parent-use-cases#2", - "file": "design/specs/application/parent-use-cases.sdp.md", - "line": 55 + "spec": "spec:application.parent-use-cases", + "question": "Extension E-41: the doc says a too-large operation is rejected or becomes a separate import command with honest partial progress; it does not say what the import command records.", + "file": "design/specs/application/parent-use-cases.sdp.md" }, { "kind": "extension", @@ -2886,9 +2891,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.parent-use-cases#3", - "file": "design/specs/application/parent-use-cases.sdp.md", - "line": 56 + "spec": "spec:application.parent-use-cases", + "question": "Extension E-44: the doc says keeping a refused request as a fact is a business policy chosen per command, and the executor signature is pinned by `spec:command.command-declaration`; what neither says is how a use case declares what a context's business failure means to it.", + "file": "design/specs/application/parent-use-cases.sdp.md" }, { "kind": "extension", @@ -2930,9 +2935,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.parent-use-cases#4", - "file": "design/specs/application/parent-use-cases.sdp.md", - "line": 57 + "spec": "spec:application.parent-use-cases", + "question": "Extension E-39: the doc fixes no order for a use case's context calls; the option taken here is one fixed order the executor states, the creating context first, with no failure handling of a later call, because the calls before it roll back with the mutation; the owner has not ruled (E-39, D1, D10)", + "file": "design/specs/application/parent-use-cases.sdp.md" } ], "families": [ @@ -2966,9 +2971,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.projection-contract#1", - "file": "design/specs/application/projection-contract.sdp.md", - "line": 33 + "spec": "spec:application.projection-contract", + "question": "Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input.", + "file": "design/specs/application/projection-contract.sdp.md" }, { "kind": "extension", @@ -3015,9 +3020,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.read-models#1", - "file": "design/specs/application/read-models.sdp.md", - "line": 49 + "spec": "spec:application.read-models", + "question": "Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw `InvalidCursor` at a switch; a parent list therefore pages with `paginator` of `convex-helpers`, as a context list does, and a pinned page is bounded on every run by the row cap and by the byte cap as `spec:context.queries` states it, the helper stopping at the row that reaches it and admitting that row whole, and answers `SplitRequired` beyond them (Probe 5, F13, D8, D9)", + "file": "design/specs/application/read-models.sdp.md" } ], "families": [ @@ -3055,9 +3060,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.read-models#2", - "file": "design/specs/application/read-models.sdp.md", - "line": 50 + "spec": "spec:application.read-models", + "question": "Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's pair moved into the active generation by `pageInGeneration`, and returns through `paginationResultValidator` with its rows mapped by `readModelView`, and a client pages every list by an explicit cursor pair with no hook; these are options taken here and the owner has not ruled (E-24, S4, Probe 5, D8)", + "file": "design/specs/application/read-models.sdp.md" } ], "families": [ @@ -3096,21 +3101,21 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.read-models#4", - "file": "design/specs/application/read-models.sdp.md", - "line": 52 + "spec": "spec:application.read-models", + "question": "Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1)", + "file": "design/specs/application/read-models.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:context.context-component#2", - "file": "design/specs/context/context-component.sdp.md", - "line": 50 + "spec": "spec:context.context-component", + "question": "Probe 3: the cost of one component call in latency and function-call quota decides where hot reads land; the latency is an order of magnitude read on a local backend, the quota needs a hosted deployment to read, and isolation itself stays (Probe 3, F4, D2, D8)", + "file": "design/specs/context/context-component.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d02-context-owns-state-and-journal#1", - "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md", - "line": 30 + "spec": "spec:decisions.d02-context-owns-state-and-journal", + "question": "Probe 3: the latency of one component call is measured and keeps every context a component; its function-call quota is a hosted usage reading, and isolation itself stays (Probe 3, D2, OQ1)", + "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md" }, { "kind": "planAmbiguity", @@ -3153,9 +3158,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.read-models#5", - "file": "design/specs/application/read-models.sdp.md", - "line": 53 + "spec": "spec:application.read-models", + "question": "Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 read-model rows written per command, both measured by the first experiment (E-45, D8)", + "file": "design/specs/application/read-models.sdp.md" }, { "kind": "extension", @@ -3194,9 +3199,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.rebuild#2", - "file": "design/specs/application/rebuild.sdp.md", - "line": 58 + "spec": "spec:application.rebuild", + "question": "Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component.", + "file": "design/specs/application/rebuild.sdp.md" }, { "kind": "extension", @@ -3245,9 +3250,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.restore#1", - "file": "design/specs/application/restore.sdp.md", - "line": 55 + "spec": "spec:application.restore", + "question": "Probe 7 observes local CLI replacement restoring the parent, Orders and Inventory documents with IDs and creation times; fresh replacement leaves scheduler tables empty and replacement in place keeps existing schedules; the complete Layer 2 restore drill, hosted dashboard restore, Workpool and Workflow remain open (Probe 7, F12, D19)", + "file": "design/specs/application/restore.sdp.md" } ], "families": [ @@ -3282,9 +3287,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.restore#2", - "file": "design/specs/application/restore.sdp.md", - "line": 56 + "spec": "spec:application.restore", + "question": "Extension E-42: the doc says restore runs with matching code and configuration, that domain, journal and read-model invariants hold, and that restore is tested; it does not list the checks or the record, and it does not say what a restore does to a rebuild that was in flight at the backup.", + "file": "design/specs/application/restore.sdp.md" }, { "kind": "extension", @@ -3328,9 +3333,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.restore#3", - "file": "design/specs/application/restore.sdp.md", - "line": 57 + "spec": "spec:application.restore", + "question": "Extension E-42, the stream check's batch size: `limitCheckBatch` states the read of a batch that folds one stream, and each further stream the same batch folds reads its own stored baseline event of at most `budgetBytes + 4,096 + 61` bytes; the batch size that keeps a batch of several folded streams under the 16 MiB read ceiling is not pinned (E-42, F13)", + "file": "design/specs/application/restore.sdp.md" } ], "families": [ @@ -3364,9 +3369,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.write-pause#1", - "file": "design/specs/application/write-pause.sdp.md", - "line": 34 + "spec": "spec:application.write-pause", + "question": "Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1)", + "file": "design/specs/application/write-pause.sdp.md" } ], "families": [ @@ -3408,15 +3413,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.actor-and-scope#1", - "file": "design/specs/command/actor-and-scope.sdp.md", - "line": 31 + "spec": "spec:command.actor-and-scope", + "question": "Extension E-6: the doc names the actor kinds, the envelope's actor field and the worker's two modes; the field names, the namespace union, the grant fields and the `authorize` signature are the design's, and the grant's `permission` string vocabulary is per product; the worker's two modes are one `Authority` shape, `{ actor, scope, mode }` with the literals `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated, where the delegation travels on the actor's own `onBehalfOf` and `delegationRef`; and the doc says a derived command carries a server namespace without naming it, so this design assigns `worker` to every command a reaction issues, which is the namespace Sc L1-7 refuses to a client and the one D6 lists among the receipted callers, and reserves `system` for the platform's own maintenance chains and operator operations that run a receipted command, such as a restore or a migration driver, so a `system` receipt is never a reaction's; the owner confirms both (E-6, E-54, D6, D11, D13, Sc L1-7)", + "file": "design/specs/command/actor-and-scope.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:command.tenancy-and-authority#2", - "file": "design/specs/command/tenancy-and-authority.sdp.md", - "line": 38 + "spec": "spec:command.tenancy-and-authority", + "question": "Extension E-6: the doc names the actor kinds and the worker's two modes but not the types; the actor, scope, namespace, grant and `Authority` shapes are the design's and are pinned once in `spec:command.actor-and-scope`, which also rules that a derived command's namespace is `worker` (E-6, D11)", + "file": "design/specs/command/tenancy-and-authority.sdp.md" }, { "kind": "extension", @@ -3460,9 +3465,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.actor-and-scope#3", - "file": "design/specs/command/actor-and-scope.sdp.md", - "line": 33 + "spec": "spec:command.actor-and-scope", + "question": "Extension E-6: the doc says a query authorizes before it discloses and does not say how; here a parent query calls `authorizeQuery`, which establishes and authorizes its actor through the same two helpers a command's entry uses and is generic over the parent's data model; the owner has not ruled (E-6, D11, Law 5)", + "file": "design/specs/command/actor-and-scope.sdp.md" } ], "families": [ @@ -3496,9 +3501,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-declaration#1", - "file": "design/specs/command/command-declaration.sdp.md", - "line": 34 + "spec": "spec:command.command-declaration", + "question": "Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per command instead of one, and the cheaper alternative the design refuted is one public export per command plus one generic internal dispatcher mutation keyed by command type, as D7's conditional dispatcher already does; it lost because trusted server callers would then reach every command through one untyped `internalMutation`, so a renamed handler or a broken argument contract would pass `tsc` at the caller and fail only at runtime, which is the check Sc L2-4 exists to keep before traffic, and because the receipt fingerprint's contract version would be looked up by string rather than typed; the owner may still prefer the dispatcher form once code generation makes the per-command internal entry free (E-7, D12, D7, Sc L2-4, Decision method rule 5)", + "file": "design/specs/command/command-declaration.sdp.md" }, { "kind": "extension", @@ -3538,9 +3543,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-declaration#3", - "file": "design/specs/command/command-declaration.sdp.md", - "line": 36 + "spec": "spec:command.command-declaration", + "question": "Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` and `writes`, each serving a cited rule of another Spec, and asks whether the owner accepts them as part of the one declaration; `bounds` is the one input bound in the corpus, `maxItems` and `maxBytes`, checked by the pipeline's step 1 and by no executor body, so `spec:application.parent-use-cases` reads it rather than declaring a bound of its own; `writes` is required on every declaration, because an absent list would be an unchecked one, and `readModels` is optional, absent meaning none, which the owner has not ruled; `writes` names the context and stream type pairs the executor may write, from which the pipeline's step 7 derives the source scopes the write pause closes for a consistent cut and which step 9 proves against the `streams` entries the executor returns, because a use case that writes a source stream without maintaining the paused view would otherwise pass the gate; the declaration still imports nothing from the obligation family, so a command's static reactions are not a field here but the `createObligation` calls of its executor, as `spec:obligations.fan-out-and-chains` rules under E-54 (E-38, E-8, E-54, D6, D9, D10, D19, Thesis)", + "file": "design/specs/command/command-declaration.sdp.md" }, { "kind": "extension", @@ -3585,9 +3590,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#1", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 59 + "spec": "spec:command.command-pipeline", + "question": "Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member carries the declaration's result and whose replayed member carries `result` null because a receipt stores no result, so the entry's returns validator admits a replay as a value; affected IDs are application IDs, never private document IDs (E-30, D2, D6, D8)", + "file": "design/specs/command/command-pipeline.sdp.md" }, { "kind": "extension", @@ -3627,9 +3632,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#2", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 60 + "spec": "spec:command.command-pipeline", + "question": "Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event without saying how that cause reaches the pipeline; here the pipeline mints the operation ID once per top-level mutation with `crypto.randomUUID()` before the first context call, a duplicate returns the operation ID stored on the receipt, and the internal entry takes an optional `causedBy` argument that step 7 copies onto the `OperationRef` when present, so a reaction that issues a derived command passes `causedBy` of kind `event` naming its publication event and the envelope's `event` variant has exactly one producer, while an entry called without it mints `causedBy` of kind `command` from the declaration's name; the obligation and attempt behind a derived command are found through its receipt, whose request key is the obligation's effect key, and never through the envelope (E-31, E-54, D2, D13, Vocab: operation)", + "file": "design/specs/command/command-pipeline.sdp.md" }, { "kind": "extension", @@ -3670,9 +3675,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#3", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 61 + "spec": "spec:command.command-pipeline", + "question": "Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7)", + "file": "design/specs/command/command-pipeline.sdp.md" }, { "kind": "extension", @@ -3712,9 +3717,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#5", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 63 + "spec": "spec:command.command-pipeline", + "question": "Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a `transactionLimits` option, the design passes none on a context call, and whether a call should reserve room with it for the work after it stays open (Probe 4, F13, S3)", + "file": "design/specs/command/command-pipeline.sdp.md" } ], "families": [ @@ -3751,9 +3756,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#6", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 64 + "spec": "spec:command.command-pipeline", + "question": "Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from its events, and a history read model from the events of every matching entry in one call per command, checks `writes` first, then that each bound read model has a generation to write, then the count of the rows it writes against `limitReadModelWritesPerCommand`, each failure a plain error, and the library helpers that step 9 calls are generic over the application's data model; the owner has not ruled on any of it (E-9, E-7, E-8, E-45, D8, D9)", + "file": "design/specs/command/command-pipeline.sdp.md" } ], "families": [ @@ -3790,9 +3795,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.command-pipeline#7", - "file": "design/specs/command/command-pipeline.sdp.md", - "line": 65 + "spec": "spec:command.command-pipeline", + "question": "Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists them, as rejection `invalidInput`, and treats a declaration name above `limitIdLength` as a defect, a plain error, because these fields become fields of the receipt row or of every event's envelope; the doc says events stay small and names no number; the owner has not ruled (E-34, D6, D12, D19)", + "file": "design/specs/command/command-pipeline.sdp.md" } ], "families": [ @@ -3826,9 +3831,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.idempotency-and-receipts#3", - "file": "design/specs/command/idempotency-and-receipts.sdp.md", - "line": 44 + "spec": "spec:command.idempotency-and-receipts", + "question": "Extension E-34: the doc says expiry is explicit and names no number; here the default retry window is 7 days per command, expiry is checked lazily at lookup so the core path needs no job, and a bounded per-tenant sweep deletes expired receipts in batches of at most 1,000; the tenant ID and the request key are bounded to 256 bytes of UTF-8, a declaration name above that bound is a defect and a plain error, and a receipt is bounded to 1,000 affected refs; the owner has not ruled (E-34, D6, D19, F13)", + "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "extension", @@ -3868,9 +3873,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.idempotency-and-receipts#4", - "file": "design/specs/command/idempotency-and-receipts.sdp.md", - "line": 45 + "spec": "spec:command.idempotency-and-receipts", + "question": "Extension E-36: the doc says the fingerprint covers business input and its contract version; here it is the SHA-256 digest, computed with the Convex runtime's `crypto.subtle.digest`, over the canonical JSON of the business input with object keys sorted, followed by the contract version; the outside facts the executor captures travel beside the input and are excluded, so a retry that captures a fresher fact is not a conflict, which the decider contract cites; a change to the canonical form is a contract version bump (E-36, D6, D3)", + "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "extension", @@ -3909,9 +3914,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.idempotency-and-receipts#5", - "file": "design/specs/command/idempotency-and-receipts.sdp.md", - "line": 46 + "spec": "spec:command.idempotency-and-receipts", + "question": "Extension E-39: the doc says a client-generated entity ID plus a uniqueness check gives one entity on a UI double submit and does not say what the second submit is told; here the second submit is answered with the rejection `entityExists` naming the existing entity, not with an idempotent success, because no receipt exists on the UI path to replay an outcome from and the client already holds the entity ID it needs to read the result; the owner may prefer an idempotent success, which would need a receipt on every create (E-39, D6, Sc L1-4)", + "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "extension", @@ -3950,9 +3955,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.outcome-boundary#1", - "file": "design/specs/command/outcome-boundary.sdp.md", - "line": 38 + "spec": "spec:command.outcome-boundary", + "question": "Extension E-5: the doc fixes the four outcomes and that a rejection is a structured `ConvexError`, but not the data shape or the code list; the shape and the platform codes below are the design's, and the domain codes are closed per declaration (E-5, D4, D7)", + "file": "design/specs/command/outcome-boundary.sdp.md" }, { "kind": "extension", @@ -3991,9 +3996,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.outcome-boundary#3", - "file": "design/specs/command/outcome-boundary.sdp.md", - "line": 40 + "spec": "spec:command.outcome-boundary", + "question": "Extension E-35: the write pause of D9 refuses writers in its scope while a cross-stream history view rebuilds; the doc does not say how a refused writer is answered; this contract reserves the transient code `writePaused` for Package D so the refusal is retryable and stores nothing, which Package D confirms or replaces (E-35, D9, D4)", + "file": "design/specs/command/outcome-boundary.sdp.md" }, { "kind": "extension", @@ -4032,9 +4037,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.receipt-table#1", - "file": "design/specs/command/receipt-table.sdp.md", - "line": 28 + "spec": "spec:command.receipt-table", + "question": "Extension E-4: the doc fixes what a receipt holds and that expiry is explicit; the concrete fields, the three indexes, the tombstone shape and the defaults are the design's, and the expiry number is a product decision the declaration overrides (E-4, D6)", + "file": "design/specs/command/receipt-table.sdp.md" }, { "kind": "extension", @@ -4072,9 +4077,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:command.tenancy-and-authority#1", - "file": "design/specs/command/tenancy-and-authority.sdp.md", - "line": 37 + "spec": "spec:command.tenancy-and-authority", + "question": "Extension E-37: the doc says the parent authenticates and that grants are authoritative data, but not how an identity becomes an actor or how revocation takes effect; here the public entry and a parent query's `authorizeQuery` map `ctx.auth.getUserIdentity()` to a human actor, or a service actor when the issuer is a configured service issuer, grants live in a parent table by default and are revoked by deleting the row, with no cache, so a revoked grant fails the next command (E-37, D11)", + "file": "design/specs/command/tenancy-and-authority.sdp.md" }, { "kind": "extension", @@ -4117,9 +4122,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:constraints.events-stay-small#1", - "file": "design/specs/constraints/events-stay-small.sdp.md", - "line": 26 + "spec": "spec:constraints.events-stay-small", + "question": "Extension E-12: the payload byte bound is the design's number, 16 KiB, chosen with the envelope bound of 4 KiB so that a fold of 500 events of at most 20 KiB each stays under 9.8 MiB, under the 16 MiB read ceiling with headroom; the owner may set another, and the journal's 500-event fold bound moves with it; the reserved `baseline` event of E-25 is exempt from the 16 KiB bound and bounded by its stream type's `budgetBytes` instead, at most 512 KiB, because its payload is the migrated state of its stream, which the fold reads once as its start and never folds, and the owner confirms the exemption with E-25 (E-12, E-2, E-25, D19, F13)", + "file": "design/specs/constraints/events-stay-small.sdp.md" }, { "kind": "extension", @@ -4167,9 +4172,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.context-component#3", - "file": "design/specs/context/context-component.sdp.md", - "line": 51 + "spec": "spec:context.context-component", + "question": "Extension E-22: the doc says the parent calls the context's sanctioned operations and does not say how they are registered; this Spec registers one Convex mutation per sanctioned operation built by `defineOperation` with args `{ tenantId, actor, operation, input, facts }`, fixes the context ID as a code constant equal to the mount name, sets the per-call bounds in documents and in bytes derived from each stream type's budget, names the query and maintenance surface, and adds `convex-helpers` as the component's one dependency because the built-in `.paginate()` does not work in a component; the alternative of one generic `execute` mutation per context with an untyped command was not taken because D12 wants static exports with one canonical schema; the owner confirms (D10, D12, S4, E-22)", + "file": "design/specs/context/context-component.sdp.md" }, { "kind": "extension", @@ -4213,9 +4218,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.event-envelope#1", - "file": "design/specs/context/event-envelope.sdp.md", - "line": 32 + "spec": "spec:context.event-envelope", + "question": "Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the event ID as a version 4 UUID from the runtime's `crypto`; the owner confirms (D2, E-26)", + "file": "design/specs/context/event-envelope.sdp.md" }, { "kind": "extension", @@ -4253,9 +4258,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.event-envelope#2", - "file": "design/specs/context/event-envelope.sdp.md", - "line": 33 + "spec": "spec:context.event-envelope", + "question": "Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set at 256 bytes of UTF-8, 512 for an actor's ID, so the largest stored event, `limitEventBytes`, is derived and enforced and never assumed; the owner may set other numbers, and the fold bound of `spec:context.journal` moves with them (E-12, D19, F13)", + "file": "design/specs/context/event-envelope.sdp.md" } ], "families": [ @@ -4289,9 +4294,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.journal#1", - "file": "design/specs/context/journal.sdp.md", - "line": 45 + "spec": "spec:context.journal", + "question": "Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what a live command does on a stream the migration has not reached; this Spec fixes the representation, an event of the reserved type `baseline` whose payload holds the state and its schema version and is bounded by the stream's `budgetBytes` instead of the payload bound, a `baselineVersion` on the stream row, a `BaselineMigration` registered on the stream type whose `migrate` function computes the migrated state from the saved state, or, for a step that declares `readsHistory`, from the saved state and the events since the last baseline in the sweep only, the rule that `stateSchemaVersion` counts meaning only and lives on the registration, one helper `migrateToSchemaVersion` that writes the baseline chain, called by the adapter on load for a chain that reads no history and by the `writeBaseline` maintenance mutation for every chain, the code-older-than-data error, the `writeBaseline` mutation built by `defineMaintenance` and declared with the component's public `mutation` builder, the parent-side scheduled chain that drives it by cursor, the batch bound derived from `budgetBytes`, the upcasting rule for old event schema versions, the fold bound of 500 events with the refusals `rebuildStream` returns above it and for a stream awaiting its baseline, the retirement rule for a migration, and the payload byte check in `append`; the option of refusing commands on unmigrated streams with a transient code until the sweep arrives was not taken for a state-only migration, because it turns a deploy into a partial write pause the doc reserves for history-dependent views, and is taken for a history-reading migration, the exception, where it holds only the streams the sweep has not reached and keeps D3 whole on the command path, which the owner confirmed; a consequence the owner should weigh is that every baseline bumps its stream's version, so a reviewed version held across the sweep is answered `staleVersion` and re-reviewed rather than silently accepted, because Sc L1-10 forbids reinterpreting a reviewed version against fresh state and the baseline is a real event of the stream, while a live stream migrated on load never trips it because its expected-version check runs before the chain; and the driver reads the write pause's gate before every batch and reschedules itself when refused, so a sweep never changes a source under a paused rebuild's cut; the owner confirms (D5, D9, S4, Sc L1-10, E-2, E-8, E-12, E-25)", + "file": "design/specs/context/journal.sdp.md" }, { "kind": "extension", @@ -4337,9 +4342,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.persistence-adapter#1", - "file": "design/specs/context/persistence-adapter.sdp.md", - "line": 43 + "spec": "spec:context.persistence-adapter", + "question": "Extension E-23: the doc gives the sequence and the one-authority rule; this Spec fixes the request and result types, the operation runner with `plan` and `combine`, the aggregation of per-stream outcomes, the per-stream `dto` and `created` flag that the operation returns beside the kernel's outcome so the parent's projections and the backfill take one DTO shape, the semantics of a caller-named expected version including expected version 0 as the create's uniqueness check, the byte-derived bounds on streams and writes per call and the bound on the value a call returns, the on-load baseline migration of step 3a whose rules `spec:context.journal` carries under E-25, and the internal guards that turn a defect into a technical failure; this is a provisional reading the owner has not ruled (D3, D6, E-23, E-25)", + "file": "design/specs/context/persistence-adapter.sdp.md" }, { "kind": "extension", @@ -4379,21 +4384,21 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.queries#1", - "file": "design/specs/context/queries.sdp.md", - "line": 35 + "spec": "spec:context.queries", + "question": "Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` with its `splitCursor`, and that the `usePaginatedQuery` hook of `convex-helpers/react` then shows 40 of 45 rows; this design uses no hook across the boundary, and the examples are rerun when either pin moves (Probe 5, F15, S4, D8, E-24)", + "file": "design/specs/context/queries.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:decisions.d08-read-models-in-command#1", - "file": "design/specs/decisions/d08-read-models-in-command.sdp.md", - "line": 30 + "spec": "spec:decisions.d08-read-models-in-command", + "question": "Probe 5 ran on 2026-10-01: a parent query over component queries stays reactive, and pagination crosses the boundary with pages pinned by their end cursors; the client hook lost rows after a capped page split, which slice S2 settles before it builds a list (Probe 5, F15, D8)", + "file": "design/specs/decisions/d08-read-models-in-command.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#3", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 40 + "spec": "spec:facts.probe-plan", + "question": "Probe 5 ran on 2026-10-01: a parent query over a component query stays reactive, pages pinned by their end cursors stay contiguous, and a capped page crosses the boundary as `SplitRequired`; the `convex-helpers/react` hook then lost rows, and slice S2 decides how a context list is capped before it builds one (Probe 5, F15, S4, D8)", + "file": "design/specs/facts/probe-plan.sdp.md" } ], "families": [ @@ -4429,9 +4434,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.queries#2", - "file": "design/specs/context/queries.sdp.md", - "line": 36 + "spec": "spec:context.queries", + "question": "Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on every DTO, pagination through `paginator`, the item cap with a row cap of twice the item cap and a byte cap passed on every run, the relay of `pageStatus` and `splitCursor` unchanged, paging by an explicit cursor pair with no client hook, the parent query's one `authorizeQuery` call and its refusal as a rejection, the `maxEvents` argument of the `rebuild` query and its `budgetExhausted` refusal for a batching caller, and the fold refusal of the `rebuild` query; this is a provisional reading the owner has not ruled (D8, S4, E-24, E-42)", + "file": "design/specs/context/queries.sdp.md" }, { "kind": "extension", @@ -4476,9 +4481,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.queries#3", - "file": "design/specs/context/queries.sdp.md", - "line": 37 + "spec": "spec:context.queries", + "question": "A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed the word (D7, E-24)", + "file": "design/specs/context/queries.sdp.md" } ], "families": [ @@ -4511,9 +4516,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:context.tables#1", - "file": "design/specs/context/tables.sdp.md", - "line": 29 + "spec": "spec:context.tables", + "question": "Extension E-3: the doc names three indexes and the fields of the envelope; this Spec fixes the concrete tables, the operation index, the `streamParts` table for the derived mapping, the deleted-subject marker as `deletedAt` on the stream row and the size budgets; the owner confirms (D2, E-3)", + "file": "design/specs/context/tables.sdp.md" }, { "kind": "extension", @@ -4556,21 +4561,21 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:decisions.d03-events-only-source-of-next-state#1", - "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md", - "line": 26 + "spec": "spec:decisions.d03-events-only-source-of-next-state", + "question": "Gap, initial state: the v0.1 interface has none; add `initial()` or let `evolve` accept an empty state so a rebuild from the creation event has a defined start; ruled provisionally as E-1 in the kernel's initial-state decision (D3, E-1)", + "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:kernel.domain-kernel#2", - "file": "design/specs/kernel/domain-kernel.sdp.md", - "line": 38 + "spec": "spec:kernel.domain-kernel", + "question": "Extension E-1: the doc leaves open whether the interface gains `initial()` or `evolve` accepts an empty state; the initial-state decision rules for `initial()` provisionally (D3, E-1)", + "file": "design/specs/kernel/domain-kernel.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:kernel.initial-state#1", - "file": "design/specs/kernel/initial-state.sdp.md", - "line": 24 + "spec": "spec:kernel.initial-state", + "question": "Extension E-1: the doc offers `initial()` or an `evolve` that accepts an empty state and rules on neither; this Spec takes `initial()` provisionally and the owner confirms or reverses it (D3, E-1)", + "file": "design/specs/kernel/initial-state.sdp.md" }, { "kind": "extension", @@ -4609,15 +4614,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:decisions.d03-events-only-source-of-next-state#2", - "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md", - "line": 27 + "spec": "spec:decisions.d03-events-only-source-of-next-state", + "question": "Gap, state across several documents, its size budget: one document per stream stays the default while it fits the size budget, and where it cannot, the document writes are derived from the folded state in one place per context, as the kernel's state-document mapping decision states; the size budget there is a provisional number of E-2 (D3, E-2, OQ3)", + "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:kernel.state-document-mapping#1", - "file": "design/specs/kernel/state-document-mapping.sdp.md", - "line": 27 + "spec": "spec:kernel.state-document-mapping", + "question": "Extension E-2: the doc prefers one document per stream within a size budget and names no budget; this Spec sets `budgetBytes` as one number per stream type meaning the whole stream, the single document or the head and every part together, at most 256 KiB for the single mapping and at most 512 KiB over at most 32 parts for the derived mapping, provisionally, lets a stream type declare a smaller `budgetBytes` on its mapping, caps the derived budget at half the document ceiling because a baseline event holds the whole migrated state in one document, and derives every bound on streams per call, list page, backfill batch and baseline batch from that budget so that the 16 MiB read ceiling binds in bytes and not only in documents; the owner confirms the numbers (D3, D5, OQ3, F13, E-2, E-25)", + "file": "design/specs/kernel/state-document-mapping.sdp.md" }, { "kind": "extension", @@ -4661,15 +4666,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:decisions.d13-deferred-work-is-an-obligation#1", - "file": "design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md", - "line": 35 + "spec": "spec:decisions.d13-deferred-work-is-an-obligation", + "question": "Probe 7 observes the local scheduled reaction, states, scan boundary and both CLI replacement modes; the owner confirmed D13 on these observations; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain unprobed (Probe 7, D13, F12, F16)", + "file": "design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.do-nothing-check#1", - "file": "design/specs/obligations/do-nothing-check.sdp.md", - "line": 33 + "spec": "spec:obligations.do-nothing-check", + "question": "Probe 7 observes a plain scheduled local reaction and all five states on the pinned native backend; a failed-function scan counts zero documents and bytes but exhausts the 4096-read allowance at 4092 total rows; fresh CLI replacement leaves no scheduler intent, while replacement in place preserves later intent outside restored data; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open, and the owner confirmed D13 on these observations (Probe 7, F12, F16, F13)", + "file": "design/specs/obligations/do-nothing-check.sdp.md" } ], "families": [ @@ -4707,15 +4712,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:decisions.d19-operations-travel-with-capability#1", - "file": "design/specs/decisions/d19-operations-travel-with-capability.sdp.md", - "line": 31 + "spec": "spec:decisions.d19-operations-travel-with-capability", + "question": "Probe 7 pending: what a restore leaves of Workpool and Workflow state decides how much of the restore procedure the obligation module must rebuild (Probe 7, F12, D19)", + "file": "design/specs/decisions/d19-operations-travel-with-capability.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.retention-and-restore#3", - "file": "design/specs/obligations/retention-and-restore.sdp.md", - "line": 35 + "spec": "spec:obligations.retention-and-restore", + "question": "Probe 7 pending: what a restore leaves of Workpool and Workflow state decides whether the rebuild covers only the module's own dispatches or also passed-ownership work (Probe 7, F12, D19)", + "file": "design/specs/obligations/retention-and-restore.sdp.md" } ], "families": [ @@ -4750,9 +4755,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:effects.claim-call-settle#1", - "file": "design/specs/effects/claim-call-settle.sdp.md", - "line": 41 + "spec": "spec:effects.claim-call-settle", + "question": "Extension E-11: the doc gives the three steps and the three policies but no signatures; this Spec pins them and adds a fourth policy value `none`, which is the declared absence of a safe policy the doc describes (D14, E-11)", + "file": "design/specs/effects/claim-call-settle.sdp.md" }, { "kind": "extension", @@ -4791,15 +4796,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:effects.claim-call-settle#2", - "file": "design/specs/effects/claim-call-settle.sdp.md", - "line": 42 + "spec": "spec:effects.claim-call-settle", + "question": "Extension E-58: the doc gives no lease duration, key derivation, late evidence bound, reconcile shape or handling of a settle call that throws; this design sets the lease to the handler runtime's action timeout plus 5 minutes, derives the key from tenant and effect key, keeps ten late reports, defines a reconcile as a provider query that returns the same report union, and lets the action repeat a thrown settle call three times, with a duplicate rule in the settle, before leaving the attempt to lease expiry (D14, D15, F13, E-58)", + "file": "design/specs/effects/claim-call-settle.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:effects.external-effects#1", - "file": "design/specs/effects/external-effects.sdp.md", - "line": 42 + "spec": "spec:effects.external-effects", + "question": "Extension E-58: the doc does not give the lease duration, the provider key derivation, the late evidence bound, the shape of a reconcile, or what the action does when its settle call throws; `spec:effects.claim-call-settle` pins them (D14, E-58)", + "file": "design/specs/effects/external-effects.sdp.md" }, { "kind": "extension", @@ -4841,15 +4846,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:effects.external-effects#2", - "file": "design/specs/effects/external-effects.sdp.md", - "line": 43 + "spec": "spec:effects.external-effects", + "question": "Extension E-51: a declined provider report settles the obligation as cancelled with `businessRejection` evidence, by the same reading as the local wrapper (D14, D4, E-51)", + "file": "design/specs/effects/external-effects.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.lifecycle-transitions#2", - "file": "design/specs/obligations/lifecycle-transitions.sdp.md", - "line": 26 + "spec": "spec:obligations.lifecycle-transitions", + "question": "Extension E-51: the doc says a known business rejection settles the business result but not which state it settles to; this design reads a body's business failure, which commits like a success, as succeeded with evidence naming its event, and a thrown rejection, which commits nothing, as cancelled with the settled result as `businessRejection` evidence, because cancelled means the effect will not happen and no call is in flight; the owner may prefer a seventh state (D13, D4, E-51)", + "file": "design/specs/obligations/lifecycle-transitions.sdp.md" }, { "kind": "extension", @@ -4891,15 +4896,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:effects.external-effects#3", - "file": "design/specs/effects/external-effects.sdp.md", - "line": 44 + "spec": "spec:effects.external-effects", + "question": "Decision method rule 4: the doc writes Layer 3 from what the first experiment shows, and this Spec and `spec:effects.claim-call-settle` are written before it runs; the lease durations, the settle repeats and the late-evidence bound of E-58 and the backoff shared under E-51 are provisional defaults until the experiment's measurements and Probe 7 confirm or replace them, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D14, D15, E-51, E-58)", + "file": "design/specs/effects/external-effects.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.obligation-module#4", - "file": "design/specs/obligations/obligation-module.sdp.md", - "line": 56 + "spec": "spec:obligations.obligation-module", + "question": "Decision method rule 4: the doc says Layers 0 to 2 get full detail, the first experiment runs, and Layer 3 is written from what it showed; this module and its children are written now, at the depth D13 to D15 give, with numeric defaults the doc does not give, the backoff and attempt budget of E-51, the sweeper's cadence and bounds of E-52, the fan-out bounds of E-54, the retention horizons of E-55, the lease and settle repeats of E-58 and the index set of E-57; every such number is a provisional default until the experiment's measurements and Probe 7 confirm or replace it, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D13, Probe 7, E-51, E-52, E-54, E-55, E-57, E-58)", + "file": "design/specs/obligations/obligation-module.sdp.md" }, { "kind": "planAmbiguity", @@ -4947,21 +4952,21 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:facts.f16-scheduled-functions-table-shows-failed-runs#1", - "file": "design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md", - "line": 21 + "spec": "spec:facts.f16-scheduled-functions-table-shows-failed-runs", + "question": "Seven-day retention and expiry, hosted dashboard restore, Workpool and Workflow are not run; the short native retention observation does not establish the documented window.", + "file": "design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:facts.probe-plan#5", - "file": "design/specs/facts/probe-plan.sdp.md", - "line": 42 + "spec": "spec:facts.probe-plan", + "question": "Probe 7 observes all five scheduler states, local CLI replacement into a fresh backend and in place, stored scheduler IDs, kept reactions, scheduled-argument limits and failed-function scan cost; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open before the decisions resting on those observations.", + "file": "design/specs/facts/probe-plan.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.obligation-module#1", - "file": "design/specs/obligations/obligation-module.sdp.md", - "line": 53 + "spec": "spec:obligations.obligation-module", + "question": "Probe 7 observes local scheduler states, short retention, both CLI replacement modes, scheduler-ID validation and the failed-function scan boundary; a stored `v.id(\"_scheduled_functions\")` can validate after fresh replacement while resolving to no row, so it is a typed reference and not proof of a live dispatch; seven-day expiry, hosted restore, Workpool and Workflow remain open, and the owner confirmed the do-nothing check's rejection on these observations (Probe 7, D13, F12, F16)", + "file": "design/specs/obligations/obligation-module.sdp.md" } ], "families": [ @@ -5002,15 +5007,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:kernel.decider-contract#1", - "file": "design/specs/kernel/decider-contract.sdp.md", - "line": 29 + "spec": "spec:kernel.decider-contract", + "question": "Extension E-20: the concrete generic parameters, the fields of `DecisionContext`, the `DomainEvent` shape, the at-least-one-event rule and the helper shapes are this design's; the owner confirms them before code names them (D3, E-20)", + "file": "design/specs/kernel/decider-contract.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:kernel.domain-kernel#1", - "file": "design/specs/kernel/domain-kernel.sdp.md", - "line": 37 + "spec": "spec:kernel.domain-kernel", + "question": "Extension E-20: the doc gives `decide(state, command, context)`, `fold(evolve, state, newEvents)` and the purity rule, and nothing about the concrete generic parameters, the fields of the decision context, the shape of a domain event, or the state-machine and invariant helpers; the decider contract fixes them and the owner confirms them before code names them (D3, E-20)", + "file": "design/specs/kernel/domain-kernel.sdp.md" }, { "kind": "extension", @@ -5048,9 +5053,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:kernel.outcome-model#1", - "file": "design/specs/kernel/outcome-model.sdp.md", - "line": 35 + "spec": "spec:kernel.outcome-model", + "question": "Extension E-21: the doc names the four outcomes and their commit behavior but not their TypeScript shape; this Spec fixes `Outcome`, `Rejection`, `CommittedOutcome`, `AffectedRef`, the rule that a committed outcome carries at least one event, and the three rejection codes the adapter reserves, `staleVersion`, `operationTooLarge` and `entityExists`, the last being the adapter's answer to a create planned at expected version 0 whose stream already exists, which is the uniqueness check D6 names for a client-generated entity ID; the owner confirms the shapes or renames the reserved codes before code names them (D4, D6, E-21)", + "file": "design/specs/kernel/outcome-model.sdp.md" }, { "kind": "extension", @@ -5089,9 +5094,10 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:kernel.state-document-mapping#2", + "spec": "spec:kernel.state-document-mapping", + "question": "OQ3: one document per stream as the default, and the largest order the placement command supports, are product decisions; the design assumes one document and leaves the maximum lines as a placeholder in the first experiment (OQ3, D10)", "file": "design/specs/kernel/state-document-mapping.sdp.md", - "line": 28 + "open": false }, { "kind": "planAmbiguity", @@ -5129,9 +5135,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.fan-out-and-chains#1", - "file": "design/specs/obligations/fan-out-and-chains.sdp.md", - "line": 30 + "spec": "spec:obligations.fan-out-and-chains", + "question": "Extension E-54: the doc bounds neither static fan-out, nor the dynamic fan-out batch, nor the chain depth, and it says where a static subscription's obligations are created without saying where the subscription is declared; this design allows 16 obligations per publishing transaction, 500 derived obligations per fan-out attempt with one child fan-out obligation per further page, and a causation depth of 8, and it reads the static subscription as the `createObligation` calls in the command's executor body, reviewed at build time and counted at creation, rather than a reactions field on the command declaration, because D12 lists no such field and the declaration is Layer 1 machinery that imports nothing from this family; the namespace a derived command carries, `worker`, is E-6's ruling on `spec:command.actor-and-scope`, and the path by which its causation reaches the pipeline, the internal entry's `causedBy` argument, is E-31's on `spec:command.command-pipeline`; the owner confirms the numbers and the reading (D12, D13, F13, Thesis, E-6, E-31, E-54)", + "file": "design/specs/obligations/fan-out-and-chains.sdp.md" }, { "kind": "extension", @@ -5175,9 +5181,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.lifecycle-transitions#1", - "file": "design/specs/obligations/lifecycle-transitions.sdp.md", - "line": 25 + "spec": "spec:obligations.lifecycle-transitions", + "question": "Extension E-10: the doc names the six states but not the allowed transitions or their causes; this Spec lists them and refuses every other transition (D13, E-10)", + "file": "design/specs/obligations/lifecycle-transitions.sdp.md" } ], "families": [ @@ -5210,9 +5216,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.local-reaction-wrapper#1", - "file": "design/specs/obligations/local-reaction-wrapper.sdp.md", - "line": 34 + "spec": "spec:obligations.local-reaction-wrapper", + "question": "Extension E-51: the doc does not give the backoff schedule, the default attempt budget, the default deadline or what a maintenance refusal does to the attempt count; this design uses exponential backoff from 1 second with base 2 capped at 1 hour, 8 attempts by default and no deadline by default, all per handler in the registry, and treats a transient `writePaused` or `capacity` refusal as a delay of the same attempt after `retryAfterMs` or 60 seconds; every number is a provisional default until the first experiment (D13, E-51, Decision method rule 4)", + "file": "design/specs/obligations/local-reaction-wrapper.sdp.md" } ], "families": [ @@ -5246,9 +5252,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.obligation-module#2", - "file": "design/specs/obligations/obligation-module.sdp.md", - "line": 54 + "spec": "spec:obligations.obligation-module", + "question": "Extension E-50: the doc does not say where the module lives; this design places it in the parent as a library plus the `obligations` and `obligationRepairs` tables with a static handler registry keyed by handler key and version, because the wrapper runs parent-side bodies as nested mutations and the record reuses the parent's actor and scope types; the alternative, a Convex component driven by function handles like Workpool, is not pre-empted (D13, D11, E-50)", + "file": "design/specs/obligations/obligation-module.sdp.md" }, { "kind": "extension", @@ -5288,9 +5294,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.operator-operations#1", - "file": "design/specs/obligations/operator-operations.sdp.md", - "line": 32 + "spec": "spec:obligations.operator-operations", + "question": "Extension E-53: the doc names the five operations and the repair record's fields but not their signatures or their transaction shape; this design makes them authorized parent mutations and queries that write the repair in the same transaction, refuses cancel and reconcile while a lease is live, and lets reconcile either mint a reconcile attempt that the claim mutation of `spec:effects.claim-call-settle` dispatches, or accept supplied provider evidence from needs attention (D13, D14, E-53)", + "file": "design/specs/obligations/operator-operations.sdp.md" }, { "kind": "extension", @@ -5335,9 +5341,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.record-contract#1", - "file": "design/specs/obligations/record-contract.sdp.md", - "line": 28 + "spec": "spec:obligations.record-contract", + "question": "Extension E-10: the doc lists the fields and the six states but not the concrete table, the index set, the payload bound or the evidence shapes; this Spec pins them, with the inline payload bounded at 64 KiB and completion evidence as a closed union; the doc names four meanings of needs attention, exhausted, uncertain, authority revoked and unsupported version, and this design adds two reasons the doc describes without naming, `recoveryFailing` for the sweeper's escalation when recovery itself keeps failing and `chainBound` for a reaction refused at the chain's depth bound, which the owner confirms (D13, E-10, E-52, E-54)", + "file": "design/specs/obligations/record-contract.sdp.md" }, { "kind": "extension", @@ -5378,15 +5384,15 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.record-contract#2", - "file": "design/specs/obligations/record-contract.sdp.md", - "line": 29 + "spec": "spec:obligations.record-contract", + "question": "Extension E-57: the sweeper and the retention batch are deployment-wide, so `by_status_next_attempt`, `by_status_lease_expiry` and `by_status_settled_at` lead with `status` rather than `tenantId`; every index a tenant-scoped query reads still leads with `tenantId`, and tenant fairness in the sweeper's scan order stays a policy to add when one tenant can starve another (D13, Law 11, E-57)", + "file": "design/specs/obligations/record-contract.sdp.md" }, { "kind": "specQuestion", - "ref": "spec:obligations.sweeper#3", - "file": "design/specs/obligations/sweeper.sdp.md", - "line": 38 + "spec": "spec:obligations.sweeper", + "question": "Extension E-57: the sweeper scans deployment-wide by status; tenant fairness in its order is a policy to add when one tenant can starve another (D13, E-57)", + "file": "design/specs/obligations/sweeper.sdp.md" }, { "kind": "extension", @@ -5426,9 +5432,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.retention-and-restore#1", - "file": "design/specs/obligations/retention-and-restore.sdp.md", - "line": 33 + "spec": "spec:obligations.retention-and-restore", + "question": "Extension E-55: the doc gives no retention horizon, compaction rule or batch bound; this design keeps a completed obligation for the longest repetition policy validity in the module and never less than 30 days, compacts `lastError.message` and `lateEvidence` after 7 days into a count, and deletes at most 500 rows per retention run (D19, F13, E-55)", + "file": "design/specs/obligations/retention-and-restore.sdp.md" }, { "kind": "extension", @@ -5468,9 +5474,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.retention-and-restore#2", - "file": "design/specs/obligations/retention-and-restore.sdp.md", - "line": 34 + "spec": "spec:obligations.retention-and-restore", + "question": "Extension E-56: the doc says restore starts with dispatch off but not how the switch works; this design reads a deployment environment variable in the parent's claim mutation only, where a call-mode claim defers its attempt without counting it and a reconcile-mode claim proceeds, sets it before the restore, adds a cursor-driven `rebuildSchedules` operation for a backlog larger than the sweeper's batch, and orders the two switches: `OBLIGATIONS_DISPATCH` goes off before the backup archive is restored and on last, and `rebuildSchedules` refuses to run while `MAINTENANCE_MODE` is `restore`, so it runs only after `spec:application.restore` has accepted the run and reopened writers (D19, F12, E-42, E-56)", + "file": "design/specs/obligations/retention-and-restore.sdp.md" }, { "kind": "extension", @@ -5516,9 +5522,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.sweeper#1", - "file": "design/specs/obligations/sweeper.sdp.md", - "line": 36 + "spec": "spec:obligations.sweeper", + "question": "Extension E-52: the doc says the sweeper is batched and bounded but gives no cadence, batch bound, grace period, rearm bound or time guard; this design runs every 60 seconds, examines at most 100 candidates and 100 expired leases per scan, stops a run after 500 ms of elapsed time by `performance.now()`, waits a grace of 120 seconds past the next attempt time, allows 5 rearms, and isolates each candidate in a nested mutation; the numbers are tested against the pinned Convex version (D13, D19, E-52)", + "file": "design/specs/obligations/sweeper.sdp.md" }, { "kind": "extension", @@ -5559,9 +5565,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:obligations.sweeper#2", - "file": "design/specs/obligations/sweeper.sdp.md", - "line": 37 + "spec": "spec:obligations.sweeper", + "question": "Probe 3 pending: the candidate bound of 100 is provisional; it assumes a nested `ctx.runMutation` costs a few milliseconds, which F4 records as unknown, so the bound is reset from the probe's measured cost so that a full scan of 200 nested calls fits inside the elapsed guard, and until then the guard rather than the count is what keeps a run under the mutation timeout (Probe 3, F4, F13, E-52)", + "file": "design/specs/obligations/sweeper.sdp.md" } ], "families": [ @@ -5595,9 +5601,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:operations.baseline-operations#1", - "file": "design/specs/operations/baseline-operations.sdp.md", - "line": 42 + "spec": "spec:operations.baseline-operations", + "question": "Extension E-43: the doc says audit is written inside the transaction and fails closed, that diagnostics hold no raw prompts, credentials or unbounded payloads, and that personal data sits behind references; it does not give the audit record, the diagnostic record or the reference.", + "file": "design/specs/operations/baseline-operations.sdp.md" }, { "kind": "extension", @@ -5640,9 +5646,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:operations.baseline-operations#2", - "file": "design/specs/operations/baseline-operations.sdp.md", - "line": 43 + "spec": "spec:operations.baseline-operations", + "question": "The retention and deletion policy's content is the owner's: which historical claims survive deletion and how long receipts, audit records and diagnostics are kept; the design gives the hooks and states no periods (D19)", + "file": "design/specs/operations/baseline-operations.sdp.md" }, { "kind": "productDecision", @@ -5679,9 +5685,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:platform.acceptance-contract#1", - "file": "design/specs/platform/acceptance-contract.sdp.md", - "line": 24 + "spec": "spec:platform.acceptance-contract", + "question": "Extension E-14: the doc's four tiers, domain, simulator, native and end to end, name no compile-time check, while Sc L2-4's pass condition is a build, type or registration check that fails before any traffic; the option taken here is the compiled tier, a compile with no backend of a typed caller that states the change, which asserts that `tsc` refuses it, run with every type check and recorded like any run, and this corpus reads the doc's end to end tier as the native backend tier on the production composition; the alternative, folding it into the native backend tier as a compile step that precedes the native run, was not taken because a native run needs a backend and the check needs none; the owner confirms (E-14, Sc L2-4, Acceptance scenarios)", + "file": "design/specs/platform/acceptance-contract.sdp.md" }, { "kind": "extension", @@ -5724,9 +5730,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:platform.transactional-domain-platform#1", - "file": "design/specs/platform/transactional-domain-platform.sdp.md", - "line": 44 + "spec": "spec:platform.transactional-domain-platform", + "question": "OQ5 asks whether the decisions move into SDP carriers; this corpus is that move, with ledger facts as constraint Specs, decisions as decision Specs that list the do-nothing option first, and scenarios as example Specs under the component that provides the capability, which is the form the doc's behavior rules with examples take here; the owner confirmed the mapping (OQ5)", + "file": "design/specs/platform/transactional-domain-platform.sdp.md" }, { "kind": "planAmbiguity", @@ -5763,9 +5769,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:platform.vocabulary#1", - "file": "design/specs/platform/vocabulary.sdp.md", - "line": 25 + "spec": "spec:platform.vocabulary", + "question": "OQ6, receipt: this design uses receipt for the stored outcome of a command for idempotency, while today's glossary uses receipt for a row that proves an effect happened; the owner answered OQ6 with receipt for the stored outcome of a command and completion evidence for the row that proves an effect happened (OQ6, Vocabulary)", + "file": "design/specs/platform/vocabulary.sdp.md" } ], "families": [ @@ -5796,9 +5802,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:platform.vocabulary#2", - "file": "design/specs/platform/vocabulary.sdp.md", - "line": 26 + "spec": "spec:platform.vocabulary", + "question": "OQ6, generation: this design uses generation for a numbered build of a read model, while today's glossary uses it for the attempt number of watched work; the owner answered OQ6 with generation for a numbered build of a read model and attempt for one try at an obligation (OQ6, Vocabulary)", + "file": "design/specs/platform/vocabulary.sdp.md" } ], "families": [ @@ -6330,9 +6336,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:platform.native-harness#4", - "file": "design/specs/platform/native-harness.sdp.md", - "line": 27 + "spec": "spec:platform.native-harness", + "question": "Extension E-59: the doc's native tier is a test on a real backend, S13 names a local one, and Sc L2-9 is read as the local observation; the doc does not say whether a native test runs on a hosted deployment, where alone Probe 3 can read function-call quota and where F12 and F16 keep parts that only documentation states; the option taken here: the same harness, run record and compositions run natively on one hosted development deployment in a Convex team and project of their own, selected by process variables under a test configuration of its own, one run at a time, from a workflow whose failure fails no other check, with one development deploy key limited to the actions `deployKeyActions` lists; the alternatives were each developer's own deployment, which still needs one more key for the continuous integration, a preview deployment per run, which on the Free and Starter plans expires by default five days after it is created, before F16's seven-day window, and a fresh development deployment per run, which needs a project key, a credential the docs give total control over a project; the team, the project, the plan and the key are the owner's to provide (E-59, Sc L2-9, F4, F12, F16, Probe 3, Probe 7)", + "file": "design/specs/platform/native-harness.sdp.md" } ], "families": [ @@ -6370,9 +6376,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.rebuild#6", - "file": "design/specs/application/rebuild.sdp.md", - "line": 66 + "spec": "spec:application.rebuild", + "question": "Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9)", + "file": "design/specs/application/rebuild.sdp.md" } ], "families": [ @@ -6405,9 +6411,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.rebuild#7", - "file": "design/specs/application/rebuild.sdp.md", - "line": 67 + "spec": "spec:application.rebuild", + "question": "The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's \"Verify coverage, then switch\" and Sc L2-6's \"writes reopen only after verification\" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6)", + "file": "design/specs/application/rebuild.sdp.md" } ], "families": [ @@ -6437,9 +6443,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.rebuild#8", - "file": "design/specs/application/rebuild.sdp.md", - "line": 68 + "spec": "spec:application.rebuild", + "question": "Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40)", + "file": "design/specs/application/rebuild.sdp.md" } ], "families": [ @@ -6470,9 +6476,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.projection-contract#5", - "file": "design/specs/application/projection-contract.sdp.md", - "line": 37 + "spec": "spec:application.projection-contract", + "question": "Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by `spec:application.history-projection#design.tableOrderAllocationHistory`; whether a row's `sourceVersions` may omit `tenantId`, equal to the row's on every entry, and the write rule compare three identity fields, is a choice the owner may take with the pinned conventions (E-9, Law 11, F13)", + "file": "design/specs/application/projection-contract.sdp.md" } ], "families": [ @@ -6503,9 +6509,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.history-projection#3", - "file": "design/specs/application/history-projection.sdp.md", - "line": 36 + "spec": "spec:application.history-projection", + "question": "The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13)", + "file": "design/specs/application/history-projection.sdp.md" } ], "families": [ @@ -6536,9 +6542,9 @@ "sources": [ { "kind": "specQuestion", - "ref": "spec:application.write-pause#2", - "file": "design/specs/application/write-pause.sdp.md", - "line": 40 + "spec": "spec:application.write-pause", + "question": "Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9)", + "file": "design/specs/application/write-pause.sdp.md" } ], "families": [ @@ -6561,6 +6567,65 @@ "decidedBy": null, "decidedOn": null, "ruling": null + }, + { + "id": "OD-162", + "title": "Whether the generation registry, the command declaration and the command pipeline pin the aggregate form.", + "sources": [ + { + "kind": "ownerQueue", + "ref": "O1", + "file": "design/STATE.md", + "line": 331 + } + ], + "families": [ + "application", + "command" + ], + "cites": [], + "provisionalReading": null, + "blocks": null, + "advisor": "domain", + "status": "decided", + "foldedInto": [], + "class": "owner", + "reason": "Owner ruling O1 of 2026-10-04, the aggregate form's reach.", + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": "owner", + "decidedOn": "2026-10-04", + "ruling": "The three Specs pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers, so their floor no longer waits on a scoped Spec. The owner chose, on 2026-10-04, from the main thread's options: \"Drop the aggregate form (Recommended)\": \"The three Specs pin the per-entity and history forms; the aggregate Spec states how it extends them when OD-075 triggers. Their floor stops waiting on a scoped Spec; history pairs stay 'ahead' until 5d.\"" + }, + { + "id": "OD-163", + "title": "What a stated ready means in this corpus.", + "sources": [ + { + "kind": "ownerQueue", + "ref": "O2", + "file": "design/STATE.md", + "line": 331 + } + ], + "families": [ + "platform" + ], + "cites": [], + "provisionalReading": null, + "blocks": null, + "advisor": "product", + "status": "decided", + "foldedInto": [], + "class": "owner", + "reason": "Owner ruling O2 of 2026-10-04, the meaning of ready.", + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": "owner", + "decidedOn": "2026-10-04", + "ruling": "A stated ready means approved to build, the Protocol's reading: recipe 1 is the build backlog and recipe 2 the drift alarm. No Spec states ready until the owner rules on it; the history projection may after the domain and operator passes. The owner chose, on 2026-10-04, from the main thread's options: \"Approved to build (Recommended)\": \"The Protocol's reading. Recipe 1 becomes the build backlog; the history projection could state ready after the domain and operator passes; roadmap 4e ('ready by family') changes meaning. No Spec states ready in this unit.\"" } ], "possiblySame": [ diff --git a/design/tools/check.py b/design/tools/check.py index 6970457..a8b2077 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -23,6 +23,8 @@ import subprocess import sys +from decisions import question_source_errors + DESIGN = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ROOT = os.path.dirname(DESIGN) PACKAGE = os.path.join(ROOT, "node_modules", "@libar-dev", "software-delivery-protocol") @@ -42,8 +44,8 @@ PROSE_MENTIONS = os.path.join(DESIGN, "tools", "prose-mentions.json") # An entry address, spec:#design. or #ui., as the Protocol's checked-mentions record rules it. # A token runs from `spec:` to a separator, loses trailing punctuation, and is checked whole, so a malformed -# key is refused rather than read as its valid prefix. A `#` that opens neither section is the register's -# own reference to an open question by number, which is not an address. +# key is refused rather than read as its valid prefix. Historical positional citations in prose +# are kept as written; question sources are checked separately by text. MENTION_TOKEN = re.compile(r"spec:[^\s`'\"()\[\]{}<>|,;]+") ADDRESS = re.compile(r"^(spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)*)#(design|ui)\.([a-z][A-Za-z0-9]*)$") # Where an address outside the Specs lives: the code, the tests, the register, the ledger and the work documents. @@ -147,6 +149,8 @@ def run(args): kinds = collections.Counter() readiness = collections.Counter() questions = {} +spec_files = {} +n_blocking = 0 cited_extensions = set() edge_gaps = [] for path in sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)): @@ -155,6 +159,7 @@ def run(args): raw = open(path, encoding="utf-8").read() front, body = raw.split("\n---\n", 1) sid = re.search(r"^id: (\S+)", front, re.M).group(1) + spec_files[sid] = os.path.relpath(path, ROOT) kind = re.search(r"^kind: (\w+)", front, re.M).group(1) kinds[kind] += 1 stated = re.search(r"^readiness: (\w+)", front, re.M).group(1) @@ -176,7 +181,8 @@ def run(args): cited_laws |= {int(x) for x in re.findall(r"\bLaw (\d+)", line)} cited_facts |= {int(x) for x in re.findall(r"\bF(\d+)\b", line)} if section == "Open" and line.startswith("- ["): - questions.setdefault(sid, []).append(line) + questions.setdefault(sid, []).append(re.sub(r"^- \[[^]]+\] ", "", line)) + n_blocking += int(line.startswith("- [blocking]")) if line.startswith("- [blocking]") and stated != "scoped": fail(f"{sid} carries a blocking question and states {stated}") family = sid.split(":")[1].split(".")[0] @@ -187,6 +193,12 @@ def run(args): for gap in edge_gaps: fail("cited without a constrainedBy edge (rubric 16): " + gap) +# 2a. The decision register's question sources resolve by authored text. +register = json.load(open(os.path.join(DESIGN, "decisions/register.json"), encoding="utf-8")) +for row in register["decisions"]: + for error in question_source_errors(row, questions, spec_files): + fail(row["id"] + ": " + error) + # 3. README.md against the Specs. readme = open(os.path.join(DESIGN, "README.md"), encoding="utf-8").read() expected_line = f"{n_specs} specs · {n_packs} packs · {n_anchors} anchors → {n_nodes} nodes · {n_edges} edges (0 errors, 0 warnings)" @@ -200,7 +212,7 @@ def run(args): if registered - cited_extensions: fail(f"extensions registered in README but cited by no Spec: E-{sorted(registered - cited_extensions, key=int)}") n_questions = sum(len(v) for v in questions.values()) -n_blocking = sum(1 for v in questions.values() for line in v if line.startswith("- [blocking]")) + for link in re.findall(r"\]\(([^)#]+)\)", readme): if not link.startswith("http") and not os.path.exists(os.path.join(DESIGN, link)): fail(f"README link does not resolve: {link}") diff --git a/design/tools/decisions.py b/design/tools/decisions.py index b116292..8b17bb0 100644 --- a/design/tools/decisions.py +++ b/design/tools/decisions.py @@ -45,6 +45,48 @@ def date(value): raise argparse.ArgumentTypeError("expected a date in YYYY-MM-DD form") +def question_opening(text): + """Keep the authored text through its first sentence.""" + match = re.search(r"[.?!](?=\s|$)", text) + return text[:match.end()] if match else text + + +def normalize_question(text): + return " ".join(text.split()) + + +def question_source_errors(row, questions, files): + """Check I3 sources against authored open questions, by text only.""" + errors = [] + required = {"kind", "spec", "question", "file"} + for source in row["sources"]: + if source.get("kind") != "specQuestion": + continue + closed = source.get("open") is False + if set(source) != required | ({"open"} if closed else set()): + errors.append("specQuestion requires kind, spec, question and file, with only open: false optional") + spec = source.get("spec") + question = source.get("question") + if not present(spec) or spec not in files: + errors.append("specQuestion names no Spec: " + repr(spec)) + continue + if source.get("file") != files[spec]: + errors.append("specQuestion file does not name its Spec: " + spec) + if not present(question): + errors.append("specQuestion requires non-empty question text") + continue + matches = sum(normalize_question(question_opening(text)) == normalize_question(question) + for text in questions.get(spec, [])) + if closed: + if row["status"] not in ("decided", "folded"): + errors.append("open: false requires a decided or folded row") + if matches: + errors.append("open: false question resolves again: " + spec) + elif matches != 1: + errors.append(f"specQuestion resolves to {matches} open questions: {spec}: {question}") + return errors + + def row_errors(row, units, root, row_ids): """Validate the merged row and every patch refusal.""" errors = [] @@ -258,7 +300,8 @@ def matches(row): if args.cites and args.cites not in row["cites"]: return False if args.spec: - refs = [source["ref"] for source in row["sources"] if source["kind"] in ("specQuestion", "specLine")] + refs = [source["spec"] if source["kind"] == "specQuestion" else source["ref"] + for source in row["sources"] if source["kind"] in ("specQuestion", "specLine")] if not any(ref == args.spec or ref.split("#")[0] == args.spec for ref in refs): return False if (args.spec or args.family or args.cites) and row["status"] == "decided": diff --git a/design/tools/test_decisions.py b/design/tools/test_decisions.py index 339fd75..5562e86 100644 --- a/design/tools/test_decisions.py +++ b/design/tools/test_decisions.py @@ -1,10 +1,9 @@ -"""Decision queries, patch refusals and the real register's graph coverage. +"""Decision queries, patch refusals and the real register's question sources. Run: python3 -m unittest design/tools/test_decisions.py Fixtures and mutation copies live in operating-system temporary directories. """ -import collections import contextlib import copy import difflib @@ -40,7 +39,7 @@ def lean(): def row(identifier, **changes): result = { "id": identifier, "title": "Keep a bounded context call", - "sources": [{"kind": "specQuestion", "ref": "spec:context.tables#1", "file": "design/specs/context/tables.sdp.md", "line": 1}], + "sources": [{"kind": "specQuestion", "spec": "spec:context.tables", "question": "Keep a bounded context call.", "file": "design/specs/context/tables.sdp.md"}], "families": ["context"], "cites": ["E-32", "F13"], "provisionalReading": "One bounded call", "blocks": None, "advisor": "convex", "status": "unsorted", "foldedInto": [], "class": None, "reason": None, "lean": None, @@ -153,7 +152,7 @@ def test_spec_family_citation_commands_show_open_rows(self): for args in [("--spec", "spec:context.tables"), ("--family", "context"), ("--cites", "E-32")]: with self.subTest(args=args): self.assertEqual(self.ids(*args), ["OD-001", "OD-002", "OD-003", "OD-004", "OD-007"]) - self.assertEqual(self.ids("--spec", "spec:context.tables#1", "--decided"), ["OD-005", "OD-006"]) + self.assertEqual(self.ids("--spec", "spec:context.tables", "--decided"), ["OD-005", "OD-006"]) self.assertEqual(self.ids("--spec", "spec:context.table"), []) self.assertEqual(self.ids("--cites", "E-3"), []) @@ -340,49 +339,76 @@ def test_spec_line_sources_can_be_queried(self): self.assertEqual(self.ids("--spec", "spec:command.command-pipeline"), ["OD-007"]) +class QuestionSourceTests(unittest.TestCase): + def setUp(self): + self.row = row("OD-001") + self.spec = "spec:context.tables" + self.files = {self.spec: "design/specs/context/tables.sdp.md"} + self.questions = {self.spec: ["Keep a bounded context call. Another sentence."]} + + def errors(self): + return tool.question_source_errors(self.row, self.questions, self.files) + + def test_opening_is_verbatim_and_matching_normalizes_only_whitespace(self): + self.assertEqual(tool.question_opening("Keep `spec:context.tables` at 1.5 bytes. Why?"), + "Keep `spec:context.tables` at 1.5 bytes.") + self.row["sources"][0]["question"] = "Keep a bounded\n context call." + self.assertEqual(self.errors(), []) + self.row["sources"][0]["question"] = "keep a bounded context call." + self.assertTrue(self.errors()) + + def test_missing_ambiguous_wrong_file_and_old_shape_are_refused(self): + for mutation in ("missing", "ambiguous", "file", "spec", "old", "line", "openTrue"): + with self.subTest(mutation=mutation): + saved_row = copy.deepcopy(self.row) + saved_questions = copy.deepcopy(self.questions) + source = self.row["sources"][0] + if mutation == "missing": self.questions[self.spec] = [] + elif mutation == "ambiguous": self.questions[self.spec] *= 2 + elif mutation == "file": source["file"] = "another.sdp.md" + elif mutation == "spec": source["spec"] = "spec:missing" + elif mutation == "old": + source.pop("spec") + source.pop("question") + source.update(ref="spec:context.tables#1", line=1) + elif mutation == "line": source["line"] = 1 + elif mutation == "openTrue": source["open"] = True + self.assertTrue(self.errors()) + self.row, self.questions = saved_row, saved_questions + + def test_removed_question_requires_closed_status_and_refuses_return(self): + self.row["sources"][0]["open"] = False + self.questions[self.spec] = [] + for status in tool.STATUSES: + self.row["status"] = status + with self.subTest(status=status): + self.assertEqual(bool(self.errors()), status not in ("decided", "folded")) + self.questions[self.spec] = ["Keep a bounded context call. Returned text."] + self.assertIn("open: false question resolves again", " ".join(self.errors())) + + class RealRegisterTests(unittest.TestCase): - def test_real_register_has_unique_rows_and_exact_recipe_20_coverage(self): + def test_real_register_has_unique_ids_and_resolving_question_sources(self): register = json.loads((ROOT / "design/decisions/register.json").read_text()) rows = register["decisions"] - self.assertGreaterEqual(len(rows), 147) ids = [r["id"] for r in rows] - self.assertEqual(ids, [f"OD-{i:03d}" for i in range(1, len(rows) + 1)]) - self.assertEqual(len(set(ids)), len(rows)) - for r in rows: - self.assertEqual(tool.row_errors(r, register["units"], ROOT, set(ids)), [], r["id"]) - self.assertTrue(all(target in ids for target in r["foldedInto"])) - if r["status"] in ("sorted", "waiting", "decided"): - self.assertIn(r["class"], tool.CLASSES) - self.assertTrue(tool.present(r["reason"])) - self.assertTrue(all(set(s) == {"kind", "ref", "file", "line"} for r in rows for s in r["sources"])) - products = [s["ref"] for r in rows for s in r["sources"] if s["kind"] == "productDecision"] - self.assertEqual(products, ["product/1", "product/2", "product/3"]) - self.assertEqual(len(register["possiblySame"]), 46) - self.assertEqual(register["schema"], 1) - self.assertEqual(register["units"], ["S3", "S4", "S5", "L3"]) - refs = collections.Counter(s["ref"] for r in rows for s in r["sources"] if s["kind"] == "specQuestion") - for decision in rows: - for source in decision["sources"]: - if source["kind"] != "specQuestion": - continue - identifier, number = source["ref"].rsplit("#", 1) - text = (ROOT / source["file"]).read_text() - self.assertEqual(re.search(r"^id: (\S+)", text, re.M).group(1), identifier) - lines = text.splitlines() - start = lines.index("### Open questions") - end = next((i for i in range(start + 1, len(lines)) if lines[i].startswith("## ")), len(lines)) - locations = [i + 1 for i in range(start + 1, end) if re.match(r"^- \[(?:non-blocking|blocking)\] ", lines[i])] - self.assertEqual(source["line"], locations[int(number) - 1]) + self.assertEqual(len(set(ids)), len(ids)) recipes = (ROOT / "node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md").read_text() body = re.search(r"## 20\..*?```js\n(.*?)```", recipes, re.S).group(1) - result = subprocess.run(["npx", "sdp", "q", body, "--root", "design", "--json"], cwd=ROOT, capture_output=True, text=True) + result = subprocess.run(["npx", "sdp", "q", body, "--root", ".", "--json"], + cwd=ROOT, capture_output=True, text=True) self.assertEqual(result.returncode, 0, result.stderr) graph = json.loads(result.stdout) - expected = collections.Counter(f"{spec['id']}#{i}" for spec in graph["specs"] for i, _ in enumerate(spec["questions"], 1)) - self.assertEqual(graph["totals"]["questions"], 144) - self.assertEqual(graph["totals"]["malformed"], 0) - self.assertEqual(refs, expected) - self.assertTrue(all(n == 1 for n in refs.values())) + self.assertEqual(graph["malformed"], []) + questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in graph["specs"]} + files = {} + for path in (ROOT / "design/specs").rglob("*.sdp.md"): + identifier = re.search(r"^id: (\S+)", path.read_text(), re.M).group(1) + files[identifier] = path.relative_to(ROOT).as_posix() + for decision in rows: + with self.subTest(row=decision["id"]): + self.assertEqual(tool.row_errors(decision, register["units"], ROOT, set(ids)), []) + self.assertEqual(tool.question_source_errors(decision, questions, files), []) if __name__ == "__main__": From 3a6f44af8e05cc1d22fe0365eff1d4e106d81f7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:47:22 +0200 Subject: [PATCH 17/60] design: the rebuild splits its history path out, and the aggregate form leaves the three built Specs (O1) spec:application.rebuild carried the online path, which src/read-model/rebuild.ts realizes, and the paused path of a history view, which no code realizes, under one identity. The paused path moves into spec:application.history-rebuild (defined), the moved text verbatim as decision 54 moved the projection forms: the two history types, the page call, the cursor, the start, the steps, the verify pass and the batch bound, the rules and flows under the pause, the pause length risk and its three open questions (OD-156, OD-157, OD-158). The entries both paths share stay in the rebuild and lead the code where a type names the history form: typeRebuildConfig, fnBatchSizeFor, limitBatchSize, limitPurgeBatch. The two paused examples move under the new Spec as spec:application.history-rebuild.write-pause-rebuild-interrupt and -abort. The new Spec depends on the rebuild; nothing depends back, so no cycle. O1: the generation registry, the command declaration and the command pipeline drop the aggregate form. The marker table, its index, its rules and its review bullet, the aggregate member of ReadModelBinding and the applyAggregate call of step 9 move to spec:application.aggregate-projection, which now states how the form extends the three when OD-075 triggers. None of the three depends on the aggregate Spec, and each one's floor now reaches ready. check.py: one failure left, the test name at tests/types/pinned.test-d.ts:74, which the next commit renames. Co-Authored-By: Claude Opus 5.5 --- design/README.md | 26 ++++--- design/specs/application.pack.sdp.md | 9 +-- .../application/aggregate-projection.sdp.md | 23 ++++-- .../specs/application/first-experiment.sdp.md | 1 + .../application/generation-registry.sdp.md | 22 ++---- .../application/history-projection.sdp.md | 2 +- .../specs/application/history-rebuild.sdp.md | 70 +++++++++++++++++++ ...-rebuild.write-pause-rebuild-abort.sdp.md} | 6 +- ...uild.write-pause-rebuild-interrupt.sdp.md} | 6 +- design/specs/application/rebuild.sdp.md | 35 ++-------- .../specs/command/command-declaration.sdp.md | 3 +- design/specs/command/command-pipeline.sdp.md | 5 +- design/specs/history-view.pack.sdp.md | 7 +- design/tools/prose-mentions.json | 4 +- 14 files changed, 142 insertions(+), 77 deletions(-) create mode 100644 design/specs/application/history-rebuild.sdp.md rename design/specs/application/{rebuild.write-pause-rebuild-abort.sdp.md => history-rebuild.write-pause-rebuild-abort.sdp.md} (92%) rename design/specs/application/{rebuild.write-pause-rebuild-interrupt.sdp.md => history-rebuild.write-pause-rebuild-interrupt.sdp.md} (95%) diff --git a/design/README.md b/design/README.md index d58ad70..e9bb9d6 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -239 specs · 6 packs · 142 anchors → 387 nodes · 1348 edges (0 errors, 0 warnings) +240 specs · 6 packs · 142 anchors → 388 nodes · 1363 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` @@ -69,7 +69,7 @@ Detail follows the build (decision method, rule 4). Full means interfaces, TypeS | 10 | Command declaration and bindings: one declaration per command, two static exports, generation later | 1 to 2 | full | [`command-declaration`](specs/command/command-declaration.sdp.md) | | 11 | Parent use cases: contexts meet only in the parent, in one transaction, one call per context | 2 | full | [`parent-use-cases`](specs/application/parent-use-cases.sdp.md) | | 12 | Read models and projection contract: reads inside the command, the read-need table, one projection for live update and rebuild | 2 | full | [`read-models`](specs/application/read-models.sdp.md), [`projection-contract`](specs/application/projection-contract.sdp.md), [`history-projection`](specs/application/history-projection.sdp.md), [`aggregate-projection`](specs/application/aggregate-projection.sdp.md) | -| 13 | Rebuild: generations, backfill, write pause | 2 | full | [`rebuild`](specs/application/rebuild.sdp.md), [`generation-registry`](specs/application/generation-registry.sdp.md), [`write-pause`](specs/application/write-pause.sdp.md) | +| 13 | Rebuild: generations, backfill, write pause | 2 | full | [`rebuild`](specs/application/rebuild.sdp.md), [`history-rebuild`](specs/application/history-rebuild.sdp.md), [`generation-registry`](specs/application/generation-registry.sdp.md), [`write-pause`](specs/application/write-pause.sdp.md) | | 14 | Restore and baseline operations: the restore drill, audit fails closed, diagnostics never abort, bounds, retention | 2 | full | [`restore`](specs/application/restore.sdp.md), [`baseline-operations`](specs/operations/baseline-operations.sdp.md), [`events-stay-small`](specs/constraints/events-stay-small.sdp.md), [`bulk-operations-bounded`](specs/constraints/bulk-operations-bounded.sdp.md) | | 15 | First experiment and cost budgets: Orders and Inventory, the measurements, the six cost targets | 2 | full | [`first-experiment`](specs/application/first-experiment.sdp.md), [`orders-inventory-example`](specs/application/orders-inventory-example.sdp.md), the six cost constraints in [`specs/constraints/`](specs/constraints/) | | 16 | Obligations: the record, lifecycle, wrapper, sweeper, operator operations, fan-out, retention, restore, the do-nothing check | 3 | full where D13 rules | [`obligation-module`](specs/obligations/obligation-module.sdp.md) and its eight children in [`specs/obligations/`](specs/obligations/) | @@ -85,13 +85,13 @@ Detail follows the build (decision method, rule 4). Full means interfaces, TypeS | all | `platform`, `laws`, `decisions`, `facts` | [`foundation`](specs/foundation.pack.sdp.md) | 98 | | 0 | `kernel` | [`kernel-and-context`](specs/kernel-and-context.pack.sdp.md) | 7 | | 1 | `context`, `command` | [`kernel-and-context`](specs/kernel-and-context.pack.sdp.md) (19 with the kernel), [`command-pipeline`](specs/command-pipeline.pack.sdp.md) | 12 + 24 | -| 2 | `application`, `operations`, `constraints` | [`application`](specs/application.pack.sdp.md) | 50 | +| 2 | `application`, `operations`, `constraints` | [`application`](specs/application.pack.sdp.md) | 51 | | 3 | `obligations`, `effects` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 22 (of the pack's 43) | | 4 | `processes` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 6 | | 5 | `agents` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 7 | | 6 | `advanced` | [`durable-and-later`](specs/durable-and-later.pack.sdp.md) | 8 | -One pack follows a capability rather than a layer. [`history-view`](specs/history-view.pack.sdp.md) gathers, in reading order and across packages, the fifteen Specs the history view rests on, so its Design Review page shows that design at the rung each part has reached (`PLAN.md` 6.7). +One pack follows a capability rather than a layer. [`history-view`](specs/history-view.pack.sdp.md) gathers, in reading order and across packages, the sixteen Specs the history view rests on, so its Design Review page shows that design at the rung each part has reached (`PLAN.md` 6.7). Counts by kind and by stated readiness are derived, not kept here: `npx sdp census` writes the census, and the session check prints the readiness tally. Every Layer 4 to 6 non-example Spec states `scoped`, held by its deferral; F17 states `defined` with its native Probe 6 evidence. Nothing states `ready`. Every pack carries `modelRefs: [spec:platform.vocabulary]`; the application pack also refs the example domain's model. @@ -155,7 +155,7 @@ Every row of the doc's acceptance table is an example Spec that `refines` and `v | L2-3 | Orders of 1 line, 10 lines and the maximum | [`spec:application.first-experiment`](specs/application/first-experiment.sdp.md) | [`.order-of-1-line`](specs/application/first-experiment.order-of-1-line.sdp.md), [`.order-of-10-lines`](specs/application/first-experiment.order-of-10-lines.sdp.md), [`.order-of-max-lines`](specs/application/first-experiment.order-of-max-lines.sdp.md) | native | | L2-4 | Rename a typed handler or break its argument contract | [`spec:command.command-declaration`](specs/command/command-declaration.sdp.md) | [`.renamed-handler-fails-build`](specs/command/command-declaration.renamed-handler-fails-build.sdp.md), [`.broken-argument-contract-fails-build`](specs/command/command-declaration.broken-argument-contract-fails-build.sdp.md) | build | | L2-5 | Rebuild a per-entity read model online while commands run; interrupt and resume | [`spec:application.rebuild`](specs/application/rebuild.sdp.md) | [`.online-rebuild-interrupt-resume`](specs/application/rebuild.online-rebuild-interrupt-resume.sdp.md) | native | -| L2-6 | Rebuild a cross-stream history view under a write pause; interrupt | [`spec:application.rebuild`](specs/application/rebuild.sdp.md) | [`.write-pause-rebuild-interrupt`](specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md), [`.write-pause-rebuild-abort`](specs/application/rebuild.write-pause-rebuild-abort.sdp.md) | native | +| L2-6 | Rebuild a cross-stream history view under a write pause; interrupt | [`spec:application.history-rebuild`](specs/application/history-rebuild.sdp.md) | [`.write-pause-rebuild-interrupt`](specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md), [`.write-pause-rebuild-abort`](specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | native | | L2-7 | Rebuild a stream that has a baseline event | [`spec:context.journal`](specs/context/journal.sdp.md) | [`.rebuild-from-baseline`](specs/context/journal.rebuild-from-baseline.sdp.md) | native | | L2-8 | Restore a representative dataset with matching code and configuration | [`spec:application.restore`](specs/application/restore.sdp.md) | [`.restore-representative-dataset`](specs/application/restore.restore-representative-dataset.sdp.md) | end to end | | L2-9 | Run native acceptance with production configuration | [`spec:application.first-experiment`](specs/application/first-experiment.sdp.md) | [`.native-acceptance-production-configuration`](specs/application/first-experiment.native-acceptance-production-configuration.sdp.md), [`.native-contention`](specs/application/first-experiment.native-contention.sdp.md) | end to end; native | @@ -193,7 +193,7 @@ An extension is a design claim the doc does not make. Each one is three things t | E-5 | [`command.outcome-boundary`](specs/command/outcome-boundary.sdp.md) | `RejectionData` and `TransientData`; the platform codes `invalidInput`, `unauthenticated`, `forbidden`, `idempotencyConflict`, `staleVersion`, `entityExists`, `operationTooLarge`, `unsupportedContractVersion` and the transient `rateLimited`, `capacity`, `writePaused`; `normalizeThrown`, which turns a code the declaration's `rejections` does not list into a technical failure; a 16 KiB bound on `details` that `reject` measures; the engine's OCC-retry exhaustion as a retryable technical failure; the conditional dispatcher; a parent query's refusal as the same `RejectionData`, with the query's name in `commandType` and only the codes `unauthenticated` and `forbidden`; a use case's own rejection thrown as the kernel's bare `Rejection`, as a context throws one | | E-6 | [`command.actor-and-scope`](specs/command/actor-and-scope.sdp.md), [`command.tenancy-and-authority`](specs/command/tenancy-and-authority.sdp.md) | `Actor`, `ActorRef`, `TenantScope`, `CallerNamespace` (`public`, `service`, `worker`, `agent`, `system`), the `authorize` signature, the `grants` table; the tenant scope of an operation, a command and a query is the `tenantId` argument alone, with no separate scope argument; a parent query establishes and authorizes its actor through `authorizeQuery`, generic over the parent's data model, and its refusal is the command's `RejectionData` with the query's name in `commandType`; the worker's two modes as one `Authority` shape, `{ actor, scope, mode }` with `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated; a derived command carries `worker`, and `system` is reserved for the platform's own maintenance chains and operator operations | | E-7 | [`command.command-declaration`](specs/command/command-declaration.sdp.md) | `CommandDeclaration`, `publicCommand` and `internalCommand`, the executor that takes the minted `OperationRef` and returns the kernel's outcome plus `streams`, the read-model binding with its `source` and read model, what generation emits, and no standing map from command type to declaration, because the type check at a typed caller is the check of Sc L2-4; the cost of two registered mutations per command and the single-export dispatcher alternative it beat | -| E-8 | [`application.generation-registry`](specs/application/generation-registry.sdp.md), [`application.write-pause`](specs/application/write-pause.sdp.md), [`application.rebuild`](specs/application/rebuild.sdp.md) | The `generations` table with seven states, every transition with who makes it, and one generation being built per read model; the `generationProgress` row that holds the cursor, the batch size and the counts, read by batches and operator entries only; the `projectionMarkers` table; a read model installed through its first rebuild, generation 1 starting as `building`, with no transition from nothing to active, a command that finds no generation to write and a query that finds no active generation each failing as a technical failure; `generationsToWrite` answering the active generation and the one being built as a list tagged by role, `active`, `building` or `verifying`; a 7-day rollback period in which the retired generation is kept and not written, and a rollback that is one verify pass, presence and absence, and then the switch of one write, a single mutation that patches both generation rows; one generation per read model spanning every tenant, so the registry's indexes lead with the read model name and not `tenantId`, a confirmed deviation from Law 11's index rule, and no rebuild for one tenant; one gate document per deployment with scope keys for the deployment, a tenant and a source stream type, read by the pipeline's step 7 after the restore door, with no fence or drain of its own; a paused rebuild closes the view's source stream types, one `source:` scope per binding; an exemption only for the generation a closed entry names; gate changes treated as mandatory audit; no acceptable length stated for a write pause | +| E-8 | [`application.generation-registry`](specs/application/generation-registry.sdp.md), [`application.write-pause`](specs/application/write-pause.sdp.md), [`application.rebuild`](specs/application/rebuild.sdp.md), [`application.history-rebuild`](specs/application/history-rebuild.sdp.md), [`application.aggregate-projection`](specs/application/aggregate-projection.sdp.md) | The `generations` table with seven states, every transition with who makes it, and one generation being built per read model; the `generationProgress` row that holds the cursor, the batch size and the counts, read by batches and operator entries only; the `projectionMarkers` table; a read model installed through its first rebuild, generation 1 starting as `building`, with no transition from nothing to active, a command that finds no generation to write and a query that finds no active generation each failing as a technical failure; `generationsToWrite` answering the active generation and the one being built as a list tagged by role, `active`, `building` or `verifying`; a 7-day rollback period in which the retired generation is kept and not written, and a rollback that is one verify pass, presence and absence, and then the switch of one write, a single mutation that patches both generation rows; one generation per read model spanning every tenant, so the registry's indexes lead with the read model name and not `tenantId`, a confirmed deviation from Law 11's index rule, and no rebuild for one tenant; one gate document per deployment with scope keys for the deployment, a tenant and a source stream type, read by the pipeline's step 7 after the restore door, with no fence or drain of its own; a paused rebuild closes the view's source stream types, one `source:` scope per binding; an exemption only for the generation a closed entry names; gate changes treated as mandatory audit; no acceptable length stated for a write pause | | E-9 | [`application.projection-contract`](specs/application/projection-contract.sdp.md), [`application.history-projection`](specs/application/history-projection.sdp.md), [`application.aggregate-projection`](specs/application/aggregate-projection.sdp.md) | A per-entity read model declared as `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, each a `Projection` of `version`, `keyOf` and `project`, bound on a declaration with its source; `AggregateProjection` and `HistoryProjection`, the last folding events into the prior row for a view that depends on history across streams; `applyProjection` with modes `live-created`, `live-updated`, `backfill`, writing each generation by its role, where a live write to the active generation always lands and the rule that a newer row is never overwritten is the backfill path's, `applyAggregate` and `applyHistoryProjection`, called by the pipeline's step 9 and the rebuild's batches only; every row measured with `getConvexSize` against `rowBudgetBytes`; step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from the events; a read model declares its projection versions as a list, the latest first, and each generation is written with the projection whose version its row records; row conventions `tenantId`, `generation`, `key`, `projectionVersion`, `sourceVersions`; the `by_key` index; the created flag and the appended events read from the operation outcome's `streams` entry | | E-10 | [`obligations.lifecycle-transitions`](specs/obligations/lifecycle-transitions.sdp.md), [`obligations.record-contract`](specs/obligations/record-contract.sdp.md) | The allowed transitions between the six states and who causes each; the `obligations` and `obligationRepairs` tables with seven and two indexes; a 64 KiB inline payload bound; ten late-evidence entries; two attention reasons beyond D13's four, `recoveryFailing` and `chainBound` | | E-11 | [`effects.claim-call-settle`](specs/effects/claim-call-settle.sdp.md) | The signatures of `claimAttempt`, `readForCall`, `callProvider`, `reconcileAttempt`, `settleAttempt`, `expireLease`; the `RepetitionPolicy` union with a fourth value `none` | @@ -220,7 +220,7 @@ An extension is a design claim the doc does not make. Each one is three things t | E-37 | [`command.tenancy-and-authority`](specs/command/tenancy-and-authority.sdp.md) | Identity to actor mapping from `tokenIdentifier`, `subject` and `issuer`; grants written by the plain helpers `insertGrant` and `revokeGrant`, a tenant's first grant created with admin access through the composition's own internal grant mutation, with no grant function, bootstrap, first-admin flow or invitation in the library; revocation by deleting the grant row, with no cache; a 500-grant read bound | | E-38 | [`command.command-declaration`](specs/command/command-declaration.sdp.md) | The declaration also carries `contractVersion`, `retention`, `irreversible`, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` and `writes`; `bounds` is the one input bound, checked at the pipeline's step 1; `writes` names the context and stream type pairs the executor may write, from which step 7 derives the write pause's source scopes and which step 9 proves; the declaration has no reactions field | | E-39 | [`command.idempotency-and-receipts`](specs/command/idempotency-and-receipts.sdp.md) | The second UI submit of a create is answered with the rejection `entityExists`, not an idempotent success, because the UI path writes no receipt to replay from and the client holds the entity ID | -| E-40 | [`application.rebuild`](specs/application/rebuild.sdp.md), [`application.generation-registry`](specs/application/generation-registry.sdp.md) | A batch is one mutation with one cursor on the progress row, at most 100 entities capped by the row budget and by the context's byte-derived page bound, a design number not attributed to the component; a self-scheduled internal mutation drives every batch, the backfill, the verify pass and the purge, and the rebuild uses `@convex-dev/migrations` for nothing; one batch names one tenant, taken from the tenant list; a fence that every interrupt, resume, rollback, abort and purge start raises | +| E-40 | [`application.rebuild`](specs/application/rebuild.sdp.md), [`application.history-rebuild`](specs/application/history-rebuild.sdp.md), [`application.generation-registry`](specs/application/generation-registry.sdp.md) | A batch is one mutation with one cursor on the progress row, at most 100 entities capped by the row budget and by the context's byte-derived page bound, a design number not attributed to the component; a self-scheduled internal mutation drives every batch, the backfill, the verify pass and the purge, and the rebuild uses `@convex-dev/migrations` for nothing; one batch names one tenant, taken from the tenant list; a fence that every interrupt, resume, rollback, abort and purge start raises | | E-41 | [`application.parent-use-cases`](specs/application/parent-use-cases.sdp.md) | The caller-driven import command with an `imports` progress row; the input bound itself is the declaration's `bounds.maxItems` under E-38 | | E-42 | [`application.restore`](specs/application/restore.sdp.md), [`application.generation-registry`](specs/application/generation-registry.sdp.md) | Four checks (journal, domain, read model, receipt) as checkpointed batches, the stream check bounded through the `rebuild` query's `maxEvents` so its worst case is one fold, and a refused fold counted as a journal finding; a fifth step that inventories the closed gate entries, the generations in flight and the running imports the backup archive restored; the `restoreRuns` record; an accepted branch that resumes every stranded generation, proven by the generation row's fence; `MAINTENANCE_MODE=restore` as the writer door, read by the write pause's check before the gate document and cleared before the durable profile's schedule rebuild runs; a failed check keeps the whole deployment closed with no override; the drill before every release, its cadence reconsidered on the first drill's measured check times | | E-43 | [`operations.baseline-operations`](specs/operations/baseline-operations.sdp.md) | The `auditRecords` table that fails closed, with `AuditRecordInput` and the source of each field in the command; the `operatorAudit` table for the gate changes an operator entry makes; Convex's own audit logging recorded as the do-nothing option; a 4 KiB diagnostic record through a sink that never throws; the `personalData` reference table | @@ -298,11 +298,11 @@ Four example IDs were added beyond the plan's section 4, each because the doc's | Sc | Added example | Reason | |---|---|---| | L2-1 | `spec:application.parent-use-cases.second-context-throws` | the row says "rejects or throws"; the throw case is a technical failure, not the rejection | -| L2-6 | `spec:application.rebuild.write-pause-rebuild-abort` | the row's pass condition says "resume or abort safely" | +| L2-6 | `spec:application.history-rebuild.write-pause-rebuild-abort` | the row's pass condition says "resume or abort safely" | | L3-2 | `spec:obligations.obligation-module.wrapper-failed-rearmed` | the row says "kill a dispatch before work, or fail the scheduled wrapper" | | L3-6 | `spec:effects.external-effects.stale-worker-after-cancellation` | the row says "after a new attempt or a cancellation" | -No inventory ID was renamed or split. Package D therefore has 13 examples instead of 11, Package E has 22 instead of 20, and the corpus has 54. +No inventory ID was renamed or split at integration; the history rebuild's split below later moved the two Sc L2-6 examples. Package D therefore has 13 examples instead of 11, Package E has 22 instead of 20, and the corpus has 54. Slice S1 added three more for the same reason, when its scenario tests bound the Layer 1 rows: @@ -379,6 +379,14 @@ The history form and the aggregate form of `spec:application.projection-contract | L2-6 | [`spec:application.history-projection`](specs/application/history-projection.sdp.md) | the history form, its fold and the order allocation history, checked by one pure test of the fold | | none | [`spec:application.aggregate-projection`](specs/application/aggregate-projection.sdp.md) | the aggregate form and its marker, deferred until a read model needs an aggregate row (OD-075) | +The paused path of `spec:application.rebuild` moved into a workflow of its own, so that the rebuild's implementation binding claims the online path alone, and the two Sc L2-6 examples moved under it with the parent they verify. The marker table, the aggregate binding and the aggregate call of step 9 moved from the registry, the declaration and the pipeline into `spec:application.aggregate-projection`, which states how the form extends them when OD-075's trigger comes: + +| Sc | Added or renamed Spec | Reason | +|---|---|---| +| L2-6 | [`spec:application.history-rebuild`](specs/application/history-rebuild.sdp.md) | the paused path of a history view: the source scopes the start closes, the history batches with their cursor and bound, and the verify pass under the pause | +| L2-6 | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md), formerly `spec:application.rebuild.write-pause-rebuild-interrupt` | it verifies the paused path, so it refines and verifies the history rebuild | +| L2-6 | [`spec:application.history-rebuild.write-pause-rebuild-abort`](specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md), formerly `spec:application.rebuild.write-pause-rebuild-abort` | the same, for the abort case | + ## Integration notes What the integration pass changed after the five packages landed, and what it left for the owner or the plan. diff --git a/design/specs/application.pack.sdp.md b/design/specs/application.pack.sdp.md index 30f1642..80fe37f 100644 --- a/design/specs/application.pack.sdp.md +++ b/design/specs/application.pack.sdp.md @@ -15,8 +15,9 @@ specs: - spec:application.aggregate-projection - spec:application.rebuild - spec:application.rebuild.online-rebuild-interrupt-resume - - spec:application.rebuild.write-pause-rebuild-interrupt - - spec:application.rebuild.write-pause-rebuild-abort + - spec:application.history-rebuild + - spec:application.history-rebuild.write-pause-rebuild-interrupt + - spec:application.history-rebuild.write-pause-rebuild-abort - spec:application.generation-registry - spec:application.generation-registry.first-rebuild-installs-read-model - spec:application.generation-registry.command-without-generation-fails @@ -57,6 +58,6 @@ modelRefs: --- # Application -Package D. Layer 2: parent use cases, read models and the projection contract, online rebuild with the generation registry and the write pause, restore, baseline operations, the cost-target constraints and the first experiment, with the Layer 2 scenarios and the all-layers audit scenario. +Package D. Layer 2: parent use cases, read models and the projection contract, online rebuild with the generation registry and the write pause, and the rebuild of a history view under that pause, restore, baseline operations, the cost-target constraints and the first experiment, with the Layer 2 scenarios and the all-layers audit scenario. -Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract with the history and aggregate projections, rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Fifty Specs: eleven application Specs, one operations Spec, eight constraints and thirty examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. +Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract with the history and aggregate projections, rebuild and the history rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Fifty-one Specs: twelve application Specs, one operations Spec, eight constraints and thirty examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. diff --git a/design/specs/application/aggregate-projection.sdp.md b/design/specs/application/aggregate-projection.sdp.md index c9c41aa..d9bef36 100644 --- a/design/specs/application/aggregate-projection.sdp.md +++ b/design/specs/application/aggregate-projection.sdp.md @@ -5,7 +5,11 @@ altitude: story readiness: scoped relations: refines: spec:application.read-models - dependsOn: spec:application.projection-contract + dependsOn: + - spec:application.projection-contract + - spec:application.generation-registry + - spec:command.command-declaration + - spec:command.command-pipeline decidedBy: - spec:decisions.d02-context-owns-state-and-journal - spec:decisions.d09-rebuild-online-by-default @@ -16,9 +20,9 @@ relations: --- # Aggregate projection -Story · Detail: deferred until a read model needs an aggregate row · Traces: D2, D9, Law 11, F1, F13, E-8, E-9, E-45. +Story · Detail: deferred until a read model needs an aggregate row · Traces: D2, D8, D9, Law 11, F1, F13, E-7, E-8, E-9, E-45. -An aggregate projection is the form of a read model whose row sums a number over every entity under one key, the counts and sums of D9, such as order totals per status. The contract pins the `AggregateProjection` shape; the aggregate row, which carries `value` and `entityCount` and no `sourceVersions`; the per-entity marker that carries the source versions, so that live commands and the backfill never count one entity twice; `applyAggregate` in four steps; and `orderTotals` as the shape of an aggregate table. No read model of the example domain takes this form, so its detail stops at the signature and the steps until a read model needs an aggregate row. +An aggregate projection is the form of a read model whose row sums a number over every entity under one key, the counts and sums of D9, such as order totals per status. The contract pins the `AggregateProjection` shape; the aggregate row, which carries `value` and `entityCount` and no `sourceVersions`; the per-entity marker that carries the source versions, so that live commands and the backfill never count one entity twice; `applyAggregate` in four steps; and `orderTotals` as the shape of an aggregate table. No read model of the example domain takes this form, so its detail stops at the signature and the steps until a read model needs an aggregate row. `spec:command.command-declaration` and `spec:command.command-pipeline` bind and write the per-entity and history forms only, `spec:application.generation-registry` holds no marker, and the three `extends` entries below say what each of them takes when that trigger comes. ## Intent @@ -32,12 +36,13 @@ An aggregate projection is the form of a read model whose row sums a number over - [extension] An aggregate row derives from every entity under its key, so it carries no `sourceVersions`; it carries `value`, the sum of the recorded contributions, and `entityCount`, the number of markers, and the per-entity marker carries the `sourceVersions` the row conventions would otherwise hold (E-9, D9) - An aggregate projection contributes a number per entity to an aggregate row and keeps a per-entity marker so live commands and backfill never count one entity twice (D9) +- An aggregate read model keeps one marker per entity per generation with the contribution last recorded and the source versions it was computed from, and every aggregate write reads and writes the marker in the same mutation as the aggregate row; the marker's `sourceVersions` are compared like a row's, so a DTO older than the marker never adjusts the sum (D9, E-8, E-9) - [extension] `applyAggregate` ignores the mode: the marker's `sourceVersions` decide, a marker that is not older than the input makes the write `skipped-newer`, and otherwise the marker's recorded contribution leaves the row of the marker's `aggregateKey` and the new contribution joins the row of `aggregateKeyOf`, one row moved by the difference when the key is the same and two rows when it changed, a row whose `entityCount` reaches 0 being deleted, and a `null` contribution joins no row and removes the marker; a live update on an entity backfill has not reached is therefore not partial, because `contribute` sees the whole DTO, which is why the missing-row rule of the per-entity path does not apply (E-9, D9, F1) - [extension] An aggregate's entity is its source stream: `applyAggregate` derives the marker's `entityKey` from the input's one `StreamVersion` as `JSON.stringify([contextId, streamType, streamId])`, so the live path and the backfill, which pass `entry.version` and `dto.version`, name one marker, and equal stream IDs in two contexts or two stream types name two (E-9, D9, D2) ## Design -The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; `ApplyMode`, `ApplyResult`, `WritableGeneration` and the `by_key` index are those of `spec:application.projection-contract`; the marker is a row of the `projectionMarkers` table, read through its `by_entity` index, both pinned by `spec:application.generation-registry`; `MutationCtx` is Convex's mutation context. +The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; `ApplyMode`, `ApplyResult`, `WritableGeneration` and the `by_key` index are those of `spec:application.projection-contract`; the marker is a row of the `projectionMarkers` table, read through its `by_entity` index, both pinned below; the marker table is tenant data and leads with the tenant; `MutationCtx` is Convex's mutation context. - typeAggregateProjection: `interface AggregateProjection { name: string; version: number; table: string; rowBudgetBytes?: number; aggregateKeyOf(tenantId: string, dto: D): string; contribute(tenantId: string, dto: D): number | null }` where `null` means the entity no longer contributes, such as a deleted subject, and `rowBudgetBytes` bounds the aggregate row and the marker alike (E-9, D9, F13) - fnApplyAggregate: `applyAggregate(ctx: MutationCtx, projection: AggregateProjection, input: { tenantId: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise` answering, per generation in order, one result for each aggregate row it writes, the old key's row before the new key's on a key change, `inserted` for a row it created, `updated` for a row whose `value` or `entityCount` changed and `deleted` for a row whose `entityCount` reached 0, or one `skipped-newer` when the marker was not older and one `unchanged` when no row moved; `input.versions` holds the one `StreamVersion` of the entity's source stream, and another length throws a plain error; `mode` is accepted for symmetry with `applyProjection` and read by nothing (E-9, D9) @@ -47,8 +52,18 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; - aggregateStep4: then it inserts or replaces the marker with `entityKey`, `contribution`, `aggregateKey` and `input.versions`, or deletes it when `contribution` is `null`, all in the same mutation; a key change reads and writes two aggregate rows and the marker in each generation, and its two rows count against `limitReadModelWritesPerCommand` of `spec:application.read-models` (E-9, D9, E-8, E-45) - validatorAggregateRowConventions: `const aggregateRowConventions = { tenantId: v.string(), generation: v.number(), key: v.string(), projectionVersion: v.number(), value: v.number(), entityCount: v.number() }` spread into every aggregate read-model `defineTable`, with the same `by_key` index, where `key` is `aggregateKeyOf(tenantId, dto)` (E-9, Law 11, D9) - tableOrderTotals: `orderTotals: defineTable({ ...aggregateRowConventions }).index("by_key", ["tenantId", "generation", "key"])` an aggregate of order totals per status, where `key` is the status, `value` the sum of the orders' totals and `entityCount` the number of orders in it, given as the shape of an aggregate table and not as a read model the first experiment builds (E-9, D9) +- tableProjectionMarkers: `projectionMarkers: defineTable({ tenantId: v.string(), readModel: v.string(), generation: v.number(), entityKey: v.string(), aggregateKey: v.string(), contribution: v.number(), sourceVersions: v.array(streamVersionValidator) })` (E-8, D9, Law 11) +- indexMarkersByEntity: `.index("by_entity", ["tenantId", "readModel", "generation", "entityKey"])` (E-8) +- indexMarkersByEntityUse: point read by `applyAggregate` before every aggregate write, with the `entityKey` it derives from the entity's source stream, `JSON.stringify([contextId, streamType, streamId])` of the input's stream version, as `spec:application.aggregate-projection` states (D9, E-8, E-9) +- markerVersionCompare: `applyAggregate` treats the marker's `sourceVersions` as a row's: a marker whose versions are not older than the input's makes the write `skipped-newer` and leaves the sum alone, so a stale DTO on either path never adjusts an aggregate twice or backwards (E-9, E-8, D9, F1) +- limitMarkerCount: one marker per entity per generation; a read model with N entities costs N markers per generation (E-8, F13) +- markerRows: marker rows are operational data owned by the parent; they are never written by a context (D2, E-8) +- extendsReadModelBinding: when a read model needs an aggregate row, `spec:command.command-declaration#design.typeReadModelBinding` takes the form beside the other two, `readModel: ReadModel | AggregateProjection | HistoryProjection`, where `readModel` is a per-entity read model, an aggregate projection or a history projection, and a per-entity read model or an aggregate projection is bound to its one source stream type (E-7, E-9, OD-075) +- extendsStepNine: when a read model needs an aggregate row, the step 9 of `spec:command.command-pipeline` calls, for every binding of a per-entity read model, `applyProjection` of `spec:application.projection-contract`, or `applyAggregate` for a binding of that form, for each matching entry with the entry's DTO and version and the list unchanged, and its `readModelWrites` makes one `applyProjection` or `applyAggregate` call per matching `streams` entry per binding of those forms the declaration lists (E-7, E-9, D8, OD-075) +- extendsRegistry: when a read model needs an aggregate row, `projectionMarkers` and its `by_entity` index join `readModelTables` of `spec:application.generation-registry`, so `ReadModelDataModel` holds them, and the registry's reads and transitions stay as they are, because a marker names a generation and never changes one (E-8, E-9, OD-075) - deferred: the code of `AggregateProjection` and `applyAggregate`, a rebuild path for an aggregate read model and the tests of this contract, until a read model needs an aggregate row (E-9, OD-075) ## Verification — reviewed - A reviewer confirms that `applyAggregate` compares the marker's `sourceVersions` before it touches `value`, that it reads no mode, that it derives `entityKey` from the input's stream version, that a key change moves the contribution and the count from the marker's key's row to the new key's row, and that a `null` contribution removes the marker and its recorded contribution and creates no row. +- A reviewer confirms that the marker table's index leads with the tenant, that `applyAggregate` reads it before every aggregate write, and that it compares the marker's `sourceVersions` before adjusting the sum. diff --git a/design/specs/application/first-experiment.sdp.md b/design/specs/application/first-experiment.sdp.md index 19c844f..ccf16d7 100644 --- a/design/specs/application/first-experiment.sdp.md +++ b/design/specs/application/first-experiment.sdp.md @@ -18,6 +18,7 @@ relations: - spec:application.parent-use-cases - spec:application.read-models - spec:application.rebuild + - spec:application.history-rebuild - spec:application.restore - spec:application.generation-registry - spec:application.history-projection diff --git a/design/specs/application/generation-registry.sdp.md b/design/specs/application/generation-registry.sdp.md index d1f3e16..5ff608e 100644 --- a/design/specs/application/generation-registry.sdp.md +++ b/design/specs/application/generation-registry.sdp.md @@ -16,7 +16,6 @@ relations: - spec:laws.law06-technical-failure-never-a-rejection dependsOn: - spec:application.projection-contract - - spec:application.aggregate-projection - spec:command.actor-and-scope --- # Generation registry @@ -27,7 +26,7 @@ The registry is two parent tables. The `generations` table records every generat ## Intent -- outcome: Pin the generations table and its states, the progress row, every transition with who may make it, the per-entity marker document, and the reads a command and a query make against them (D9, E-8) +- outcome: Pin the generations table and its states, the progress row, every transition with who may make it, and the reads a command and a query make against them (D9, E-8) - value: One table answers which generation is active, which is being built and which is still inside its rollback period, so live update, backfill, queries and operators agree without a second store (D9) - risk: A registry read sits in every command that maintains a read model, at most two indexed reads per read model; every transition of a generation changes a row those reads cover, so each transition re-runs the commands in flight on that read model once (D9, F1, Sc L2-3) - risk: A projection version stays in the code for as long as a generation that records it is written or may be rolled back to (E-9, D9) @@ -35,8 +34,8 @@ The registry is two parent tables. The `generations` table records every generat ### Open questions -- [non-blocking] Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` and `projectionMarkers` tables below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5) -- [non-blocking] Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows and the markers among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57) +- [non-blocking] Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` table below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5) +- [non-blocking] Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57) - [non-blocking] Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the restore's proof that the generation is still stranded, and `resumeChain` bumping it is the proof that it is not (E-42, F12) - [non-blocking] Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, generation 1 starting as `building` like any other, so a read model added to a deployment that has history serves that history from its first switch and no transition claims coverage it did not build; a command that finds no generation to write fails as a technical failure and a query that finds no active generation fails the same way (E-8, D9, D19) - [non-blocking] Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight on the read model once per batch; the progress row is the one checkpoint of every batch whatever drives it (E-40, F1) @@ -55,17 +54,16 @@ The registry is two parent tables. The `generations` table records every generat - [extension] Each generation is written with the projection whose version its row records, on the live path and by its batches alike, so the rows of one generation are one truth of one projection version (E-9, E-8, D8) - A query reads the active generation and nothing else; a query over a read model that has no active generation throws a plain error that names the read model, a technical failure, and never answers an empty page (D9, E-8, Law 6) - [extension] The generation row carries the state, the projection version, the fence, the fence the last interrupt set and who started and last changed it, and nothing a batch writes on its healthy path except the state that the batch ending a pass sets; the progress row carries the cursor, the batch size and the counts, the batch size set by `startGeneration` and never changed after, so every pass of the generation, a resumed one and its purge included, runs at it, a purge batch capped further by `limitPurgeBatch` of `spec:application.rebuild`, and a batch writes it in the same mutation as its rows, so the progress row is the checkpoint (E-40, D9, F1) -- [extension] A generation spans every tenant of the deployment and the registry row names none; the tenant is named on every read-model row and marker, on every context call a batch makes, and in the batch cursor, so no read or write of tenant data runs with an absent tenant as a wildcard, and no generation can be switched for one tenant alone (E-8, D11, Law 11) -- An aggregate read model keeps one marker per entity per generation with the contribution last recorded and the source versions it was computed from, and every aggregate write reads and writes the marker in the same mutation as the aggregate row; the marker's `sourceVersions` are compared like a row's, so a DTO older than the marker never adjusts the sum (D9, E-8, E-9) +- [extension] A generation spans every tenant of the deployment and the registry row names none; the tenant is named on every read-model row, on every context call a batch makes, and in the batch cursor, so no read or write of tenant data runs with an absent tenant as a wildcard, and no generation can be switched for one tenant alone (E-8, D11, Law 11) - [extension] A generation whose progress row is in the pass `backfill`, `verify` or `purge` has at most one scheduled batch driving it, identified by the row's fence; a restore brings the rows back at their checkpoint and drops that batch with every pending scheduled function, so the generation is stranded until `resumeChain` bumps the fence and reschedules from the saved cursor, which the restore procedure's pending-work inventory and accepted branch drive for every such generation in `building` or `verifying`, and which the operator drives with `resumeGeneration` for a purge the restore stranded, because a purge belongs to a `retired` or `aborted` generation the inventory does not read (E-42, E-8, F12, D19) - The registry is read, never incremented, in the command path; it is not an application-wide counter (D2, E-8) -- Registry, progress and marker rows are operational data owned by the parent; they are never written by a context (D2, E-8) +- Registry and progress rows are operational data owned by the parent; they are never written by a context (D2, E-8) - [extension] A command whose declared read model has no generation to write fails as a technical failure, a plain error that names the read model, so a command never commits without its read model (E-8, D8, Law 6) - [extension] The operator a generation row records is the string the operator entry was given, as `spec:command.actor-and-scope` rules it: `startedBy` from `startGeneration` and `changedBy` from the last operator entry that changed the row (E-48, D19) ## Design -Tables live in the parent's `schema.ts`, spread from the library's `readModelTables`. `streamVersionValidator` is the kernel's validator for `StreamVersion`. The registry has no `tenantId` because every generation spans all tenants; the marker table is tenant data and leads with the tenant. Every refusal below is a plain `Error` with the message given. +Tables live in the parent's `schema.ts`, spread from the library's `readModelTables`. `streamVersionValidator` is the kernel's validator for `StreamVersion`. The registry has no `tenantId` because every generation spans all tenants. Every refusal below is a plain `Error` with the message given. - validatorGenerationState: `const generationStateValidator = v.union(v.literal("building"), v.literal("verifying"), v.literal("verified"), v.literal("active"), v.literal("retired"), v.literal("aborted"), v.literal("purged"))` (E-8, D9) - tableGenerations: `generations: defineTable({ readModel: v.string(), generation: v.number(), projectionVersion: v.number(), state: generationStateValidator, pauseRequired: v.boolean(), fence: v.number(), startedAt: v.number(), startedBy: v.string(), changedAt: v.number(), changedBy: v.string(), switchedAt: v.optional(v.number()), retiredAt: v.optional(v.number()), retireAfter: v.optional(v.number()), interruptedFence: v.optional(v.number()) })` where `changedAt` and `changedBy` are the time and the operator of the last operator entry that changed the row, which no batch writes, `switchedAt` is when the generation last became active, `retiredAt` and `retireAfter` are set while it is `retired` and absent otherwise, and `interruptedFence` is the fence `interruptGeneration` last set, absent before the first interrupt, so it equals `fence` only while the interrupt made the last bump, and every other entry that adds to the fence leaves it as it is (E-8, E-48, D9, F13) @@ -79,24 +77,18 @@ Tables live in the parent's `schema.ts`, spread from the library's `readModelTab - tableGenerationProgress: `generationProgress: defineTable({ generationId: v.id("generations"), pass: progressPassValidator, batchSize: v.number(), cursor: v.union(batchCursorValidator, v.null()), batchesDone: v.number(), rowsWritten: v.number(), rowsSkipped: v.number(), misses: v.number(), rowsPurged: v.number(), lastError: v.optional(v.string()), updatedAt: v.number() })` one row per generation, inserted by `startGeneration` in the mutation that inserts the generation row; `cursor` is the position in the pass that `pass` names and `null` before that pass has read its first tenant; `batchesDone` counts every batch of the generation that reached its checkpoint, the batch that ends a pass included and a parked batch not, `rowsWritten` the rows a backfill batch inserted, updated or deleted, `rowsSkipped` the items a backfill or verify batch left as they were, `misses` the rows the current verify pass inserted, updated or deleted, and `rowsPurged` the rows a purge deleted; every write of the row sets `updatedAt` to the writing mutation's `Date.now()` (E-40, D9, F13) - indexProgressByGeneration: `.index("by_generation", ["generationId"])` (E-40) - indexProgressByGenerationUse: the one read a batch and an operator entry other than `interruptGeneration` make to find a generation's progress row; no command and no query over a read model reads the table (E-40, F1) -- tableProjectionMarkers: `projectionMarkers: defineTable({ tenantId: v.string(), readModel: v.string(), generation: v.number(), entityKey: v.string(), aggregateKey: v.string(), contribution: v.number(), sourceVersions: v.array(streamVersionValidator) })` (E-8, D9, Law 11) -- indexMarkersByEntity: `.index("by_entity", ["tenantId", "readModel", "generation", "entityKey"])` (E-8) -- indexMarkersByEntityUse: point read by `applyAggregate` before every aggregate write, with the `entityKey` it derives from the entity's source stream, `JSON.stringify([contextId, streamType, streamId])` of the input's stream version, as `spec:application.aggregate-projection` states (D9, E-8, E-9) -- typeRegistryReader: `type RegistryReader = { db: GenericDatabaseReader }` and `type RegistryWriter = { db: GenericDatabaseWriter }`, the part of a ctx the registry's helpers use, where `ReadModelDataModel` is the data model of `readModelTables`, the schema fragment that holds `generations`, `generationProgress`, `projectionMarkers` and the tenant fill's `tenantFill` row of `spec:application.rebuild`; every helper that takes them is generic over the composition's data model, because a database reader is not covariant in its data model (E-8) +- typeRegistryReader: `type RegistryReader = { db: GenericDatabaseReader }` and `type RegistryWriter = { db: GenericDatabaseWriter }`, the part of a ctx the registry's helpers use, where `ReadModelDataModel` is the data model of `readModelTables`, the schema fragment that holds `generations`, `generationProgress` and the tenant fill's `tenantFill` row of `spec:application.rebuild`; every helper that takes them is generic over the composition's data model, because a database reader is not covariant in its data model (E-8) - writableGenerationRole: each `WritableGeneration` that `generationsToWrite` returns, the shape `spec:application.projection-contract#design.typeWritableGeneration` pins, takes its role from its generation's state: the role is `active` for the state `active`, `building` for the state `building`, and `verifying` for the states `verifying` and `verified` (E-8, E-9, D9) - fnGenerationsToWrite: `generationsToWrite(ctx: RegistryReader, readModel: string): Promise` making at most two indexed reads, the ranges of `by_read_model_state` from `active` to `building` and from `verified` to `verifying`, throwing `"Read model " + readModel + " has " + a + " active generations and " + b + " in building, verifying or verified"` when they hold two active generations or two in-flight ones, and returning one entry per generation a command writes, the active generation first when there is one, then the in-flight one, and an empty list when the read model has neither; the answer is the same for every tenant (E-8, D9) - fnActiveGeneration: `activeGeneration(ctx: RegistryReader, readModel: string): Promise` making one indexed read and answering `undefined` when the read model has no active generation, which a query over the read model then turns into the plain error `"The read model " + readModel + " has no active generation"`; the answer is the same for every tenant, and the query narrows the rows it reads by its own `tenantId` argument (E-8, D9, Law 11) - errorNoGenerationToWrite: the pipeline's step 9 throws `commandType + " writes the read model " + readModel + ", which has no generation to write"` when `generationsToWrite` answers an empty list, which is the case before `startGeneration` and after the only generation was aborted (E-8, D8, Law 6) -- markerVersionCompare: `applyAggregate` treats the marker's `sourceVersions` as a row's: a marker whose versions are not older than the input's makes the write `skipped-newer` and leaves the sum alone, so a stale DTO on either path never adjusts an aggregate twice or backwards (E-9, E-8, D9, F1) - transitionCost: a transition patches one generation row, or two in the one write of a switch that retires an active generation, a single mutation, and every command in flight on the read model that read the registry before it re-runs once; a batch writes a generation row only in the mutation that ends its pass, so a build costs the commands one such re-run at the end of the backfill and one at the end of the verify pass, plus one per operator entry, `startGeneration` and `switchGeneration` among them (E-40, F1, D9) - limitRegistryReadsPerCommand: at most 2 indexed reads per read model per command, because the pipeline's step 9 calls `generationsToWrite` once per read model name however many bindings name it, and one per query (E-8, F13) - limitRollbackPeriod: 7 days by default, 604,800,000 ms; `switchGeneration` takes an override between 0 and 2,592,000,000 ms, and `rollbackGeneration` is refused once `retireAfter` has passed because the rows may be purged (E-8, D9) -- limitMarkerCount: one marker per entity per generation; a read model with N entities costs N markers per generation (E-8, F13) ## Verification — reviewed - A reviewer confirms that every transition in the rebuild workflow is one of the transitions listed here, that no function sets a state outside them, and that no function inserts a generation in a state other than `building`. - A reviewer confirms that `generationsToWrite` and `activeGeneration` are the only readers of the registry in the command and query paths, that neither writes it, and that neither reads `generationProgress`. - A reviewer confirms that no batch patches a generation row except in the mutation that ends its pass. -- A reviewer confirms that the marker table's index leads with the tenant, that `applyAggregate` reads it before every aggregate write, and that it compares the marker's `sourceVersions` before adjusting the sum. - A reviewer confirms that no field, index or function of the registry carries a tenant, that every batch cursor names one, and that the restore's inventory reads `by_read_model_state` for the three in-flight states and nothing else. diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index d3e78d3..535804a 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -57,7 +57,7 @@ The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:c - fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) - fnProjectOrderAllocationHistory: `projectOrderAllocationHistory(tenantId: string, prior: OrderAllocationHistoryFields | null, events: readonly HistoryEvent[]): OrderAllocationHistoryFields` in the same file, folding the events one by one into `prior`, or, when `prior` is `null`, into `{ orderId, allocations: [] }` with the key of the first event that has one, and throwing the plain `Error` `"The order allocation history needs a prior row or an event of an order"` when there is neither; the view's `HistoryProjection` holds this function and `orderAllocationHistoryKeyOf` as its `project` and `keyOf` (E-9, E-46, Sc L2-6) - orderAllocationHistoryFold: each field is written by the events of one stream, each event's time being its `occurredAt`, or its `recordedAt` when absent: `OrderPlaced` sets `placedAt` and `OrderCancelled` sets `cancelledAt`; `StockAllocated` on a stock item sets that stock item's entry of `allocations` to the payload's `quantity` and the time as `allocatedAt`, with no `releasedAt`; `AllocationReleased` sets `releasedAt` on that entry and changes nothing when the order has none on that stock item; every other event changes nothing; `allocations` is kept sorted by stock item ID, compared by UTF-16 code units; so the fold gives one row whatever the order across streams, a stock event before `OrderPlaced` included, and a pure test folds one order's events in every interleaving of its three streams and every split into calls and finds one row (E-9, D2, Sc L2-6) -- limitHistoryFold: on the live path step 9 calls `applyHistoryProjection` once per history read model per command, so it reads and writes at most one row per distinct key among the command's events in each generation, each at most `rowBudgetBytes`, and a `PlaceOrder` of 100 lines, whose 101 `streams` entries key to one order, reads and writes the order allocation history's one row once; on the backfill it takes one `history` page of at most the progress row's `batchSize` events, as the rebuild's `limitHistoryBatch` bounds it, so one batch reads at most that many events plus as many rows (F13, E-9, E-40) +- limitHistoryFold: on the live path step 9 calls `applyHistoryProjection` once per history read model per command, so it reads and writes at most one row per distinct key among the command's events in each generation, each at most `rowBudgetBytes`, and a `PlaceOrder` of 100 lines, whose 101 `streams` entries key to one order, reads and writes the order allocation history's one row once; on the backfill it takes one `history` page of at most the progress row's `batchSize` events, as `spec:application.history-rebuild#design.limitHistoryBatch` bounds it, so one batch reads at most that many events plus as many rows (F13, E-9, E-40) ## Verification — reviewed diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md new file mode 100644 index 0000000..ab8a749 --- /dev/null +++ b/design/specs/application/history-rebuild.sdp.md @@ -0,0 +1,70 @@ +--- +id: spec:application.history-rebuild +kind: workflow +altitude: feature +readiness: defined +relations: + refines: spec:application.read-models + dependsOn: + - spec:application.rebuild + - spec:application.history-projection + - spec:application.write-pause + - spec:application.generation-registry + - spec:context.queries + - spec:context.event-envelope + constrainedBy: + - spec:laws.law11-tenant-scope-named + - spec:facts.f01-serializable-mutations-under-occ + - spec:facts.f13-transactions-have-limits + - spec:facts.f19-nested-calls-share-time-budgets + decidedBy: + - spec:decisions.d09-rebuild-online-by-default + - spec:decisions.d04-four-outcomes +--- +# Rebuild of a history view under a write pause + +Layer 2 · Detail: full · Traces: D2, D4, D9, D10, D18, Law 11, F1, F13, F19, Sc L2-6, E-8, E-9, E-24, E-38, E-40, E-48, E-49. + +For a read model that depends on history across several streams the rebuild runs under a write pause, because it needs a consistent cut; the scope closed is the view's sources, the context and stream type pairs its bindings name, so every use case that writes one of them and the journal's baseline driver read the gate and are refused, background writers are fenced by that read and by the generation's fence, and an operator can resume or abort. Such a view is a `HistoryProjection` and its backfill pages each source stream's history under the pause. + +This workflow is the paused path of `spec:application.rebuild`, which holds the online path and what the two paths share: the operator entries, the batch chain with its fence and its progress row, the switch, the abort, the purge and the tenant fill. The history form and its fold are `spec:application.history-projection`, the gate and its source scopes are `spec:application.write-pause`, the cursor's fields are pinned by `spec:application.generation-registry`, and each source is read through its `list` and `history` queries of `spec:context.queries`. + +## Intent + +- problem: A cross-stream history view is rebuilt without a consistent cut (Sc L2-6) +- outcome: A history-dependent view rebuilds under a write pause with safe resume and abort, and writes reopen only after verification (D9, Sc L2-6) +- risk: A paused rebuild closes its view's sources in every tenant until the switch or the abort; its backfill and its verify pass each take one batch per source stream, one more for each further `history` page of a stream longer than the batch size, and one per tenant and source to end that source's enumeration, so the pause lasts about twice that count times one batch; a batch that took streams until its event bound was spent, or a generation of one tenant, which the registry does not offer, would shorten it (D9, E-8, E-40, D18) + +### Open questions + +- [non-blocking] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) +- [non-blocking] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) +- [non-blocking] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) + +## Workflow + +- rule: Under the write pause every writer in the scope reads the maintenance gate, background writers are fenced or drained, and an operator can resume or abort (D9) +- rule: A refused write under the pause is a transient refusal, retryable and never a stored rejection (D4, D9) +- rule: [extension] Under the pause a history row's recorded version for a stream means every event of that stream with the row's key up to that version is folded: a stream's events reach the fold in version order, from its first event on the backfill and the verify pass and after its last folded version on the live path, a generation in flight is written by its own batches alone while its sources are closed, and no retired generation is reopened; so a verify pass that repeats the backfill and folds no event finds the generation covering every source (E-8, E-9, D9, F1) +- For a history-dependent read model the generation row records `pauseRequired`, and `startGeneration` closes the maintenance gate for every source scope of the read model's bindings in the mutation that inserts the row, recording its own generation on each closed entry, so the gate is closed before the first batch is scheduled and this generation's batches are the one background writer allowed through (D9, E-8, E-38) +- While the gate is closed for the sources, every use case whose declaration writes one of them and the journal's baseline driver refuse with `writePaused` before any write, whether or not they maintain the view; a batch scheduled before the close reads the closed gate when it starts and refuses, a batch running when the close commits loses the optimistic-concurrency race on the gate document and re-runs into the refusal, and a batch of a superseded chain refuses because its generation fence is stale; nothing needs to drain (D9, D4, E-8, E-38, F1) +- Backfill under the pause enumerates a consistent cut because no source changes: each history batch takes the next stream of its cursor's source in its tenant, reads one `history` page of it from the saved event cursor, folds the page into the building generation through `applyHistoryProjection` in backfill mode, and saves the source, the stream and the event cursor on the progress row, moving to the next stream when the page reports `isDone`, to the next source when that source's enumeration in the tenant ends, and to the next tenant after the last source; an interrupted batch resumes from its cursor with the gate still closed, and the gate never reopens by itself (D9, E-9, Sc L2-6) +- Verification runs under the pause: the verify pass repeats the backfill's batches from the first tenant and source and counts as a miss every row they insert or update, which over a covered generation is none, so a miss is repaired by the batch that found it and the generation is `verified` when the pass ends; `switchGeneration` resumes every closed entry that names the generation in the mutation that makes it active, so writes reopen only after verification (D9, E-9, Sc L2-6) + +## Design + +Every entry below extends `spec:application.rebuild`: a history batch keeps that workflow's `step1` to `step3` and checkpoints as its `step6` does, and `startGeneration`, `switchGeneration` and `abortGeneration` are its operator entries. + +- typeHistorySource: `type HistorySource = { source: SourceRef; list: FunctionReference<"query", "internal", ListArgs, PaginationResult<{ version: StreamVersion }>>; history: FunctionReference<"query", "internal", { tenantId: string; streamId: string; fromVersion?: number; paginationOpts: PaginationOptions }, PaginationResult> }` one source stream type of a history view, with the references to its `list` and `history` queries of `spec:context.queries` in its context component, such as `components.inventory.queries.stockItem.list` and `components.inventory.queries.stockItem.history` (E-8, E-9, D10) +- typeHistoryRebuildTarget: `type HistoryRebuildTarget = { readModel: HistoryProjection; sources: readonly [HistorySource, ...HistorySource[]] }` one history view the deployment can rebuild under the write pause, with every context and stream type pair its bindings name, in the order a pass takes them; the order allocation history's lists the stock item source first and the order source second (E-8, E-9, E-38, D9) +- fnHistoryPageCall: `ctx.runQuery(source.history, { tenantId, streamId, paginationOpts: { numItems: batchSize, cursor: eventCursor } })` with `source` the entry of the target's `sources` the cursor names and `batchSize` the progress row's, the one `history` call a history batch makes beside its one `list` call of `numItems` 1, returning a `paginator` page of envelopes in version order, capped by the query's own item and byte bounds, that the batch folds through `applyHistoryProjection` (D2, D10, E-9, E-24) +- historyCursor: a history view's batch cursor adds `sourceIndex`, the position in the target's `sources`, so a pass goes tenant by tenant in tenant-ID order, source by source in `sources` order within a tenant, stream by stream in the source's `list` order and page by page in version order within a stream, and reads the stream a cursor names from that source's `history`, so two sources with equal local stream IDs never meet; a pass of a history view costs at least one batch per tenant and source, the batch whose `list` page holds no stream (E-8, E-40, E-49, Law 11) +- historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) +- historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) +- historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause (D9, E-8, E-9, Sc L2-6) +- limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) + +## Verification — reviewed + +- A reviewer confirms that `startGeneration` closes one entry per source of a paused view and nothing else, and that the write-pause examples assert a refusal of a source writer while closed, the fold of the history view against the journal, and a reopen only after verification. +- A reviewer confirms that a history target's `sources` name exactly the context and stream type pairs the view's bindings name, so `startGeneration` closes every writer of its sources, and that `rollbackGeneration` refuses every generation with `pauseRequired`. diff --git a/design/specs/application/rebuild.write-pause-rebuild-abort.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md similarity index 92% rename from design/specs/application/rebuild.write-pause-rebuild-abort.sdp.md rename to design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md index 9e3c692..52c2660 100644 --- a/design/specs/application/rebuild.write-pause-rebuild-abort.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md @@ -1,11 +1,11 @@ --- -id: spec:application.rebuild.write-pause-rebuild-abort +id: spec:application.history-rebuild.write-pause-rebuild-abort kind: example altitude: story readiness: defined relations: - refines: spec:application.rebuild - verifies: spec:application.rebuild + refines: spec:application.history-rebuild + verifies: spec:application.history-rebuild --- # Rebuild a cross-stream history view under a write pause; interrupt, then abort diff --git a/design/specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md similarity index 95% rename from design/specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md rename to design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md index c83b4f1..2dd1b19 100644 --- a/design/specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md @@ -1,11 +1,11 @@ --- -id: spec:application.rebuild.write-pause-rebuild-interrupt +id: spec:application.history-rebuild.write-pause-rebuild-interrupt kind: example altitude: story readiness: defined relations: - refines: spec:application.rebuild - verifies: spec:application.rebuild + refines: spec:application.history-rebuild + verifies: spec:application.history-rebuild --- # Rebuild a cross-stream history view under a write pause; interrupt, then resume diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index f3ddaa2..ca81587 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -6,7 +6,6 @@ readiness: defined relations: refines: spec:application.read-models dependsOn: - - spec:context.event-envelope - spec:application.projection-contract - spec:application.history-projection - spec:application.generation-registry @@ -36,19 +35,18 @@ relations: Layer 2 · Detail: full · Traces: D8, D9, D11, D19, Law 10, Law 11, F1, F7, F8, F9, F12, F13, F17, Probe 6, Sc L2-5, Sc L2-6, E-8, E-9, E-40, E-42, E-48, E-49. -A rebuild builds a new numbered generation of a read model while the old one stays active, and it is also how a read model comes to exist: its first generation is built the same way. For a per-entity read model it runs online: the generation is registered as building, live commands write it as well as the active one, backfill batches fill it from each source at its current stream version writing only where the target is missing or older, one verify pass makes presence and absence right, and one write switches the active generation. Optimistic concurrency orders each batch against live commands, so neither side overwrites newer data. The old generation is kept for a rollback period and no longer written; a rollback reopens it, one verify pass repairs it, and the same switch makes it active again. For a read model that depends on history across several streams the rebuild runs under a write pause, because it needs a consistent cut; the scope closed is the view's sources, the context and stream type pairs its bindings name, so every use case that writes one of them and the journal's baseline driver read the gate and are refused, background writers are fenced by that read and by the generation's fence, and an operator can resume or abort. Such a view is a `HistoryProjection` and its backfill pages each source stream's history under the pause. Rebuild never runs commands or external effects. +A rebuild builds a new numbered generation of a read model while the old one stays active, and it is also how a read model comes to exist: its first generation is built the same way. For a per-entity read model it runs online: the generation is registered as building, live commands write it as well as the active one, backfill batches fill it from each source at its current stream version writing only where the target is missing or older, one verify pass makes presence and absence right, and one write switches the active generation. Optimistic concurrency orders each batch against live commands, so neither side overwrites newer data. The old generation is kept for a rollback period and no longer written; a rollback reopens it, one verify pass repairs it, and the same switch makes it active again. A read model that depends on history across several streams rebuilds under a write pause instead, through the same entries and batch chain, as `spec:application.history-rebuild` states. Rebuild never runs commands or external effects. -The registry, the progress row, the per-entity marker and the gate document are pinned by `spec:application.generation-registry` and `spec:application.write-pause`. The projection and the write rule are `spec:application.projection-contract`. The operator entry and the tenant list are `spec:command.actor-and-scope`. Sources are read through the context's queries, never its tables; a rebuild of a stream from its own events is the journal's concern and not this one. +The registry, the progress row and the gate document are pinned by `spec:application.generation-registry` and `spec:application.write-pause`. The projection and the write rule are `spec:application.projection-contract`. The operator entry and the tenant list are `spec:command.actor-and-scope`. Sources are read through the context's queries, never its tables; a rebuild of a stream from its own events is the journal's concern and not this one. ## Intent - actor: The operator who starts, interrupts, resumes, switches, rolls back, aborts or purges a generation through the operator entries, and the use cases whose live writes keep the generation being built current (D9, D19) -- problem: A per-entity read model is rebuilt while commands run and the rebuild is interrupted and resumed; a live command's incremental update on a row backfill has not written builds a partial one, a backfill batch overwrites newer data, an entity is missed at cutover, a deleted subject keeps its row, or a side effect replays; a cross-stream history view is rebuilt without a consistent cut (Sc L2-5, Sc L2-6) -- outcome: A per-entity read model rebuilds online as a new generation with no stale overwrite, no missing entity, no row of a subject that projects to none and no side effect, with the cutover in one write and a rollback that is one verify pass and then that switch of one write; a history-dependent view rebuilds under a write pause with safe resume and abort, and writes reopen only after verification (D9, Sc L2-5, Sc L2-6) +- problem: A per-entity read model is rebuilt while commands run and the rebuild is interrupted and resumed; a live command's incremental update on a row backfill has not written builds a partial one, a backfill batch overwrites newer data, an entity is missed at cutover, a deleted subject keeps its row, or a side effect replays (Sc L2-5) +- outcome: A per-entity read model rebuilds online as a new generation with no stale overwrite, no missing entity, no row of a subject that projects to none and no side effect, with the cutover in one write and a rollback that is one verify pass and then that switch of one write (D9, Sc L2-5) - value: The common rebuild costs no downtime and no projection job; the write pause is paid only where a consistent cut is needed (D9) - risk: The standing cost is a generation registry read in every command that maintains a read model, a generation on every row, the earlier projection version kept in the code while its generation can be rolled back to, the batch chain, and for the write pause a gate every writer reads (D9) - risk: A pass costs at least one batch per tenant of the tenant list, because a batch names one tenant, so a deployment of many empty tenants pays one scheduled mutation for each (E-49, Law 11) -- risk: A paused rebuild closes its view's sources in every tenant until the switch or the abort; its backfill and its verify pass each take one batch per source stream, one more for each further `history` page of a stream longer than the batch size, and one per tenant and source to end that source's enumeration, so the pause lasts about twice that count times one batch; a batch that took streams until its event bound was spent, or a generation of one tenant, which the registry does not offer, would shorten it (D9, E-8, E-40, D18) - risk: The batch bound is a design choice under the transaction limits and no question of correctness: a batch that races a live command on one row is ordered by optimistic concurrency and the row ends at the source's newest stream version in either commit order, and a batch that reads past the read limit fails as a whole and leaves its checkpoint as it was (F13, F1, F17, Probe 6) - assumption: Mutations are serializable under optimistic concurrency, so a backfill batch and a live command that touch the same row serialize and the loser re-runs (F1) - assumption: A scheduled mutation that loses an optimistic-concurrency race is run again by Convex until it commits; the pinned packages do not show a bound on those runs, the design needs none for correctness, and Probe 6 shows what a stalled batch looks like (F9, F1, Probe 6) @@ -61,11 +59,8 @@ The registry, the progress row, the per-entity marker and the gate document are - [non-blocking] `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9) - [non-blocking] Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. The option taken here: a batch is one mutation with one cursor on the progress row and a bound of at most 100 entities, capped by the read model's declared `rowBudgetBytes` so that the parent's point reads and writes stay under 4 MiB, and by the context's byte-derived `list` page bound, which is 16 items at the default 256 KiB stream budget; every batch, the backfill and the verify pass over a context's enumeration and the purge over a parent table, is driven by the platform's own self-scheduled internal mutation, and the rebuild uses the component for nothing, because Probe 6 showed that it walks only the tables of the component it is defined in and drives a context's rows only through a parent internal mutation written by hand against a contract its README does not document; the progress row is the one checkpoint (E-40, E-24, E-9, F17, F13, F1) - [non-blocking] Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9) -- [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources; an `AggregateProjection` has no rebuild here and gets one when a view needs it, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) +- [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in `spec:application.history-rebuild`; an `AggregateProjection` has no rebuild here and gets one when a view needs it, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) - [non-blocking] Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no tenant and still ends; the option taken here is that `startGeneration` refuses an empty list beside a grant with a message naming `fillTenants`, and `fillTenants`, an operator entry, walks the grants in bounded batches through a progress row of its own and inserts each missing tenant once; a list that holds a tenant whose first grant came after the table and misses an older one is not detected by that refusal, so the operator runs `fillTenants` on such a deployment before its first `startGeneration` (E-49, E-48, E-40, Law 11) -- [non-blocking] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) -- [non-blocking] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) -- [non-blocking] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) ## Workflow @@ -79,9 +74,6 @@ The registry, the progress row, the per-entity marker and the gate document are - rule: [extension] The active generation switches in one write: one mutation that patches two generation rows together, the verified one to `active` and the active one to `retired`, or one row when the read model had no active generation, so no command and no query sees one row changed without the other; the old generation is kept for a rollback period (D9, E-8, F1) - rule: [extension] A retired generation is not written; a rollback reopens the retired generation the operator names as `verifying`, one verify pass repairs what the writes since its retirement changed, presence and absence alike, and the ordinary switch makes it active, so a rollback is a verify pass and then a switch of one write, never one write by itself, and the current generation serves until that switch; a generation that needs a write pause is never reopened, and its view returns to earlier rules through a new generation under the pause (E-8, D9, Sc L2-5) - rule: [extension] Each generation is written with the projection whose version its row records, by its batches and by live commands alike, and `startGeneration` and `rollbackGeneration` refuse a version the read model does not declare (E-9, E-8, D8) -- rule: Under the write pause every writer in the scope reads the maintenance gate, background writers are fenced or drained, and an operator can resume or abort (D9) -- rule: A refused write under the pause is a transient refusal, retryable and never a stored rejection (D4, D9) -- rule: [extension] Under the pause a history row's recorded version for a stream means every event of that stream with the row's key up to that version is folded: a stream's events reach the fold in version order, from its first event on the backfill and the verify pass and after its last folded version on the live path, a generation in flight is written by its own batches alone while its sources are closed, and no retired generation is reopened; so a verify pass that repeats the backfill and folds no event finds the generation covering every source (E-8, E-9, D9, F1) - rule: Every batch has a stated bound below the transaction limits, tested against the pinned Convex version; the limits are ceilings, not batch sizes (D19, F13) - rule: [extension] Every function that starts or changes a generation is an operator entry of `spec:command.actor-and-scope`: an internal function that records the stated operator on the generation row and reads no grant (E-48, D11, D19) - rule: [extension] A generation spans every tenant of the deployment: its batches take one tenant at a time from `nextTenant` of the tenant list, in tenant-ID order, and name that tenant on every context call, so no call runs with an absent tenant as a wildcard, and the one registry row per read model answers every tenant's queries (D11, Law 11, E-8, E-49) @@ -104,10 +96,6 @@ The registry, the progress row, the per-entity marker and the gate document are - [extension] During the rollback period the retired generation's rows are kept and not written; `rollbackGeneration` reopens the retired generation it is given, one without `pauseRequired`, as `verifying` with a new fence and a `null` cursor and schedules a verify batch, live commands write it again from that commit, its one verify pass repairs every row that is missing, older or left behind by a deleted subject, and the ordinary `switchGeneration` makes it active and retires the generation that served meanwhile (E-8, D9, Sc L2-5) - `abortGeneration` marks a building, verifying or verified generation `aborted`, leaves the active generation untouched, and resumes every closed gate entry that names this generation; an aborted rollback leaves the reopened generation `aborted`, never `retired` again (D9, Sc L2-6, E-8) - `purgeGeneration` starts the purge of an aborted generation, or of a retired one once `retireAfter` has passed; each purge batch deletes at most the progress row's batch size, capped by `limitPurgeBatch`, of rows of the generation for one tenant by the `by_key` range, stays on that tenant while a full batch came back, moves to the next tenant of the tenant list otherwise, and marks the generation `purged` after the last tenant; nothing starts a purge by itself, and a purge whose chain ended, a restore among the causes, is continued by `resumeGeneration` from its progress row (D19, E-40, E-49) -- For a history-dependent read model the generation row records `pauseRequired`, and `startGeneration` closes the maintenance gate for every source scope of the read model's bindings in the mutation that inserts the row, recording its own generation on each closed entry, so the gate is closed before the first batch is scheduled and this generation's batches are the one background writer allowed through (D9, E-8, E-38) -- While the gate is closed for the sources, every use case whose declaration writes one of them and the journal's baseline driver refuse with `writePaused` before any write, whether or not they maintain the view; a batch scheduled before the close reads the closed gate when it starts and refuses, a batch running when the close commits loses the optimistic-concurrency race on the gate document and re-runs into the refusal, and a batch of a superseded chain refuses because its generation fence is stale; nothing needs to drain (D9, D4, E-8, E-38, F1) -- Backfill under the pause enumerates a consistent cut because no source changes: each history batch takes the next stream of its cursor's source in its tenant, reads one `history` page of it from the saved event cursor, folds the page into the building generation through `applyHistoryProjection` in backfill mode, and saves the source, the stream and the event cursor on the progress row, moving to the next stream when the page reports `isDone`, to the next source when that source's enumeration in the tenant ends, and to the next tenant after the last source; an interrupted batch resumes from its cursor with the gate still closed, and the gate never reopens by itself (D9, E-9, Sc L2-6) -- Verification runs under the pause: the verify pass repeats the backfill's batches from the first tenant and source and counts as a miss every row they insert or update, which over a covered generation is none, so a miss is repaired by the batch that found it and the generation is `verified` when the pass ends; `switchGeneration` resumes every closed entry that names the generation in the mutation that makes it active, so writes reopen only after verification (D9, E-9, Sc L2-6) ## Design @@ -118,10 +106,8 @@ The enumeration is the context's `list` query with `includeDeleted`, the one rea - transactionBoundary: each batch is one scheduled internal mutation that commits its rows, its checkpoint and the scheduling of the next batch together; every operator entry that changes anything is one mutation, and `getGenerations` is one query (D9, F8, F9) - convexSurface: `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration`, `purgeGeneration` and `fillTenants` as the operator entries, `backfillBatch`, `verifyBatch`, `purgeBatch` and `fillTenantsBatch` as the scheduled batches, all internal mutations, and `getGenerations` as an internal query, in the composition's `rebuild` module; the gate entries are in the write-pause contract (D9, E-8, E-48) - typeRebuildTarget: `type RebuildTarget = { readModel: ReadModel; source: SourceRef; list: FunctionReference<"query", "internal", ListArgs, PaginationResult> }` one per-entity read model the deployment can rebuild, its one source stream type, and the reference to that stream type's `list` query in its context component, such as `components.orders.queries.order.list` (E-8, E-9, D10) -- typeHistorySource: `type HistorySource = { source: SourceRef; list: FunctionReference<"query", "internal", ListArgs, PaginationResult<{ version: StreamVersion }>>; history: FunctionReference<"query", "internal", { tenantId: string; streamId: string; fromVersion?: number; paginationOpts: PaginationOptions }, PaginationResult> }` one source stream type of a history view, with the references to its `list` and `history` queries of `spec:context.queries` in its context component, such as `components.inventory.queries.stockItem.list` and `components.inventory.queries.stockItem.history` (E-8, E-9, D10) -- typeHistoryRebuildTarget: `type HistoryRebuildTarget = { readModel: HistoryProjection; sources: readonly [HistorySource, ...HistorySource[]] }` one history view the deployment can rebuild under the write pause, with every context and stream type pair its bindings name, in the order a pass takes them; the order allocation history's lists the stock item source first and the order source second (E-8, E-9, E-38, D9) - typeRebuildConfig: `type RebuildConfig = { targets: readonly (RebuildTarget | HistoryRebuildTarget)[]; refs: { backfillBatch: BatchRef; verifyBatch: BatchRef; purgeBatch: BatchRef; fillTenantsBatch: FillBatchRef } }` where `type BatchRef = FunctionReference<"mutation", "internal", { generationId: Id<"generations">; fence: number }, null>`, `type FillBatchRef = FunctionReference<"mutation", "internal", { fence: number }, null>` and `refs` are the composition's own registered batches, which a batch schedules by reference; a target that carries `sources` is a history view, and no two targets share a read model name (E-40, E-49, F8) -- fnStartGeneration: `export const startGeneration = internalMutation({ args: { readModel: v.string(), projectionVersion: v.optional(v.number()), batchSize: v.optional(v.number()), operator: v.string() }, returns: v.id("generations"), handler })` in order: `assertOperator`; the target by name, else `"This deployment declares no read model " + readModel`; the version, `projectionVersion` when given and else the version of the first of the read model's `projections`, checked by `projectionOf`; the batch size by `batchSizeFor`; the in-flight check, throwing `"Read model " + name + " already has generation " + n + " in " + state` when a generation is `building`, `verifying` or `verified`; the tenant list check, throwing `"The tenant list is empty while grants exist; fillTenants fills it from the grants table"` when `nextTenant(ctx, null)` answers `null` and `ctx.db.query("grants").first()` answers a row, and `"The tenant list is being filled; startGeneration waits until fillTenants has ended"` when the `tenantFill` row is in the pass `fill`; then it inserts the generation row with the next number, one above the last row of `by_read_model` in descending order and 1 when there is none, `state: "building"`, `pauseRequired` false for a `RebuildTarget` and true for a `HistoryRebuildTarget`, whose start `historyStart` states, `fence: 1`, `startedAt` and `changedAt` at the mutation's `Date.now()` and `startedBy` and `changedBy` the operator, inserts the progress row with `pass: "backfill"`, the batch size, `cursor: null`, every count 0 and `updatedAt` at the same `Date.now()`, schedules `refs.backfillBatch` with fence 1 through `ctx.scheduler.runAfter(0, ...)`, and returns the generation row's ID (D9, E-8, E-9, E-40, E-48, E-49) +- fnStartGeneration: `export const startGeneration = internalMutation({ args: { readModel: v.string(), projectionVersion: v.optional(v.number()), batchSize: v.optional(v.number()), operator: v.string() }, returns: v.id("generations"), handler })` in order: `assertOperator`; the target by name, else `"This deployment declares no read model " + readModel`; the version, `projectionVersion` when given and else the version of the first of the read model's `projections`, checked by `projectionOf`; the batch size by `batchSizeFor`; the in-flight check, throwing `"Read model " + name + " already has generation " + n + " in " + state` when a generation is `building`, `verifying` or `verified`; the tenant list check, throwing `"The tenant list is empty while grants exist; fillTenants fills it from the grants table"` when `nextTenant(ctx, null)` answers `null` and `ctx.db.query("grants").first()` answers a row, and `"The tenant list is being filled; startGeneration waits until fillTenants has ended"` when the `tenantFill` row is in the pass `fill`; then it inserts the generation row with the next number, one above the last row of `by_read_model` in descending order and 1 when there is none, `state: "building"`, `pauseRequired` false for a `RebuildTarget` and true for a `HistoryRebuildTarget`, whose start `spec:application.history-rebuild#design.historyStart` states, `fence: 1`, `startedAt` and `changedAt` at the mutation's `Date.now()` and `startedBy` and `changedBy` the operator, inserts the progress row with `pass: "backfill"`, the batch size, `cursor: null`, every count 0 and `updatedAt` at the same `Date.now()`, schedules `refs.backfillBatch` with fence 1 through `ctx.scheduler.runAfter(0, ...)`, and returns the generation row's ID (D9, E-8, E-9, E-40, E-48, E-49) - fnBatchSizeFor: `batchSizeFor(readModel: ReadModel | HistoryProjection, requested?: number): number` throwing `"The batch size must be a whole number of at least 1, and " + requested + " is not"` unless `requested` is absent or an integer of at least 1, and returning `min(requested ?? rebuildBatchCeiling(readModel), rebuildBatchCeiling(readModel))`, so a batch size of 0, a negative one and a fraction are refused and a larger one is lowered to the ceiling (E-40, F13) - fnBackfillBatch: `export const backfillBatch = internalMutation({ args: { generationId: v.id("generations"), fence: v.number() }, returns: v.null(), handler })` (D9, E-40) - fnVerifyBatch: `export const verifyBatch = internalMutation({ args: { generationId: v.id("generations"), fence: v.number() }, returns: v.null(), handler })` (D9) @@ -158,13 +144,7 @@ The enumeration is the context's `list` query with `includeDeleted`, the one rea - limitBuildingGenerations: at most one generation in `building`, `verifying` or `verified` per read model at a time, so a command writes at most two generations, the active one and that one (E-8, E-9) - limitRollbackPeriod: `[extension]` 7 days by default, stored as `retireAfter` on the retired row; the retired generation is kept and not written, and a rollback at or after `retireAfter` is refused (E-8, D9) - limitGenerationsListed: 20 generations per `getGenerations` answer, the newest first, a library constant (E-8, F13) -- fnHistoryPageCall: `ctx.runQuery(source.history, { tenantId, streamId, paginationOpts: { numItems: batchSize, cursor: eventCursor } })` with `source` the entry of the target's `sources` the cursor names and `batchSize` the progress row's, the one `history` call a history batch makes beside its one `list` call of `numItems` 1, returning a `paginator` page of envelopes in version order, capped by the query's own item and byte bounds, that the batch folds through `applyHistoryProjection` (D2, D10, E-9, E-24) -- historyCursor: a history view's batch cursor adds `sourceIndex`, the position in the target's `sources`, so a pass goes tenant by tenant in tenant-ID order, source by source in `sources` order within a tenant, stream by stream in the source's `list` order and page by page in version order within a stream, and reads the stream a cursor names from that source's `history`, so two sources with equal local stream IDs never meet; a pass of a history view costs at least one batch per tenant and source, the batch whose `list` page holds no stream (E-8, E-40, E-49, Law 11) -- historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) -- historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) -- historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause (D9, E-8, E-9, Sc L2-6) - rebuildClass: a read model declares its class at declaration time, per entity for the online path, as a `ReadModel` with its projections, and history across streams for the write pause, as a `HistoryProjection`; `pauseRequired` on the generation row records it, and a history view never rebuilds online because a live fold onto a row backfill has not reached cannot be told apart from a complete one (D9, D18, E-9) -- limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) ## Example space @@ -187,9 +167,8 @@ And writes {writes:"never stopped"|"reopen only after verification"|"reopen afte - A reviewer confirms that the version compare in `applyProjection` is the only thing that prevents a stale overwrite and that L2-5's example asserts it against a concurrent live command. - A reviewer confirms that a batch patches the generation row only in the mutation that ends its pass, and that no command or query over a read model reads the progress row. - A reviewer confirms that every entry that changes a generation calls `assertOperator` first and writes the operator on the row, and that no rebuild function reads a grant or `ctx.auth`. -- A reviewer confirms that the gate is read inside every writer's mutation, not cached, that every batch reads it through `gateAllows` and parks its generation instead of throwing, that `startGeneration` closes one entry per source of a paused view and nothing else, and that the write-pause examples assert a refusal of a source writer while closed, the fold of the history view against the journal, and a reopen only after verification. +- A reviewer confirms that the gate is read inside every writer's mutation, not cached, and that every batch reads it through `gateAllows` and parks its generation instead of throwing. - A reviewer confirms that no registry function, batch or query takes a tenant scope for a generation, that every batch takes its tenant from `nextTenant` and names it on its context call, and that L2-5's example seeds more than one tenant and asserts both are covered at cutover. -- A reviewer confirms that a history target's `sources` name exactly the context and stream type pairs the view's bindings name, so `startGeneration` closes every writer of its sources, and that `rollbackGeneration` refuses every generation with `pauseRequired`. - A reviewer confirms that `resumeChain` is the only code path that reschedules a stranded generation and that the restore's `finishRestoreRun` calls it for every generation its inventory lists in `building` or `verifying`. - A reviewer confirms that `fillTenants` and `fillTenantsBatch` write only tenant rows and the `tenantFill` row, read a grant only through `by_principal` to find the next tenant, insert a tenant row only after a point read finds none, and that `startGeneration` refuses an empty tenant list beside a grant and a fill in its pass `fill`, and `fillTenants` a generation in flight. - A reviewer confirms that no function writes a retired generation, that `rollbackGeneration` is the only transition out of `retired` besides purge, and that L2-5's example asserts that the reopened generation is `verified`, holds a row for a subject created since its retirement and none for a subject deleted since, before it is active. diff --git a/design/specs/command/command-declaration.sdp.md b/design/specs/command/command-declaration.sdp.md index d289836..e3bce2c 100644 --- a/design/specs/command/command-declaration.sdp.md +++ b/design/specs/command/command-declaration.sdp.md @@ -10,7 +10,6 @@ relations: - spec:command.outcome-boundary - spec:kernel.outcome-model - spec:application.projection-contract - - spec:application.aggregate-projection - spec:application.history-projection - spec:context.persistence-adapter - spec:operations.baseline-operations @@ -68,7 +67,7 @@ What generation would emit, once two modules show the pattern: for each declarat - typePermissionPolicy: `type PermissionPolicy = { permission: string; subjectFrom?: (input: I) => SubjectRef }` (D11, D12) - typeExecutor: `type Executor = (ctx: MutationCtx, call: { tenantId: string; actor: Actor; operation: OperationRef; input: I }) => Promise>` where `OperationRef` is the one the pipeline minted at step 7, forwarded unchanged to every context call, and the executor's context calls are `ctx.runMutation` on component APIs with the facts it captured (D12, D10, D4, D3, E-26) - typeExecutorResult: `type ExecutorResult = CommittedOutcome & { streams: StreamDto[] }` where `CommittedOutcome` is the kernel's committed half of `Outcome` and `streams` concatenates the `streams` of every context outcome the executor received, the `StreamDto` of `spec:context.persistence-adapter`, so the pipeline's step 9 has every DTO, version and created flag it needs (D12, D4, D8, E-7, E-23) -- typeReadModelBinding: `type ReadModelBinding = { readModel: ReadModel | AggregateProjection | HistoryProjection; source: SourceRef }`, where `readModel` is a per-entity read model, an aggregate projection or a history projection as `spec:application.projection-contract`, `spec:application.aggregate-projection` and `spec:application.history-projection` pin them and `source` selects which `streams` entries feed it; the binding repeats neither the read model's name nor its projection's version, a history projection is bound once per source stream type it folds while a per-entity read model or an aggregate projection is bound to its one source stream type, and the binding has no update function of its own (D8, D12, E-7, E-9) +- typeReadModelBinding: `type ReadModelBinding = { readModel: ReadModel | HistoryProjection; source: SourceRef }`, where `readModel` is a per-entity read model or a history projection as `spec:application.projection-contract` and `spec:application.history-projection` pin them and `source` selects which `streams` entries feed it; the binding repeats neither the read model's name nor its projection's version, a history projection is bound once per source stream type it folds while a per-entity read model is bound to its one source stream type, and the binding has no update function of its own (D8, D12, E-7, E-9) - typeAudit: `audit?: { kind: "security" | "business" }` asks the pipeline's step 10 to write one audit record through `writeAudit` of `spec:operations.baseline-operations`, which fails closed, after an applied command and after a business failure; absent, the default, the command writes none (D19, E-38, E-43) - typeDiagnosticSinkField: `diagnosticSink?: DiagnosticSink`, the sink type of `spec:operations.baseline-operations`, names where the pipeline writes the command's diagnostic lines; absent, the default, it is `consoleSink`; the production composition names none, and the fixture composition's `PlaceOrder` names the sink through which Sc ALL-1 breaks metrics and logging (D19, E-38, E-43) - typeAdmissionPolicy: `type AdmissionPolicy = (ctx: MutationCtx, call: PipelineCall) => Promise<{ admitted: true } | { admitted: false; code: "rateLimited" | "capacity"; retryAfterMs?: number }>`; a consumption it writes commits only with the command, so it counts committed intent (D6, E-32) diff --git a/design/specs/command/command-pipeline.sdp.md b/design/specs/command/command-pipeline.sdp.md index 29fa0b1..2d377c1 100644 --- a/design/specs/command/command-pipeline.sdp.md +++ b/design/specs/command/command-pipeline.sdp.md @@ -12,7 +12,6 @@ relations: - spec:command.outcome-boundary - spec:command.actor-and-scope - spec:application.projection-contract - - spec:application.aggregate-projection - spec:application.history-projection - spec:application.write-pause - spec:command.receipt-table @@ -96,7 +95,7 @@ The pipeline is one code path with two registered entries per command. The publi - Step 6, admit: for new intent only, the pipeline evaluates the declaration's admission policy; a refusal throws transient `rateLimited` or `capacity`, nothing is stored, and the same intent may be retried (D6, D4, Sc L1-9) - Step 7, gate and mint the operation: the pipeline reads the maintenance gate once through `assertWritable(ctx, scopesOfUseCase(tenantId, decl.writes))` of `spec:application.write-pause`, which refuses with the transient `writePaused` while a scope of this command is closed, the whole deployment, the tenant or a stream type it writes, or the deployment is in restore, and only then mints the whole `OperationRef`, the operation ID, `causedBy` from the call's `causedBy` argument when the internal entry received one and otherwise of kind `command` with the declaration's name, and the caller's optional correlation ID, and passes it to every context call so that events in different streams relate through it (Vocab: operation, D2, D9, D13, E-8, E-26, E-31) - Step 8, execute: the executor captures the outside facts the decision needs, from parent tables or configuration read in this transaction, and calls each context named by the declaration once through `ctx.runMutation` on the component's sanctioned operation, `components..operations.`, with tenant scope, actor, the operation reference, the command's input as lists and the captured facts; each call is an isolated sub-transaction that commits with the parent and rolls back on throw; a rejection thrown inside a context rolls its sub-transaction back and propagates to the boundary's outermost rethrow, and the executor returns the kernel's `CommittedOutcome` together with the `streams` entries every context call returned, never a rejection value (F2, F3, D3, D10, D7, E-23) -- Step 9, update read models: the pipeline first checks that every `streams` entry the executor returned names a context and stream type in the declaration's `writes`, throwing a plain error, a defect and a technical failure, when one does not, so the list the gate of step 7 was derived from is proven on the first native run; then, once for each read model its bindings name, however many bindings name it, it reads the generations to write through `generationsToWrite` and throws a plain error that names the command and the read model when there is none, and, for every binding of a per-entity read model, calls `applyProjection` of `spec:application.projection-contract`, or `applyAggregate` for a binding of that form, for each matching entry with the entry's DTO and version and the list unchanged, in the live-created mode when the entry's `created` flag is set and the live-updated mode otherwise, and, once for each bound history read model, calls `applyHistoryProjection` with the events of every entry any of its bindings matches, in the order of the entries, with no version, the live-updated mode and the list unchanged, in the same transaction; it counts the rows those calls insert, replace or delete, a row in each generation once, a history row once however many entries fed it, and after each call throws a plain error when they pass `limitReadModelWritesPerCommand`, and the count, history rows included, is what the diagnostic record carries as `readModelRows`; the executor writes no read-model table itself (D8, D9, D12, Law 9, E-7, E-8, E-9, E-23, E-45) +- Step 9, update read models: the pipeline first checks that every `streams` entry the executor returned names a context and stream type in the declaration's `writes`, throwing a plain error, a defect and a technical failure, when one does not, so the list the gate of step 7 was derived from is proven on the first native run; then, once for each read model its bindings name, however many bindings name it, it reads the generations to write through `generationsToWrite` and throws a plain error that names the command and the read model when there is none, and, for every binding of a per-entity read model, calls `applyProjection` of `spec:application.projection-contract` for each matching entry with the entry's DTO and version and the list unchanged, in the live-created mode when the entry's `created` flag is set and the live-updated mode otherwise, and, once for each bound history read model, calls `applyHistoryProjection` with the events of every entry any of its bindings matches, in the order of the entries, with no version, the live-updated mode and the list unchanged, in the same transaction; it counts the rows those calls insert, replace or delete, a row in each generation once, a history row once however many entries fed it, and after each call throws a plain error when they pass `limitReadModelWritesPerCommand`, and the count, history rows included, is what the diagnostic record carries as `readModelRows`; the executor writes no read-model table itself (D8, D9, D12, Law 9, E-7, E-8, E-9, E-23, E-45) - Step 10, insert the receipt and the audit record: for a receipted call the pipeline inserts the thin receipt, outcome kind, operation ID, affected IDs derived from the stream versions, and the stream versions, in the same transaction as the lookup of step 5, so two concurrent identical requests serialize under optimistic concurrency and only one effect commits; for a declaration that sets `audit` it then calls `writeAudit` of `spec:operations.baseline-operations` with the record `auditRecordSources` of that Spec builds, whose failure throws and rolls the command back, a refused insert being a plain error and so a technical failure with nothing of the command stored (D6, D19, F1, Sc L1-3, E-43) - Step 11, return: the mutation builds the diagnostic record of the outcome from values it already holds and passes it to `emitDiagnostic` with the declaration's sink, which swallows every error, then returns the outcome kind, the result DTO, the operation ID, the affected IDs, the stream versions and `replayed` false (D4, D8, D2, D19, E-43) - At any step, a throw leaves the mutation uncommitted: the state and journal writes of every context sub-transaction, the read-model writes and the receipt are all rolled back, and nothing is stored as a business outcome (Law 2, D7, F2, Sc L1-2) @@ -124,7 +123,7 @@ The pipeline depends on three contracts it does not own: the context component's - contextCall: `await ctx.runMutation(components.inventory.operations.allocate, { tenantId, actor, operation, input: { orderId, lines }, facts })`, one call per context named by the declaration, lists in and the operation outcome out, the DTO with the versions and one `streams` entry per planned stream with its DTO, version, created flag and the events the call appended; the `args` shape is the one `spec:context.context-component` fixes, `operation` is the `OperationRef` of `spec:context.event-envelope` minted at step 7, and the return is the `OperationOutcome` of `spec:context.persistence-adapter` (D10, F2, E-22, E-23, E-26) - contextCallIsolation: each component call is a sub-transaction isolated from the other calls; a throw inside it rolls that sub-transaction back, and uncaught it rolls the parent back, so the parent never observes a half-applied context (F2, F3, S2) - rejectionRelay: a `ConvexError` carrying the kernel's `Rejection` thrown inside a component reaches the pipeline with its data intact under F14, which Probe 2 showed on the pinned backend; `normalizeThrown(error, decl.name, decl.rejections)` at the handler's outermost level rethrows it as the boundary's `RejectionData` when its code is a platform code or one the declaration's `rejections` names, and as a plain error otherwise; the fallback for a refuted F14, contexts returning the rejection as a value, is not needed (F14, Probe 2, D7) -- readModelWrites: parent-owned read-model tables written by the pipeline at step 9, one `applyProjection` or `applyAggregate` call per matching `streams` entry per binding of those forms the declaration lists and one `applyHistoryProjection` call per bound history read model with the events of every entry its bindings match, with the list `generationsToWrite` returns, each generation with its role; the executor holds the DTOs and the appended events only long enough to return them and writes no read-model table, so the declaration's list is the one wiring fact for read models (D8, D9, D12, E-7, E-9) +- readModelWrites: parent-owned read-model tables written by the pipeline at step 9, one `applyProjection` call per matching `streams` entry per binding of a per-entity read model the declaration lists and one `applyHistoryProjection` call per bound history read model with the events of every entry its bindings match, with the list `generationsToWrite` returns, each generation with its role; the executor holds the DTOs and the appended events only long enough to return them and writes no read-model table, so the declaration's list is the one wiring fact for read models (D8, D9, D12, E-7, E-9) - writesCheck: `decl.writes` is proven at step 9 against the `streams` entries the executor returned, in memory and with no extra read; an entry outside the list throws a plain error, so a declaration whose `writes` understates its executor fails its first native run rather than passing a closed source scope at step 7 (E-8, E-38, Law 6) - fnWriteReadModels: `writeReadModels(ctx: RegistryReader & RowWriter, commandType: string, bindings: readonly ReadModelBinding[], input: { tenantId: string; streams: readonly StreamDto[] }): Promise`, the read-model half of step 9 and the one function of the read-model library the pipeline calls, returning the number of read-model rows it inserted, replaced or deleted, a row in each generation once and a history row once however many entries fed it, the count it holds against `limitReadModelWritesPerCommand`; the pipeline passes its own ctx, which at run time is the parent's and holds the registry and the read model's table (D8, E-7, E-9) - helperGenerics: [extension] every library helper that takes the parent's own ctx or reads one of the parent's tables, `writeReadModels`, `activeGeneration` and `authorizeQuery` among them, is generic over the parent's data model, because a database reader is not covariant in its data model under the repository's compiler settings, so a helper typed with the library's tables alone refuses the parent's ctx (E-7, E-9, D11) diff --git a/design/specs/history-view.pack.sdp.md b/design/specs/history-view.pack.sdp.md index f0e78a4..196bd0a 100644 --- a/design/specs/history-view.pack.sdp.md +++ b/design/specs/history-view.pack.sdp.md @@ -5,8 +5,9 @@ specs: - spec:application.projection-contract - spec:application.read-models - spec:application.rebuild - - spec:application.rebuild.write-pause-rebuild-interrupt - - spec:application.rebuild.write-pause-rebuild-abort + - spec:application.history-rebuild + - spec:application.history-rebuild.write-pause-rebuild-interrupt + - spec:application.history-rebuild.write-pause-rebuild-abort - spec:application.write-pause - spec:application.generation-registry - spec:application.orders-inventory-example @@ -21,4 +22,4 @@ modelRefs: --- # History view -The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. +The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. diff --git a/design/tools/prose-mentions.json b/design/tools/prose-mentions.json index 71bf9dc..477fc8f 100644 --- a/design/tools/prose-mentions.json +++ b/design/tools/prose-mentions.json @@ -1,12 +1,12 @@ { "pairs": [ { - "from": "spec:application.rebuild.write-pause-rebuild-abort", + "from": "spec:application.history-rebuild.write-pause-rebuild-abort", "to": "spec:application.orders-inventory-example", "reason": "An example keeps only its refines and verifies edges; the Verification bullet names the fixture view it runs on." }, { - "from": "spec:application.rebuild.write-pause-rebuild-interrupt", + "from": "spec:application.history-rebuild.write-pause-rebuild-interrupt", "to": "spec:application.orders-inventory-example", "reason": "An example keeps only its refines and verifies edges; the Verification bullet names the fixture view it runs on." }, From 9687ceb2d7b60b7924b53d3cef8e015cbbd94aa2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:49:56 +0200 Subject: [PATCH 18/60] build: the Pack page generator, one page per capability Pack Co-Authored-By: Claude Opus 5.5 --- package.json | 1 + scripts/pack-page.mjs | 1037 ++++++++++++++++++++++++++++++++++ tests/pure/pack-page.test.ts | 371 ++++++++++++ 3 files changed, 1409 insertions(+) create mode 100644 scripts/pack-page.mjs create mode 100644 tests/pure/pack-page.test.ts diff --git a/package.json b/package.json index d311e5b..46999a5 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "view": "sdp view", "census": "sdp census", "sdp:build": "npx sdp build && node scripts/pinned.mjs --pack pack:history-view --name history-view", + "pages": "node scripts/pack-page.mjs --pack pack:history-view --out design/pages/history-view.md", "typecheck": "npm run sdp:build && tsc", "lint": "eslint src fixture example harness tests scripts vitest.config.ts vitest.hosted.config.ts eslint.config.js", "format:check": "prettier --check src fixture example harness tests scripts evidence/README.md README.md package.json tsconfig.json convex.json vitest.config.ts vitest.hosted.config.ts eslint.config.js .github/workflows/ci.yml .github/workflows/hosted.yml .prettierrc.json", diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs new file mode 100644 index 0000000..c4640d9 --- /dev/null +++ b/scripts/pack-page.mjs @@ -0,0 +1,1037 @@ +// Writes the page of one capability Pack, which a person opens to understand its design: +// `node scripts/pack-page.mjs --pack --out ` writes the page, and with `--check` it +// writes nothing and compares the page at --out with what the tree generates, naming the first line +// that differs. It reads the graph in memory through the Protocol package's exported extractor and +// reader, never through validate, view, census or build, and runs recipes 20 and 24 as the pinned +// Protocol ships them in recipes.md. Three inputs join it: the pinned pairs +// (tests/types/pinned-pairs.json), the anchor sites (design/tools/anchor-sites.json) and the question +// sources of the decision register (design/decisions/register.json); a missing input is an error +// that names its path. The members come in the order the Pack file writes them: the reader sorts +// them, so the order is read from the file. The next rung's blocker is the first clause of the Protocol's floor table, cumulative +// up to the rung above the stated one, that fails: the Protocol's evaluator answers only for the +// stated rung, so the page walks the exported table with the same predicates. +// Exit 0: written, or the page is current. 1: --check found the page behind the tree. 2: it cannot +// generate. +import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; +import { dirname, join, relative, resolve, sep } from "node:path"; +import { fileURLToPath } from "node:url"; +import { parseArgs } from "node:util"; +import { + SPEC_KINDS, + SPEC_READINESS, + buildGraphIndex, + createReader, + extract, + readinessFloors, +} from "@libar-dev/software-delivery-protocol"; +import { format, resolveConfig } from "prettier"; + +const root = join(import.meta.dirname, ".."); +const engine = "@libar-dev/software-delivery-protocol"; +const inputs = { + pairs: "tests/types/pinned-pairs.json", + sites: "design/tools/anchor-sites.json", + register: "design/decisions/register.json", +}; +// The relations a Spec rests on, as recipe 21 and the floor's typed-dependency clause read them. +const typedRelations = ["refines", "dependsOn", "constrainedBy", "decidedBy"]; +const typedClause = "typed-dependency-targets-are-defined"; + +export class PageError extends Error {} +function cannot(reason) { + throw new PageError(reason); +} + +// --------------------------------------------------------------------------------------------- +// Inputs. One reader per input, each to the shape the rulings fix; a file that is missing or off +// that shape is an error that names the path. + +function readJson(base, path) { + const file = join(base, path); + if (!existsSync(file)) cannot(`${path} is missing`); + try { + return JSON.parse(readFileSync(file, "utf8")); + } catch (error) { + return cannot(`${path} is not JSON: ${error.message}`); + } +} +const isText = (value) => typeof value === "string" && value.length > 0; + +// The pinned pairs: what the type test compares for each pinned declaration, by entry address. +export function readPinnedPairs(base, pack) { + const path = inputs.pairs; + const data = readJson(base, path); + if (data?.pack !== pack) + cannot(`${path} names ${JSON.stringify(data?.pack)}, not ${pack}`); + if (!isText(data.test) || !Array.isArray(data.pairs)) + cannot(`${path} needs a test path and a list of pairs`); + const pairs = new Map(); + data.pairs.forEach((pair, at) => { + const where = `${path} pairs[${at}]`; + if (!isText(pair?.address)) cannot(`${where} has no address`); + if (!["bound", "ahead", "notCompared"].includes(pair.state)) + cannot(`${where} has the state ${JSON.stringify(pair.state)}`); + if (!["type", "typeWithoutCtx", "table", "none"].includes(pair.comparison)) + cannot(`${where} has the comparison ${JSON.stringify(pair.comparison)}`); + if (pair.code !== null && !/^[^#\s]+#[\w$]+$/.test(pair.code ?? "")) + cannot(`${where} has the code ${JSON.stringify(pair.code)}`); + if (pair.state === "bound" ? pair.reason !== null : !isText(pair.reason)) + cannot(`${where} has the reason ${JSON.stringify(pair.reason)}`); + if (pairs.has(pair.address)) cannot(`${where} repeats ${pair.address}`); + pairs.set(pair.address, pair); + }); + return { test: data.test, pairs }; +} + +// The anchor sites: the source files each implementation anchor written in a test file stands for. +export function readAnchorSites(base) { + const path = inputs.sites; + const data = readJson(base, path); + if (!Array.isArray(data?.anchors)) cannot(`${path} has no list of anchors`); + const sites = new Map(); + data.anchors.forEach((entry, at) => { + const where = `${path} anchors[${at}]`; + if ( + !isText(entry?.anchor) || + !Array.isArray(entry.sources) || + !entry.sources.every(isText) + ) + cannot(`${where} needs an anchor and a list of source paths`); + if (sites.has(entry.anchor)) cannot(`${where} repeats ${entry.anchor}`); + sites.set(entry.anchor, entry.sources); + }); + return sites; +} + +// The question sources: every register row that names a Spec question, with the fields the page shows. +export function readQuestionSources(base) { + const path = inputs.register; + const data = readJson(base, path); + if (!Array.isArray(data?.decisions)) + cannot(`${path} has no list of decisions`); + const rows = []; + for (const decision of data.decisions) + for (const source of decision.sources ?? []) { + if (source?.kind !== "specQuestion") continue; + if (![source.spec, source.question, source.file].every(isText)) + cannot( + `${path} ${decision.id}: a specQuestion source needs spec, question and file`, + ); + rows.push({ + id: decision.id, + class: decision.class ?? null, + status: decision.status ?? null, + advisor: decision.advisor ?? null, + blocks: decision.blocks ?? null, + spec: source.spec, + question: source.question, + }); + } + return rows; +} + +// --------------------------------------------------------------------------------------------- +// The pure parts. + +// The members of a Pack in the order its file writes them: the `specs` list of its front matter. +export function authoredMembers(packText) { + const front = /^---\n([\s\S]*?)\n---\n/.exec(packText); + if (front === null) cannot("the Pack file has no front matter"); + const members = []; + let inSpecs = false; + for (const line of front[1].split("\n")) { + if (/^\S/.test(line)) inSpecs = /^specs:\s*$/.test(line); + else if (inSpecs) { + const item = /^\s+-\s+(\S+)\s*$/.exec(line); + if (item !== null) members.push(item[1]); + } + } + if (members.length === 0) cannot("the Pack file lists no specs"); + return members; +} + +// The rung above the stated one and the clauses that fail at it, the floors being cumulative: every +// clause of that rung and of each rung below it, in table order. `floors` is the floor table with +// each clause's verdict, lowest rung first. +export function nextRung(stated, floors) { + const at = floors.findIndex((floor) => floor.rung === stated); + if (at === -1) cannot(`the floor table has no rung ${stated}`); + const next = floors[at + 1]; + if (next === undefined) return { rung: null, failing: [] }; + const failing = floors + .slice(0, at + 2) + .flatMap((floor) => floor.clauses.filter((clause) => !clause.holds)); + return { rung: next.rung, failing }; +} + +// A question's text without its flag and with its spaces folded, so that a source's opening text +// joins it however the two were wrapped. +const flagged = /^\[(?:non-)?blocking\]\s*/; +const folded = (text) => text.replace(flagged, "").replace(/\s+/g, " ").trim(); + +// The register rows of one Spec joined to its open questions by text: a row joins each question its +// `question` opens. `left` holds the rows of the Spec that join none. +export function joinQuestions(spec, questions, rows) { + const own = rows.filter((row) => row.spec === spec); + const joined = questions.map((question) => ({ + ...question, + rows: own.filter((row) => + folded(question.question).startsWith(folded(row.question)), + ), + })); + const left = own.filter( + (row) => !joined.some((question) => question.rows.includes(row)), + ); + return { questions: joined, left }; +} + +// Prettier formats a declaration where it parses as TypeScript, as written or as the form its key +// implies: a call signature as a function, an index as a call chained on a name, a property as an +// interface member. Otherwise the declaration stays as the Spec writes it. +const wrappers = [ + { applies: () => true, wrap: (text) => text, unwrap: (text) => text }, + { + applies: (text) => /^[\w$]+\s*[<(]/.test(text), + wrap: (text) => `function ${text} {}`, + unwrap: (text) => + text.startsWith("function ") && text.endsWith(" {}") + ? text.slice("function ".length, -" {}".length) + : null, + }, + { + applies: (text) => text.startsWith("."), + wrap: (text) => `x${text}`, + unwrap: (text) => (text.startsWith("x.") ? text.slice(1) : null), + }, + { + applies: (text) => /^[\w$]+\??:/.test(text), + wrap: (text) => `interface Pinned {\n${text}\n}`, + unwrap: (text) => { + const lines = text.split("\n"); + const inner = lines.slice(1, -1); + if ( + lines[0] !== "interface Pinned {" || + lines.at(-1) !== "}" || + !inner.every((line) => line === "" || line.startsWith(" ")) + ) + return null; + return inner.map((line) => line.slice(2)).join("\n"); + }, + }, +]; +export async function formatDeclaration(text, options = {}) { + for (const { applies, wrap, unwrap } of wrappers) { + if (!applies(text)) continue; + let formatted; + try { + formatted = await format(wrap(text), { + ...options, + parser: "typescript", + }); + } catch { + continue; + } + const body = unwrap(formatted.trimEnd()); + if (body !== null) return { text: body.replace(/;$/, ""), formatted: true }; + } + return { text, formatted: false }; +} + +// The line of each Design entry and of each open question in a Spec's Markdown carrier. +export function specLines(text) { + const design = new Map(); + const questions = []; + let section = null; + text.split("\n").forEach((line, at) => { + const heading = /^#{2,3} (.+)$/.exec(line); + if (heading !== null) section = heading[1]; + else if (section === "Design") { + const key = /^- ([a-z][A-Za-z0-9]*): /.exec(line); + if (key !== null) design.set(key[1], at + 1); + } else if ( + section === "Open questions" && + /^- \[(?:non-)?blocking\] /.test(line) + ) + questions.push(at + 1); + }); + return { design, questions }; +} + +// A question's opening, to the end of its first sentence and at most `limit` characters, cut at a +// space outside any code span. +export function opening(text, limit = 220) { + let code = 0; + let sentence = text.length; + let cut = -1; + for (let at = 0; at < text.length; at++) { + if (text[at] === "`") { + let run = 1; + while (text[at + run] === "`") run++; + code = code === 0 ? run : code === run ? 0 : code; + at += run - 1; + } else if ( + code === 0 && + text[at] === "." && + /\s/.test(text[at + 1] ?? " ") + ) { + sentence = at + 1; + break; + } else if (code === 0 && text[at] === " " && at <= limit) cut = at; + } + if (sentence <= limit || cut === -1) return text.slice(0, sentence); + return `${text.slice(0, cut)} …`; +} + +// The first line at which two texts differ, or null when they are equal. +export function firstDifference(committed, generated) { + if (committed === generated) return null; + const left = committed.split("\n"); + const right = generated.split("\n"); + let at = 0; + while (at < left.length && at < right.length && left[at] === right[at]) at++; + return { + line: at + 1, + committed: left[at] ?? null, + generated: right[at] ?? null, + }; +} + +// The tier an example's opening line names, as in "Sc L2-6 · native backend tier · the resume case.". +export function tierOf(openingLine) { + for (const part of openingLine.split("·")) { + const tier = /^\s*(.+?) tier\.?\s*$/.exec(part); + if (tier !== null) return tier[1]; + } + return null; +} + +// --------------------------------------------------------------------------------------------- +// Markdown. + +function span(text) { + const runs = text.match(/`+/g) ?? []; + const fence = "`".repeat(Math.max(0, ...runs.map((run) => run.length)) + 1); + const pad = text.startsWith("`") || text.endsWith("`") ? " " : ""; + return `${fence}${pad}${text}${pad}${fence}`; +} +const cell = (text) => text.replaceAll("|", "\\|").replaceAll("\n", " "); +const table = (head, rows) => [ + `| ${head.join(" | ")} |`, + `|${head.map(() => "---").join("|")}|`, + ...rows.map((row) => `| ${row.map(cell).join(" | ")} |`), +]; +function slug(heading) { + return heading + .toLowerCase() + .replace(/[^\p{L}\p{M}\p{N}\p{Pc} -]/gu, "") + .replaceAll(" ", "-"); +} +const plural = (count, one, many = `${one}s`) => + `${count} ${count === 1 ? one : many}`; +const list = (items) => + items.length <= 1 + ? (items[0] ?? "") + : `${items.slice(0, -1).join(", ")} and ${items.at(-1)}`; +const compared = { + type: "the type", + typeWithoutCtx: "the type, its ctx parameter erased", + table: "the table's document and indexes", + none: "nothing", +}; +const states = { bound: "bound", ahead: "ahead", notCompared: "not compared" }; + +// --------------------------------------------------------------------------------------------- +// The page. + +const AsyncFunction = (async () => {}).constructor; +function recipe(number) { + const recipes = readFileSync( + join(root, "node_modules", engine, "docs/agent-surface/recipes.md"), + "utf8", + ); + const section = recipes + .split(/^## /m) + .find((part) => part.startsWith(`${number}. `)); + const fence = /^```js\n([\s\S]*?)^```$/m.exec(section ?? ""); + if (fence === null) + cannot(`recipes.md has no recipe ${number} with a js fence`); + return fence[1]; +} + +function floorTable(node, index) { + if (!SPEC_KINDS.includes(node.specKind)) return null; + return SPEC_READINESS.map((rung) => ({ + rung, + clauses: readinessFloors[rung].clauses.map((clause) => ({ + id: clause.id, + description: clause.description, + holds: clause.predicate(node, index), + })), + })); +} + +async function readGraph(pack) { + const extracted = extract({ root }); + const error = extracted.report.findings.find( + (finding) => finding.severity === "error", + ); + if (error !== undefined) + cannot(`the graph does not derive: ${error.message.split("\n")[0]}`); + const { graph } = extracted; + const reader = createReader(graph); + const summary = + reader.packs().find((candidate) => candidate.id === pack) ?? + cannot(`the graph has no ${pack}`); + const context = reader.packContext(pack); + const members = authoredMembers( + readFileSync(join(root, summary.file), "utf8"), + ); + const listed = context.members.map((member) => member.id); + if ( + members.length !== listed.length || + !members.every((id) => listed.includes(id)) + ) + cannot(`${summary.file} and the graph list different members`); + const unresolved = context.members.find((member) => !member.resolved); + if (unresolved !== undefined) cannot(`${unresolved.id} is not in the graph`); + return { + graph, + reader, + index: buildGraphIndex(graph), + summary, + members, + questions: await new AsyncFunction("g", "graph", "report", recipe(20))( + reader, + graph, + undefined, + ), + declarations: await new AsyncFunction("g", "graph", "report", recipe(24))( + reader, + graph, + undefined, + ), + }; +} + +export async function generate(pack, out) { + const pin = JSON.parse(readFileSync(join(root, "package.json"), "utf8")); + const enginePin = + pin.devDependencies?.[engine] ?? + pin.dependencies?.[engine] ?? + cannot(`package.json does not depend on ${engine}`); + const { reader, index, summary, members, questions, declarations } = + await readGraph(pack); + const pairs = readPinnedPairs(root, pack); + const sites = readAnchorSites(root); + const sources = readQuestionSources(root); + const prettierOptions = + (await resolveConfig(join(root, "package.json"))) ?? {}; + + const pageDirectory = dirname(out); + const link = (path, line) => { + const target = relative(pageDirectory, join(root, path)) + .split(sep) + .join("/"); + if (line === undefined || line === null) return target; + return `${target}${path.endsWith(".md") ? "?plain=1" : ""}#L${line}`; + }; + const specs = new Map(reader.specs().map((spec) => [spec.id, spec])); + const rank = (rung) => SPEC_READINESS.indexOf(rung); + const memberSet = new Set(members); + const openingLine = (id) => (specs.get(id)?.narrative ?? "").split("\n")[0]; + const specLink = (id) => { + const spec = specs.get(id); + return spec === undefined ? span(id) : `[${span(id)}](${link(spec.file)})`; + }; + + // Everything the page says about one member. + const model = await Promise.all( + members.map(async (id, at) => { + const context = reader.specContext(id); + const node = index.primitivesById.get(id); + const floors = floorTable(node, index); + const next = + floors === null ? null : nextRung(context.statedReadiness, floors); + const lines = specLines(readFileSync(join(root, context.file), "utf8")); + const typed = context.relationsOut.filter((relation) => + typedRelations.includes(relation.type), + ); + const belowDefined = typed.filter( + (relation) => + !relation.resolved || + rank(specs.get(relation.otherId)?.statedReadiness) < rank("defined"), + ); + const own = ( + questions.specs.find((row) => row.id === id)?.questions ?? [] + ).map((question, position) => ({ + ...question, + position: position + 1, + line: lines.questions[position] ?? null, + })); + const joined = joinQuestions(id, own, sources); + const entries = await Promise.all( + declarations.rows + .filter((row) => row.spec === id) + .map(async (row) => ({ + key: row.key, + address: `${id}#design.${row.key}`, + line: lines.design.get(row.key) ?? null, + pair: pairs.pairs.get(`${id}#design.${row.key}`) ?? null, + declaration: await formatDeclaration( + row.declaration, + prettierOptions, + ), + })), + ); + const declared = new Set(entries.map((entry) => entry.key)); + return { + id, + number: at + 1, + context, + heading: `${at + 1}. ${context.title ?? id}`, + next, + typed, + blockers: + next !== null && + next.failing.some((clause) => clause.id === typedClause) + ? belowDefined + : [], + entries, + otherEntries: [...lines.design] + .filter(([key]) => !declared.has(key)) + .map(([key, line]) => ({ key, line })), + questions: joined.questions, + leftRows: joined.left, + }; + }), + ); + const byId = new Map(model.map((member) => [member.id, member])); + const memberLink = (id) => { + const member = byId.get(id); + return `[${member.context.title ?? id}](#${slug(member.heading)})`; + }; + const nextText = (member) => { + if (member.next === null) return "not evaluated: the kind is not ratified"; + if (member.next.rung === null) return "none above ready"; + if (member.next.failing.length === 0) + return `${member.next.rung}, which its floor holds`; + return `${member.next.rung}, held by ${span(member.next.failing[0].id)}`; + }; + const pairCounts = (member) => { + const count = (state) => + member.entries.filter((entry) => entry.pair?.state === state).length; + const parts = [ + [count("bound"), "bound"], + [count("ahead"), "ahead"], + [count("notCompared"), "not compared"], + [ + member.entries.filter((entry) => entry.pair === null).length, + "without a pair", + ], + ].filter(([n]) => n > 0); + return parts.length === 0 + ? "no pinned declaration" + : parts.map(([n, word]) => `${n} ${word}`).join(", "); + }; + const examplesOf = (member) => + member.context.verifiers.filter((verifier) => verifier.via === "example"); + const testsOf = (member) => + member.context.verifiers.filter( + (verifier) => verifier.via === "test-anchor", + ); + const evidenceText = (member) => { + if (member.context.specKind === "example") { + const tier = tierOf(openingLine(member.id)); + const bound = testsOf(member).length > 0; + return `${tier === null ? "no tier named" : `${tier} tier`}, ${bound ? "a verifier is bound" : "no verifier bound"}`; + } + const examples = examplesOf(member); + const parts = []; + if (examples.length > 0) + parts.push( + `${examples.filter((example) => example.enabled).length} of ${plural(examples.length, "example")} with a verifier`, + ); + if (testsOf(member).length > 0) + parts.push(plural(testsOf(member).length, "test")); + return parts.length === 0 ? "none" : parts.join(", "); + }; + + const page = []; + const write = (...lines) => page.push(...lines); + const blockingCount = (questions) => { + const count = questions.filter((question) => question.blocking).length; + return count === 0 ? "none blocking" : `${count} blocking`; + }; + const site = (file, line) => + file === undefined + ? "no site" + : `[${span(file)}${line === undefined ? "" : ` line ${line}`}](${link(file, line)})`; + + // Head. + write( + `# ${summary.title ?? pack}`, + "", + "", + "", + ); + if (summary.framing !== undefined) write(summary.framing, "", ""); + write( + `This page is generated from the Specs of ${span(pack)} by ${span("scripts/pack-page.mjs")}, with three inputs: the pinned pairs in [${span(inputs.pairs)}](${link(inputs.pairs)}), the anchor sites in [${span(inputs.sites)}](${link(inputs.sites)}) and the register rows in [${span(inputs.register)}](${link(inputs.register)}). Do not edit it by hand. Change a Spec or an input, then run ${span("npm run pages")}; ${span("npm run pages -- --check")} fails while the page is behind the tree. The Protocol is pinned at ${span(`${engine}@${enginePin}`)}.${summary.modelRefs.length > 0 ? ` The members speak the vocabulary of ${list(summary.modelRefs.map(specLink))}.` : ""}`, + "", + "## How to read it", + "", + "Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them.", + "", + "- The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready.", + "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", + "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", + "- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it.", + "- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing.", + "", + ); + + // Members. + write( + "## Members", + "", + `${plural(members.length, "Spec")}, in the order the Pack reads them.`, + "", + ...table( + [ + "#", + "Spec", + "Kind", + "Stated", + "Floor", + "Next rung", + "Code", + "Examples and verifiers", + "Pairs", + "Open questions", + ], + model.map((member) => [ + `[${member.number}](#${slug(member.heading)})`, + specLink(member.id), + member.context.specKind, + member.context.statedReadiness, + member.context.derivedReadiness ?? "none", + nextText(member), + member.context.implementations.length === 0 + ? "none" + : plural(member.context.implementations.length, "anchor"), + evidenceText(member), + pairCounts(member), + member.questions.length === 0 + ? "none" + : `${member.questions.length}, ${blockingCount(member.questions)}`, + ]), + ), + "", + ); + + // What holds a member below its next rung. + write("## What holds a member below its next rung", ""); + const held = model.filter((member) => member.next?.failing.length > 0); + const clear = model.filter( + (member) => member.next?.rung !== null && member.next?.failing.length === 0, + ); + if (held.length === 0) write("No member is held below its next rung.", ""); + for (const member of held) { + const [first, ...rest] = member.next.failing; + write( + `- ${memberLink(member.id)} states ${member.context.statedReadiness} and cannot reach ${member.next.rung}. The first clause that fails is ${span(first.id)}, which the Protocol states as "${first.description}"${rest.length > 0 ? ` After it, ${list(rest.map((clause) => span(clause.id)))} fail too.` : ""}`, + ); + if (member.blockers.length > 0) + write( + ` It rests on ${list(member.blockers.map((relation) => `${specLink(relation.otherId)} by ${relation.type}, which ${relation.resolved ? `states ${specs.get(relation.otherId)?.statedReadiness}` : "is not in the graph"}`))}.`, + ); + const blocking = member.questions.filter((question) => question.blocking); + if ( + member.next.failing.some( + (clause) => clause.id === "no-blocking-open-questions", + ) && + blocking.length > 0 + ) + write( + ` Its blocking ${blocking.length === 1 ? "question is" : "questions are"} ${list(blocking.map((question) => `question ${question.position}`))}, under its open questions below.`, + ); + } + if (held.length > 0) write(""); + if (clear.length > 0) + write( + `The floor holds at the next rung for ${list(clear.map((member) => memberLink(member.id)))}. Each waits for its author to state that rung.`, + "", + ); + const top = model.filter((member) => member.next?.rung === null); + if (top.length > 0) + write( + `${list(top.map((member) => memberLink(member.id)))} state ready, the top rung.`, + "", + ); + + // Outside the Pack. + const outside = new Map(); + for (const member of model) + for (const relation of member.typed) { + if (memberSet.has(relation.otherId)) continue; + const target = outside.get(relation.otherId) ?? { + id: relation.otherId, + from: [], + blocks: [], + }; + target.from.push(`${span(member.id)} ${relation.type}`); + if ( + member.blockers.some((blocker) => blocker.otherId === relation.otherId) + ) + target.blocks.push(member); + outside.set(relation.otherId, target); + } + const targets = [...outside.values()].sort((left, right) => + left.id.localeCompare(right.id), + ); + const rungOf = (id) => specs.get(id)?.statedReadiness ?? "not in the graph"; + const floorOf = (id) => + specs.has(id) + ? (specs.get(id).derivedReadiness ?? "none") + : "not in the graph"; + const blocking = targets.filter((target) => target.blocks.length > 0); + write( + "## Outside the Pack", + "", + "### What the members rest on", + "", + `The members rest on ${plural(targets.length, "Spec")} outside the Pack through refines, dependsOn, constrainedBy or decidedBy. A Spec states ready only when every such target states at least defined, so a target below defined holds each member that rests on it below ready.`, + "", + ); + if (blocking.length === 0) + write("No target outside the Pack holds a member below its next rung.", ""); + else + write( + ...table( + ["Spec", "Stated", "Floor", "Holds below ready", "Rested on by"], + blocking.map((target) => [ + specLink(target.id), + rungOf(target.id), + floorOf(target.id), + list(target.blocks.map((member) => memberLink(member.id))), + target.from.join(", "), + ]), + ), + "", + ); + write( + `
All ${plural(targets.length, "Spec")} outside the Pack that the members rest on`, + "", + ...table( + ["Spec", "Stated", "Floor", "Rested on by"], + targets.map((target) => [ + specLink(target.id), + rungOf(target.id), + floorOf(target.id), + target.from.join(", "), + ]), + ), + "", + "
", + "", + ); + const restingOn = new Map(); + for (const member of model) + for (const relation of member.context.relationsIn) { + if ( + memberSet.has(relation.otherId) || + !typedRelations.includes(relation.type) + ) + continue; + if ( + member.context.verifiers.some( + (verifier) => verifier.verifierId === relation.otherId, + ) + ) + continue; + const source = restingOn.get(relation.otherId) ?? { + id: relation.otherId, + to: [], + }; + source.to.push(`${relation.type} ${span(member.id)}`); + restingOn.set(relation.otherId, source); + } + const dependents = [...restingOn.values()].sort((left, right) => + left.id.localeCompare(right.id), + ); + write( + "### What rests on the members", + "", + `${plural(dependents.length, "Spec")} outside the Pack ${dependents.length === 1 ? "rests" : "rest"} on a member. An example that verifies a member is listed with that member instead.`, + "", + ); + if (dependents.length > 0) + write( + `
The ${plural(dependents.length, "Spec")} that rest on a member`, + "", + ...table( + ["Spec", "Stated", "Floor", "Rests on"], + dependents.map((source) => [ + specLink(source.id), + rungOf(source.id), + floorOf(source.id), + source.to.join(", "), + ]), + ), + "", + "
", + "", + ); + + // Open questions. + const allQuestions = model.flatMap((member) => member.questions); + const unjoined = allQuestions.filter( + (question) => question.rows.length === 0, + ); + write( + "## Open questions", + "", + `${plural(allQuestions.length, "open question")} on ${plural(model.filter((member) => member.questions.length > 0).length, "member")}, ${blockingCount(allQuestions)}. ${allQuestions.length - unjoined.length} join a register row by their opening text; ${unjoined.length} join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest.`, + "", + ); + const rowText = (row) => + `**${row.id}** class ${row.class ?? "none"}, status ${row.status ?? "none"}, advisor ${row.advisor ?? "none"}, blocks ${row.blocks ?? "nothing"}`; + for (const member of model) { + if (member.questions.length === 0 && member.leftRows.length === 0) continue; + write(`**${memberLink(member.id)}**, ${span(member.id)}`, ""); + for (const question of member.questions) { + const where = + question.line === null + ? `question ${question.position}` + : `[question ${question.position}](${link(member.context.file, question.line)})`; + const rows = + question.rows.length === 0 + ? "No register row" + : question.rows.map(rowText).join("; "); + write( + `- ${rows}. ${where}, ${question.blocking ? "[blocking]" : "[non-blocking]"}: ${opening(question.question)}`, + ); + } + for (const row of member.leftRows) + write( + `- ${rowText(row)}. Its source names a question this Spec no longer holds: ${opening(row.question)}`, + ); + write(""); + } + + // Each member. + write("## Each member", ""); + for (const member of model) { + const { context } = member; + write( + `### ${member.heading}`, + "", + `${specLink(member.id)} · ${context.specKind} · stated ${context.statedReadiness} · floor ${context.derivedReadiness ?? "none"} · next rung ${nextText(member)}.`, + "", + ); + const inside = member.typed + .filter((relation) => memberSet.has(relation.otherId)) + .sort( + (left, right) => + typedRelations.indexOf(left.type) - + typedRelations.indexOf(right.type) || + members.indexOf(left.otherId) - members.indexOf(right.otherId), + ); + if (inside.length > 0) + write( + `Inside the Pack it rests on ${list(inside.map((relation) => `${memberLink(relation.otherId)} by ${relation.type}`))}.`, + "", + ); + + const isExample = context.specKind === "example"; + const tests = testsOf(member); + if (isExample) { + const line = openingLine(member.id); + const tier = tierOf(line); + write( + `**Tier and verifier.** Its opening line is ${span(line)}, which ${tier === null ? "names no tier" : `names the ${tier} tier`}. ${tests.length === 0 ? "No verifier is bound to it." : `${plural(tests.length, "verifier is", "verifiers are")} bound to it.`}`, + "", + ); + } + + if (context.implementations.length > 0) { + write("**Code.**", ""); + for (const binding of context.implementations) { + let line = `- ${span(binding.codeId)} at ${site(binding.file, binding.line)}${binding.label === undefined ? "" : `: ${binding.label}`}.`; + if (binding.file?.startsWith("tests/")) { + const listed = sites.get(binding.codeId); + line += + listed === undefined + ? ` Its site is a test file, and ${span(inputs.sites)} lists no source for it.` + : ` It stands for ${list(listed.map((path) => `[${span(path)}](${link(path)})`))}.`; + } + write(line); + } + write(""); + } else if (!isExample) + write("**Code.** No implementation anchor binds it.", ""); + + const examples = examplesOf(member); + if (examples.length > 0) + write( + "**Examples.**", + "", + ...table( + ["Example", "Tier", "Verifier", "Title"], + examples.map((example) => [ + specLink(example.verifierId), + tierOf(openingLine(example.verifierId)) ?? "not named", + example.enabled ? "bound" : "none bound", + example.label ?? "", + ]), + ), + "", + ); + if (tests.length > 0) { + write("**Verifiers.**", ""); + for (const test of tests) + write( + `- ${span(test.verifierId)} at ${site(test.file, test.line)}${test.label === undefined ? "" : `: ${test.label}`}.`, + ); + write(""); + } + if (!isExample && examples.length === 0 && tests.length === 0) + write("**Examples and verifiers.** None is bound to it.", ""); + + const entryLink = (entry) => + entry.line === null + ? span(entry.address) + : `[${span(entry.address)}](${link(context.file, entry.line)})`; + if (member.entries.length > 0) { + write( + `**Pinned declarations.** ${plural(member.entries.length, "Design entry", "Design entries")} open with a code span. Each pair comes from [${span(inputs.pairs)}](${link(inputs.pairs)}) and is the test named by its address in [${span(pairs.test)}](${link(pairs.test)}).`, + "", + ...table( + ["Design entry", "Pair", "Compared", "Code", "Why"], + member.entries.map((entry) => { + if (entry.pair === null) + return [ + entryLink(entry), + "no pair", + "", + "", + `${span(inputs.pairs)} lists no pair for it`, + ]; + const [file, name] = entry.pair.code?.split("#") ?? []; + return [ + entryLink(entry), + states[entry.pair.state], + compared[entry.pair.comparison], + file === undefined + ? "none" + : `${span(name)} in [${span(file)}](${link(file)})`, + entry.pair.reason ?? "", + ]; + }), + ), + "", + `
The ${plural(member.entries.length, "declaration")} as the Spec pins them`, + "", + ); + for (const entry of member.entries) + write( + `${entryLink(entry)}${entry.declaration.formatted ? "" : ", as the Spec writes it, which Prettier does not parse"}`, + "", + "```ts", + entry.declaration.text, + "```", + "", + ); + write("
", ""); + } else if (!isExample) write("**Pinned declarations.** It pins none.", ""); + if (member.otherEntries.length > 0) + write( + `**Other Design entries.** ${plural(member.otherEntries.length, "entry pins", "entries pin")} no declaration: ${member.otherEntries + .map(({ key, line }) => `[${span(key)}](${link(context.file, line)})`) + .join(", ")}.`, + "", + ); + } + + // Pairs that name no pinned declaration of a member. + const shown = new Set( + model.flatMap((member) => member.entries.map((entry) => entry.address)), + ); + const strays = [...pairs.pairs.values()].filter( + (pair) => !shown.has(pair.address), + ); + if (strays.length > 0) + write( + "## Pairs without a member's declaration", + "", + `${plural(strays.length, "pair")} in ${span(inputs.pairs)} ${strays.length === 1 ? "names" : "name"} no pinned declaration of a member.`, + "", + ...table( + ["Address", "Pair", "Compared", "Code"], + strays.map((pair) => [ + span(pair.address), + states[pair.state], + compared[pair.comparison], + pair.code === null ? "none" : span(pair.code), + ]), + ), + "", + ); + + return `${page + .join("\n") + .replace(/\n{3,}/g, "\n\n") + .trimEnd()}\n`; +} + +// --------------------------------------------------------------------------------------------- +// The command. + +async function main() { + const { values } = parseArgs({ + options: { + pack: { type: "string" }, + out: { type: "string" }, + check: { type: "boolean", default: false }, + }, + }); + if (values.pack === undefined || values.out === undefined) + cannot("name the Pack and the page: --pack --out "); + const out = resolve(values.out); + const path = relative(root, out).split(sep).join("/"); + if (path.startsWith("..") || !path.endsWith(".md")) + cannot( + `the page must be a .md file inside the repository, not ${values.out}`, + ); + const generated = await generate(values.pack, out); + if (!values.check) { + mkdirSync(dirname(out), { recursive: true }); + writeFileSync(out, generated); + console.error(`pack-page: wrote ${path}`); + return 0; + } + if (!existsSync(out)) { + console.error(`pack-page: ${path} is missing; run npm run pages`); + return 1; + } + const difference = firstDifference(readFileSync(out, "utf8"), generated); + if (difference === null) return 0; + console.error( + `pack-page: ${path} is behind the tree from line ${difference.line}: the page has ${JSON.stringify(difference.committed)}, the tree generates ${JSON.stringify(difference.generated)}; run npm run pages`, + ); + return 1; +} + +if ( + process.argv[1] !== undefined && + resolve(process.argv[1]) === fileURLToPath(import.meta.url) +) + main().then( + (code) => process.exit(code), + (error) => { + console.error( + `pack-page: cannot generate · ${error instanceof PageError ? error.message : (error?.stack ?? error)}`, + ); + process.exit(2); + }, + ); diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts new file mode 100644 index 0000000..25d747f --- /dev/null +++ b/tests/pure/pack-page.test.ts @@ -0,0 +1,371 @@ +// The pure parts of scripts/pack-page.mjs, the generator of a Pack's page: the members in the order +// the Pack file writes them, the clause that holds a member below its next rung, the join of open +// questions to register rows by their opening text, and Prettier's formatting of a declaration with +// its fallback to the text as written. No graph is derived here. +import { + SPEC_READINESS, + readinessFloors, +} from "@libar-dev/software-delivery-protocol"; +import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; +import { tmpdir } from "node:os"; +import { join } from "node:path"; +import { expect, test } from "vitest"; + +type Clause = { id: string; description: string; holds: boolean }; +type Floor = { rung: string; clauses: Clause[] }; +type Question = { blocking: boolean; question: string }; +type Row = { + id: string; + class: string | null; + status: string | null; + advisor: string | null; + blocks: string | null; + spec: string; + question: string; +}; +type PackPage = { + authoredMembers(packText: string): string[]; + nextRung( + stated: string, + floors: Floor[], + ): { rung: string | null; failing: Clause[] }; + joinQuestions( + spec: string, + questions: Question[], + rows: Row[], + ): { questions: (Question & { rows: Row[] })[]; left: Row[] }; + formatDeclaration( + text: string, + ): Promise<{ text: string; formatted: boolean }>; + readPinnedPairs(base: string, pack: string): unknown; + readAnchorSites(base: string): unknown; + readQuestionSources(base: string): unknown; + specLines(text: string): { design: Map; questions: number[] }; + opening(text: string, limit?: number): string; + tierOf(openingLine: string): string | null; + firstDifference( + committed: string, + generated: string, + ): { + line: number; + committed: string | null; + generated: string | null; + } | null; +}; +// The generator is a script with no declaration file, so it is loaded by URL and typed here. +const page = (await import( + new URL("../../scripts/pack-page.mjs", import.meta.url).href +)) as PackPage; + +test("the members come in the order the Pack file writes them, not sorted", () => { + const pack = [ + "---", + "id: pack:sample", + "specs:", + " - spec:sample.second", + " - spec:sample.first", + " - spec:other.third", + "modelRefs:", + " - spec:sample.vocabulary", + "---", + "# Sample", + "", + "The Specs a sample rests on, in reading order.", + ].join("\n"); + expect(page.authoredMembers(pack)).toEqual([ + "spec:sample.second", + "spec:sample.first", + "spec:other.third", + ]); + expect(() => page.authoredMembers("# No front matter\n")).toThrow( + "the Pack file has no front matter", + ); + expect(() => + page.authoredMembers("---\nid: pack:empty\nspecs: []\n---\n# Empty\n"), + ).toThrow("the Pack file lists no specs"); +}); + +// The Protocol's floor table, with every clause holding but those named. +function floors(failing: string[]): Floor[] { + return SPEC_READINESS.map((rung) => ({ + rung, + clauses: readinessFloors[rung].clauses.map(({ id, description }) => ({ + id, + description, + holds: !failing.includes(id), + })), + })); +} +const ids = (clauses: Clause[]) => clauses.map((clause) => clause.id); + +test("the next rung is held by the clauses that fail at it, the first one first", () => { + const next = page.nextRung( + "defined", + floors(["typed-dependency-targets-are-defined", "anchors-resolve"]), + ); + expect(next.rung).toBe("ready"); + expect(ids(next.failing)).toEqual([ + "typed-dependency-targets-are-defined", + "anchors-resolve", + ]); +}); + +test("the floors are cumulative: a clause failing below the stated rung comes first", () => { + const next = page.nextRung( + "defined", + floors(["anchors-resolve", "no-blocking-open-questions"]), + ); + expect(ids(next.failing)).toEqual([ + "no-blocking-open-questions", + "anchors-resolve", + ]); +}); + +test("a clause above the next rung does not hold it, and ready has no next rung", () => { + expect( + page.nextRung("scoped", floors(["typed-dependency-targets-are-defined"])), + ).toEqual({ rung: "defined", failing: [] }); + expect(page.nextRung("ready", floors([]))).toEqual({ + rung: null, + failing: [], + }); +}); + +function row(id: string, spec: string, question: string): Row { + return { + id, + class: "owner", + status: "sorted", + advisor: "convex", + blocks: null, + spec, + question, + }; +} + +test("a register row joins each open question of its Spec that its text opens", () => { + const questions: Question[] = [ + { + blocking: false, + question: + "Extension E-9, the history fold: D2 orders events only within a stream. The option taken here is a fold.", + }, + { + blocking: true, + question: + "The verify pass under the write pause: a generation is built while no source changes,\nso its verify pass repeats the backfill. The pass is kept.", + }, + { blocking: false, question: "A question no row names." }, + ]; + const rows = [ + row( + "OD-157", + "spec:sample.rebuild", + "The verify pass under the write pause: a generation is built while no source changes, so its verify pass repeats the backfill.", + ), + row( + "OD-158", + "spec:sample.rebuild", + "[non-blocking] Extension E-9, the history fold: D2 orders events only within a stream.", + ), + row( + "OD-159", + "spec:sample.other", + "The verify pass under the write pause: a generation is built while no source changes, so its verify pass repeats the backfill.", + ), + row( + "OD-160", + "spec:sample.rebuild", + "A question the Spec no longer holds.", + ), + ]; + const joined = page.joinQuestions("spec:sample.rebuild", questions, rows); + expect( + joined.questions.map((question) => question.rows.map((r) => r.id)), + ).toEqual([["OD-158"], ["OD-157"], []]); + expect(joined.questions[1]?.blocking).toBe(true); + expect(joined.left.map((r) => r.id)).toEqual(["OD-160"]); +}); + +test("a declaration Prettier parses is formatted, as written or in the form its key implies", async () => { + expect( + await page.formatDeclaration("type Pair = { left: string; right: number }"), + ).toEqual({ + text: "type Pair = { left: string; right: number }", + formatted: true, + }); + const signature = await page.formatDeclaration( + "applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[] }): Promise", + ); + expect(signature.formatted).toBe(true); + expect(signature.text.split("\n")).toEqual([ + "applyHistoryProjection(", + " ctx: MutationCtx,", + " projection: HistoryProjection,", + " input: { tenantId: string; events: EventEnvelope[] },", + "): Promise", + ]); + expect( + await page.formatDeclaration('.index("by_key", ["tenantId", "key"])'), + ).toEqual({ text: '.index("by_key", ["tenantId", "key"])', formatted: true }); + expect( + await page.formatDeclaration('audit?: { kind: "security" | "business" }'), + ).toEqual({ + text: 'audit?: { kind: "security" | "business" }', + formatted: true, + }); +}); + +test("a declaration Prettier does not parse stays as the Spec writes it", async () => { + for (const text of [ + "limitListPage(budgetBytes) = max(1, min(100, floor(4 MiB / budgetBytes)))", + "@convex-dev/migrations", + "[extension] type VersionedResult = { data: T }", + ]) + expect(await page.formatDeclaration(text)).toEqual({ + text, + formatted: false, + }); +}); + +test("a missing input is an error that names its path", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + try { + expect(() => page.readPinnedPairs(base, "pack:history-view")).toThrow( + "tests/types/pinned-pairs.json is missing", + ); + expect(() => page.readAnchorSites(base)).toThrow( + "design/tools/anchor-sites.json is missing", + ); + expect(() => page.readQuestionSources(base)).toThrow( + "design/decisions/register.json is missing", + ); + } finally { + await rm(base, { recursive: true, force: true }); + } +}); + +test("an input off its ruled shape is refused", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + try { + await mkdir(join(base, "tests/types"), { recursive: true }); + await mkdir(join(base, "design/decisions"), { recursive: true }); + const pair = { + address: "spec:sample.one#design.typeOne", + state: "bound", + comparison: "type", + code: "src/sample/index.ts#One", + reason: null, + }; + const pairs = (pairs: object[]) => + writeFile( + join(base, "tests/types/pinned-pairs.json"), + JSON.stringify({ + pack: "pack:sample", + test: "tests/types/x.test-d.ts", + pairs, + }), + ); + await pairs([pair]); + expect(() => page.readPinnedPairs(base, "pack:other")).toThrow( + 'names "pack:sample", not pack:other', + ); + await pairs([{ ...pair, reason: "a bound pair has no reason" }]); + expect(() => page.readPinnedPairs(base, "pack:sample")).toThrow( + "pairs[0] has the reason", + ); + await pairs([pair, pair]); + expect(() => page.readPinnedPairs(base, "pack:sample")).toThrow( + "pairs[1] repeats spec:sample.one#design.typeOne", + ); + // A question source that cites the question by its position, the form the rulings retire. + await writeFile( + join(base, "design/decisions/register.json"), + JSON.stringify({ + decisions: [ + { + id: "OD-001", + sources: [ + { + kind: "specQuestion", + ref: "spec:sample.one#2", + file: "design/specs/sample/one.sdp.md", + line: 30, + }, + ], + }, + ], + }), + ); + expect(() => page.readQuestionSources(base)).toThrow( + "OD-001: a specQuestion source needs spec, question and file", + ); + } finally { + await rm(base, { recursive: true, force: true }); + } +}); + +test("the line of each Design entry and open question is read from the carrier", () => { + const spec = [ + "---", + "id: spec:sample.one", + "---", + "# One", + "", + "## Intent", + "", + "- outcome: Pin one shape (E-1)", + "", + "### Open questions", + "", + "- [non-blocking] Extension E-1: the first question (E-1)", + "- [blocking] The second question (E-1)", + "", + "## Design", + "", + "A paragraph that names typeOne: in prose.", + "", + "- typeOne: `type One = { a: string }` (E-1)", + "- limitOne: 4 items (E-1)", + ].join("\n"); + const lines = page.specLines(spec); + expect([...lines.design]).toEqual([ + ["typeOne", 19], + ["limitOne", 20], + ]); + expect(lines.questions).toEqual([12, 13]); +}); + +test("a question opens to the end of its first sentence, cut outside code spans", () => { + expect(page.opening("The first sentence. The second.")).toBe( + "The first sentence.", + ); + expect(page.opening("It reads `a. b` and 0.1.124 here. Then more.")).toBe( + "It reads `a. b` and 0.1.124 here.", + ); + expect(page.opening("One two `three four five` six seven.", 15)).toBe( + "One two …", + ); +}); + +test("an example's tier is read from its opening line", () => { + expect(page.tierOf("Sc L2-6 · native backend tier · the resume case.")).toBe( + "native backend", + ); + expect(page.tierOf("Sc L1-4 · pure test tier.")).toBe("pure test"); + expect(page.tierOf("Story · Detail: full · Traces: D9.")).toBeNull(); +}); + +test("the check names the first line where the committed page differs", () => { + expect(page.firstDifference("a\nb\n", "a\nb\n")).toBeNull(); + expect(page.firstDifference("a\nb\nc\n", "a\nB\nc\n")).toEqual({ + line: 2, + committed: "b", + generated: "B", + }); + expect(page.firstDifference("a\n", "a\nb\n")).toEqual({ + line: 2, + committed: "", + generated: "b", + }); +}); From 491ab7d8de47d8fde3bfbf3247515b938c4fc36f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:52:30 +0200 Subject: [PATCH 19/60] build: anchors for the online rebuild and the write pause, and the sites of anchors that live in tests spec:application.rebuild, now the online path alone, and spec:application.write-pause each get an implementation anchor in the pure test that binds their library, tests/pure/rebuild.test.ts and tests/pure/write-pause.test.ts; src/ still imports nothing of the Protocol. design/tools/anchor-sites.json lists the 22 implementation anchors whose site is under tests/, with the source files each stands for (interface I2), and tests/pure/anchor-sites.test.ts reads the anchors from generated/graph.json and fails on an anchor missing, one listed that is not under tests/, one listed twice, or a source that is not a file. The type test follows the Specs: the marker table's pair takes its new address in spec:application.aggregate-projection, outside the Pack, so the module no longer emits it and the pair moves from bound to not compared; the binding's ahead pair no longer names the aggregate form. No other pair changes block. PLAN.md 6.7 states the principle of the rulings page and O2's reading of ready; ROADMAP.md says what 4e means under O2 and names the moved IDs. The ledger's files follow the renamed examples, and the history items name the new carrier. Gates: typecheck, lint, format:check and npm test (72 files, 1,119 passed, 10 skipped) pass; check.py prints OK. Co-Authored-By: Claude Opus 5.5 --- design/PLAN.md | 2 + design/README.md | 2 +- design/ROADMAP.md | 6 +- design/reviews/consensus-ledger.json | 30 ++++--- design/tools/anchor-sites.json | 115 +++++++++++++++++++++++++++ tests/pure/anchor-sites.test.ts | 112 ++++++++++++++++++++++++++ tests/pure/rebuild.test.ts | 22 ++++- tests/pure/write-pause.test.ts | 15 ++++ tests/types/pinned.test-d.ts | 17 ++-- 9 files changed, 293 insertions(+), 28 deletions(-) create mode 100644 design/tools/anchor-sites.json create mode 100644 tests/pure/anchor-sites.test.ts diff --git a/design/PLAN.md b/design/PLAN.md index 90abc7c..ea474a8 100644 --- a/design/PLAN.md +++ b/design/PLAN.md @@ -582,6 +582,8 @@ A capability is designed in its Specs before anyone writes its code, at the rung - Convex: what one transaction reads and writes, whether the stated bounds hold on the pinned release, what changes atomically and what across transactions; - operator: what an interruption, a resume and an abort leave, who closes and opens a pause, what a deploy or a restore does to work in flight; - implementation and verification: the pinned module compiles and the code agrees with it, each dependency stands at its rung (recipe 21), and each example names its tier and has a planned verifier. +7. **A realized Spec claims only what its code does.** A Spec whose code realizes it may pin a type that a designed form widens, and the pinned module lists that pair ahead until the code catches up (item 3): `typeReadModelBinding` takes a history projection beside a per-entity read model while the code takes the per-entity form alone. A behavior the code does not have lives in a Spec of its own (item 1), so that an implementation anchor on the realized Spec claims only what its code does. The rebuild shows it: `spec:application.rebuild` holds the online path and what both paths share, and its anchor binds them; `spec:application.history-rebuild` holds the paused path of a history view, designed and not realized. A deferred form states in its own Spec how it extends the Specs it would widen when its trigger comes, and those Specs do not depend on it: `spec:application.aggregate-projection` says what the declaration's binding, the pipeline's step 9 and the registry's tables take when OD-075's trigger comes. +8. **`ready` states approved to build.** This is the Protocol's reading. The owner states `ready` on a Spec when its design is approved for its build, so recipe 1, the Specs that state `ready` and have no implementation binding, is the build backlog, and a Spec leaves it when an anchor binds its code. A designed Spec states `ready` after the passes of item 6 have read its Pack, as the history projection may once the domain and operator passes have run. No agent states `ready` (section 3.2). ## 7. Review rubric diff --git a/design/README.md b/design/README.md index e9bb9d6..5f8291c 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -240 specs · 6 packs · 142 anchors → 388 nodes · 1363 edges (0 errors, 0 warnings) +240 specs · 6 packs · 144 anchors → 390 nodes · 1365 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` diff --git a/design/ROADMAP.md b/design/ROADMAP.md index 14a51b7..213942d 100644 --- a/design/ROADMAP.md +++ b/design/ROADMAP.md @@ -31,7 +31,7 @@ The slices of `STATE.md` keep their names. S3 is round 1's attribution and round | 4 | a | A command's audit fails closed and its diagnostic never aborts, Sc ALL-1. Done in the close of round 3: both Sc ALL-1 examples pass natively, the proof written apart from the fix | mixed | operator | an evening | 3a | | 4 | c | The history view's fold, its memory and its rollback, on paper. Done in the close of round 3: ten choices ruled, ten ledger findings on paper, one pure fold with its test | design | domain | an evening | 2c | | 4 | d | The receipts sweep, one tenant per run. Done in the close of round 3: `receipts.sweep` and `sweepNext` in both compositions, at `convex-test` | build | operator | under an evening | the tenant list from 2b | -| 4 | e | `ready` on the built Specs, by family | decide | product | a session, one owner unit | 1c, sitting two | +| 4 | e | `ready` as approval to build: the history view's Specs after their passes, then the built Specs by family | decide | product | a session, one owner unit | 1c, sitting two, the domain and operator passes over `pack:history-view` | | 4 | f | The language in the code: the refusal field `entry`, the tier names in the examples' opening lines and the harness parser, the harness's backup archive names. Done in the close of round 3 | build | product | under an evening | sitting two | | 5 | a | Baselines, migration and the fold bound, Sc L2-7 at the native tier; the history-reading sweep with its transient refusal and the restore check's pending-work inventory, at `convex-test` for the interleavings and natively for the sweep | mixed | domain | a night or more | OD-041 (ruled), 3b | | 5 | b | The restore procedure and the drill, Sc L2-8 | mixed | operator | unknown until 4b | 4b, 5a | @@ -97,7 +97,7 @@ Every item is done but the hosted tier's first runs, which are the owner's after **4d. The receipts sweep.** One internal mutation per tenant over the expiry index, at most the bound, returning what it deleted and whether more remains, with the loop over tenants from 2b's ruling. Done in the close of round 3, as `receipts.sweep` and `sweepNext`. -**4e. `ready` by family.** The fork for OD-024 lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application without the generation registry. A Spec with an unruled `owner` row stays `defined`. +**4e. `ready` as approval to build.** By the owner's ruling O2 of 2026-10-04, `ready` states that a Spec is approved to build, the Protocol's reading: recipe 1 is the build backlog, and a `ready` Spec leaves it when an anchor binds its code. 4e is therefore no longer a stamp on what is built. Its first use is the history view: once the domain and operator passes over `pack:history-view` have run, the owner may state `ready` on `spec:application.history-projection` and on the paused path, which moved out of `spec:application.rebuild` into `spec:application.history-rebuild` with its two examples, now `spec:application.history-rebuild.write-pause-rebuild-interrupt` and `spec:application.history-rebuild.write-pause-rebuild-abort`; that statement approves 5d. The fork for OD-024 still lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application. Since O1 the generation registry, the command declaration and the command pipeline no longer rest on the aggregate Spec, so their floors reach `ready` and the registry no longer stands apart. A Spec with an unruled `owner` row stays `defined`. ## Round 5: S5 @@ -107,7 +107,7 @@ Every item is done but the hosted tier's first runs, which are the owner's after **5c. The adopter-facing cut.** The root README's first hour, an `example/README.md` that walks `PlaceOrder` from its declaration to the order summary, and the package kept private with nothing of the first-release list. No name, export or version is a contract yet. -**5d. The history view's build.** Its design is `pack:history-view`, read before the build in passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation pass ran in the unit `design-in-the-graph`: the pinned module compiles the Pack's declarations and binds 53 of them to the code, and the pass pinned the two names the history design used and no Spec pinned. The Convex pass ran in the same unit and left its open questions on the rebuild, the write pause and the two projection Specs. The domain and operator passes come next, one advisor launch each, at once; the Convex pass's memo names what it left to each. The build then binds `spec:application.history-projection` to its code, moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the two Sc L2-6 examples at the native tier. +**5d. The history view's build.** Its design is `pack:history-view`, read before the build in passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation pass ran in the unit `design-in-the-graph`: the pinned module compiles the Pack's declarations and binds 53 of them to the code, and the pass pinned the two names the history design used and no Spec pinned. The Convex pass ran in the same unit and left its open questions on the rebuild, the write pause and the two projection Specs. The domain and operator passes come next, one advisor launch each, at once; the Convex pass's memo names what it left to each. The build then binds `spec:application.history-projection` and `spec:application.history-rebuild` to their code, moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the two Sc L2-6 examples, `spec:application.history-rebuild.write-pause-rebuild-interrupt` and `spec:application.history-rebuild.write-pause-rebuild-abort`, at the native tier. ## Deferred, with the trigger diff --git a/design/reviews/consensus-ledger.json b/design/reviews/consensus-ledger.json index d504531..f2c7896 100644 --- a/design/reviews/consensus-ledger.json +++ b/design/reviews/consensus-ledger.json @@ -504,7 +504,8 @@ "severity": "major", "files": [ "specs/application/rebuild.sdp.md", - "specs/application/write-pause.sdp.md" + "specs/application/write-pause.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "rebuild's write-pause flow says \"the operator closes the maintenance gate for the read model's scope before `startGeneration`\", but the gate can only let a background writer through by its generation: write-pause `closeGate` takes an optional `generationId`, `assertWritable(ctx, scopes, allowGeneration)` throws unless \"the closed entry's `generationId` equals `allowGeneration`\", and rebuild step2 returns without writing \"when a closed scope covers this read model and the gate was not closed for this generation\". A gate closed before the generation row exists cannot name it, so the paused backfill's own batches refuse themselves and the L2-6 examples cannot reach `verified`.", "fix": "Reverse or fuse the order: `startGeneration` with `pauseRequired: true` inserts the generation row and calls the close in the same mutation (or patches the already-closed scope's `generationId` to the new row), and the rebuild flow reads \"startGeneration closes the gate for the read model's scope and records its own generation on the closed entry\". Update the write-pause Contract bullet and the L2-6 examples' first verification bullet to match.", @@ -1616,9 +1617,10 @@ "specs/command/command-pipeline.sdp.md", "specs/context/persistence-adapter.sdp.md", "specs/application/orders-inventory-example.sdp.md", - "specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md", - "specs/application/rebuild.write-pause-rebuild-abort.sdp.md", - "specs/application/history-projection.sdp.md" + "specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md", + "specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md", + "specs/application/history-projection.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "The only projection forms are `Projection⟨D, Row⟩.project(tenantId, dto, versions)` from one current DTO and `AggregateProjection.contribute(dto)`. The write pause exists for 'read models that depend on history across several streams', and the contract says a cross-context row 'holds one StreamVersion per context', yet no form takes history, a prior row, or two DTOs. On the live path step 9 calls `applyProjection` once per `streams` entry with that entry's DTO only, and the parent never receives the appended events (`StreamDto` is dto, version, appended, created). On the backfill the pause path reuses the online batch steps, one `list` page of current DTOs. So a history-dependent view cannot be written on either path, the cross-context read model the D8 table allows cannot be produced, and the L2-6 examples exercise a per-entity projection under a gate (they assert only that `PlaceOrder` is refused), which passes trivially; the example domain defines no history-dependent view at all, so the first experiment cannot run L2-6 as the doc's row reads.", "fix": "Either add the missing forms under E-9: `HistoryProjection⟨Row⟩ { project(tenantId, prior: Row | null, events: EventEnvelope[], versions) }` fed on the live path by the events the operation appended (add `events: EventEnvelope[]` to `StreamDto`, bounded by the 16 KiB payload bound times `appended`) and on the backfill, under the pause, by `history` pages per enumerated stream; and `CompositeProjection` taking the DTOs of every `streams` entry of one command for a cross-context row, with the backfill composing from one `list` DTO plus bounded `get` reads of the other context. Then name one history-dependent view in orders-inventory-example (for example a per-stock-item allocation history across orders) and make both L2-6 examples build it. Or, narrow the claim explicitly: state in rebuild and projection-contract that Layer 2 pins only per-entity and aggregate projections, that the write-pause path is designed for cross-context current-state rows needing a consistent cut, record the history-projection input shape as a [non-blocking] E-9 open question deferred to Layer 6's trigger, and retitle the L2-6 examples to the view they actually build.", @@ -1634,7 +1636,8 @@ "specs/application/write-pause.sdp.md", "specs/application/rebuild.sdp.md", "specs/command/command-pipeline.sdp.md", - "specs/command/command-declaration.sdp.md" + "specs/command/command-declaration.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "The pause's scope for a rebuild is `read-model:`, and a use case is in scope only when 'a read model it maintains is closed'. A consistent cut needs every writer of the view's source streams held, but a command that writes a source stream without maintaining the paused view (for example a `ReceiveStock` command that touches Inventory and maintains only the stock summary, while the paused history view depends on Inventory events) passes `assertWritable`, changes the source, and the flow's claim that 'Backfill under the pause enumerates a consistent cut because no source changes' is false. The declaration carries no `contexts`/`sources` field, so a source-based scope cannot even be derived from it as pinned.", "fix": "Key the closed entry by the paused view's sources: `closed[].sources: { contextId; streamType }[]` taken from each `ReadModelBinding.source` of the read model, and have `scopesOfUseCase` also emit `source::` for every stream type the command writes. That requires the declaration to name what it writes: add `writes: { contextId: string; streamType: string }[]` to `CommandDeclaration` under E-38 (the registration check can assert it against the executor's `streams` entries at test time). Until then the cheap safe default is for `startGeneration` with `pauseRequired` to close the tenant scope (or `all` for an all-tenants generation) rather than the read-model scope, and say so in rebuild's flow and write-pause's Contract.", @@ -1932,8 +1935,9 @@ "specs/application/projection-contract.sdp.md", "specs/application/rebuild.sdp.md", "specs/application/orders-inventory-example.sdp.md", - "specs/application/rebuild.write-pause-rebuild-interrupt.sdp.md", - "specs/application/history-projection.sdp.md" + "specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md", + "specs/application/history-projection.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "A `HistoryProjection` folds events of several streams into one row, and the two paths feed it in different orders. On the live path step 9 calls `applyHistoryProjection` per `streams` entry in the executor's order, command after command, so an order's row sees `OrderPlaced`, its `StockAllocated` events, later `OrderCancelled`, then `AllocationReleased`. On the backfill the rebuild pages one stream's whole history at a time (rebuild flow 'each history batch takes one stream from the enumeration'), so the same row sees every Orders event first and the stock events after, or the reverse. The contract asks only that `project` be 'deterministic in the prior row and the events' with 'version order within each stream'. It never says the fold must give the same row whatever the interleaving across streams, and D2 gives no order across streams to appeal to. A natural projection, where `OrderPlaced` creates the row and a stock event updates an existing one, backfills to a different row than it wrote live, against the contract's own value line that 'a rebuild cannot disagree with a live update'. The doc sends a consumer whose result depends on order to Layer 6's ordered consumer; Layer 2 does not say its history view must not be one. Deletion makes it worse: `null` from `project` deletes the row, and with it the `sourceVersions` that are the fold's only memory. A later event of the same key from another stream, such as `AllocationReleased` after `OrderCancelled` returned `null`, meets no prior row and recreates one, on either path.", "fix": "Add to projection-contract under E-9: a history projection's fold is independent of the order in which different streams' events arrive; only the order within one stream is given (D2), and a view whose meaning depends on cross-stream order waits for the ordered consumer of D18. Add to `determinismCheck` a test that folds one key's events in two interleavings and compares the rows, and have the L2-6 example compare a backfilled row with the live-written one. Rule on deletion: either a history row is never deleted once written and carries its own ended state, or the highest folded version per stream moves off the row into a marker, like `projectionMarkers`, that outlives it. State in orders-inventory-example that the order allocation history fold is written to hold under any interleaving, including a stock event arriving before `OrderPlaced`.", @@ -1950,7 +1954,8 @@ "files": [ "specs/application/rebuild.sdp.md", "specs/application/generation-registry.sdp.md", - "specs/application/orders-inventory-example.sdp.md" + "specs/application/orders-inventory-example.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "Two parts of the paused rebuild cannot be built as pinned. First, a history view has several sources, the order stream type and the stock item stream type in the example, but `batchCursorValidator` is `{ tenantId, pageCursor, streamId?, eventCursor? }` with no field for the source being enumerated, and `fnHistoryPageCall` names one component query. `historyStep3` says 'it calls `list` with `numItems` 1 from the page cursor to take the next stream' without saying of which context and stream type, so the batch cannot tell where it is among the bindings. Second, `historyVerify` checks one thing per stream: it reads the stream's last event, 'finds that event's row by `keyOf`', and counts a miss when the row is absent or records a lower version. `keyOf` may return `null`, and for many streams the last event's key is `null`: a stock item that was received and never allocated, and every stream whose last event is a `baseline` after a meaning migration. The Spec does not say what verify does then. Read as a miss, the repair refolds the stream, changes nothing, and the next pass counts the same miss, so the generation never reaches `verified` and, since 'writes reopen only after verification', the sources stay closed until an operator aborts. Read as a skip, the stream is unverified. Either way the check proves only that the last event of a stream was folded, not the earlier ones that belong to other keys.", "fix": "Add the source to the cursor, an index into the read model's source list, and iterate tenant, then source, then stream, then event page; say so in `tenantIteration` and `historyStep3`. Replace `historyVerify` with a second pass of the same history batches that counts the events `applyHistoryProjection` did not drop: under the pause nothing changes, so a covered generation folds zero events and a miss is repaired by the pass that found it. The state moves to `verified` when a full pass folds none. That needs no row lookup by key and handles a `null` key by construction. State the cost, one more read of every source's history under the pause.", @@ -2129,7 +2134,8 @@ "lens": "architecture", "severity": "minor", "files": [ - "specs/application/rebuild.sdp.md" + "specs/application/rebuild.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "Under the pause 'each history batch takes one stream from the enumeration' and reads one `history` page of it, so a stream with two events costs a whole scheduled mutation, a `list` call of one item and a `history` call. The pause closes the view's sources for every tenant of the deployment, because a generation spans all tenants, so the outage of those writers lasts as long as the number of source streams times one batch. `limitHistoryBatch` bounds events per batch at 128 by default and the batch uses a fraction of it for short streams. The duration is an unrecorded cost of the mechanism, and a cheaper batch passes the same scenario.", "fix": "Let a history batch take streams from the enumeration until its event bound is spent, with the stream and event cursor saved as now, and state the pause's expected duration as a risk on rebuild: source streams and events divided by the batch bound, times one mutation. Point at the registry's per-tenant alternative as the way to shorten the outage per tenant.", @@ -2401,7 +2407,8 @@ "specs/command/command-declaration.sdp.md", "specs/effects/retry-ownership.sdp.md", "specs/effects/external-effects.sdp.md", - "specs/obligations/obligation-module.sdp.md" + "specs/obligations/obligation-module.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "Rubric item 2 fails in six places where a bullet's citation names only doc tokens and the doc does not say what the bullet says. The content is a registered extension elsewhere in five of them. (a) projection-contract: 'a new version is a new generation, never an in-place rewrite (D8, D9)'; rebuild marks the same sentence '[extension] ... (E-8, D8)'. D8 says only 'named, versioned and deterministic'. (b) rebuild: 'A refused write under the pause is a transient refusal, retryable and never a stored rejection (D4, D9)'; D4 covers 'rate or capacity', and outcome-boundary's E-35 question says 'the doc does not say how a refused writer is answered'. (c) parent-use-cases: 'the use case either carries it as the use case's business failure ... or throws a rejection so nothing commits; the choice is declared per use case (D4)'; that is E-44, whose own question says it overrides D4's 'belongs in history'. (d) command-declaration: 'A command is bound by two export lines ... and no other binding exists (D12, D6)'; that is E-7. (e) external-effects: 'Every reconcile is a claimed attempt ... (D14, Sc L3-6)'; that is E-53. (f) retry-ownership has no open question and no E-number, yet rules that Workpool 'is constructed with `retryActionsByDefault: false` and each enqueue passes `retry: false`', that passed ownership records '`retryOwner: \"workpool\"`' and that Workpool attempts are 'read from the pool's `onComplete` result and `status`', all cited '(D15, S12)'. D15 says only that Workpool 'runs with its own retries off, or ownership passes to it deliberately and its attempts show the same way'. obligation-module's `deferred` bullet says 'the Workpool binding' is 'written by the build that first needs them', so retry-ownership also pre-writes what its parent defers, against decision method rule 4.", "fix": "Add the E-number to (a) to (e) and start each bullet with [extension], matching the Spec that owns the extension: E-8, E-35, E-44, E-7, E-53. For (f), on `spec:effects.retry-ownership`: either reduce the two Workpool rules to D15's sentence and move the option names to a `deferred:` bullet, or mark them [extension] under a new E-number of Package E's range with an open question and a README row, and make obligation-module's `deferred` bullet say what is and is not deferred.", @@ -3148,7 +3155,8 @@ "lens": "sdp", "severity": "minor", "files": [ - "specs/application/rebuild.sdp.md" + "specs/application/rebuild.sdp.md", + "specs/application/history-rebuild.sdp.md" ], "issue": "The batch size of a history view is computed two ways in one Spec. `fnStartGeneration` computes the row's `batchSize` as `min(args.batchSize ?? 100, floor(4 MiB / (2 * rowBudgetBytes)))` for every read model, which is 100 at the default 16 KiB row budget. `limitHistoryBatch` says `min(500, floor(4 MiB / (2 * rowBudgetBytes)))` events per history batch, '128 at the default 16 KiB row budget', and that 'the count is stored on the generation row as its `batchSize`'. The stored number for a history view at defaults is 100 by the first bullet and 128 by the second, and the cap is 100 or 500.", "fix": "In `spec:application.rebuild` make `fnStartGeneration` state both defaults: `args.batchSize ?? 100` entities for a `Projection` or `AggregateProjection`, `args.batchSize ?? 500` events for a `HistoryProjection`, each capped by `floor(4 MiB / (2 * rowBudgetBytes))`; or lower `limitHistoryBatch` to the same 100.", diff --git a/design/tools/anchor-sites.json b/design/tools/anchor-sites.json new file mode 100644 index 0000000..2c15de7 --- /dev/null +++ b/design/tools/anchor-sites.json @@ -0,0 +1,115 @@ +{ + "anchors": [ + { + "anchor": "impl:application.generation-registry", + "sources": ["src/read-model/generations.ts", "src/read-model/tables.ts"] + }, + { + "anchor": "impl:application.orders-inventory-example", + "sources": [ + "example/domain/order.ts", + "example/domain/stockItem.ts", + "example/convex/orders/convex.config.ts", + "example/convex/orders/schema.ts", + "example/convex/orders/streams.ts", + "example/convex/orders/operations.ts", + "example/convex/orders/queries/order.ts", + "example/convex/inventory/convex.config.ts", + "example/convex/inventory/schema.ts", + "example/convex/inventory/streams.ts", + "example/convex/inventory/operations.ts", + "example/convex/inventory/queries/stockItem.ts", + "example/convex/ordering.ts", + "example/convex/receiving.ts", + "example/convex/orderSummary.ts" + ] + }, + { + "anchor": "impl:application.parent-use-cases", + "sources": ["example/convex/ordering.ts", "example/convex/receiving.ts"] + }, + { + "anchor": "impl:application.projection-contract", + "sources": ["src/read-model/projection.ts"] + }, + { + "anchor": "impl:application.read-models", + "sources": ["src/read-model/write.ts", "src/read-model/queries.ts"] + }, + { + "anchor": "impl:application.rebuild", + "sources": ["src/read-model/rebuild.ts"] + }, + { + "anchor": "impl:application.write-pause", + "sources": ["src/gate/gate.ts", "src/gate/entries.ts", "src/gate/tables.ts"] + }, + { + "anchor": "impl:command.actor-and-scope", + "sources": ["src/command/actor-and-scope.ts", "src/command/tables.ts"] + }, + { + "anchor": "impl:command.command-declaration", + "sources": ["src/command/declaration.ts", "fixture/convex/depotCommands.ts"] + }, + { + "anchor": "impl:command.command-pipeline", + "sources": ["src/command/pipeline.ts"] + }, + { + "anchor": "impl:command.idempotency-and-receipts", + "sources": ["src/command/receipts.ts"] + }, + { + "anchor": "impl:command.outcome-boundary", + "sources": ["src/command/outcome-boundary.ts"] + }, + { + "anchor": "impl:command.receipt-table", + "sources": ["src/command/tables.ts"] + }, + { + "anchor": "impl:command.tenancy-and-authority", + "sources": ["src/command/authority.ts"] + }, + { + "anchor": "impl:context.batch-shaped-api", + "sources": ["src/context/adapter.ts", "fixture/convex/depot/operations.ts"] + }, + { + "anchor": "impl:context.context-component", + "sources": [ + "src/context/operation.ts", + "fixture/convex/depot/convex.config.ts", + "fixture/convex/depot/schema.ts", + "fixture/convex/depot/streams.ts", + "fixture/convex/depot/operations.ts", + "fixture/convex/depot/queries/document.ts" + ] + }, + { + "anchor": "impl:context.event-envelope", + "sources": ["src/context/envelope.ts"] + }, + { + "anchor": "impl:context.journal", + "sources": ["src/context/journal.ts"] + }, + { + "anchor": "impl:context.persistence-adapter", + "sources": ["src/context/adapter.ts"] + }, + { + "anchor": "impl:context.queries", + "sources": ["src/context/queries.ts"] + }, + { + "anchor": "impl:context.tables", + "sources": ["src/context/tables.ts"] + }, + { + "anchor": "impl:kernel.decider-contract", + "sources": ["src/kernel/decider.ts", "src/kernel/outcome.ts"] + } + ] +} diff --git a/tests/pure/anchor-sites.test.ts b/tests/pure/anchor-sites.test.ts new file mode 100644 index 0000000..8c15535 --- /dev/null +++ b/tests/pure/anchor-sites.test.ts @@ -0,0 +1,112 @@ +import type { + CodeNode, + GraphSchema, +} from "@libar-dev/software-delivery-protocol"; +import { statSync } from "node:fs"; +import { readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { expect, test } from "vitest"; + +// design/tools/anchor-sites.json names, for every implementation anchor whose site is a file under +// tests/, the source files it stands for: the code it binds is bundled into a deployment and carries +// no Protocol import, so a test carries the anchor for it. The anchors are read from the graph that +// `npm run sdp:build` derives before the tests run, as the harness rules read it. +type AnchorSites = { anchors: { anchor: string; sources: string[] }[] }; + +const root = join(import.meta.dirname, "../.."); + +function isFile(path: string): boolean { + try { + return statSync(join(root, path)).isFile(); + } catch { + return false; + } +} + +// What keeps the list from being the true one: an anchor under tests/ it misses, an anchor it lists +// that is not under tests/, an anchor it lists twice, or a source that is not a file of the repository. +function anchorSiteGaps( + nodes: GraphSchema["nodes"], + sites: AnchorSites, + fileExists: (path: string) => boolean, +): string[] { + const anchors = nodes.filter( + (node): node is CodeNode => node.nodeType === "CodeNode", + ); + const underTests = new Set( + anchors + .filter((node) => node.file.startsWith("tests/")) + .map((node) => node.id), + ); + const listed = sites.anchors.map((site) => site.anchor); + const gaps: string[] = []; + for (const id of [...underTests].sort()) + if (!listed.includes(id)) + gaps.push(`${id} sits under tests/ and is not listed`); + for (const id of new Set(listed)) { + if (!underTests.has(id)) + gaps.push(`${id} is listed and is no implementation anchor under tests/`); + if (listed.filter((other) => other === id).length > 1) + gaps.push(`${id} is listed twice`); + } + for (const site of sites.anchors) { + if (site.sources.length === 0) gaps.push(`${site.anchor} names no source`); + for (const source of site.sources) + if (!fileExists(source)) + gaps.push(`${site.anchor} names ${source}, which is not a file`); + } + return gaps; +} + +test("pure: every implementation anchor under tests/ is listed once in design/tools/anchor-sites.json, with sources that are files", async () => { + const graph = JSON.parse( + await readFile(join(root, "generated/graph.json"), "utf8"), + ) as GraphSchema; + const sites = JSON.parse( + await readFile(join(root, "design/tools/anchor-sites.json"), "utf8"), + ) as AnchorSites; + expect(sites.anchors.length).toBeGreaterThan(0); + expect(anchorSiteGaps(graph.nodes, sites, isFile)).toEqual([]); +}); + +test("pure: the anchor sites check refuses a missing anchor, an anchor elsewhere, an anchor listed twice and a source that is no file", () => { + const node = (id: string, file: string) => + ({ id, nodeType: "CodeNode", claim: "anchored", file }) as CodeNode; + const nodes = [ + node("impl:a.listed", "tests/pure/a.test.ts"), + node("impl:a.missing", "tests/pure/b.test.ts"), + node("impl:a.harness", "harness/native.ts"), + ]; + const files = new Set(["src/a.ts"]); + expect( + anchorSiteGaps( + nodes, + { + anchors: [ + { anchor: "impl:a.listed", sources: ["src/a.ts", "src/gone.ts"] }, + { anchor: "impl:a.listed", sources: ["src/a.ts"] }, + { anchor: "impl:a.harness", sources: ["src"] }, + ], + }, + (path) => files.has(path), + ), + ).toEqual([ + "impl:a.missing sits under tests/ and is not listed", + "impl:a.listed is listed twice", + "impl:a.harness is listed and is no implementation anchor under tests/", + "impl:a.listed names src/gone.ts, which is not a file", + "impl:a.harness names src, which is not a file", + ]); + expect( + anchorSiteGaps(nodes.slice(0, 1), { anchors: [] }, () => true), + ).toEqual(["impl:a.listed sits under tests/ and is not listed"]); + expect( + anchorSiteGaps( + nodes.slice(0, 1), + { anchors: [{ anchor: "impl:a.listed", sources: [] }] }, + () => true, + ), + ).toEqual(["impl:a.listed names no source"]); + expect(isFile("src/read-model/rebuild.ts")).toBe(true); + expect(isFile("src/read-model")).toBe(false); +}); diff --git a/tests/pure/rebuild.test.ts b/tests/pure/rebuild.test.ts index b062e76..cf05577 100644 --- a/tests/pure/rebuild.test.ts +++ b/tests/pure/rebuild.test.ts @@ -1,3 +1,8 @@ +import { + codeAnchor, + codeAnchorId, + ref, +} from "@libar-dev/software-delivery-protocol"; import { expect, test } from "vitest"; import { deletedTitle } from "../../fixture/convex/depot/streams.js"; import { @@ -17,6 +22,16 @@ import { readModel, version, } from "./rebuild-support.js"; +// Binds the online rebuild in src/read-model/rebuild.ts to its Spec. The library is bundled into the +// parent deployment, so it carries no Protocol import itself; this test carries its anchor. The paused +// path of a history view is spec:application.history-rebuild, which no code realizes. +const anchor = codeAnchor({ + id: codeAnchorId("impl:application.rebuild"), + label: + "the online rebuild's operator entries, batch chains, tenant fill and batch bounds", + satisfies: ref("spec:application.rebuild"), +}); +void anchor; // projection-contract.sdp.md fnProjectionOf:68, typeReadModel:67; native-harness.sdp.md fixtureReadModel:90. test("pure: projectionOf selects the declared version and the latest projection is first", () => { @@ -49,7 +64,8 @@ test("pure: the fixture's documentTitle versions differ only on the deleted docu ).toThrow(); }); -// rebuild.sdp.md fnBatchSizeFor:116, limitBatchSize:146, limitPurgeBatch:147. +// spec:application.rebuild#design.fnBatchSizeFor, spec:application.rebuild#design.limitBatchSize and +// spec:application.rebuild#design.limitPurgeBatch. test.each([ [16384, 100, 256], [65536, 32, 64], @@ -105,10 +121,10 @@ test.each(projectionCases)( } }, ); -// rebuild.sdp.md step6:126 and verifySteps:127 expose no pure cursor function. +// spec:application.rebuild#design.step6 and spec:application.rebuild#design.verifySteps expose no pure cursor function. // The direct batch tests in tests/simulator/rebuild.test.ts prove those cursor steps. -// rebuild.sdp.md limitTenantFillBatch:142, limitGenerationsListed:151. +// spec:application.rebuild#design.limitTenantFillBatch and spec:application.rebuild#design.limitGenerationsListed. test("pure: tenant fill and generation listing have their pinned bounds", async () => { const { limitTenantFillBatch, limitGenerationsListed } = await import("../../src/read-model/rebuild.js"); diff --git a/tests/pure/write-pause.test.ts b/tests/pure/write-pause.test.ts index 62b7348..eee0fd3 100644 --- a/tests/pure/write-pause.test.ts +++ b/tests/pure/write-pause.test.ts @@ -1,5 +1,10 @@ // The operator check, the scopes of a use case and the shapes of the gate and audit tables // (spec:command.actor-and-scope, spec:application.write-pause, spec:operations.baseline-operations). +import { + codeAnchor, + codeAnchorId, + ref, +} from "@libar-dev/software-delivery-protocol"; import { expect, test } from "vitest"; import { auditTables } from "../../src/audit/index.js"; import { assertOperator, limitOperatorBytes } from "../../src/command/index.js"; @@ -10,6 +15,16 @@ import { scopesOfUseCase, } from "../../src/gate/index.js"; +// Binds the gate library under src/gate/ to its Spec. The library is bundled into the parent +// deployment, so it carries no Protocol import itself; this test carries its anchor. +const anchor = codeAnchor({ + id: codeAnchorId("impl:application.write-pause"), + label: + "the gate document, gateAllows, assertWritable, the scope writers and the four gate entries", + satisfies: ref("spec:application.write-pause"), +}); +void anchor; + test("pure: assertOperator refuses an empty or whitespace-only operator and one above 512 bytes, and returns any other trimmed", () => { for (const operator of ["", " ", "\t\n "]) expect(() => assertOperator(operator)).toThrow( diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index 47d05ef..2c2585f 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -3,7 +3,8 @@ // pin, so a changed pin fails the typecheck; a table's pair holds its indexes too. Ahead: the design // leads the code, so the day the code catches up the assertion fails and the pair moves to bound; a // function's ctx is erased first where the pin's and the code's differ. Not compared: the pair -// differs only in the ctx, or carries a ctx inside a type no erasing reaches; nothing is asserted. +// differs only in the ctx, or carries a ctx inside a type no erasing reaches, or its pin belongs to a +// Spec outside the Pack, so the module does not emit it; nothing is asserted. import type { TableDefinition } from "convex/server"; import { describe, expectTypeOf, test } from "vitest"; import type * as pinned from "../../generated/pinned/history-view.js"; @@ -71,13 +72,6 @@ describe("bound: the code equals the pin", () => { TableShape<(typeof readModel.readModelTables)["generations"]> >().toEqualTypeOf>(); }); - test("spec:application.generation-registry#design.tableProjectionMarkers", () => { - expectTypeOf< - TableShape<(typeof readModel.readModelTables)["projectionMarkers"]> - >().toEqualTypeOf< - TableShape<(typeof pinned.tables)["projectionMarkers"]> - >(); - }); test("spec:application.history-projection#design.typeHistoryEvent", () => { expectTypeOf().toEqualTypeOf(); }); @@ -306,7 +300,7 @@ describe("ahead: the design leads the code", () => { WithoutCtx >(); }); - test("spec:command.command-declaration#design.typeReadModelBinding: the history view's build binds history and aggregate projections", () => { + test("spec:command.command-declaration#design.typeReadModelBinding: the history view's build binds history projections", () => { expectTypeOf().not.toEqualTypeOf(); }); test("spec:command.command-pipeline#design.fnWriteReadModels: through typeReadModelBinding", () => { @@ -353,7 +347,7 @@ describe("ahead: the design leads the code", () => { }); }); -describe("not compared: the pin takes Convex's generic MutationCtx, the code a composition's own ctx", () => { +describe("not compared: the pin takes Convex's generic MutationCtx and the code a composition's own ctx, or the pin is outside the Pack", () => { test.skip( "spec:command.command-declaration#design.typeExecutor: differs only in ctx", ); @@ -381,4 +375,7 @@ describe("not compared: the pin takes Convex's generic MutationCtx, the code a c test.skip( "spec:command.command-pipeline#design.fnRelayFailure: leads the code and differs in ctx, through typeCommandDeclaration", ); + test.skip( + "spec:application.aggregate-projection#design.tableProjectionMarkers: the aggregate form's table, outside the Pack, while readModelTables still holds it", + ); }); From 149be95f96a655e44c91295abd96458b575827f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:56:21 +0200 Subject: [PATCH 20/60] build: the pinned pairs follow the split, and the drift test finds its blocks by prefix pinned-pairs.json follows the type test after the maturity lane: 52 bound, 14 ahead and 10 not compared, the markers table's pair now outside the Pack. The pure test finds the three blocks by their title prefixes and fails on a missing or doubled block. Written by gpt-6.1-sol (job-mut363vp-ed05a575, round 2). Co-Authored-By: Claude Opus 5.5 --- tests/pure/pinned-pairs.test.ts | 33 +++++++++++++++++++-------------- tests/types/pinned-pairs.json | 16 ++++++++-------- 2 files changed, 27 insertions(+), 22 deletions(-) diff --git a/tests/pure/pinned-pairs.test.ts b/tests/pure/pinned-pairs.test.ts index 9de5100..d157b33 100644 --- a/tests/pure/pinned-pairs.test.ts +++ b/tests/pure/pinned-pairs.test.ts @@ -7,17 +7,14 @@ const root = resolve(import.meta.dirname, "../.."); const testFile = "tests/types/pinned.test-d.ts"; const source = ts.createSourceFile( testFile, - readFileSync(resolve(root, testFile), "utf8"), + readFileSync(process.env.PINNED_TEST_FILE ?? resolve(root, testFile), "utf8"), ts.ScriptTarget.Latest, true, ); const titles = new Map([ - ["bound: the code equals the pin", "bound"], - ["ahead: the design leads the code", "ahead"], - [ - "not compared: the pin takes Convex's generic MutationCtx, the code a composition's own ctx", - "notCompared", - ], + ["bound:", "bound"], + ["ahead:", "ahead"], + ["not compared:", "notCompared"], ]); type Pair = { @@ -63,9 +60,12 @@ function readTests(): Pair[] { continue; const [title, callback] = statement.expression.arguments; if (!title || !ts.isStringLiteral(title)) continue; - const state = titles.get(title.text); - if (!state) throw new Error(`Unknown pinned pair block: ${title.text}`); - found.add(title.text); + const match = [...titles].find(([prefix]) => title.text.startsWith(prefix)); + if (!match) throw new Error(`Unknown pinned pair block: ${title.text}`); + const [prefix, state] = match; + if (found.has(prefix)) + throw new Error(`Duplicate pinned pair block: ${prefix}`); + found.add(prefix); if ( !callback || !ts.isArrowFunction(callback) || @@ -85,6 +85,7 @@ function readTests(): Pair[] { if (!name || !ts.isStringLiteral(name)) throw new Error(`No test name in ${title.text}`); const address = name.text.split(": ")[0]!; + const reason = name.text.split(": ").slice(1).join(": "); const text = body?.getText(source) ?? ""; let code: string | null = null; for (const [alias, file] of imports) { @@ -113,13 +114,17 @@ function readTests(): Pair[] { : "type", code, reason: - state === "bound" ? null : name.text.split(": ").slice(1).join(": "), + state === "bound" + ? null + : reason.includes("outside the Pack") + ? `The pin is outside pack:history-view and is not emitted; ${reason}` + : reason, }); } } - expect([...found], "The compiled tier's three pair blocks").toEqual([ - ...titles.keys(), - ]); + for (const prefix of titles.keys()) + if (!found.has(prefix)) + throw new Error(`Missing pinned pair block: ${prefix}`); return pairs; } diff --git a/tests/types/pinned-pairs.json b/tests/types/pinned-pairs.json index b7953fc..04d5c3c 100644 --- a/tests/types/pinned-pairs.json +++ b/tests/types/pinned-pairs.json @@ -44,13 +44,6 @@ "code": "src/read-model/index.ts#readModelTables", "reason": null }, - { - "address": "spec:application.generation-registry#design.tableProjectionMarkers", - "state": "bound", - "comparison": "table", - "code": "src/read-model/index.ts#readModelTables", - "reason": null - }, { "address": "spec:application.history-projection#design.typeHistoryEvent", "state": "bound", @@ -413,7 +406,7 @@ "state": "ahead", "comparison": "type", "code": "src/read-model/index.ts#ReadModelBinding", - "reason": "the history view's build binds history and aggregate projections" + "reason": "the history view's build binds history projections" }, { "address": "spec:command.command-pipeline#design.fnWriteReadModels", @@ -533,6 +526,13 @@ "comparison": "none", "code": null, "reason": "leads the code and differs in ctx, through typeCommandDeclaration" + }, + { + "address": "spec:application.aggregate-projection#design.tableProjectionMarkers", + "state": "notCompared", + "comparison": "none", + "code": null, + "reason": "The pin is outside pack:history-view and is not emitted; the aggregate form's table, outside the Pack, while readModelTables still holds it" } ] } From 57496e5909079b0cecc4019316f1103515876b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 02:59:58 +0200 Subject: [PATCH 21/60] design: the register follows the split, and its line pointers into the changed Specs become entry addresses OD-156 to OD-158 cite their questions in the history rebuild, OD-068 and OD-069 take the registry's question text after the aggregate form left it. 24 line pointers into the Specs this unit changed become the entry addresses they meant, traced through history; 79 that meant no Design entry stay. check.py imports decisions.py without writing bytecode into the tree. The advisor register's example and the forks' Sources lines take the new form. Written by gpt-6.1-sol (job-mut363o8-7111f411, round 2). Co-Authored-By: Claude Opus 5.5 --- design/advisors/register.md | 6 ++-- design/decisions/forks/OD-025.md | 2 +- design/decisions/forks/OD-064.md | 2 +- design/decisions/forks/OD-068.md | 2 +- design/decisions/forks/OD-069.md | 2 +- design/decisions/forks/OD-123.md | 2 +- design/decisions/register.json | 54 ++++++++++++++++---------------- design/tools/check.py | 3 +- 8 files changed, 38 insertions(+), 35 deletions(-) diff --git a/design/advisors/register.md b/design/advisors/register.md index dc458e6..bd7ad25 100644 --- a/design/advisors/register.md +++ b/design/advisors/register.md @@ -58,7 +58,7 @@ An advisor that finds a row plainly another's leaves it unsorted and says so in "id": "OD-014", "title": "Admission is an optional per-command policy in the declaration, absent by default", "sources": [ - { "kind": "specQuestion", "ref": "spec:command.command-pipeline#3", "file": "design/specs/command/command-pipeline.sdp.md", "line": 61 }, + {"kind": "specQuestion", "spec": "spec:command.command-pipeline", "question": "Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7)", "file": "design/specs/command/command-pipeline.sdp.md"}, { "kind": "extension", "ref": "E-32", "file": "design/README.md", "line": 211 } ], "families": ["command"], @@ -81,13 +81,15 @@ An advisor that finds a row plainly another's leaves it unsorted and says so in } ``` +`check.py` verifies each question source against exactly one open question of its Spec by its first sentence, normalizing whitespace only, and refuses a removed question that resolves again. + `units` is the order of the units a decision can block. The tool reads "before S4" from it, and a close keeps it current. | Field | What it holds | Filled by | |---|---|---| | `id` | `OD-` and three digits, given in source order and never reused | the load | | `title` | The first sentence of the first source, cut at 120 characters | the load | -| `sources` | Where the decision came from, every place once. `kind` is `ownerQueue`, `specQuestion`, `extension`, `planAmbiguity`, `productDecision` or `specLine`. `ref` is the lasting name: `000/3` for the third bullet of owner queue item 000, `#` for a Spec's n-th open question in authored order, `E-32`, `11.3` for an ambiguity of `PLAN.md`, `product/1`, `product/2` or `product/3` for a product decision, and `#` for a named Spec bullet that is not an open question. `file` and `line` say where it stood at the load. | the load | +| `sources` | Where the decision came from, every place once. `kind` is `ownerQueue`, `specQuestion`, `extension`, `planAmbiguity`, `productDecision` or `specLine`. `specQuestion` uses `spec`, the question's opening text in `question`, and `file`, with `open: false` only for a removed question on a decided or folded row. Other source kinds use `ref` as the lasting name: `000/3` for the third bullet of owner queue item 000, `E-32`, `11.3` for an ambiguity of `PLAN.md`, `product/1`, `product/2` or `product/3` for a product decision, and `#` for a named Spec bullet that is not an open question. `file` and `line` on those other kinds say where it stood at the load. | the load | | `families` | The Spec families it touches | the load | | `cites` | The tokens its sources cite: E, D, F, OQ, Sc, Probe, Law | the load | | `provisionalReading` | What the code or the Specs rest on today, word for word from the source, or `null` | the load | diff --git a/design/decisions/forks/OD-025.md b/design/decisions/forks/OD-025.md index ace9e54..75879e1 100644 --- a/design/decisions/forks/OD-025.md +++ b/design/decisions/forks/OD-025.md @@ -1,6 +1,6 @@ # OD-025. Who may create the first grant of a tenant and change its grants? -Drafted by sol from the register, 2026-10-02. Sources: owner queue 0/2, spec:command.tenancy-and-authority#3. Blocks: S4. +Drafted by sol from the register, 2026-10-02. Sources: owner queue 0/2, spec:command.tenancy-and-authority. Blocks: S4. ## The fork diff --git a/design/decisions/forks/OD-064.md b/design/decisions/forks/OD-064.md index 7ad79f2..014471c 100644 --- a/design/decisions/forks/OD-064.md +++ b/design/decisions/forks/OD-064.md @@ -1,6 +1,6 @@ # OD-064. Is 100 lines the supported maximum of PlaceOrder or only its measurement size? -Drafted by sol from the register, 2026-10-02. Sources: spec:application.first-experiment#2, spec:application.parent-use-cases#1, spec:context.batch-shaped-api#1, spec:decisions.d10-contexts-meet-in-parent-use-cases#1. Blocks: S3. +Drafted by sol from the register, 2026-10-02. Sources: spec:application.first-experiment, spec:application.parent-use-cases, spec:context.batch-shaped-api, spec:decisions.d10-contexts-meet-in-parent-use-cases. Blocks: S3. ## The fork diff --git a/design/decisions/forks/OD-068.md b/design/decisions/forks/OD-068.md index d741d91..1a7deb3 100644 --- a/design/decisions/forks/OD-068.md +++ b/design/decisions/forks/OD-068.md @@ -1,6 +1,6 @@ # OD-068. Should rollback reverify a retired generation or switch to one kept current? -Drafted by sol from the register, 2026-10-02. Sources: spec:application.generation-registry#1, spec:application.rebuild#3, E-8. Blocks: S4. +Drafted by sol from the register, 2026-10-02. Sources: spec:application.generation-registry, spec:application.rebuild, E-8. Blocks: S4. ## The fork diff --git a/design/decisions/forks/OD-069.md b/design/decisions/forks/OD-069.md index 4c3a6e8..c1ed93c 100644 --- a/design/decisions/forks/OD-069.md +++ b/design/decisions/forks/OD-069.md @@ -1,6 +1,6 @@ # OD-069. Should a generation span the deployment or belong to one tenant? -Drafted by sol from the register, 2026-10-02. Sources: spec:application.generation-registry#2. Blocks: S4. +Drafted by sol from the register, 2026-10-02. Sources: spec:application.generation-registry. Blocks: S4. ## The fork diff --git a/design/decisions/forks/OD-123.md b/design/decisions/forks/OD-123.md index 98e69ca..dd95ed1 100644 --- a/design/decisions/forks/OD-123.md +++ b/design/decisions/forks/OD-123.md @@ -1,6 +1,6 @@ # OD-123. Should one document per stream remain the default, and what largest order should it support? -Drafted by sol from the register, 2026-10-02. Sources: spec:kernel.state-document-mapping#2, 11.6. Blocks: S3. +Drafted by sol from the register, 2026-10-02. Sources: spec:kernel.state-document-mapping, 11.6. Blocks: S3. ## The fork diff --git a/design/decisions/register.json b/design/decisions/register.json index bef48b6..f30d527 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -1692,7 +1692,7 @@ "reason": "Owner test 5: whether a failed check keeps every tenant's writers out with no override, and how often the drill runs, trade availability against safety and a standing operator duty against assurance, with no evidence on which weighs more, and the doc says none of them [design/reviews/consensus-ledger.json:2301]; it stands apart from OD-082, which is the mechanism and names these policies as outside it.", "lean": { "do": "Keep fail-closed with no override and the deployment-wide door as the provisional reading, mark the three policies as extensions on `spec:application.restore`, and let the owner set the override, the failure scope and the drill cadence.", - "restsOn": "[design/specs/application/restore.sdp.md:68] and [design/specs/application/restore.sdp.md:85] keep a failed run closed with no reopening; [design/specs/application/restore.sdp.md:62] and [design/specs/application/restore.sdp.md:112] set the drill at once per release; [design/specs/application/write-pause.sdp.md:61] refuses every write with scope `all` while the door is set; [design/specs/application/restore.sdp.md:96] already lets a check run for one tenant, so a per-tenant failure scope is half a mechanism and the door is what makes it deployment-wide. **Judgment.** For the person restoring at night, no override means a finding in one tenant's stream keeps every tenant down until a repair or another backup; what each level would mean is: no override, safest and longest; a tenant-scoped door, one tenant down; an override recorded on the run, shortest and a decision a person makes under pressure.", + "restsOn": "[design/specs/application/restore.sdp.md:68] and [design/specs/application/restore.sdp.md:85] keep a failed run closed with no reopening; [design/specs/application/restore.sdp.md:62] and [design/specs/application/restore.sdp.md:112] set the drill at once per release; [spec:application.write-pause#design.fnGateAllows] refuses every write with scope `all` while the door is set; [design/specs/application/restore.sdp.md:96] already lets a check run for one tenant, so a per-tenant failure scope is half a mechanism and the door is what makes it deployment-wide. **Judgment.** For the person restoring at night, no override means a finding in one tenant's stream keeps every tenant down until a repair or another backup; what each level would mean is: no override, safest and longest; a tenant-scoped door, one tenant down; an override recorded on the run, shortest and a decision a person makes under pressure.", "settles": "The owner's word on the three policies." }, "checkedBy": null, @@ -2238,10 +2238,10 @@ "lean": { "do": "Close on Probe 6's result: the rebuild drives every batch, backfill, verify and purge, with its own self-scheduled internal mutation, uses `@convex-dev/migrations` for nothing, keeps the progress row as the one checkpoint, and keeps the component pinned as a dev dependency for the fixture's probe only.", "restsOn": "Lean of the domain lens, under the owner's one-advisor word of 2026-10-03, on a row whose advisor is `convex`. Probe 6 ran at the native backend tier on `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0, `convex-helpers` 0.1.124 and `@convex-dev/migrations` 0.3.6 [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:13], and F17 is probed [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:11]. On those pins the component reaches a context's rows only through a parent mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, its status and the generation's state are two vocabularies, and a failure past the read limit leaves no error on its row [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:21,44,45,49]. The Specs already take the consequence: every batch is driven by a self-scheduled internal mutation under one batch contract and the rebuild uses the component for nothing [design/specs/application/rebuild.sdp.md:58,59,86; design/specs/decisions/d09-rebuild-online-by-default.sdp.md:42]. The round 2 close records the pin as a dev dependency for the fixture's probe only [design/STATE.md:38, a pointer]. **Judgment.** The earlier lean kept a split of two drivers \"until it passes\"; the probe did not pass the component, so that condition was not met but replaced: the split is gone and one driver remains, the do-nothing option the earlier `against` named. Nothing in this row changes a Spec: the ruling records what the Specs say.", - "against": "**Judgment.** The component gives checkpointing, resume and a status for free where it fits, and a later release might fit; the probe shows 0.3.6 on the pinned backend and nothing about a later one. The cost of the Spec's choice is that the platform owns its batch driver and its stall answer, which is `abortGeneration` and a new `startGeneration` [design/specs/application/rebuild.sdp.md:144].", + "against": "**Judgment.** The component gives checkpointing, resume and a status for free where it fits, and a later release might fit; the probe shows 0.3.6 on the pinned backend and nothing about a later one. The cost of the Spec's choice is that the platform owns its batch driver and its stall answer, which is `abortGeneration` and a new `startGeneration` [spec:application.rebuild#design.stallSignal].", "settles": "Settled by Probe 6 at the native backend tier on the pins named; what the six examples do not run, hosted quotas, sustained contention, automatic stall detection, timeout and retry exhaustion [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:31,49], stays open on F17 and is not this row's.", "changes": "No Spec: `spec:application.rebuild`, `spec:decisions.d09-rebuild-online-by-default` and `spec:facts.f17-migrations-fits-generation-backfill` already carry the ruling. The register row alone. The alternative, a driver on a later release of the component, would edit `spec:application.rebuild` at its E-40 question and `fnBackfillBatch` and add a dependency.", - "ifWrong": "A later release that fits is a new fact with its own probe; the batch contract is one internal mutation per batch [design/specs/application/rebuild.sdp.md:111,114], so a driver swap is an edit to the rebuild Spec and the batch functions, and the cursor and the bound are the design's numbers either way [design/specs/application/rebuild.sdp.md:88,146]." + "ifWrong": "A later release that fits is a new fact with its own probe; the batch contract is one internal mutation per batch [spec:application.rebuild#design.transactionBoundary,114], so a driver swap is an edit to the rebuild Spec and the batch functions, and the cursor and the bound are the design's numbers either way [design/specs/application/rebuild.sdp.md:88,146]." }, "checkedBy": "gpt-6.1-sol, medium, 2026-10-03: every checked claim held", "fork": null, @@ -2683,7 +2683,7 @@ { "kind": "specQuestion", "spec": "spec:application.generation-registry", - "question": "Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` and `projectionMarkers` tables below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5)", + "question": "Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` table below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5)", "file": "design/specs/application/generation-registry.sdp.md" }, { @@ -2734,7 +2734,7 @@ { "kind": "specQuestion", "spec": "spec:application.generation-registry", - "question": "Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows and the markers among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57)", + "question": "Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57)", "file": "design/specs/application/generation-registry.sdp.md" } ], @@ -2792,7 +2792,7 @@ "reason": "Delegated test: a mechanism, the meaning of a field, inside what D19 and F12 rule; it is the registry half of OD-082's accepted branch and is decided with it.", "lean": { "do": "Keep the generation row's fence at inventory time as the restore's proof that a generation is stranded, and `resumeChain`'s bump as the proof that it is not.", - "restsOn": "[design/specs/application/generation-registry.sdp.md:47] makes the row the checkpoint and [design/specs/application/generation-registry.sdp.md:50] gives a building or verifying generation exactly one batch identified by the fence, dropped by a restore with every pending scheduled function, which [design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md:11] carries as documented; [design/specs/application/restore.sdp.md:104] resumes only a row still in `building` or `verifying` at the inventoried fence; [design/specs/application/write-pause.sdp.md:43] makes a batch whose fence differs return without writing. **Judgment.** A proof that lives on the row is one the operator reads in `getGenerations` [design/specs/application/generation-registry.sdp.md:77], and a bump that fences every older batch means a resume can be repeated safely.", + "restsOn": "[design/specs/application/generation-registry.sdp.md:47] makes the row the checkpoint and [design/specs/application/generation-registry.sdp.md:50] gives a building or verifying generation exactly one batch identified by the fence, dropped by a restore with every pending scheduled function, which [design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md:11] carries as documented; [design/specs/application/restore.sdp.md:104] resumes only a row still in `building` or `verifying` at the inventoried fence; [design/specs/application/write-pause.sdp.md:43] makes a batch whose fence differs return without writing. **Judgment.** A proof that lives on the row is one the operator reads in `getGenerations` [spec:application.rebuild#design.fnGetGenerations], and a bump that fences every older batch means a resume can be repeated safely.", "against": "The fence proves that no older batch will write; it does not prove that none is running, and a `verified` row needs no batch [design/specs/application/restore.sdp.md:83], so there the fence proves nothing; an operator resume between the inventory and `finishRestoreRun` changes the fence and the finish then skips that row, which is right but silent. Nothing is built: no file under `src`, `harness`, `fixture`, `example` or `tests` contains `restoreRuns`, so the proof is intent at no tier.", "settles": "The S5 build at the `convex-test` tier with a generation restored mid-build, then the drill on the native tier [design/specs/application/restore.sdp.md:86].", "changes": "For the lean: nothing; [design/specs/application/generation-registry.sdp.md:50] and [design/specs/application/restore.sdp.md:104] as they stand. For the alternative, a `stranded` state or flag on the row: the states at [design/specs/application/generation-registry.sdp.md:42] and the transitions at [design/specs/application/generation-registry.sdp.md:44] gain one, and the restore's inventory writes it.", @@ -2831,11 +2831,11 @@ "reason": "Rule 3, the shape of a table and which row holds a cursor; the doc binds batching to the component and fixes no checkpoint [design/specs/application/generation-registry.sdp.md:37]; an edit to one Spec and one file takes it back. Doubt: the lean goes against the built reading of [design/specs/application/generation-registry.sdp.md:47] on a contention judgment that only the native tier shows, and S4's guidance [design/STATE.md:160], a pointer, asks for progress away from rows every command reads.", "lean": { "do": "Keep the two rows as the Specs pin them: the generation row carries state, projection version, fence and who started and last changed it, and a batch patches it only in the mutation that ends its pass; the progress row carries the cursor, the batch size and the counts and is the one checkpoint of every batch; no state of the migrations component exists beside them.", - "restsOn": "The E-40 question takes the progress row because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight once per batch [design/specs/application/generation-registry.sdp.md:38]; the generation row carries nothing a batch writes on its healthy path except the state the batch ending a pass sets, and the progress row is written in the same mutation as the rows [design/specs/application/generation-registry.sdp.md:53,74]; `generationsToWrite` and `activeGeneration` read the generation row through `by_read_model_state` and never the progress row [design/specs/application/generation-registry.sdp.md:82,83,94]; a build costs the commands one re-run at the end of the backfill, one at the end of the verify pass and one per operator entry [design/specs/application/generation-registry.sdp.md:86]; the rebuild uses `@convex-dev/migrations` for nothing [design/specs/application/rebuild.sdp.md:86], so the earlier lean's clause that derived the component's state from the progress row names nothing. **Judgment.** One checkpoint with one owner is the rule of my lens: the progress row is the source of where a pass is, the generation row the source of what a generation is, and neither is computed a second way.", + "restsOn": "The E-40 question takes the progress row because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight once per batch [design/specs/application/generation-registry.sdp.md:38]; the generation row carries nothing a batch writes on its healthy path except the state the batch ending a pass sets, and the progress row is written in the same mutation as the rows [design/specs/application/generation-registry.sdp.md:53,74]; `generationsToWrite` and `activeGeneration` read the generation row through `by_read_model_state` and never the progress row [spec:application.generation-registry#design.fnGenerationsToWrite,83,94]; a build costs the commands one re-run at the end of the backfill, one at the end of the verify pass and one per operator entry [spec:application.generation-registry#design.transitionCost]; the rebuild uses `@convex-dev/migrations` for nothing [design/specs/application/rebuild.sdp.md:86], so the earlier lean's clause that derived the component's state from the progress row names nothing. **Judgment.** One checkpoint with one owner is the rule of my lens: the progress row is the source of where a pass is, the generation row the source of what a generation is, and neither is computed a second way.", "against": "**Judgment.** Two rows cost a second table, a second read per batch and a second write at the end of a pass; and whether a batch's checkpoint re-runs no command is shown only at the native tier, since `convex-test` orders nothing concurrently. The ledger still asks for a contention run against a run with no rebuild [design/reviews/consensus-ledger.json:3946].", "settles": "The `convex-test` obligation that the generation row is untouched by a batch except at the end of a pass (`design-s4-paper.md:104` in the round 2 folder) and the native L2-5 example's required assertions that no command failed for reading the registry while batches checkpointed and that the generation rows changed only at the start, the end of each pass and each operator entry [design/specs/application/rebuild.online-rebuild-interrupt-resume.sdp.md:36]; neither has run. The comparison run is a later measurement.", "changes": "No Spec: `spec:application.generation-registry` `tableGenerations`, `tableGenerationProgress` and `transitionCost` and `spec:application.rebuild` `step1`, `step6` and `occRace` carry it. The register row alone. The alternative, one row, would edit the same entries and the ledger's checkpoint finding.", - "ifWrong": "If the registry read set of a command still meets a batch's write, each pass end re-runs commands once, which `transitionCost` already states [design/specs/application/generation-registry.sdp.md:86]; a meeting beyond that would be found by a contention run that records each refused execution's `occInfo` tables as the measurement does [design/specs/application/first-experiment.sdp.md:114], and an edit to the index use or the row split takes it back." + "ifWrong": "If the registry read set of a command still meets a batch's write, each pass end re-runs commands once, which `transitionCost` already states [spec:application.generation-registry#design.transitionCost]; a meeting beyond that would be found by a contention run that records each refused execution's `occInfo` tables as the measurement does [design/specs/application/first-experiment.sdp.md:114], and an edit to the index use or the row split takes it back." }, "checkedBy": "gpt-6.1-sol, medium, 2026-10-03: every checked claim held", "fork": null, @@ -3002,7 +3002,7 @@ "reason": "Rule 3, signatures and the shape of a row: the doc gives no signature, row shape or input for the three forms [design/specs/application/projection-contract.sdp.md:33]; an edit to one Spec and the read-model files takes it back. The order in which the forms are bound is the main thread's [design/STATE.md:160], a pointer.", "lean": { "do": "Keep the per-entity form as the Specs pin it: a `ReadModel` with its `projections`, the latest first, and a `Projection` of `version`, `keyOf` and `project` alone; `applyProjection` writing each generation by its role, `active`, `building` or `verifying`, with the projection whose version the generation records; and every row measured against `rowBudgetBytes` at every write. The history form stays as declared and bound for the order allocation history, whose build is not 3b's, and the aggregate form stays a signature with no read model of the example bound to it.", - "restsOn": "The E-9 question names the three forms and the three points the owner has not ruled, the split, the write by role and the measured row [design/specs/application/projection-contract.sdp.md:33]; the declaration and the helper are pinned [design/specs/application/projection-contract.sdp.md:47,66,67,68]; the write rule by mode and role is pinned, live-updated in the role `building` skipping a missing row because the backfill has not reached it, and a missing row in `verifying` meaning a subject that projected to none [design/specs/application/projection-contract.sdp.md:50,69,92; design/specs/application/rebuild.sdp.md:69,70]; the row is measured with `getConvexSize` at every write [design/specs/application/projection-contract.sdp.md:51]. The history form is declared as `orderAllocationHistory` [design/specs/application/projection-contract.sdp.md:78] and bound once per source stream type in the example [design/specs/application/orders-inventory-example.sdp.md:69], and 3b does not build the paused path (`design-s4-paper.md:107` in the round 2 folder); the aggregate form's table is given as a shape and not as a read model the first experiment builds [design/specs/application/projection-contract.sdp.md:85], and the online rebuild is pinned for a per-entity read model with one source stream type while an aggregate gets a rebuild when a view needs it [design/specs/application/rebuild.sdp.md:61]. **Judgment.** The roles exist because the building generation has rows the backfill has not reached and the verifying one does not; one rule for both would read a missing row two ways.", + "restsOn": "The E-9 question names the three forms and the three points the owner has not ruled, the split, the write by role and the measured row [design/specs/application/projection-contract.sdp.md:33]; the declaration and the helper are pinned [design/specs/application/projection-contract.sdp.md:47,66,67,68]; the write rule by mode and role is pinned, live-updated in the role `building` skipping a missing row because the backfill has not reached it, and a missing row in `verifying` meaning a subject that projected to none [design/specs/application/projection-contract.sdp.md:50,69,92; design/specs/application/rebuild.sdp.md:69,70]; the row is measured with `getConvexSize` at every write [design/specs/application/projection-contract.sdp.md:51]. The history form is declared as `orderAllocationHistory` [spec:application.history-projection#design.tableOrderAllocationHistory] and bound once per source stream type in the example [design/specs/application/orders-inventory-example.sdp.md:69], and 3b does not build the paused path (`design-s4-paper.md:107` in the round 2 folder); the aggregate form's table is given as a shape and not as a read model the first experiment builds [spec:application.aggregate-projection#design.tableOrderTotals], and the online rebuild is pinned for a per-entity read model with one source stream type while an aggregate gets a rebuild when a view needs it [design/specs/application/rebuild.sdp.md:61]. **Judgment.** The roles exist because the building generation has rows the backfill has not reached and the verifying one does not; one rule for both would read a missing row two ways.", "against": "**Judgment.** The write rule varies by mode, by role and by the row's state, with the `null` candidate beside them, so its pure table is wide (`design-s4-paper.md:103,144` in the round 2 folder), where a rule without roles would be narrower; it is not taken because it cannot tell a row the backfill has not written from a subject that projects to none [design/specs/application/rebuild.sdp.md:70]. Measuring every row at every write costs a `getConvexSize` per write.", "settles": "The pure write-rule table of mode by role by row state, with the `null` row (`design-s4-paper.md:103,144`), and the `convex-test` obligations of a live create and a live update against `building` and against `verifying` and of two projection versions at once (`design-s4-paper.md:104`), none yet run; the owner's confirmation of the three forms, which the E-9 question asks for, stays the owner's and this ruling does not take it.", "changes": "No Spec: `spec:application.projection-contract` `typeReadModel`, `typeProjection`, `typeWritableGeneration`, `step1` to `step4` and `limitRowSize` carry the per-entity rules, and `tableOrderAllocationHistory` and the example's binding carry the history form. The register row alone. The alternative, one write rule without roles, would edit `step3` and the rebuild's rule on a missing row in `building`.", @@ -3232,11 +3232,11 @@ "reason": "Rule 3, a bound and its number and which mechanism drives a batch: the doc gives no batch size [design/specs/application/rebuild.sdp.md:58], and the Spec itself leaves the component's reach to Probe 6, so a probe comes first.", "lean": { "do": "Keep the batch bound as the Specs pin it: at most `rebuildBatchCeiling`, 100 entities capped by the row budget, and never more than the context's `list` page admits, a field of the progress row that `startGeneration` sets and nothing changes after, so every pass and every resumed pass runs at it; every batch, over a context's enumeration or a parent table, driven by the platform's own self-scheduled internal mutation; a stalled pass answered by `abortGeneration` and a new `startGeneration` with a smaller size, and no automatic stall check.", - "restsOn": "The bound and its two caps [design/specs/application/rebuild.sdp.md:88,116,146], the purge cap [design/specs/application/rebuild.sdp.md:147], the one driver for every batch [design/specs/application/rebuild.sdp.md:59,86], `resumeGeneration` taking no batch size [design/specs/application/rebuild.sdp.md:132; design/specs/application/generation-registry.sdp.md:46] and the stall answer [design/specs/application/rebuild.sdp.md:144]; the main thread's ruling 9 after the paper's check fixed the resumed size (`design-s4-paper.md:150` in the round 2 folder), and the paper excludes an automatic stall check from 3b (`design-s4-paper.md:107`). Probe 6 settled the driver: the component walks only the tables of the component it is defined in [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:21], so the row's provisional reading, which had the component drive parent-table batches and `resumeGeneration` lower the size, is superseded on both points. **Judgment.** A size that never changes makes the progress row the one source of a pass's shape and the batch count a function of the data, and a stall that needs a smaller size is a new generation, not a mutated one.", + "restsOn": "The bound and its two caps [design/specs/application/rebuild.sdp.md:88,116,146], the purge cap [spec:application.rebuild#design.limitPurgeBatch], the one driver for every batch [design/specs/application/rebuild.sdp.md:59,86], `resumeGeneration` taking no batch size [spec:application.rebuild#design.fnResumeGeneration; design/specs/application/generation-registry.sdp.md:46] and the stall answer [spec:application.rebuild#design.stallSignal]; the main thread's ruling 9 after the paper's check fixed the resumed size (`design-s4-paper.md:150` in the round 2 folder), and the paper excludes an automatic stall check from 3b (`design-s4-paper.md:107`). Probe 6 settled the driver: the component walks only the tables of the component it is defined in [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:21], so the row's provisional reading, which had the component drive parent-table batches and `resumeGeneration` lower the size, is superseded on both points. **Judgment.** A size that never changes makes the progress row the one source of a pass's shape and the batch count a function of the data, and a stall that needs a smaller size is a new generation, not a mutated one.", "against": "**Judgment.** A fixed size means a hot key range forces an abort and a whole new backfill rather than a slower continuation of the same generation, and the numbers 100, 16 and `limitPurgeBatch` are design choices under F13 that no run has pressed. Sustained contention over a hot range is not run [design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md:31].", "settles": "Probe 6 settled the driver at the native backend tier; the pure test of `batchSizeFor` at 0, -1, 1.5, above the ceiling and at both row budgets (`design-s4-paper.md:103`) settles the bound's arithmetic once run; the native L2-5 example specifies generation 2 at batch size 1 [design/specs/application/rebuild.online-rebuild-interrupt-resume.sdp.md:33] and has not run; contention over a hot range is a later measurement on the quiet machine.", "changes": "No Spec: `spec:application.rebuild` `fnBatchSizeFor`, `limitBatchSize`, `limitPurgeBatch`, `stallSignal` and the E-40 question carry it. The register row alone; its `provisionalReading` text is stale and the ruling supersedes it. The alternative, a size an operator lowers on resume, would edit `fnResumeChain`, `fnResumeGeneration` and the transition Contract bullet of the registry.", - "ifWrong": "The ceiling and the caps are constants an edit changes [design/specs/application/rebuild.sdp.md:146,147]; a resumed size would be one optional argument on `resumeGeneration` and one patch of the progress row, and no stored row changes meaning." + "ifWrong": "The ceiling and the caps are constants an edit changes [spec:application.rebuild#design.limitBatchSize,147]; a resumed size would be one optional argument on `resumeGeneration` and one patch of the progress row, and no stored row changes meaning." }, "checkedBy": "gpt-6.1-sol, medium, 2026-10-03: every checked claim held", "fork": null, @@ -3318,7 +3318,7 @@ "restsOn": "[design/specs/application/restore.sdp.md:63] and [design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md:11] carry as documented that a backup excludes pending scheduled functions and environment variables, which is why the door is a variable [design/specs/application/write-pause.sdp.md:48] and why a generation in flight is stranded [design/specs/application/restore.sdp.md:70]; [design/specs/application/restore.sdp.md:68] and [design/specs/application/restore.sdp.md:85] keep a failed run closed with the check and the subject named; [design/specs/application/restore.sdp.md:81] makes every check resumable from its cursor; [design/specs/application/restore.sdp.md:99] and [design/specs/application/restore.sdp.md:104] refuse `startRestoreRun` outside the door and `finishRestoreRun` while the door is still set or the inventory unfinished; [design/specs/application/restore.sdp.md:106] orders the checks so a broken journal stops the fold check. **Judgment.** In the practice of restoring a deployment, a record of what was checked and found, a run that can be interrupted and resumed, and a door a second operator cannot open by accident are what make a restore safe to run at night, and this design has each.", "against": "The operator clears `MAINTENANCE_MODE` before calling `finishRestoreRun` [design/specs/application/restore.sdp.md:84], so between the two steps writers run while the restored closed entries still hold their scopes [design/specs/application/write-pause.sdp.md:49]; if `finishRestoreRun` is never called those scopes stay closed, against what [design/specs/application/restore.sdp.md:70] promises, and only `getGate` shows why. The door is a variable that no table records: who set it and when is outside the deployment's data. Nothing is built: no file under `src`, `harness`, `fixture`, `example` or `tests` contains `restoreRuns` or `MAINTENANCE_MODE`, so every step is intent at no tier; and whether the snapshot replaces the components' tables is OD-081.", "settles": "The S5 build, then the drill on a disposable deployment on the native tier [design/specs/application/restore.sdp.md:86], with Probe 7's transactional half for what the snapshot leaves [design/specs/application/restore.sdp.md:55]; whether a failed check admits an override and how often the drill runs are policies the owner rules, outside this row.", - "changes": "For the lean: nothing in `spec:application.restore`; `spec:application.write-pause` at [design/specs/application/write-pause.sdp.md:48] and [design/specs/application/write-pause.sdp.md:61], and `spec:application.generation-registry` for `resumeChain` [design/specs/application/restore.sdp.md:104], as they stand, built in S5. For the alternative, a restore with no record and no inventory that reopens by hand: [design/specs/application/restore.sdp.md:76], [design/specs/application/restore.sdp.md:82] to [design/specs/application/restore.sdp.md:84] and [design/specs/application/restore.sdp.md:93] to [design/specs/application/restore.sdp.md:95], and a stranded rebuild's gate entries would stay closed until an operator reads the gate.", + "changes": "For the lean: nothing in `spec:application.restore`; `spec:application.write-pause` at [design/specs/application/write-pause.sdp.md:48] and [spec:application.write-pause#design.fnGateAllows], and `spec:application.generation-registry` for `resumeChain` [design/specs/application/restore.sdp.md:104], as they stand, built in S5. For the alternative, a restore with no record and no inventory that reopens by hand: [design/specs/application/restore.sdp.md:76], [design/specs/application/restore.sdp.md:82] to [design/specs/application/restore.sdp.md:84] and [design/specs/application/restore.sdp.md:93] to [design/specs/application/restore.sdp.md:95], and a stranded rebuild's gate entries would stay closed until an operator reads the gate.", "ifWrong": "A missing check is found by the drill before a production restore, and an added check is an edit plus one internal mutation; a wrong order of the two steps loses nothing, because the door refuses writes and `finishRestoreRun` refuses until the door is clear [design/specs/application/restore.sdp.md:104]; **Judgment.** the one cost an edit does not take back is a restore accepted on a dataset the drill did not represent, which is why [design/specs/application/restore.sdp.md:86] records the dataset." }, "checkedBy": null, @@ -3395,10 +3395,10 @@ "reason": "Delegated test: a Convex mechanism, a table shape and a refusal code inside what D9 and D4 rule; the one trade-off, sources against the read model as the closed scope, has a documented reason on its side; the acceptable length of a pause is the owner's policy and not this row.", "lean": { "do": "Keep one gate document per deployment with closed scopes in one `closed` state, no drain, the `writePaused` transient refusal, and a rebuild closing the paused view's sources.", - "restsOn": "[design/specs/application/write-pause.sdp.md:38] pins the one document and its two readers, `assertWritable` at pipeline step 7 and `gateAllows` for every background batch; [design/specs/application/write-pause.sdp.md:43] and [design/specs/application/write-pause.sdp.md:71] rest the consistent cut on optimistic concurrency, which [design/specs/facts/f01-serializable-mutations-under-occ.sdp.md:11] carries as documented; [design/specs/application/write-pause.sdp.md:42] closes the sources because a use case that writes a source stream without maintaining the view would otherwise pass the gate; [design/specs/application/write-pause.sdp.md:40] and [src/command/outcome-boundary.ts:31] make `writePaused` a transient code the boundary already reserves; [design/specs/application/write-pause.sdp.md:50] writes every close, resume and abort as audit that fails closed. **Judgment.** In the practice of running a deployment, one state in one document is what a person at night can read and reason about: `getGate` [design/specs/application/write-pause.sdp.md:70] shows every closed scope with its reason and who changed it, and nothing reopens by itself [design/specs/application/write-pause.sdp.md:23].", - "against": "Every command pays one point read on one hot document and a close re-runs every concurrent command once [design/specs/application/write-pause.sdp.md:29]; `gateAllows` reads `process.env.MAINTENANCE_MODE` on every command [design/specs/application/write-pause.sdp.md:61], so a variable set by mistake refuses every write with no row to find it in. The gate is not built: no file under `src`, `harness`, `fixture`, `example` or `tests` contains `assertWritable` or `gateAllows`, so the cut and the one-read cost are intent at no tier.", - "settles": "The S4 build at the `convex-test` tier for the refusal and the fence, and a native backend run of two writers racing a close, which [design/specs/application/write-pause.sdp.md:71] describes and nobody has run.", - "changes": "For the lean: nothing in `spec:application.write-pause`; `spec:command.command-pipeline` step 7 and `spec:application.rebuild` as they stand, built in S4. For the alternative, closing the tenant or `all` for every paused rebuild [design/specs/application/write-pause.sdp.md:34]: [design/specs/application/write-pause.sdp.md:41], [design/specs/application/write-pause.sdp.md:42] and `scopesOfUseCase` [design/specs/application/write-pause.sdp.md:64], and every writer of an unrelated stream in the tenant is held for the length of the rebuild.", + "restsOn": "[design/specs/application/write-pause.sdp.md:38] pins the one document and its two readers, `assertWritable` at pipeline step 7 and `gateAllows` for every background batch; [design/specs/application/write-pause.sdp.md:43] and [spec:application.write-pause#design.occSerialization] rest the consistent cut on optimistic concurrency, which [design/specs/facts/f01-serializable-mutations-under-occ.sdp.md:11] carries as documented; [design/specs/application/write-pause.sdp.md:42] closes the sources because a use case that writes a source stream without maintaining the view would otherwise pass the gate; [design/specs/application/write-pause.sdp.md:40] and [src/command/outcome-boundary.ts:31] make `writePaused` a transient code the boundary already reserves; [design/specs/application/write-pause.sdp.md:50] writes every close, resume and abort as audit that fails closed. **Judgment.** In the practice of running a deployment, one state in one document is what a person at night can read and reason about: `getGate` [spec:application.write-pause#design.fnGetGate] shows every closed scope with its reason and who changed it, and nothing reopens by itself [design/specs/application/write-pause.sdp.md:23].", + "against": "Every command pays one point read on one hot document and a close re-runs every concurrent command once [design/specs/application/write-pause.sdp.md:29]; `gateAllows` reads `process.env.MAINTENANCE_MODE` on every command [spec:application.write-pause#design.fnGateAllows], so a variable set by mistake refuses every write with no row to find it in. The gate is not built: no file under `src`, `harness`, `fixture`, `example` or `tests` contains `assertWritable` or `gateAllows`, so the cut and the one-read cost are intent at no tier.", + "settles": "The S4 build at the `convex-test` tier for the refusal and the fence, and a native backend run of two writers racing a close, which [spec:application.write-pause#design.occSerialization] describes and nobody has run.", + "changes": "For the lean: nothing in `spec:application.write-pause`; `spec:command.command-pipeline` step 7 and `spec:application.rebuild` as they stand, built in S4. For the alternative, closing the tenant or `all` for every paused rebuild [design/specs/application/write-pause.sdp.md:34]: [design/specs/application/write-pause.sdp.md:41], [design/specs/application/write-pause.sdp.md:42] and `scopesOfUseCase` [spec:application.write-pause#design.fnScopesOfUseCase], and every writer of an unrelated stream in the tenant is held for the length of the rebuild.", "ifWrong": "If a writer slips the cut, the read-model check compares each row's source versions with the current versions and finds it [design/specs/application/restore.sdp.md:79], so the cost is a rebuild rerun and not lost events, and an edit to `scopesOfUseCase` takes the scope back; if the hot document costs more than one read's worth under contention, the S3 measurement repeated after S4 shows it." }, "checkedBy": "gpt-6.1-sol, medium, 2026-10-02: every checked claim held", @@ -6073,10 +6073,10 @@ "status": "sorted", "foldedInto": [], "class": "delegated", - "reason": "Rule 3, a bound and its number: the doc says events stay small and names no number, both numbers are extensions [design/specs/command/command-pipeline.sdp.md:131] and [design/specs/command/outcome-boundary.sdp.md:98], a refused caller is a rejection that stores nothing, and an edit to two Spec lines and two constants takes either back.", + "reason": "Rule 3, a bound and its number: the doc says events stay small and names no number, both numbers are extensions [spec:command.command-pipeline#design.limitCallText] and [design/specs/command/outcome-boundary.sdp.md:98], a refused caller is a rejection that stores nothing, and an edit to two Spec lines and two constants takes either back.", "lean": { "do": "Keep `limitActorIdLength` at 512 bytes and the rejection `details` bound at 16,384 bytes.", - "restsOn": "[design/specs/command/command-pipeline.sdp.md:131] lists `actor.id` and `actor.onBehalfOf.id` at 512 among the caller-set text fields step 1 checks, with a field one byte over answered as rejection `invalidInput` with `{ field, length, limit }`, and says `limitEnvelopeBytes` is derived from these bounds; [design/specs/command/outcome-boundary.sdp.md:98] bounds a rejection's `details` to 16,384 bytes measured with `getConvexSize`, checked by `reject` and by `normalizeThrown`. [src/context/text.ts:3] exports 512 and [src/command/outcome-boundary.ts:100] holds 16384. The pure and `convex-test` tiers pass as a whole at 5bb227e, 438 tests, run by me; the test that binds these two lines I did not open. **Judgment.** The two numbers are inputs of a derived set, the envelope bound and the fold bound rest on them, and what a wrong number costs is a refused caller or a refused rejection, each a rejection that stores nothing (`CONTEXT.md:55`), so no stored event or receipt carries the mistake.", + "restsOn": "[spec:command.command-pipeline#design.limitCallText] lists `actor.id` and `actor.onBehalfOf.id` at 512 among the caller-set text fields step 1 checks, with a field one byte over answered as rejection `invalidInput` with `{ field, length, limit }`, and says `limitEnvelopeBytes` is derived from these bounds; [design/specs/command/outcome-boundary.sdp.md:98] bounds a rejection's `details` to 16,384 bytes measured with `getConvexSize`, checked by `reject` and by `normalizeThrown`. [src/context/text.ts:3] exports 512 and [src/command/outcome-boundary.ts:100] holds 16384. The pure and `convex-test` tiers pass as a whole at 5bb227e, 438 tests, run by me; the test that binds these two lines I did not open. **Judgment.** The two numbers are inputs of a derived set, the envelope bound and the fold bound rest on them, and what a wrong number costs is a refused caller or a refused rejection, each a rejection that stores nothing (`CONTEXT.md:55`), so no stored event or receipt carries the mistake.", "against": "**Judgment.** 512 for `actor.id` has to hold whatever `tokenIdentifier` an issuer mints, and no cited source gives the longest one the pinned Convex auth produces; that is a lead for the convex advisor. 16,384 for `details` equals the event payload bound at [src/context/journal.ts:68], so a rejection's details may be as large as an event, and the rule that error data carries no payload rests on the one-sentence message rule of the same line, not on the number.", "settles": "For the lead: the longest `tokenIdentifier` a Convex auth provider produces, from the docs page with the day it was read, which the convex advisor's lane cites. Otherwise nothing: either number changes by an edit, and a native run with a caller at the bound is the only tier that shows the refusal on the production composition.", "changes": "For the lean: nothing. For the alternative, other numbers: `design/specs/command/command-pipeline.sdp.md` (`limitCallText`), `design/specs/context/event-envelope.sdp.md` (`limitEnvelopeBytes`, which [design/specs/context/event-envelope.sdp.md:33] says the journal's fold bound moves with), `design/specs/command/outcome-boundary.sdp.md` (`limitErrorData`), `src/context/text.ts` and `src/command/outcome-boundary.ts`.", @@ -6119,7 +6119,7 @@ "reason": "Owner tests 5 and 6: who may run a rebuild or a restore across every tenant trades safety against ease with no evidence on which weighs more, and any grant for it needs a scope beyond the tenant, which rules on the term grant, a permission in a tenant [CONTEXT.md:128]; doubt stated, because admin access alone is a mechanism and D11's trust boundary already admits it.", "lean": { "do": "Keep admin access as the authority for a deployment-wide operation, with the operator actor stated as the argument and written on the generation row, the run record and the gate's audit, and read no grant for it until a scope beyond the tenant exists.", - "restsOn": "[design/specs/application/rebuild.sdp.md:94] makes every rebuild function internal and reached through operator functions that authorize an operator actor; [design/specs/application/rebuild.sdp.md:73] runs the rebuild across every tenant under one operator actor; [design/specs/command/actor-and-scope.sdp.md:43] and [design/specs/command/actor-and-scope.sdp.md:71] make every grant name one tenant and [docs/convex-transactional-domain-platform-decisions.md:251] make an absent tenant never a wildcard, so no grant the table can hold covers a pass over every tenant; what is recorded is the stated actor, `startedBy` on the row [design/specs/application/generation-registry.sdp.md:63], `operator` on the restore run [design/specs/application/restore.sdp.md:94] and `changedBy` on every gate change [design/specs/application/write-pause.sdp.md:50]; [design/specs/decisions/d11-tenant-scope-and-authority.sdp.md:32] rules the trust boundary as one trusted deployment with no claim against a malicious administrator. **Judgment.** In the practice of answering for who ran a restore, a stated actor is recorded and not checked: a person with admin access can state any actor, and the record then says what they chose to say.", + "restsOn": "[design/specs/application/rebuild.sdp.md:94] makes every rebuild function internal and reached through operator functions that authorize an operator actor; [design/specs/application/rebuild.sdp.md:73] runs the rebuild across every tenant under one operator actor; [design/specs/command/actor-and-scope.sdp.md:43] and [design/specs/command/actor-and-scope.sdp.md:71] make every grant name one tenant and [docs/convex-transactional-domain-platform-decisions.md:251] make an absent tenant never a wildcard, so no grant the table can hold covers a pass over every tenant; what is recorded is the stated actor, `startedBy` on the row [spec:application.generation-registry#design.tableGenerations], `operator` on the restore run [design/specs/application/restore.sdp.md:94] and `changedBy` on every gate change [design/specs/application/write-pause.sdp.md:50]; [design/specs/decisions/d11-tenant-scope-and-authority.sdp.md:32] rules the trust boundary as one trusted deployment with no claim against a malicious administrator. **Judgment.** In the practice of answering for who ran a restore, a stated actor is recorded and not checked: a person with admin access can state any actor, and the record then says what they chose to say.", "against": "[design/specs/application/rebuild.sdp.md:94] promises operator functions that authorize an operator actor, and with no grant to read that sentence is a promise nothing can keep as written; the alternatives are a grant in every tenant, which a pass of a hundred tenants reads a hundred times, or a deployment scope that is not a tenant, which only the owner can name.", "settles": "The owner's word on whether a deployment-wide operator holds a grant, in which scope, or admin access alone; until then the S4 build takes the stated actor and records it." }, @@ -6189,7 +6189,7 @@ "reason": "Owner test 5, and the doc makes acceptability itself a trigger: [docs/convex-transactional-domain-platform-decisions.md:354] activates online rebuild of cross-stream views when the write pause is unacceptable for them, so naming the acceptable length settles a trigger of the doc, which only the owner does; a policy by the operator lens's own rule.", "lean": { "do": "Keep the Spec silent on a bound, and give the owner the length as a sum: the backfill plus the verify pass of the view's sources, batch count times batch time, with the levels each would mean.", - "restsOn": "[design/specs/application/write-pause.sdp.md:23] reopens nothing by itself and [design/specs/application/write-pause.sdp.md:46] resumes a scope only after the rebuild it served is verified and switched or aborted, so the pause lasts the whole rebuild; [design/specs/application/rebuild.sdp.md:121] bounds a history batch at 128 events at the default row budget and [design/specs/application/rebuild.sdp.md:124] a backfill batch at 100 entities, so the batch count follows from the view's size; [docs/convex-transactional-domain-platform-decisions.md:229] says the pause costs more than the online path and is the exception. **Judgment.** Minutes admit only small views; an hour is a maintenance window the operator announces; a pause longer than the business tolerates is the trigger at [docs/convex-transactional-domain-platform-decisions.md:354] firing, and no batch time is known at any tier until S4 measures one.", + "restsOn": "[design/specs/application/write-pause.sdp.md:23] reopens nothing by itself and [design/specs/application/write-pause.sdp.md:46] resumes a scope only after the rebuild it served is verified and switched or aborted, so the pause lasts the whole rebuild; [spec:application.history-rebuild#design.limitHistoryBatch] bounds a history batch at 128 events at the default row budget and [spec:application.rebuild#design.limitBatchSize] a backfill batch at 100 entities, so the batch count follows from the view's size; [docs/convex-transactional-domain-platform-decisions.md:229] says the pause costs more than the online path and is the exception. **Judgment.** Minutes admit only small views; an hour is a maintenance window the operator announces; a pause longer than the business tolerates is the trigger at [docs/convex-transactional-domain-platform-decisions.md:354] firing, and no batch time is known at any tier until S4 measures one.", "settles": "S4's measurement of a history-view rebuild under a pause on the native tier, for the batch time, then the owner's word on the acceptable length." }, "checkedBy": null, @@ -6376,9 +6376,9 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.rebuild", + "spec": "spec:application.history-rebuild", "question": "Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9)", - "file": "design/specs/application/rebuild.sdp.md" + "file": "design/specs/application/history-rebuild.sdp.md" } ], "families": [ @@ -6411,9 +6411,9 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.rebuild", - "question": "The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's \"Verify coverage, then switch\" and Sc L2-6's \"writes reopen only after verification\" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6)", - "file": "design/specs/application/rebuild.sdp.md" + "spec": "spec:application.history-rebuild", + "question": "The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's \"Verify coverage, then switch\" and Sc L2-6's \"writes reopen only after verification\" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6)", + "file": "design/specs/application/history-rebuild.sdp.md" } ], "families": [ @@ -6443,9 +6443,9 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.rebuild", + "spec": "spec:application.history-rebuild", "question": "Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40)", - "file": "design/specs/application/rebuild.sdp.md" + "file": "design/specs/application/history-rebuild.sdp.md" } ], "families": [ diff --git a/design/tools/check.py b/design/tools/check.py index a8b2077..0a31441 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -23,6 +23,8 @@ import subprocess import sys +sys.dont_write_bytecode = True + from decisions import question_source_errors DESIGN = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) @@ -212,7 +214,6 @@ def run(args): if registered - cited_extensions: fail(f"extensions registered in README but cited by no Spec: E-{sorted(registered - cited_extensions, key=int)}") n_questions = sum(len(v) for v in questions.values()) - for link in re.findall(r"\]\(([^)#]+)\)", readme): if not link.startswith("http") and not os.path.exists(os.path.join(DESIGN, link)): fail(f"README link does not resolve: {link}") From 0d7bb5671cf3e74d33300a620878455e5e0165ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:04:13 +0200 Subject: [PATCH 22/60] build: the Pack page of pack:history-view, generated and checked check.py runs the generator's --check for each page under design/pages/. An index entry names the pair of the table it is chained on. Co-Authored-By: Claude Opus 5.5 --- design/pages/history-view.md | 2617 ++++++++++++++++++++++++++++++++++ design/tools/check.py | 16 + scripts/pack-page.mjs | 102 +- tests/pure/pack-page.test.ts | 59 +- 4 files changed, 2779 insertions(+), 15 deletions(-) create mode 100644 design/pages/history-view.md diff --git a/design/pages/history-view.md b/design/pages/history-view.md new file mode 100644 index 0000000..fd2aa7e --- /dev/null +++ b/design/pages/history-view.md @@ -0,0 +1,2617 @@ +# History view + + + +The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. + +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). + +## How to read it + +Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them. + +- The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready. +- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. +- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. +- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it. +- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. + +## Members + +16 Specs, in the order the Pack reads them. + +| # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | +|---|---|---|---|---|---|---|---|---|---| +| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 5 bound, 3 without a pair | 3, none blocking | +| [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | +| [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | +| [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | +| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 2 examples with a verifier | 3 without a pair | 3, none blocking | +| [6](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume) | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | +| [7](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort) | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | +| [8](#8-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 2, none blocking | +| [9](#9-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | +| [10](#10-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 1 anchor | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | +| [11](#11-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | +| [12](#12-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | +| [13](#13-the-event-envelope) | [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 7 bound, 3 without a pair | 2, none blocking | +| [14](#14-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | +| [15](#15-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | +| [16](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) | [`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) | decision | defined | ready | ready, which its floor holds | none | none | no pinned declaration | 1, none blocking | + +## What holds a member below its next rung + +No member is held below its next rung. + +The floor holds at the next rung for [History projection](#1-history-projection), [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause), [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause), [Rebuild a cross-stream history view under a write pause; interrupt, then resume](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume), [Rebuild a cross-stream history view under a write pause; interrupt, then abort](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort), [Write pause](#8-write-pause), [Generation registry](#9-generation-registry), [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain), [Command declaration and bindings](#11-command-declaration-and-bindings), [The command pipeline](#12-the-command-pipeline), [The event envelope](#13-the-event-envelope), [The journal](#14-the-journal), [The context queries](#15-the-context-queries) and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Each waits for its author to state that rung. + +## Outside the Pack + +### What the members rest on + +The members rest on 56 Specs outside the Pack through refines, dependsOn, constrainedBy or decidedBy. A Spec states ready only when every such target states at least defined, so a target below defined holds each member that rests on it below ready. + +No target outside the Pack holds a member below its next rung. + +
All 56 Specs outside the Pack that the members rest on + +| Spec | Stated | Floor | Rested on by | +|---|---|---|---| +| [`spec:application.first-experiment`](../specs/application/first-experiment.sdp.md) | defined | ready | `spec:application.orders-inventory-example` refines | +| [`spec:command.actor-and-scope`](../specs/command/actor-and-scope.sdp.md) | defined | ready | `spec:application.rebuild` dependsOn, `spec:application.write-pause` dependsOn, `spec:application.generation-registry` dependsOn, `spec:command.command-pipeline` dependsOn, `spec:context.event-envelope` dependsOn, `spec:context.queries` dependsOn | +| [`spec:command.idempotency-and-receipts`](../specs/command/idempotency-and-receipts.sdp.md) | defined | ready | `spec:command.command-pipeline` dependsOn | +| [`spec:command.outcome-boundary`](../specs/command/outcome-boundary.sdp.md) | defined | ready | `spec:command.command-declaration` dependsOn, `spec:command.command-pipeline` dependsOn, `spec:context.queries` dependsOn | +| [`spec:command.receipt-table`](../specs/command/receipt-table.sdp.md) | defined | ready | `spec:command.command-pipeline` dependsOn | +| [`spec:command.tenancy-and-authority`](../specs/command/tenancy-and-authority.sdp.md) | defined | ready | `spec:command.command-pipeline` dependsOn | +| [`spec:constraints.bulk-operations-bounded`](../specs/constraints/bulk-operations-bounded.sdp.md) | defined | ready | `spec:application.rebuild` constrainedBy | +| [`spec:constraints.events-stay-small`](../specs/constraints/events-stay-small.sdp.md) | defined | ready | `spec:context.event-envelope` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:constraints.no-queue-recovery-for-essential-reads`](../specs/constraints/no-queue-recovery-for-essential-reads.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy | +| [`spec:constraints.zero-core-projection-jobs`](../specs/constraints/zero-core-projection-jobs.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy | +| [`spec:context.batch-shaped-api`](../specs/context/batch-shaped-api.sdp.md) | defined | ready | `spec:application.orders-inventory-example` dependsOn | +| [`spec:context.context-component`](../specs/context/context-component.sdp.md) | defined | ready | `spec:command.command-pipeline` dependsOn, `spec:context.journal` refines, `spec:context.queries` refines | +| [`spec:context.persistence-adapter`](../specs/context/persistence-adapter.sdp.md) | defined | ready | `spec:command.command-declaration` dependsOn, `spec:command.command-pipeline` dependsOn | +| [`spec:context.tables`](../specs/context/tables.sdp.md) | defined | ready | `spec:context.journal` dependsOn | +| [`spec:decisions.d01-one-mutation-per-operation`](../specs/decisions/d01-one-mutation-per-operation.sdp.md) | defined | ready | `spec:application.read-models` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d02-context-owns-state-and-journal`](../specs/decisions/d02-context-owns-state-and-journal.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:context.event-envelope` decidedBy, `spec:context.journal` decidedBy | +| [`spec:decisions.d03-events-only-source-of-next-state`](../specs/decisions/d03-events-only-source-of-next-state.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy | +| [`spec:decisions.d04-four-outcomes`](../specs/decisions/d04-four-outcomes.sdp.md) | defined | ready | `spec:application.history-rebuild` decidedBy, `spec:application.write-pause` decidedBy, `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d05-rebuildable-history-with-baselines`](../specs/decisions/d05-rebuildable-history-with-baselines.sdp.md) | defined | ready | `spec:context.journal` decidedBy | +| [`spec:decisions.d06-idempotency-client-and-receipts`](../specs/decisions/d06-idempotency-client-and-receipts.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d07-rejections-thrown-not-stored`](../specs/decisions/d07-rejections-thrown-not-stored.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d08-read-models-in-command`](../specs/decisions/d08-read-models-in-command.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:application.projection-contract` decidedBy, `spec:application.read-models` decidedBy, `spec:application.rebuild` decidedBy, `spec:command.command-pipeline` decidedBy, `spec:context.queries` decidedBy, `spec:decisions.d09-rebuild-online-by-default` dependsOn | +| [`spec:decisions.d10-contexts-meet-in-parent-use-cases`](../specs/decisions/d10-contexts-meet-in-parent-use-cases.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d11-tenant-scope-and-authority`](../specs/decisions/d11-tenant-scope-and-authority.sdp.md) | defined | ready | `spec:application.read-models` decidedBy, `spec:application.rebuild` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d12-one-declaration-per-command`](../specs/decisions/d12-one-declaration-per-command.sdp.md) | defined | ready | `spec:command.command-declaration` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d18-everything-else-waits-for-trigger`](../specs/decisions/d18-everything-else-waits-for-trigger.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy | +| [`spec:decisions.d19-operations-travel-with-capability`](../specs/decisions/d19-operations-travel-with-capability.sdp.md) | defined | ready | `spec:application.rebuild` decidedBy | +| [`spec:facts.f01-serializable-mutations-under-occ`](../specs/facts/f01-serializable-mutations-under-occ.sdp.md) | defined | ready | `spec:application.history-projection` constrainedBy, `spec:application.projection-contract` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:application.history-rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.event-envelope` constrainedBy, `spec:context.journal` constrainedBy, `spec:decisions.d09-rebuild-online-by-default` constrainedBy | +| [`spec:facts.f02-component-calls-commit-with-caller`](../specs/facts/f02-component-calls-commit-with-caller.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:facts.f03-nested-run-mutation-partial-rollback`](../specs/facts/f03-nested-run-mutation-partial-rollback.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy | +| [`spec:facts.f04-nested-calls-cost-more-than-helpers`](../specs/facts/f04-nested-calls-cost-more-than-helpers.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy | +| [`spec:facts.f07-queries-reactive-not-durable-delivery`](../specs/facts/f07-queries-reactive-not-durable-delivery.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy | +| [`spec:facts.f08-scheduling-commits-with-mutation`](../specs/facts/f08-scheduling-commits-with-mutation.sdp.md) | defined | ready | `spec:application.rebuild` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:facts.f09-scheduled-mutation-and-action-retry-semantics`](../specs/facts/f09-scheduled-mutation-and-action-retry-semantics.sdp.md) | defined | ready | `spec:application.rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:facts.f11-components-have-no-ctx-auth`](../specs/facts/f11-components-have-no-ctx-auth.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.queries` constrainedBy | +| [`spec:facts.f12-backups-exclude-pending-scheduled-functions`](../specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md) | defined | ready | `spec:application.rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:application.generation-registry` constrainedBy | +| [`spec:facts.f13-transactions-have-limits`](../specs/facts/f13-transactions-have-limits.sdp.md) | defined | ready | `spec:application.history-projection` constrainedBy, `spec:application.projection-contract` constrainedBy, `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:application.history-rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:command.command-declaration` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.event-envelope` constrainedBy, `spec:context.journal` constrainedBy, `spec:context.queries` constrainedBy | +| [`spec:facts.f14-convex-error-survives-nested-and-component-boundary`](../specs/facts/f14-convex-error-survives-nested-and-component-boundary.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy | +| [`spec:facts.f15-parent-query-over-component-query-stays-reactive`](../specs/facts/f15-parent-query-over-component-query-stays-reactive.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:context.queries` constrainedBy | +| [`spec:facts.f17-migrations-fits-generation-backfill`](../specs/facts/f17-migrations-fits-generation-backfill.sdp.md) | defined | ready | `spec:application.rebuild` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:decisions.d09-rebuild-online-by-default` constrainedBy | +| [`spec:facts.f18-commit-timestamps`](../specs/facts/f18-commit-timestamps.sdp.md) | defined | ready | `spec:context.journal` constrainedBy | +| [`spec:facts.f19-nested-calls-share-time-budgets`](../specs/facts/f19-nested-calls-share-time-budgets.sdp.md) | defined | ready | `spec:application.history-rebuild` constrainedBy | +| [`spec:facts.f20-pagination-checks-bytes-after-reading`](../specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md) | defined | ready | `spec:context.queries` constrainedBy | +| [`spec:kernel.outcome-model`](../specs/kernel/outcome-model.sdp.md) | defined | ready | `spec:command.command-declaration` dependsOn, `spec:command.command-pipeline` dependsOn | +| [`spec:kernel.state-document-mapping`](../specs/kernel/state-document-mapping.sdp.md) | defined | ready | `spec:context.journal` decidedBy | +| [`spec:laws.law01-sanctioned-writes-only`](../specs/laws/law01-sanctioned-writes-only.sdp.md) | defined | ready | `spec:application.orders-inventory-example` constrainedBy, `spec:command.command-pipeline` constrainedBy | +| [`spec:laws.law02-state-and-events-commit-together`](../specs/laws/law02-state-and-events-commit-together.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:laws.law03-events-only-source-of-state`](../specs/laws/law03-events-only-source-of-state.sdp.md) | defined | ready | `spec:context.journal` constrainedBy | +| [`spec:laws.law04-server-scoped-idempotency-key`](../specs/laws/law04-server-scoped-idempotency-key.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy | +| [`spec:laws.law05-authorization-before-execution-and-disclosure`](../specs/laws/law05-authorization-before-execution-and-disclosure.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.queries` constrainedBy | +| [`spec:laws.law06-technical-failure-never-a-rejection`](../specs/laws/law06-technical-failure-never-a-rejection.sdp.md) | defined | ready | `spec:application.history-projection` constrainedBy, `spec:application.projection-contract` constrainedBy, `spec:application.read-models` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:command.command-declaration` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.event-envelope` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:laws.law09-no-invariant-on-late-read-model`](../specs/laws/law09-no-invariant-on-late-read-model.sdp.md) | defined | ready | `spec:application.read-models` constrainedBy, `spec:application.orders-inventory-example` constrainedBy, `spec:command.command-pipeline` constrainedBy | +| [`spec:laws.law10-replay-never-runs-commands-or-effects`](../specs/laws/law10-replay-never-runs-commands-or-effects.sdp.md) | defined | ready | `spec:application.history-projection` constrainedBy, `spec:application.projection-contract` constrainedBy, `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:context.journal` constrainedBy | +| [`spec:laws.law11-tenant-scope-named`](../specs/laws/law11-tenant-scope-named.sdp.md) | defined | ready | `spec:application.projection-contract` constrainedBy, `spec:application.read-models` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:application.history-rebuild` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.journal` constrainedBy, `spec:context.queries` constrainedBy | +| [`spec:operations.baseline-operations`](../specs/operations/baseline-operations.sdp.md) | defined | ready | `spec:application.write-pause` dependsOn, `spec:command.command-declaration` dependsOn, `spec:command.command-pipeline` dependsOn | +| [`spec:platform.transactional-domain-platform`](../specs/platform/transactional-domain-platform.sdp.md) | defined | ready | `spec:application.read-models` refines, `spec:command.command-declaration` refines, `spec:command.command-pipeline` refines, `spec:decisions.d09-rebuild-online-by-default` refines | + +
+ +### What rests on the members + +18 Specs outside the Pack rest on a member. An example that verifies a member is listed with that member instead. + +3 of them state less than defined: + +- [`spec:advanced.cross-stream-online-rebuild`](../specs/advanced/cross-stream-online-rebuild.sdp.md) states scoped and rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). +- [`spec:agents.agent-runs`](../specs/agents/agent-runs.sdp.md) states scoped and rests on [The command pipeline](#12-the-command-pipeline). +- [`spec:application.aggregate-projection`](../specs/application/aggregate-projection.sdp.md) states scoped and rests on [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Generation registry](#9-generation-registry), [Command declaration and bindings](#11-command-declaration-and-bindings), [The command pipeline](#12-the-command-pipeline) and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). + +
The 18 Specs that rest on a member + +| Spec | Stated | Floor | Rests on | +|---|---|---|---| +| [`spec:advanced.cross-stream-online-rebuild`](../specs/advanced/cross-stream-online-rebuild.sdp.md) | scoped | scoped | dependsOn `spec:application.rebuild` | +| [`spec:agents.agent-runs`](../specs/agents/agent-runs.sdp.md) | scoped | scoped | dependsOn `spec:command.command-pipeline` | +| [`spec:application.aggregate-projection`](../specs/application/aggregate-projection.sdp.md) | scoped | scoped | dependsOn `spec:application.projection-contract`, refines `spec:application.read-models`, dependsOn `spec:application.generation-registry`, dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, decidedBy `spec:decisions.d09-rebuild-online-by-default` | +| [`spec:application.first-experiment`](../specs/application/first-experiment.sdp.md) | defined | ready | dependsOn `spec:application.history-projection`, dependsOn `spec:application.read-models`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.history-rebuild`, dependsOn `spec:application.generation-registry`, dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | +| [`spec:application.parent-use-cases`](../specs/application/parent-use-cases.sdp.md) | defined | ready | dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline` | +| [`spec:application.restore`](../specs/application/restore.sdp.md) | defined | ready | dependsOn `spec:application.projection-contract`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.write-pause`, dependsOn `spec:application.generation-registry`, dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | +| [`spec:command.idempotency-and-receipts`](../specs/command/idempotency-and-receipts.sdp.md) | defined | ready | refines `spec:command.command-pipeline`, dependsOn `spec:context.queries` | +| [`spec:command.outcome-boundary`](../specs/command/outcome-boundary.sdp.md) | defined | ready | refines `spec:command.command-pipeline` | +| [`spec:command.receipt-table`](../specs/command/receipt-table.sdp.md) | defined | ready | dependsOn `spec:context.queries` | +| [`spec:command.tenancy-and-authority`](../specs/command/tenancy-and-authority.sdp.md) | defined | ready | dependsOn `spec:application.write-pause` | +| [`spec:context.context-component`](../specs/context/context-component.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope` | +| [`spec:context.persistence-adapter`](../specs/context/persistence-adapter.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal` | +| [`spec:context.tables`](../specs/context/tables.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope` | +| [`spec:decisions.d18-everything-else-waits-for-trigger`](../specs/decisions/d18-everything-else-waits-for-trigger.sdp.md) | defined | ready | dependsOn `spec:decisions.d09-rebuild-online-by-default` | +| [`spec:obligations.fan-out-and-chains`](../specs/obligations/fan-out-and-chains.sdp.md) | defined | ready | dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, dependsOn `spec:context.event-envelope` | +| [`spec:obligations.local-reaction-wrapper`](../specs/obligations/local-reaction-wrapper.sdp.md) | defined | ready | dependsOn `spec:application.write-pause` | +| [`spec:obligations.obligation-module`](../specs/obligations/obligation-module.sdp.md) | defined | ready | dependsOn `spec:command.command-pipeline` | +| [`spec:operations.baseline-operations`](../specs/operations/baseline-operations.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope` | + +
+ +## Open questions + +48 open questions on 14 members, none blocking. 41 join a register row by their opening text; 7 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. + +**[History projection](#1-history-projection)**, `spec:application.history-projection` + +- No register row. [question 1](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … +- No register row. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … +- **OD-160** class none, status unsorted, advisor convex, blocks S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … + +**[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` + +- **OD-075** class delegated, status decided, advisor domain, blocks S4. [question 1](../specs/application/projection-contract.sdp.md?plain=1#L33), [non-blocking]: Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker … +- **OD-014** class delegated, status decided, advisor domain, blocks S4. [question 2](../specs/application/projection-contract.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model … +- **OD-020** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/application/projection-contract.sdp.md?plain=1#L35), [non-blocking]: The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading … +- No register row. [question 4](../specs/application/projection-contract.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole … +- **OD-159** class none, status unsorted, advisor convex, blocks S5. [question 5](../specs/application/projection-contract.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by … + +**[Read models](#3-read-models)**, `spec:application.read-models` + +- **OD-076** class delegated, status sorted, advisor convex, blocks nothing. [question 1](../specs/application/read-models.sdp.md?plain=1#L49), [non-blocking]: Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw … +- **OD-077** class delegated, status sorted, advisor convex, blocks nothing. [question 2](../specs/application/read-models.sdp.md?plain=1#L50), [non-blocking]: Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's … +- **OD-017** class owner, status decided, advisor domain, blocks nothing. [question 3](../specs/application/read-models.sdp.md?plain=1#L51), [non-blocking]: Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field … +- **OD-078** class owner, status waiting, advisor domain, blocks nothing. [question 4](../specs/application/read-models.sdp.md?plain=1#L52), [non-blocking]: Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) +- **OD-079** class delegated, status waiting, advisor domain, blocks nothing. [question 5](../specs/application/read-models.sdp.md?plain=1#L53), [non-blocking]: Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 … +- No register row. [question 6](../specs/application/read-models.sdp.md?plain=1#L54), [non-blocking]: Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of … + +**[Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause)**, `spec:application.rebuild` + +- **OD-057** class delegated, status decided, advisor convex, blocks S4. [question 1](../specs/application/rebuild.sdp.md?plain=1#L59), [non-blocking]: `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the … +- **OD-080** class delegated, status decided, advisor domain, blocks S4. [question 2](../specs/application/rebuild.sdp.md?plain=1#L60), [non-blocking]: Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. +- **OD-068** class owner, status decided, advisor domain, blocks S4. [question 3](../specs/application/rebuild.sdp.md?plain=1#L61), [non-blocking]: Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned … +- No register row. [question 4](../specs/application/rebuild.sdp.md?plain=1#L62), [non-blocking]: Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in … +- No register row. [question 5](../specs/application/rebuild.sdp.md?plain=1#L63), [non-blocking]: Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no … + +**[Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause)**, `spec:application.history-rebuild` + +- **OD-156** class none, status unsorted, advisor convex, blocks S5. [question 1](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … +- **OD-157** class owner, status sorted, advisor convex, blocks S5. [question 2](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … +- **OD-158** class none, status unsorted, advisor convex, blocks S5. [question 3](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … + +**[Write pause](#8-write-pause)**, `spec:application.write-pause` + +- **OD-084** class delegated, status sorted, advisor operator, blocks S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … +- **OD-161** class none, status unsorted, advisor convex, blocks S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … + +**[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` + +- **OD-068** class owner, status decided, advisor domain, blocks S4. [question 1](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … +- **OD-069** class owner, status decided, advisor domain, blocks S4. [question 2](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … +- **OD-070** class delegated, status sorted, advisor operator, blocks nothing. [question 3](../specs/application/generation-registry.sdp.md?plain=1#L39), [non-blocking]: Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the … +- **OD-010** class delegated, status decided, advisor domain, blocks S4. [question 4](../specs/application/generation-registry.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, … +- **OD-071** class delegated, status decided, advisor domain, blocks S4. [question 5](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … +- No register row. [question 6](../specs/application/generation-registry.sdp.md?plain=1#L42), [non-blocking]: Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that … + +**[Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain)**, `spec:application.orders-inventory-example` + +- **OD-019** class delegated, status sorted, advisor convex, blocks nothing. [question 1](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … + +**[Command declaration and bindings](#11-command-declaration-and-bindings)**, `spec:command.command-declaration` + +- **OD-087** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … +- **OD-015** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … +- **OD-088** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … + +**[The command pipeline](#12-the-command-pipeline)**, `spec:command.command-pipeline` + +- **OD-089** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … +- **OD-090** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … +- **OD-091** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/command/command-pipeline.sdp.md?plain=1#L70), [non-blocking]: Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command … +- **OD-028** class owner, status sorted, advisor domain, blocks nothing. [question 4](../specs/command/command-pipeline.sdp.md?plain=1#L71), [non-blocking]: Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of … +- **OD-092** class delegated, status sorted, advisor convex, blocks nothing. [question 5](../specs/command/command-pipeline.sdp.md?plain=1#L72), [non-blocking]: Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a … +- **OD-093** class delegated, status sorted, advisor domain, blocks nothing. [question 6](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … +- **OD-094** class delegated, status sorted, advisor domain, blocks nothing. [question 7](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … + +**[The event envelope](#13-the-event-envelope)**, `spec:context.event-envelope` + +- **OD-104** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … +- **OD-105** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … + +**[The journal](#14-the-journal)**, `spec:context.journal` + +- **OD-106** class delegated, status sorted, advisor domain, blocks S5. [question 1](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … + +**[The context queries](#15-the-context-queries)**, `spec:context.queries` + +- **OD-108** class none, status folded, advisor convex, blocks nothing. [question 1](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … +- **OD-109** class delegated, status sorted, advisor convex, blocks nothing. [question 2](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … +- **OD-110** class owner, status decided, advisor convex, blocks nothing. [question 3](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … + +**[Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views)**, `spec:decisions.d09-rebuild-online-by-default` + +- **OD-057** class delegated, status decided, advisor convex, blocks S4. [question 1](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) + +## Each member + +### 1. History projection + +[`spec:application.history-projection`](../specs/application/history-projection.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projection contract](#2-projection-contract) by dependsOn, [The event envelope](#13-the-event-envelope) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** No implementation anchor binds it. + +**Examples and verifiers.** None is bound to it. + +**Pinned declarations.** 8 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L51) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L52) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L53) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L54) | bound | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L55) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L56) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L57) | bound | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L58) | bound | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | + +
The 8 declarations as the Spec pins them + +[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L51) + +```ts +interface HistoryProjection { + name: string; + version: number; + table: string; + rowBudgetBytes?: number; + keyOf(tenantId: string, event: EventEnvelope): string | null; + project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row; +} +``` + +[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L52) + +```ts +applyHistoryProjection( + ctx: MutationCtx, + projection: HistoryProjection, + input: { + tenantId: string; + events: EventEnvelope[]; + mode: ApplyMode; + generations: readonly WritableGeneration[]; + }, +): Promise<{ key: string; results: ApplyResult[] }[]> +``` + +[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L53) + +```ts +orderAllocationHistory: defineTable({ + ...rowConventions, + orderId: v.string(), + placedAt: v.optional(v.number()), + cancelledAt: v.optional(v.number()), + allocations: v.array( + v.object({ + stockItemId: v.string(), + quantity: v.number(), + allocatedAt: v.number(), + releasedAt: v.optional(v.number()), + }), + ), +}).index("by_key", ["tenantId", "generation", "key"]) +``` + +[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L54) + +```ts +type HistoryEvent = { + streamId: string; + eventType: string; + recordedAt: number; + occurredAt?: number; + payload: unknown; +} +``` + +[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L55) + +```ts +type OrderAllocation = { + stockItemId: string; + quantity: number; + allocatedAt: number; + releasedAt?: number; +} +``` + +[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L56) + +```ts +type OrderAllocationHistoryFields = { + orderId: string; + placedAt?: number; + cancelledAt?: number; + allocations: OrderAllocation[]; +} +``` + +[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L57) + +```ts +orderAllocationHistoryKeyOf( + tenantId: string, + event: HistoryEvent, +): string | null +``` + +[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L58) + +```ts +projectOrderAllocationHistory( + tenantId: string, + prior: OrderAllocationHistoryFields | null, + events: readonly HistoryEvent[], +): OrderAllocationHistoryFields +``` + +
+ +**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L59), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L60). + +### 2. Projection contract + +[`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Read models](#3-read-models) by refines and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** + +- `impl:application.projection-contract` at [`tests/pure/read-model.test.ts` line 19](../../tests/pure/read-model.test.ts#L19): ReadModel, Projection, rowConventions and applyProjection. It stands for [`src/read-model/projection.ts`](../../src/read-model/projection.ts). + +**Examples and verifiers.** None is bound to it. + +**Pinned declarations.** 11 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.projection-contract#design.typeProjection`](../specs/application/projection-contract.sdp.md?plain=1#L62) | bound | the type | `Projection` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.typeReadModel`](../specs/application/projection-contract.sdp.md?plain=1#L63) | bound | the type | `ReadModel` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.fnProjectionOf`](../specs/application/projection-contract.sdp.md?plain=1#L64) | bound | the type | `projectionOf` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.typeWritableGeneration`](../specs/application/projection-contract.sdp.md?plain=1#L65) | bound | the type | `WritableGeneration` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.typeRowWriter`](../specs/application/projection-contract.sdp.md?plain=1#L66) | bound | the type | `RowWriter` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.typeApplyMode`](../specs/application/projection-contract.sdp.md?plain=1#L67) | bound | the type | `ApplyMode` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.typeApplyResult`](../specs/application/projection-contract.sdp.md?plain=1#L68) | bound | the type | `ApplyResult` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.fnApplyProjection`](../specs/application/projection-contract.sdp.md?plain=1#L69) | bound | the type | `applyProjection` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.validatorRowConventions`](../specs/application/projection-contract.sdp.md?plain=1#L71) | bound | the type | `rowConventions` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.projection-contract#design.validatorOrderSummaryFields`](../specs/application/projection-contract.sdp.md?plain=1#L72) | bound | the type | `orderSummaryFields` in [`example/convex/orderSummary.ts`](../../example/convex/orderSummary.ts) | | +| [`spec:application.projection-contract#design.tableOrderSummaries`](../specs/application/projection-contract.sdp.md?plain=1#L73) | bound | the table's document and indexes | `default` in [`example/convex/schema.ts`](../../example/convex/schema.ts) | | + +
The 11 declarations as the Spec pins them + +[`spec:application.projection-contract#design.typeProjection`](../specs/application/projection-contract.sdp.md?plain=1#L62) + +```ts +type Projection> = { + version: number; + keyOf(tenantId: string, dto: D): string; + project(tenantId: string, dto: D, versions: StreamVersion[]): Row | null; +} +``` + +[`spec:application.projection-contract#design.typeReadModel`](../specs/application/projection-contract.sdp.md?plain=1#L63) + +```ts +type ReadModel> = { + name: string; + table: string; + rowBudgetBytes: number; + projections: readonly [Projection, ...Projection[]]; +} +``` + +[`spec:application.projection-contract#design.fnProjectionOf`](../specs/application/projection-contract.sdp.md?plain=1#L64) + +```ts +projectionOf>( + readModel: ReadModel, + version: number, +): Projection +``` + +[`spec:application.projection-contract#design.typeWritableGeneration`](../specs/application/projection-contract.sdp.md?plain=1#L65) + +```ts +type WritableGeneration = { + role: "active" | "building" | "verifying"; + generation: number; + projectionVersion: number; +} +``` + +[`spec:application.projection-contract#design.typeRowWriter`](../specs/application/projection-contract.sdp.md?plain=1#L66) + +```ts +type RowWriter = { + db: GenericDatabaseWriter; +} +``` + +[`spec:application.projection-contract#design.typeApplyMode`](../specs/application/projection-contract.sdp.md?plain=1#L67) + +```ts +type ApplyMode = "live-created" | "live-updated" | "backfill" +``` + +[`spec:application.projection-contract#design.typeApplyResult`](../specs/application/projection-contract.sdp.md?plain=1#L68) + +```ts +type ApplyResult = + | "inserted" + | "updated" + | "deleted" + | "skipped-missing" + | "skipped-newer" + | "unchanged" +``` + +[`spec:application.projection-contract#design.fnApplyProjection`](../specs/application/projection-contract.sdp.md?plain=1#L69) + +```ts +applyProjection< + DataModel extends GenericDataModel, + D, + Row extends Record, +>( + ctx: RowWriter, + readModel: ReadModel, + input: { + tenantId: string; + dto: D; + versions: StreamVersion[]; + mode: ApplyMode; + generations: readonly WritableGeneration[]; + }, +): Promise +``` + +[`spec:application.projection-contract#design.validatorRowConventions`](../specs/application/projection-contract.sdp.md?plain=1#L71) + +```ts +const rowConventions = { + tenantId: v.string(), + generation: v.number(), + key: v.string(), + projectionVersion: v.number(), + sourceVersions: v.array(streamVersionValidator), +} +``` + +[`spec:application.projection-contract#design.validatorOrderSummaryFields`](../specs/application/projection-contract.sdp.md?plain=1#L72) + +```ts +const orderSummaryFields = { + orderId: v.string(), + status: v.union(v.literal("placed"), v.literal("cancelled")), + lineCount: v.number(), + total: v.number(), + placedAt: v.number(), +} +``` + +[`spec:application.projection-contract#design.tableOrderSummaries`](../specs/application/projection-contract.sdp.md?plain=1#L73) + +```ts +orderSummaries: defineTable({ ...rowConventions, ...orderSummaryFields }) + .index("by_key", ["tenantId", "generation", "key"]) + .index("by_status", ["tenantId", "generation", "status", "placedAt", "key"]) +``` + +
+ +**Other Design entries.** 10 entries pin no declaration: [`callers`](../specs/application/projection-contract.sdp.md?plain=1#L70), [`indexByKeyUse`](../specs/application/projection-contract.sdp.md?plain=1#L74), [`indexByStatusUse`](../specs/application/projection-contract.sdp.md?plain=1#L75), [`step1`](../specs/application/projection-contract.sdp.md?plain=1#L76), [`step2`](../specs/application/projection-contract.sdp.md?plain=1#L77), [`step3`](../specs/application/projection-contract.sdp.md?plain=1#L78), [`step4`](../specs/application/projection-contract.sdp.md?plain=1#L79), [`limitRowSize`](../specs/application/projection-contract.sdp.md?plain=1#L80), [`limitGenerationsPerWrite`](../specs/application/projection-contract.sdp.md?plain=1#L81), [`determinismCheck`](../specs/application/projection-contract.sdp.md?plain=1#L82). + +### 3. Read models + +[`spec:application.read-models`](../specs/application/read-models.sdp.md) · behavior · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [The context queries](#15-the-context-queries) by dependsOn. + +**Code.** + +- `impl:application.read-models` at [`tests/pure/read-model.test.ts` line 29](../../tests/pure/read-model.test.ts#L29): writeReadModels, readModelView and limitReadModelList. It stands for [`src/read-model/write.ts`](../../src/read-model/write.ts) and [`src/read-model/queries.ts`](../../src/read-model/queries.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.read-models.committed-state-read-through-query`](../specs/application/read-models.committed-state-read-through-query.sdp.md) | native backend | bound | A successful command, then a query | +| [`spec:application.read-models.committed-state-visible`](../specs/application/read-models.committed-state-visible.sdp.md) | native backend | bound | A successful command, then a query or subscription | +| [`spec:application.read-models.list-pages-by-cursor`](../specs/application/read-models.list-pages-by-cursor.sdp.md) | native backend | bound | A client reads a tenant's order list in pages by cursor | +| [`spec:application.read-models.query-refused-before-disclosure`](../specs/application/read-models.query-refused-before-disclosure.sdp.md) | native backend | bound | A caller with no identity reads an order through the parent | +| [`spec:application.read-models.query-refused-without-grant`](../specs/application/read-models.query-refused-without-grant.sdp.md) | native backend | bound | A caller with no grant in the tenant reads an order through the parent | + +**Pinned declarations.** 11 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.read-models#design.fnEntityDetail`](../specs/application/read-models.sdp.md?plain=1#L98) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.fnListOrSummary`](../specs/application/read-models.sdp.md?plain=1#L99) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.fnPageInGeneration`](../specs/application/read-models.sdp.md?plain=1#L100) | bound | the type | `pageInGeneration` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.read-models#design.fnReadModelView`](../specs/application/read-models.sdp.md?plain=1#L102) | bound | the type | `readModelView` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.read-models#design.validatorReadModelView`](../specs/application/read-models.sdp.md?plain=1#L103) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.fnCrossContextView`](../specs/application/read-models.sdp.md?plain=1#L105) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.typeVersionedResult`](../specs/application/read-models.sdp.md?plain=1#L106) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.indexReadModelByKey`](../specs/application/read-models.sdp.md?plain=1#L108) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.limitReadModelList`](../specs/application/read-models.sdp.md?plain=1#L111) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.limitComponentReadsPerQuery`](../specs/application/read-models.sdp.md?plain=1#L112) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.read-models#design.limitReadModelWritesPerCommand`](../specs/application/read-models.sdp.md?plain=1#L113) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 11 declarations as the Spec pins them + +[`spec:application.read-models#design.fnEntityDetail`](../specs/application/read-models.sdp.md?plain=1#L98) + +```ts +getOrder +``` + +[`spec:application.read-models#design.fnListOrSummary`](../specs/application/read-models.sdp.md?plain=1#L99) + +```ts +export const listOrderSummaries = query({ + args: { + tenantId: v.string(), + status: v.union(v.literal("placed"), v.literal("cancelled")), + paginationOpts: paginationOptsValidator, + }, + returns: paginationResultValidator(orderSummaryView), + handler: async (ctx, { tenantId, status, paginationOpts }) => { + await authorizeQuery(ctx, { + name: "listOrderSummaries", + tenantId, + permission: "orders.read", + }); + const generation = await activeGeneration(ctx, "orderSummary"); + if (generation === undefined) + throw new Error("The read model orderSummary has no active generation"); + const result = await paginator(ctx.db, schema) + .query("orderSummaries") + .withIndex("by_status", (q) => + q + .eq("tenantId", tenantId) + .eq("generation", generation) + .eq("status", status), + ) + .paginate( + boundedPage( + pageInGeneration(paginationOpts, [tenantId, generation, status], 5), + limitReadModelList(orderSummary), + ), + ); + return { ...result, page: result.page.map(readModelView) }; + }, +}) +``` + +[`spec:application.read-models#design.fnPageInGeneration`](../specs/application/read-models.sdp.md?plain=1#L100) + +```ts +pageInGeneration( + opts: PaginationOptions, + prefix: readonly Value[], + indexFields: number, +): PaginationOptions +``` + +[`spec:application.read-models#design.fnReadModelView`](../specs/application/read-models.sdp.md?plain=1#L102) + +```ts +readModelView< + Row extends { _id: unknown; _creationTime: number; generation: number }, +>(row: Row): Omit +``` + +[`spec:application.read-models#design.validatorReadModelView`](../specs/application/read-models.sdp.md?plain=1#L103) + +```ts +orderSummaryView = v.object({ + tenantId: v.string(), + key: v.string(), + projectionVersion: v.number(), + sourceVersions: v.array(streamVersionValidator), + ...orderSummaryFields, +}) +``` + +[`spec:application.read-models#design.fnCrossContextView`](../specs/application/read-models.sdp.md?plain=1#L105) + +```ts +export const getOrderWithStock = query({ + args: { tenantId: v.string(), orderId: v.string() }, + returns: v.union( + v.object({ + data: orderWithStockDto, + sourceVersions: v.array(streamVersionValidator), + }), + v.null(), + ), + handler, +}) +``` + +[`spec:application.read-models#design.typeVersionedResult`](../specs/application/read-models.sdp.md?plain=1#L106), as the Spec writes it, which Prettier does not parse + +```ts +[extension] type VersionedResult = { data: T; sourceVersions: StreamVersion[] } +``` + +[`spec:application.read-models#design.indexReadModelByKey`](../specs/application/read-models.sdp.md?plain=1#L108) + +```ts +.index("by_key", ["tenantId", "generation", "key"]) +``` + +[`spec:application.read-models#design.limitReadModelList`](../specs/application/read-models.sdp.md?plain=1#L111) + +```ts +limitReadModelList(readModel) = { + items: limitListPage(readModel.rowBudgetBytes), + bytes: limitListBytes, +} +``` + +[`spec:application.read-models#design.limitComponentReadsPerQuery`](../specs/application/read-models.sdp.md?plain=1#L112) + +```ts +[extension] +``` + +[`spec:application.read-models#design.limitReadModelWritesPerCommand`](../specs/application/read-models.sdp.md?plain=1#L113) + +```ts +[extension] +``` + +
+ +**Other Design entries.** 9 entries pin no declaration: [`transactionBoundary`](../specs/application/read-models.sdp.md?plain=1#L96), [`convexSurface`](../specs/application/read-models.sdp.md?plain=1#L97), [`indexReadModelList`](../specs/application/read-models.sdp.md?plain=1#L101), [`noActiveGeneration`](../specs/application/read-models.sdp.md?plain=1#L104), [`readModelRowShape`](../specs/application/read-models.sdp.md?plain=1#L107), [`indexReadModelByKeyUse`](../specs/application/read-models.sdp.md?plain=1#L109), [`pagination`](../specs/application/read-models.sdp.md?plain=1#L110), [`readModelVisibility`](../specs/application/read-models.sdp.md?plain=1#L114), [`noProjectionJob`](../specs/application/read-models.sdp.md?plain=1#L115). + +### 4. Rebuild: generations, backfill and the write pause + +[`spec:application.rebuild`](../specs/application/rebuild.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#8-write-pause) by dependsOn, [Generation registry](#9-generation-registry) by dependsOn, [The context queries](#15-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** + +- `impl:application.rebuild` at [`tests/pure/rebuild.test.ts` line 28](../../tests/pure/rebuild.test.ts#L28): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. It stands for [`src/read-model/rebuild.ts`](../../src/read-model/rebuild.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.rebuild.online-rebuild-interrupt-resume`](../specs/application/rebuild.online-rebuild-interrupt-resume.sdp.md) | native backend | bound | Rebuild a per-entity read model online while commands run; interrupt and resume | + +**Pinned declarations.** 27 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.rebuild#design.convexSurface`](../specs/application/rebuild.sdp.md?plain=1#L107) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.typeRebuildTarget`](../specs/application/rebuild.sdp.md?plain=1#L108) | bound | the type | `RebuildTarget` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.rebuild#design.typeRebuildConfig`](../specs/application/rebuild.sdp.md?plain=1#L109) | ahead | the type | `RebuildConfig` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | the history view's build adds history targets | +| [`spec:application.rebuild#design.fnStartGeneration`](../specs/application/rebuild.sdp.md?plain=1#L110) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnBatchSizeFor`](../specs/application/rebuild.sdp.md?plain=1#L111) | ahead | the type | `batchSizeFor` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | the history view's build takes a history projection | +| [`spec:application.rebuild#design.fnBackfillBatch`](../specs/application/rebuild.sdp.md?plain=1#L112) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnVerifyBatch`](../specs/application/rebuild.sdp.md?plain=1#L113) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnPurgeBatch`](../specs/application/rebuild.sdp.md?plain=1#L114) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnEnumerateCall`](../specs/application/rebuild.sdp.md?plain=1#L115) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.step1`](../specs/application/rebuild.sdp.md?plain=1#L116) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.verifySteps`](../specs/application/rebuild.sdp.md?plain=1#L122) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.purgeSteps`](../specs/application/rebuild.sdp.md?plain=1#L123) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnInterruptGeneration`](../specs/application/rebuild.sdp.md?plain=1#L125) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnResumeChain`](../specs/application/rebuild.sdp.md?plain=1#L126) | ahead | the type, its ctx parameter erased | `resumeChain` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | through typeRebuildConfig, its ctx erased | +| [`spec:application.rebuild#design.fnResumeGeneration`](../specs/application/rebuild.sdp.md?plain=1#L127) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnSwitchGeneration`](../specs/application/rebuild.sdp.md?plain=1#L128) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnRollbackGeneration`](../specs/application/rebuild.sdp.md?plain=1#L129) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnAbortGeneration`](../specs/application/rebuild.sdp.md?plain=1#L130) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnPurgeGeneration`](../specs/application/rebuild.sdp.md?plain=1#L131) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnGetGenerations`](../specs/application/rebuild.sdp.md?plain=1#L132) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.tableTenantFill`](../specs/application/rebuild.sdp.md?plain=1#L133) | bound | the table's document and indexes | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.rebuild#design.fnFillTenants`](../specs/application/rebuild.sdp.md?plain=1#L134) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fnFillTenantsBatch`](../specs/application/rebuild.sdp.md?plain=1#L135) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.fillSteps`](../specs/application/rebuild.sdp.md?plain=1#L136) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.limitBatchSize`](../specs/application/rebuild.sdp.md?plain=1#L141) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.limitPurgeBatch`](../specs/application/rebuild.sdp.md?plain=1#L142) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.rebuild#design.limitRollbackPeriod`](../specs/application/rebuild.sdp.md?plain=1#L145) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 27 declarations as the Spec pins them + +[`spec:application.rebuild#design.convexSurface`](../specs/application/rebuild.sdp.md?plain=1#L107) + +```ts +startGeneration +``` + +[`spec:application.rebuild#design.typeRebuildTarget`](../specs/application/rebuild.sdp.md?plain=1#L108) + +```ts +type RebuildTarget = { + readModel: ReadModel; + source: SourceRef; + list: FunctionReference<"query", "internal", ListArgs, PaginationResult>; +} +``` + +[`spec:application.rebuild#design.typeRebuildConfig`](../specs/application/rebuild.sdp.md?plain=1#L109) + +```ts +type RebuildConfig = { + targets: readonly (RebuildTarget | HistoryRebuildTarget)[]; + refs: { + backfillBatch: BatchRef; + verifyBatch: BatchRef; + purgeBatch: BatchRef; + fillTenantsBatch: FillBatchRef; + }; +} +``` + +[`spec:application.rebuild#design.fnStartGeneration`](../specs/application/rebuild.sdp.md?plain=1#L110) + +```ts +export const startGeneration = internalMutation({ + args: { + readModel: v.string(), + projectionVersion: v.optional(v.number()), + batchSize: v.optional(v.number()), + operator: v.string(), + }, + returns: v.id("generations"), + handler, +}) +``` + +[`spec:application.rebuild#design.fnBatchSizeFor`](../specs/application/rebuild.sdp.md?plain=1#L111) + +```ts +batchSizeFor( + readModel: ReadModel | HistoryProjection, + requested?: number, +): number +``` + +[`spec:application.rebuild#design.fnBackfillBatch`](../specs/application/rebuild.sdp.md?plain=1#L112) + +```ts +export const backfillBatch = internalMutation({ + args: { generationId: v.id("generations"), fence: v.number() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnVerifyBatch`](../specs/application/rebuild.sdp.md?plain=1#L113) + +```ts +export const verifyBatch = internalMutation({ + args: { generationId: v.id("generations"), fence: v.number() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnPurgeBatch`](../specs/application/rebuild.sdp.md?plain=1#L114) + +```ts +export const purgeBatch = internalMutation({ + args: { generationId: v.id("generations"), fence: v.number() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnEnumerateCall`](../specs/application/rebuild.sdp.md?plain=1#L115) + +```ts +ctx.runQuery(target.list, { + tenantId, + includeDeleted: true, + paginationOpts: { numItems: batchSize, cursor: pageCursor }, +}) +``` + +[`spec:application.rebuild#design.step1`](../specs/application/rebuild.sdp.md?plain=1#L116) + +```ts +backfillBatch +``` + +[`spec:application.rebuild#design.verifySteps`](../specs/application/rebuild.sdp.md?plain=1#L122) + +```ts +verifyBatch +``` + +[`spec:application.rebuild#design.purgeSteps`](../specs/application/rebuild.sdp.md?plain=1#L123) + +```ts +purgeBatch +``` + +[`spec:application.rebuild#design.fnInterruptGeneration`](../specs/application/rebuild.sdp.md?plain=1#L125) + +```ts +export const interruptGeneration = internalMutation({ + args: { generationId: v.id("generations"), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnResumeChain`](../specs/application/rebuild.sdp.md?plain=1#L126) + +```ts +resumeChain( + ctx: MutationCtx, + config: RebuildConfig, + generationId: Id<"generations">, + operator: string, +): Promise +``` + +[`spec:application.rebuild#design.fnResumeGeneration`](../specs/application/rebuild.sdp.md?plain=1#L127) + +```ts +export const resumeGeneration = internalMutation({ + args: { generationId: v.id("generations"), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnSwitchGeneration`](../specs/application/rebuild.sdp.md?plain=1#L128) + +```ts +export const switchGeneration = internalMutation({ + args: { + generationId: v.id("generations"), + rollbackPeriodMs: v.optional(v.number()), + operator: v.string(), + }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnRollbackGeneration`](../specs/application/rebuild.sdp.md?plain=1#L129) + +```ts +export const rollbackGeneration = internalMutation({ + args: { generationId: v.id("generations"), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnAbortGeneration`](../specs/application/rebuild.sdp.md?plain=1#L130) + +```ts +export const abortGeneration = internalMutation({ + args: { + generationId: v.id("generations"), + reason: v.string(), + operator: v.string(), + }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnPurgeGeneration`](../specs/application/rebuild.sdp.md?plain=1#L131) + +```ts +export const purgeGeneration = internalMutation({ + args: { generationId: v.id("generations"), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnGetGenerations`](../specs/application/rebuild.sdp.md?plain=1#L132) + +```ts +export const getGenerations = internalQuery({ + args: { readModel: v.string() }, + returns: v.array( + v.object({ generation: generationDoc, progress: progressDoc }), + ), + handler, +}) +``` + +[`spec:application.rebuild#design.tableTenantFill`](../specs/application/rebuild.sdp.md?plain=1#L133) + +```ts +tenantFill: defineTable({ + pass: v.union(v.literal("fill"), v.literal("idle")), + fence: v.number(), + cursor: v.union(v.string(), v.null()), + batchesDone: v.number(), + tenantsRead: v.number(), + tenantsInserted: v.number(), + lastError: v.optional(v.string()), + startedAt: v.number(), + startedBy: v.string(), + changedAt: v.number(), + changedBy: v.string(), + updatedAt: v.number(), +}) +``` + +[`spec:application.rebuild#design.fnFillTenants`](../specs/application/rebuild.sdp.md?plain=1#L134) + +```ts +export const fillTenants = internalMutation({ + args: { operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fnFillTenantsBatch`](../specs/application/rebuild.sdp.md?plain=1#L135) + +```ts +export const fillTenantsBatch = internalMutation({ + args: { fence: v.number() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.rebuild#design.fillSteps`](../specs/application/rebuild.sdp.md?plain=1#L136) + +```ts +fillTenantsBatch +``` + +[`spec:application.rebuild#design.limitBatchSize`](../specs/application/rebuild.sdp.md?plain=1#L141) + +```ts +rebuildBatchCeiling(readModel) = min( + 100, + floor(4194304 / (2 * rowBudgetBytes)), +) +``` + +[`spec:application.rebuild#design.limitPurgeBatch`](../specs/application/rebuild.sdp.md?plain=1#L142) + +```ts +limitPurgeBatch( + readModel: ReadModel | HistoryProjection, +): number +``` + +[`spec:application.rebuild#design.limitRollbackPeriod`](../specs/application/rebuild.sdp.md?plain=1#L145) + +```ts +[extension] +``` + +
+ +**Other Design entries.** 15 entries pin no declaration: [`transactionBoundary`](../specs/application/rebuild.sdp.md?plain=1#L106), [`step2`](../specs/application/rebuild.sdp.md?plain=1#L117), [`step3`](../specs/application/rebuild.sdp.md?plain=1#L118), [`step4`](../specs/application/rebuild.sdp.md?plain=1#L119), [`step5`](../specs/application/rebuild.sdp.md?plain=1#L120), [`step6`](../specs/application/rebuild.sdp.md?plain=1#L121), [`purgeDriver`](../specs/application/rebuild.sdp.md?plain=1#L124), [`limitTenantFillBatch`](../specs/application/rebuild.sdp.md?plain=1#L137), [`errorUnknownGeneration`](../specs/application/rebuild.sdp.md?plain=1#L138), [`stallSignal`](../specs/application/rebuild.sdp.md?plain=1#L139), [`occRace`](../specs/application/rebuild.sdp.md?plain=1#L140), [`limitOutstandingBatches`](../specs/application/rebuild.sdp.md?plain=1#L143), [`limitBuildingGenerations`](../specs/application/rebuild.sdp.md?plain=1#L144), [`limitGenerationsListed`](../specs/application/rebuild.sdp.md?plain=1#L146), [`rebuildClass`](../specs/application/rebuild.sdp.md?plain=1#L147). + +### 5. Rebuild of a history view under a write pause + +[`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by dependsOn, [Write pause](#8-write-pause) by dependsOn, [Generation registry](#9-generation-registry) by dependsOn, [The event envelope](#13-the-event-envelope) by dependsOn, [The context queries](#15-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** No implementation anchor binds it. + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | native backend | none bound | Rebuild a cross-stream history view under a write pause; interrupt, then abort | +| [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | native backend | none bound | Rebuild a cross-stream history view under a write pause; interrupt, then resume | + +**Pinned declarations.** 3 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L58) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L59) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L60) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 3 declarations as the Spec pins them + +[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L58) + +```ts +type HistorySource = { + source: SourceRef; + list: FunctionReference< + "query", + "internal", + ListArgs, + PaginationResult<{ version: StreamVersion }> + >; + history: FunctionReference< + "query", + "internal", + { + tenantId: string; + streamId: string; + fromVersion?: number; + paginationOpts: PaginationOptions; + }, + PaginationResult + >; +} +``` + +[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L59) + +```ts +type HistoryRebuildTarget = { + readModel: HistoryProjection; + sources: readonly [HistorySource, ...HistorySource[]]; +} +``` + +[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L60) + +```ts +ctx.runQuery(source.history, { + tenantId, + streamId, + paginationOpts: { numItems: batchSize, cursor: eventCursor }, +}) +``` + +
+ +**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L61), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L62), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L63), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L64), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L65). + +### 6. Rebuild a cross-stream history view under a write pause; interrupt, then resume + +[`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) · example · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause) by refines. + +**Tier and verifier.** Its opening line is `Sc L2-6 · native backend tier · the resume case.`, which names the native backend tier. No verifier is bound to it. + +### 7. Rebuild a cross-stream history view under a write pause; interrupt, then abort + +[`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) · example · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause) by refines. + +**Tier and verifier.** Its opening line is `Sc L2-6 · native backend tier · the abort case, the doc's second enumerated case of the row.`, which names the native backend tier. No verifier is bound to it. + +### 8. Write pause + +[`spec:application.write-pause`](../specs/application/write-pause.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** + +- `impl:application.write-pause` at [`tests/pure/write-pause.test.ts` line 20](../../tests/pure/write-pause.test.ts#L20): the gate document, gateAllows, assertWritable, the scope writers and the four gate entries. It stands for [`src/gate/gate.ts`](../../src/gate/gate.ts), [`src/gate/entries.ts`](../../src/gate/entries.ts) and [`src/gate/tables.ts`](../../src/gate/tables.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.write-pause.restore-door-without-deploy`](../specs/application/write-pause.restore-door-without-deploy.sdp.md) | native backend | bound | The restore door closes and opens with no deploy | + +**Pinned declarations.** 14 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L67) | bound | the type | `closedEntryValidator` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L68) | bound | the table's document and indexes | `gateTables` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L70) | bound | the type | `ScopeKey` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L71) | bound | the type | `gateAllows` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L72) | bound | the type | `assertWritable` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L73) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L74) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L75) | bound | the type | `scopesOfUseCase` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L76) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L77) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L79) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L80) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L81) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 14 declarations as the Spec pins them + +[`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L67) + +```ts +const closedEntryValidator = v.object({ + scopeKey: v.string(), + reason: v.string(), + generationId: v.optional(v.id("generations")), + changedAt: v.number(), + changedBy: v.string(), +}) +``` + +[`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L68) + +```ts +maintenanceGates: defineTable({ + key: v.literal("gates"), + closed: v.array(closedEntryValidator), + updatedAt: v.number(), +}).index("by_key", ["key"]) +``` + +[`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L70) + +```ts +type ScopeKey = "all" | (string & {}) +``` + +[`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L71) + +```ts +gateAllows( + ctx: { db: GenericDatabaseReader }, + scopes: readonly ScopeKey[], + allowGeneration?: Id<"generations">, +): Promise< + { allowed: true } | { allowed: false; scopeKey: ScopeKey; reason: string } +> +``` + +[`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L72) + +```ts +assertWritable( + ctx: { db: GenericDatabaseReader }, + scopes: readonly ScopeKey[], +): Promise +``` + +[`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L73) + +```ts +writePaused +``` + +[`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L74) + +```ts +gateAllows +``` + +[`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L75) + +```ts +scopesOfUseCase( + tenantId: string, + writes: readonly SourceRef[], +): ScopeKey[] +``` + +[`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L76) + +```ts +closeScope( + ctx: MutationCtx, + scopeKey: ScopeKey, + reason: string, + operator: string, + generationId?: Id<"generations">, +): Promise +``` + +[`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L77) + +```ts +resumeScope( + ctx: MutationCtx, + scopeKey: ScopeKey, + operator: string, +): Promise +``` + +[`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L78) + +```ts +export const closeGate = internalMutation({ + args: { scopeKey: v.string(), reason: v.string(), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L79) + +```ts +export const resumeGate = internalMutation({ + args: { scopeKey: v.string(), operator: v.string() }, + returns: v.null(), + handler, +}) +``` + +[`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L80) + +```ts +export const getGate = internalQuery({ + args: {}, + returns: v.object({ + restore: v.boolean(), + closed: v.array(closedEntryValidator), + }), + handler, +}) +``` + +[`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L81) + +```ts +export const getGateAudit = internalQuery({ + args: { scopeKey: v.string(), paginationOpts: paginationOptsValidator }, + returns: paginationResultValidator(operatorAuditDoc), + handler, +}) +``` + +
+ +**Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L69), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L82), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L83), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L84), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L85), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L86). + +### 9. Generation registry + +[`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines, [Projection contract](#2-projection-contract) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. + +**Code.** + +- `impl:application.generation-registry` at [`tests/pure/read-model.test.ts` line 24](../../tests/pure/read-model.test.ts#L24): the generations table, generationsToWrite and activeGeneration. It stands for [`src/read-model/generations.ts`](../../src/read-model/generations.ts) and [`src/read-model/tables.ts`](../../src/read-model/tables.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.generation-registry.command-without-generation-fails`](../specs/application/generation-registry.command-without-generation-fails.sdp.md) | native backend | bound | A command whose read model has no generation fails | +| [`spec:application.generation-registry.first-rebuild-installs-read-model`](../specs/application/generation-registry.first-rebuild-installs-read-model.sdp.md) | native backend | bound | A read model is installed through its first rebuild | + +**Pinned declarations.** 13 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.generation-registry#design.validatorGenerationState`](../specs/application/generation-registry.sdp.md?plain=1#L68) | bound | the type | `generationStateValidator` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.tableGenerations`](../specs/application/generation-registry.sdp.md?plain=1#L69) | bound | the table's document and indexes | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.generationPauseRequired`](../specs/application/generation-registry.sdp.md?plain=1#L70) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.generation-registry#design.indexGenerationsByReadModel`](../specs/application/generation-registry.sdp.md?plain=1#L71) | bound | the indexes, through its table [`tableGenerations`](../specs/application/generation-registry.sdp.md?plain=1#L69) | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.indexGenerationsByReadModelState`](../specs/application/generation-registry.sdp.md?plain=1#L73) | bound | the indexes, through its table [`tableGenerations`](../specs/application/generation-registry.sdp.md?plain=1#L69) | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.indexGenerationsByReadModelStateUse`](../specs/application/generation-registry.sdp.md?plain=1#L74) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.generation-registry#design.validatorBatchCursor`](../specs/application/generation-registry.sdp.md?plain=1#L75) | ahead | the type | `batchCursorValidator` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | the history view's build adds sourceIndex | +| [`spec:application.generation-registry#design.validatorProgressPass`](../specs/application/generation-registry.sdp.md?plain=1#L76) | bound | the type | `progressPassValidator` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.tableGenerationProgress`](../specs/application/generation-registry.sdp.md?plain=1#L77) | ahead | the table's document and indexes | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | its cursor, through validatorBatchCursor | +| [`spec:application.generation-registry#design.indexProgressByGeneration`](../specs/application/generation-registry.sdp.md?plain=1#L78) | ahead | the indexes, through its table [`tableGenerationProgress`](../specs/application/generation-registry.sdp.md?plain=1#L77) | `readModelTables` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | its cursor, through validatorBatchCursor | +| [`spec:application.generation-registry#design.typeRegistryReader`](../specs/application/generation-registry.sdp.md?plain=1#L80) | bound | the type | `RegistryReader` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.fnGenerationsToWrite`](../specs/application/generation-registry.sdp.md?plain=1#L82) | bound | the type | `generationsToWrite` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:application.generation-registry#design.fnActiveGeneration`](../specs/application/generation-registry.sdp.md?plain=1#L83) | bound | the type | `activeGeneration` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | + +
The 13 declarations as the Spec pins them + +[`spec:application.generation-registry#design.validatorGenerationState`](../specs/application/generation-registry.sdp.md?plain=1#L68) + +```ts +const generationStateValidator = v.union( + v.literal("building"), + v.literal("verifying"), + v.literal("verified"), + v.literal("active"), + v.literal("retired"), + v.literal("aborted"), + v.literal("purged"), +) +``` + +[`spec:application.generation-registry#design.tableGenerations`](../specs/application/generation-registry.sdp.md?plain=1#L69) + +```ts +generations: defineTable({ + readModel: v.string(), + generation: v.number(), + projectionVersion: v.number(), + state: generationStateValidator, + pauseRequired: v.boolean(), + fence: v.number(), + startedAt: v.number(), + startedBy: v.string(), + changedAt: v.number(), + changedBy: v.string(), + switchedAt: v.optional(v.number()), + retiredAt: v.optional(v.number()), + retireAfter: v.optional(v.number()), + interruptedFence: v.optional(v.number()), +}) +``` + +[`spec:application.generation-registry#design.generationPauseRequired`](../specs/application/generation-registry.sdp.md?plain=1#L70) + +```ts +pauseRequired +``` + +[`spec:application.generation-registry#design.indexGenerationsByReadModel`](../specs/application/generation-registry.sdp.md?plain=1#L71) + +```ts +.index("by_read_model", ["readModel", "generation"]) +``` + +[`spec:application.generation-registry#design.indexGenerationsByReadModelState`](../specs/application/generation-registry.sdp.md?plain=1#L73) + +```ts +.index("by_read_model_state", ["readModel", "state"]) +``` + +[`spec:application.generation-registry#design.indexGenerationsByReadModelStateUse`](../specs/application/generation-registry.sdp.md?plain=1#L74) + +```ts +generationsToWrite +``` + +[`spec:application.generation-registry#design.validatorBatchCursor`](../specs/application/generation-registry.sdp.md?plain=1#L75) + +```ts +const batchCursorValidator = v.object({ + tenantId: v.string(), + pageCursor: v.union(v.string(), v.null()), + sourceIndex: v.optional(v.number()), + streamId: v.optional(v.string()), + eventCursor: v.optional(v.union(v.string(), v.null())), +}) +``` + +[`spec:application.generation-registry#design.validatorProgressPass`](../specs/application/generation-registry.sdp.md?plain=1#L76) + +```ts +const progressPassValidator = v.union( + v.literal("backfill"), + v.literal("verify"), + v.literal("purge"), + v.literal("idle"), +) +``` + +[`spec:application.generation-registry#design.tableGenerationProgress`](../specs/application/generation-registry.sdp.md?plain=1#L77) + +```ts +generationProgress: defineTable({ + generationId: v.id("generations"), + pass: progressPassValidator, + batchSize: v.number(), + cursor: v.union(batchCursorValidator, v.null()), + batchesDone: v.number(), + rowsWritten: v.number(), + rowsSkipped: v.number(), + misses: v.number(), + rowsPurged: v.number(), + lastError: v.optional(v.string()), + updatedAt: v.number(), +}) +``` + +[`spec:application.generation-registry#design.indexProgressByGeneration`](../specs/application/generation-registry.sdp.md?plain=1#L78) + +```ts +.index("by_generation", ["generationId"]) +``` + +[`spec:application.generation-registry#design.typeRegistryReader`](../specs/application/generation-registry.sdp.md?plain=1#L80) + +```ts +type RegistryReader = + { db: GenericDatabaseReader } +``` + +[`spec:application.generation-registry#design.fnGenerationsToWrite`](../specs/application/generation-registry.sdp.md?plain=1#L82) + +```ts +generationsToWrite( + ctx: RegistryReader, + readModel: string, +): Promise +``` + +[`spec:application.generation-registry#design.fnActiveGeneration`](../specs/application/generation-registry.sdp.md?plain=1#L83) + +```ts +activeGeneration( + ctx: RegistryReader, + readModel: string, +): Promise +``` + +
+ +**Other Design entries.** 7 entries pin no declaration: [`indexGenerationsByReadModelUse`](../specs/application/generation-registry.sdp.md?plain=1#L72), [`indexProgressByGenerationUse`](../specs/application/generation-registry.sdp.md?plain=1#L79), [`writableGenerationRole`](../specs/application/generation-registry.sdp.md?plain=1#L81), [`errorNoGenerationToWrite`](../specs/application/generation-registry.sdp.md?plain=1#L84), [`transitionCost`](../specs/application/generation-registry.sdp.md?plain=1#L85), [`limitRegistryReadsPerCommand`](../specs/application/generation-registry.sdp.md?plain=1#L86), [`limitRollbackPeriod`](../specs/application/generation-registry.sdp.md?plain=1#L87). + +### 10. Orders and Inventory, the example domain + +[`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) · model · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn. + +**Code.** + +- `impl:application.orders-inventory-example` at [`tests/pure/example-domain.test.ts` line 35](../../tests/pure/example-domain.test.ts#L35): the order and stock item deciders, the Orders and Inventory contexts, PlaceOrder, CancelOrder, ReceiveStock and the order summary. It stands for [`example/domain/order.ts`](../../example/domain/order.ts), [`example/domain/stockItem.ts`](../../example/domain/stockItem.ts), [`example/convex/orders/convex.config.ts`](../../example/convex/orders/convex.config.ts), [`example/convex/orders/schema.ts`](../../example/convex/orders/schema.ts), [`example/convex/orders/streams.ts`](../../example/convex/orders/streams.ts), [`example/convex/orders/operations.ts`](../../example/convex/orders/operations.ts), [`example/convex/orders/queries/order.ts`](../../example/convex/orders/queries/order.ts), [`example/convex/inventory/convex.config.ts`](../../example/convex/inventory/convex.config.ts), [`example/convex/inventory/schema.ts`](../../example/convex/inventory/schema.ts), [`example/convex/inventory/streams.ts`](../../example/convex/inventory/streams.ts), [`example/convex/inventory/operations.ts`](../../example/convex/inventory/operations.ts), [`example/convex/inventory/queries/stockItem.ts`](../../example/convex/inventory/queries/stockItem.ts), [`example/convex/ordering.ts`](../../example/convex/ordering.ts), [`example/convex/receiving.ts`](../../example/convex/receiving.ts) and [`example/convex/orderSummary.ts`](../../example/convex/orderSummary.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:application.orders-inventory-example.cancel-duplicate-answered-from-receipt`](../specs/application/orders-inventory-example.cancel-duplicate-answered-from-receipt.sdp.md) | native backend | bound | A repeated cancel request is answered from its receipt | +| [`spec:application.orders-inventory-example.cancel-placed-order`](../specs/application/orders-inventory-example.cancel-placed-order.sdp.md) | native backend | bound | A placed order is cancelled | +| [`spec:application.orders-inventory-example.cancel-second-context-rejects`](../specs/application/orders-inventory-example.cancel-second-context-rejects.sdp.md) | native backend | bound | Orders cancels, then Inventory refuses the release | +| [`spec:application.orders-inventory-example.cancel-twice-rejected`](../specs/application/orders-inventory-example.cancel-twice-rejected.sdp.md) | native backend | bound | A second cancel of one order is rejected | +| [`spec:application.orders-inventory-example.cancel-unknown-order-rejected`](../specs/application/orders-inventory-example.cancel-unknown-order-rejected.sdp.md) | native backend | bound | A cancel of an order never placed is rejected | +| [`spec:application.orders-inventory-example.cancel-without-grant-refused`](../specs/application/orders-inventory-example.cancel-without-grant-refused.sdp.md) | native backend | bound | A caller without the cancel grant is refused | + +**Pinned declarations.** It pins none. + +### 11. Command declaration and bindings + +[`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn and [The command pipeline](#12-the-command-pipeline) by dependsOn. + +**Code.** + +- `impl:command.command-declaration` at [`tests/pure/command.test.ts` line 55](../../tests/pure/command.test.ts#L55): CommandDeclaration, publicCommand, internalCommand and the depot commands. It stands for [`src/command/declaration.ts`](../../src/command/declaration.ts) and [`fixture/convex/depotCommands.ts`](../../fixture/convex/depotCommands.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:command.command-declaration.broken-argument-contract-fails-build`](../specs/command/command-declaration.broken-argument-contract-fails-build.sdp.md) | compiled | bound | Break a typed handler's argument contract | +| [`spec:command.command-declaration.renamed-handler-fails-build`](../specs/command/command-declaration.renamed-handler-fails-build.sdp.md) | compiled | bound | Rename a typed handler | + +**Pinned declarations.** 18 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:command.command-declaration#design.typeCommandDeclaration`](../specs/command/command-declaration.sdp.md?plain=1#L64) | not compared | nothing | none | leads the code and differs in ctx, in its executor and admission | +| [`spec:command.command-declaration#design.typeSourceRef`](../specs/command/command-declaration.sdp.md?plain=1#L65) | bound | the type | `SourceRef` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | | +| [`spec:command.command-declaration#design.typeWrites`](../specs/command/command-declaration.sdp.md?plain=1#L66) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.typePermissionPolicy`](../specs/command/command-declaration.sdp.md?plain=1#L67) | bound | the type | `PermissionPolicy` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-declaration#design.typeExecutor`](../specs/command/command-declaration.sdp.md?plain=1#L68) | not compared | nothing | none | differs only in ctx | +| [`spec:command.command-declaration#design.typeExecutorResult`](../specs/command/command-declaration.sdp.md?plain=1#L69) | bound | the type | `ExecutorResult` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-declaration#design.typeReadModelBinding`](../specs/command/command-declaration.sdp.md?plain=1#L70) | ahead | the type | `ReadModelBinding` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | the history view's build binds history projections | +| [`spec:command.command-declaration#design.typeAudit`](../specs/command/command-declaration.sdp.md?plain=1#L71) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.typeDiagnosticSinkField`](../specs/command/command-declaration.sdp.md?plain=1#L72) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.typeAdmissionPolicy`](../specs/command/command-declaration.sdp.md?plain=1#L73) | not compared | nothing | none | differs only in ctx | +| [`spec:command.command-declaration#design.typeBounds`](../specs/command/command-declaration.sdp.md?plain=1#L74) | bound | the type | `Bounds` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-declaration#design.typeRetention`](../specs/command/command-declaration.sdp.md?plain=1#L75) | ahead | the type | `Retention` in [`src/command/index.ts`](../../src/command/index.ts) | a receipt's tombstone expiry | +| [`spec:command.command-declaration#design.fnPublicCommand`](../specs/command/command-declaration.sdp.md?plain=1#L76) | not compared | nothing | none | leads the code and differs in ctx, through typeCommandDeclaration | +| [`spec:command.command-declaration#design.fnInternalCommand`](../specs/command/command-declaration.sdp.md?plain=1#L77) | not compared | nothing | none | leads the code and differs in ctx, through typeCommandDeclaration | +| [`spec:command.command-declaration#design.staticExports`](../specs/command/command-declaration.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.moduleGrouping`](../specs/command/command-declaration.sdp.md?plain=1#L80) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.canonicalSchema`](../specs/command/command-declaration.sdp.md?plain=1#L81) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-declaration#design.refineResult`](../specs/command/command-declaration.sdp.md?plain=1#L82) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 18 declarations as the Spec pins them + +[`spec:command.command-declaration#design.typeCommandDeclaration`](../specs/command/command-declaration.sdp.md?plain=1#L64) + +```ts +type CommandDeclaration = { + name: string; + contractVersion: number; + input: Validator; + refine?: (input: I) => Omit | null; + output: Validator; + permission: PermissionPolicy; + executor: Executor; + writes: readonly SourceRef[]; + readModels?: readonly ReadModelBinding[]; + rejections: readonly string[]; + admission?: AdmissionPolicy; + bounds?: Bounds; + retention?: Retention; + irreversible?: boolean; + audit?: { kind: "security" | "business" }; + diagnosticSink?: DiagnosticSink; +} +``` + +[`spec:command.command-declaration#design.typeSourceRef`](../specs/command/command-declaration.sdp.md?plain=1#L65) + +```ts +type SourceRef = { contextId: string; streamType: string } +``` + +[`spec:command.command-declaration#design.typeWrites`](../specs/command/command-declaration.sdp.md?plain=1#L66) + +```ts +writes +``` + +[`spec:command.command-declaration#design.typePermissionPolicy`](../specs/command/command-declaration.sdp.md?plain=1#L67) + +```ts +type PermissionPolicy = { + permission: string; + subjectFrom?: (input: I) => SubjectRef; +} +``` + +[`spec:command.command-declaration#design.typeExecutor`](../specs/command/command-declaration.sdp.md?plain=1#L68) + +```ts +type Executor = ( + ctx: MutationCtx, + call: { tenantId: string; actor: Actor; operation: OperationRef; input: I }, +) => Promise> +``` + +[`spec:command.command-declaration#design.typeExecutorResult`](../specs/command/command-declaration.sdp.md?plain=1#L69) + +```ts +type ExecutorResult = CommittedOutcome & { streams: StreamDto[] } +``` + +[`spec:command.command-declaration#design.typeReadModelBinding`](../specs/command/command-declaration.sdp.md?plain=1#L70) + +```ts +type ReadModelBinding = { + readModel: ReadModel | HistoryProjection; + source: SourceRef; +} +``` + +[`spec:command.command-declaration#design.typeAudit`](../specs/command/command-declaration.sdp.md?plain=1#L71) + +```ts +audit?: { kind: "security" | "business" } +``` + +[`spec:command.command-declaration#design.typeDiagnosticSinkField`](../specs/command/command-declaration.sdp.md?plain=1#L72) + +```ts +diagnosticSink?: DiagnosticSink +``` + +[`spec:command.command-declaration#design.typeAdmissionPolicy`](../specs/command/command-declaration.sdp.md?plain=1#L73) + +```ts +type AdmissionPolicy = ( + ctx: MutationCtx, + call: PipelineCall, +) => Promise< + | { admitted: true } + | { admitted: false; code: "rateLimited" | "capacity"; retryAfterMs?: number } +> +``` + +[`spec:command.command-declaration#design.typeBounds`](../specs/command/command-declaration.sdp.md?plain=1#L74) + +```ts +type Bounds = { maxItems?: number; maxBytes?: number } +``` + +[`spec:command.command-declaration#design.typeRetention`](../specs/command/command-declaration.sdp.md?plain=1#L75) + +```ts +type Retention = { window: number; afterExpiry: "delete" | "tombstone" } +``` + +[`spec:command.command-declaration#design.fnPublicCommand`](../specs/command/command-declaration.sdp.md?plain=1#L76) + +```ts +publicCommand( + decl: CommandDeclaration, + serviceIssuers: ReadonlySet = new Set(), +): RegisteredMutation< + "public", + { tenantId: string; requestKey?: string; correlationId?: string; input: I }, + CommandResponse +> +``` + +[`spec:command.command-declaration#design.fnInternalCommand`](../specs/command/command-declaration.sdp.md?plain=1#L77) + +```ts +internalCommand( + decl: CommandDeclaration, +): RegisteredMutation< + "internal", + { + tenantId: string; + namespace: CallerNamespace; + actor: Actor; + requestKey: string; + correlationId?: string; + causedBy?: CausedBy; + input: I; + }, + CommandResponse +> +``` + +[`spec:command.command-declaration#design.staticExports`](../specs/command/command-declaration.sdp.md?plain=1#L78) + +```ts +export const placeOrder = publicCommand(placeOrderDeclaration) +``` + +[`spec:command.command-declaration#design.moduleGrouping`](../specs/command/command-declaration.sdp.md?plain=1#L80) + +```ts +class OrdersModule { + static readonly commands = [ + placeOrderDeclaration, + cancelOrderDeclaration, + ] as const; +} +``` + +[`spec:command.command-declaration#design.canonicalSchema`](../specs/command/command-declaration.sdp.md?plain=1#L81) + +```ts +input +``` + +[`spec:command.command-declaration#design.refineResult`](../specs/command/command-declaration.sdp.md?plain=1#L82) + +```ts +refine +``` + +
+ +**Other Design entries.** 1 entry pins no declaration: [`generationTrigger`](../specs/command/command-declaration.sdp.md?plain=1#L79). + +### 12. The command pipeline + +[`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#8-write-pause) by dependsOn and [The event envelope](#13-the-event-envelope) by dependsOn. + +**Code.** + +- `impl:command.command-pipeline` at [`tests/pure/command.test.ts` line 25](../../tests/pure/command.test.ts#L25): runPipeline and the command response in src/command. It stands for [`src/command/pipeline.ts`](../../src/command/pipeline.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:command.command-pipeline.failure-after-journal-append`](../specs/command/command-pipeline.failure-after-journal-append.sdp.md) | native backend | bound | Inject a failure after the journal append | +| [`spec:command.command-pipeline.failure-after-state-write`](../specs/command/command-pipeline.failure-after-state-write.sdp.md) | native backend | bound | Inject a failure after the state write | +| [`spec:command.command-pipeline.failure-before-receipt`](../specs/command/command-pipeline.failure-before-receipt.sdp.md) | native backend | bound | Inject a failure before the receipt insert | + +**Pinned declarations.** 18 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:command.command-pipeline#design.fnPublicEntry`](../specs/command/command-pipeline.sdp.md?plain=1#L111) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.fnInternalEntry`](../specs/command/command-pipeline.sdp.md?plain=1#L112) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.fnRunPipeline`](../specs/command/command-pipeline.sdp.md?plain=1#L113) | not compared | nothing | none | leads the code and differs in ctx, through typeCommandDeclaration | +| [`spec:command.command-pipeline#design.typePipelineCall`](../specs/command/command-pipeline.sdp.md?plain=1#L114) | bound | the type | `PipelineCall` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-pipeline#design.typeCommandResponse`](../specs/command/command-pipeline.sdp.md?plain=1#L115) | bound | the type | `CommandResponse` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-pipeline#design.affectedDerivation`](../specs/command/command-pipeline.sdp.md?plain=1#L117) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.validatorCommandResponse`](../specs/command/command-pipeline.sdp.md?plain=1#L118) | bound | the type | `commandResponseValidator` in [`src/command/index.ts`](../../src/command/index.ts) | | +| [`spec:command.command-pipeline#design.operationRef`](../specs/command/command-pipeline.sdp.md?plain=1#L119) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.ctxAuthUse`](../specs/command/command-pipeline.sdp.md?plain=1#L120) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.gateRead`](../specs/command/command-pipeline.sdp.md?plain=1#L121) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.contextCall`](../specs/command/command-pipeline.sdp.md?plain=1#L123) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.writesCheck`](../specs/command/command-pipeline.sdp.md?plain=1#L127) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.fnWriteReadModels`](../specs/command/command-pipeline.sdp.md?plain=1#L128) | ahead | the type | `writeReadModels` in [`src/read-model/index.ts`](../../src/read-model/index.ts) | through typeReadModelBinding | +| [`spec:command.command-pipeline#design.auditWrite`](../specs/command/command-pipeline.sdp.md?plain=1#L130) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.diagnosticEmit`](../specs/command/command-pipeline.sdp.md?plain=1#L131) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.fnRelayFailure`](../specs/command/command-pipeline.sdp.md?plain=1#L132) | not compared | nothing | none | leads the code and differs in ctx, through typeCommandDeclaration | +| [`spec:command.command-pipeline#design.admissionHook`](../specs/command/command-pipeline.sdp.md?plain=1#L134) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:command.command-pipeline#design.subTransactionLimits`](../specs/command/command-pipeline.sdp.md?plain=1#L135) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 18 declarations as the Spec pins them + +[`spec:command.command-pipeline#design.fnPublicEntry`](../specs/command/command-pipeline.sdp.md?plain=1#L111) + +```ts +export const placeOrder = mutation({ + args: { + tenantId: v.string(), + requestKey: v.optional(v.string()), + correlationId: v.optional(v.string()), + input: placeOrderInputValidator, + }, + returns: commandResponseValidator(placeOrderDeclaration.output), + handler, +}) +``` + +[`spec:command.command-pipeline#design.fnInternalEntry`](../specs/command/command-pipeline.sdp.md?plain=1#L112) + +```ts +export const placeOrderInternal = internalMutation({ + args: { + tenantId: v.string(), + namespace: callerNamespaceValidator, + actor: actorValidator, + requestKey: v.string(), + correlationId: v.optional(v.string()), + causedBy: v.optional(causedByValidator), + input: placeOrderInputValidator, + }, + returns: commandResponseValidator(placeOrderDeclaration.output), + handler, +}) +``` + +[`spec:command.command-pipeline#design.fnRunPipeline`](../specs/command/command-pipeline.sdp.md?plain=1#L113) + +```ts +runPipeline( + ctx: MutationCtx, + decl: CommandDeclaration, + call: PipelineCall, +): Promise> +``` + +[`spec:command.command-pipeline#design.typePipelineCall`](../specs/command/command-pipeline.sdp.md?plain=1#L114) + +```ts +type PipelineCall = { + tenantId: string; + namespace: CallerNamespace; + actor: Actor; + requestKey?: string; + correlationId?: string; + causedBy?: CausedBy; + input: I; +} +``` + +[`spec:command.command-pipeline#design.typeCommandResponse`](../specs/command/command-pipeline.sdp.md?plain=1#L115) + +```ts +type CommandResponse = { + kind: "applied" | "businessFailure"; + operationId: string; + affected: AffectedRef[]; + versions: StreamVersion[]; +} & ({ replayed: false; result: R } | { replayed: true; result: null }) +``` + +[`spec:command.command-pipeline#design.affectedDerivation`](../specs/command/command-pipeline.sdp.md?plain=1#L117) + +```ts +affected = versions.map(({ contextId, streamType, streamId }) => ({ + contextId, + streamType, + streamId, +})) +``` + +[`spec:command.command-pipeline#design.validatorCommandResponse`](../specs/command/command-pipeline.sdp.md?plain=1#L118) + +```ts +const commandResponseValidator = ( + output: Validator, +) => + v.union( + v.object({ + kind: outcomeKindValidator, + result: output, + operationId: v.string(), + affected: v.array(affectedRefValidator), + versions: v.array(streamVersionValidator), + replayed: v.literal(false), + }), + v.object({ + kind: outcomeKindValidator, + result: v.null(), + operationId: v.string(), + affected: v.array(affectedRefValidator), + versions: v.array(streamVersionValidator), + replayed: v.literal(true), + }), + ) +``` + +[`spec:command.command-pipeline#design.operationRef`](../specs/command/command-pipeline.sdp.md?plain=1#L119) + +```ts +operation = { + operationId: crypto.randomUUID(), + causedBy: call.causedBy ?? { kind: "command", commandType: decl.name }, + ...(call.correlationId === undefined + ? {} + : { correlationId: call.correlationId }), +} +``` + +[`spec:command.command-pipeline#design.ctxAuthUse`](../specs/command/command-pipeline.sdp.md?plain=1#L120) + +```ts +ctx.auth.getUserIdentity() +``` + +[`spec:command.command-pipeline#design.gateRead`](../specs/command/command-pipeline.sdp.md?plain=1#L121) + +```ts +assertWritable +``` + +[`spec:command.command-pipeline#design.contextCall`](../specs/command/command-pipeline.sdp.md?plain=1#L123) + +```ts +await ctx.runMutation(components.inventory.operations.allocate, { + tenantId, + actor, + operation, + input: { orderId, lines }, + facts, +}) +``` + +[`spec:command.command-pipeline#design.writesCheck`](../specs/command/command-pipeline.sdp.md?plain=1#L127) + +```ts +decl.writes +``` + +[`spec:command.command-pipeline#design.fnWriteReadModels`](../specs/command/command-pipeline.sdp.md?plain=1#L128) + +```ts +writeReadModels( + ctx: RegistryReader & RowWriter, + commandType: string, + bindings: readonly ReadModelBinding[], + input: { tenantId: string; streams: readonly StreamDto[] }, +): Promise +``` + +[`spec:command.command-pipeline#design.auditWrite`](../specs/command/command-pipeline.sdp.md?plain=1#L130) + +```ts +writeAudit +``` + +[`spec:command.command-pipeline#design.diagnosticEmit`](../specs/command/command-pipeline.sdp.md?plain=1#L131) + +```ts +emitDiagnostic +``` + +[`spec:command.command-pipeline#design.fnRelayFailure`](../specs/command/command-pipeline.sdp.md?plain=1#L132) + +```ts +relayFailure( + decl: CommandDeclaration, + call: FailedCall, + error: unknown, +): never +``` + +[`spec:command.command-pipeline#design.admissionHook`](../specs/command/command-pipeline.sdp.md?plain=1#L134) + +```ts +admission?: ( + ctx: MutationCtx, + call: PipelineCall, +) => Promise< + | { admitted: true } + | { + admitted: false; + code: "rateLimited" | "capacity"; + retryAfterMs?: number; + } +> +``` + +[`spec:command.command-pipeline#design.subTransactionLimits`](../specs/command/command-pipeline.sdp.md?plain=1#L135) + +```ts +ctx.runMutation +``` + +
+ +**Other Design entries.** 17 entries pin no declaration: [`transactionBoundary`](../specs/command/command-pipeline.sdp.md?plain=1#L109), [`convexSurface`](../specs/command/command-pipeline.sdp.md?plain=1#L110), [`typeAffectedRef`](../specs/command/command-pipeline.sdp.md?plain=1#L116), [`factsCapture`](../specs/command/command-pipeline.sdp.md?plain=1#L122), [`contextCallIsolation`](../specs/command/command-pipeline.sdp.md?plain=1#L124), [`rejectionRelay`](../specs/command/command-pipeline.sdp.md?plain=1#L125), [`readModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L126), [`helperGenerics`](../specs/command/command-pipeline.sdp.md?plain=1#L129), [`receiptWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L133), [`limitMutationTimeout`](../specs/command/command-pipeline.sdp.md?plain=1#L136), [`limitTransaction`](../specs/command/command-pipeline.sdp.md?plain=1#L137), [`limitContextCalls`](../specs/command/command-pipeline.sdp.md?plain=1#L138), [`limitTooLarge`](../specs/command/command-pipeline.sdp.md?plain=1#L139), [`fnUtf8Length`](../specs/command/command-pipeline.sdp.md?plain=1#L140), [`limitCallText`](../specs/command/command-pipeline.sdp.md?plain=1#L141), [`errorPath`](../specs/command/command-pipeline.sdp.md?plain=1#L142), [`injectionPointOrder`](../specs/command/command-pipeline.sdp.md?plain=1#L143). + +### 13. The event envelope + +[`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [The journal](#14-the-journal) by refines. + +**Code.** + +- `impl:context.event-envelope` at [`tests/pure/context.test.ts` line 45](../../tests/pure/context.test.ts#L45): the envelope types and validators in src/context. It stands for [`src/context/envelope.ts`](../../src/context/envelope.ts). + +**Examples and verifiers.** None is bound to it. + +**Pinned declarations.** 10 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:context.event-envelope#design.typeCausedBy`](../specs/context/event-envelope.sdp.md?plain=1#L57) | bound | the type | `CausedBy` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.validatorCausedBy`](../specs/context/event-envelope.sdp.md?plain=1#L58) | bound | the type | `causedByValidator` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.typeOperationRef`](../specs/context/event-envelope.sdp.md?plain=1#L60) | bound | the type | `OperationRef` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.validatorOperationRef`](../specs/context/event-envelope.sdp.md?plain=1#L61) | bound | the type | `operationRefValidator` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.typeEventEnvelope`](../specs/context/event-envelope.sdp.md?plain=1#L62) | bound | the type | `EventEnvelope` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.validatorEventEnvelope`](../specs/context/event-envelope.sdp.md?plain=1#L63) | bound | the type | `eventEnvelopeValidator` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.typeEnvelopeInput`](../specs/context/event-envelope.sdp.md?plain=1#L64) | bound | the type | `EnvelopeInput` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.event-envelope#design.eventIdGeneration`](../specs/context/event-envelope.sdp.md?plain=1#L65) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.event-envelope#design.recordedAtSource`](../specs/context/event-envelope.sdp.md?plain=1#L66) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.event-envelope#design.payloadValidation`](../specs/context/event-envelope.sdp.md?plain=1#L72) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 10 declarations as the Spec pins them + +[`spec:context.event-envelope#design.typeCausedBy`](../specs/context/event-envelope.sdp.md?plain=1#L57) + +```ts +type CausedBy = + | { kind: "command"; commandType: string } + | { kind: "event"; tenantId: string; contextId: string; eventId: string } + | { kind: "migration"; migrationName: string } +``` + +[`spec:context.event-envelope#design.validatorCausedBy`](../specs/context/event-envelope.sdp.md?plain=1#L58) + +```ts +const causedByValidator = v.union( + v.object({ kind: v.literal("command"), commandType: v.string() }), + v.object({ + kind: v.literal("event"), + tenantId: v.string(), + contextId: v.string(), + eventId: v.string(), + }), + v.object({ kind: v.literal("migration"), migrationName: v.string() }), +) +``` + +[`spec:context.event-envelope#design.typeOperationRef`](../specs/context/event-envelope.sdp.md?plain=1#L60) + +```ts +type OperationRef = { + operationId: string; + correlationId?: string; + causedBy: CausedBy; +} +``` + +[`spec:context.event-envelope#design.validatorOperationRef`](../specs/context/event-envelope.sdp.md?plain=1#L61) + +```ts +const operationRefValidator = v.object({ + operationId: v.string(), + correlationId: v.optional(v.string()), + causedBy: causedByValidator, +}) +``` + +[`spec:context.event-envelope#design.typeEventEnvelope`](../specs/context/event-envelope.sdp.md?plain=1#L62) + +```ts +type EventEnvelope

= { + eventId: string; + tenantId: string; + contextId: string; + streamType: string; + streamId: string; + streamVersion: number; + eventType: string; + eventSchemaVersion: number; + operationId: string; + correlationId?: string; + causedBy: CausedBy; + actor: Actor; + recordedAt: number; + occurredAt?: number; + payload: P; +} +``` + +[`spec:context.event-envelope#design.validatorEventEnvelope`](../specs/context/event-envelope.sdp.md?plain=1#L63) + +```ts +const eventEnvelopeValidator = v.object({ + eventId: v.string(), + tenantId: v.string(), + contextId: v.string(), + streamType: v.string(), + streamId: v.string(), + streamVersion: v.number(), + eventType: v.string(), + eventSchemaVersion: v.number(), + operationId: v.string(), + correlationId: v.optional(v.string()), + causedBy: causedByValidator, + actor: actorValidator, + recordedAt: v.number(), + occurredAt: v.optional(v.number()), + payload: v.any(), +}) +``` + +[`spec:context.event-envelope#design.typeEnvelopeInput`](../specs/context/event-envelope.sdp.md?plain=1#L64) + +```ts +type EnvelopeInput = { + tenantId: string; + contextId: string; + streamType: string; + streamId: string; + operation: OperationRef; + actor: Actor; + recordedAt: number; +} +``` + +[`spec:context.event-envelope#design.eventIdGeneration`](../specs/context/event-envelope.sdp.md?plain=1#L65) + +```ts +crypto.randomUUID() +``` + +[`spec:context.event-envelope#design.recordedAtSource`](../specs/context/event-envelope.sdp.md?plain=1#L66) + +```ts +Date.now() +``` + +[`spec:context.event-envelope#design.payloadValidation`](../specs/context/event-envelope.sdp.md?plain=1#L72) + +```ts +registration.eventValidators[event.eventType] +``` + +

+ +**Other Design entries.** 6 entries pin no declaration: [`causedByProducers`](../specs/context/event-envelope.sdp.md?plain=1#L59), [`occurredAtSource`](../specs/context/event-envelope.sdp.md?plain=1#L67), [`limitPayloadStructure`](../specs/context/event-envelope.sdp.md?plain=1#L68), [`envelopeTextBounds`](../specs/context/event-envelope.sdp.md?plain=1#L69), [`limitEnvelopeBytes`](../specs/context/event-envelope.sdp.md?plain=1#L70), [`limitEventBytes`](../specs/context/event-envelope.sdp.md?plain=1#L71). + +### 14. The journal + +[`spec:context.journal`](../specs/context/journal.sdp.md) · behavior · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Write pause](#8-write-pause) by dependsOn. + +**Code.** + +- `impl:context.journal` at [`tests/pure/context.test.ts` line 35](../../tests/pure/context.test.ts#L35): createJournal, load and append in src/context. It stands for [`src/context/journal.ts`](../../src/context/journal.ts). + +**Examples.** + +| Example | Tier | Verifier | Title | +|---|---|---|---| +| [`spec:context.journal.rebuild-from-baseline`](../specs/context/journal.rebuild-from-baseline.sdp.md) | native backend | none bound | Rebuild a stream that has a baseline event | + +**Pinned declarations.** 18 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:context.journal#design.fnCreateJournal`](../specs/context/journal.sdp.md?plain=1#L89) | bound | the type | `createJournal` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.journal#design.typeJournal`](../specs/context/journal.sdp.md?plain=1#L90) | bound | the type | `Journal` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.journal#design.typeStreamRegistration`](../specs/context/journal.sdp.md?plain=1#L91) | ahead | the type | `StreamRegistration` in [`src/context/index.ts`](../../src/context/index.ts) | baselines and migration, and the deferred streamParts for the derived mapping | +| [`spec:context.journal#design.typeBaselineMigration`](../specs/context/journal.sdp.md?plain=1#L92) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.typeStreamMeta`](../specs/context/journal.sdp.md?plain=1#L94) | bound | the type | `StreamMeta` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.journal#design.typeLoadedStream`](../specs/context/journal.sdp.md?plain=1#L95) | ahead | the type | `LoadedStream` in [`src/context/index.ts`](../../src/context/index.ts) | the deferred streamParts | +| [`spec:context.journal#design.fnLoad`](../specs/context/journal.sdp.md?plain=1#L96) | ahead | the type, its ctx parameter erased | `load` in [`src/context/index.ts`](../../src/context/index.ts) | through typeStreamRegistration and typeLoadedStream, its ctx erased | +| [`spec:context.journal#design.fnAppend`](../specs/context/journal.sdp.md?plain=1#L97) | ahead | the type, its ctx parameter erased | `append` in [`src/context/index.ts`](../../src/context/index.ts) | through typeLoadedStream, its ctx erased | +| [`spec:context.journal#design.appendCheck`](../specs/context/journal.sdp.md?plain=1#L98) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.limitPayloadBytes`](../specs/context/journal.sdp.md?plain=1#L100) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.fnRebuild`](../specs/context/journal.sdp.md?plain=1#L102) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.baselineEvent`](../specs/context/journal.sdp.md?plain=1#L105) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.fnMigrateToSchemaVersion`](../specs/context/journal.sdp.md?plain=1#L106) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.fnDefineMaintenance`](../specs/context/journal.sdp.md?plain=1#L109) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.fnWriteBaseline`](../specs/context/journal.sdp.md?plain=1#L110) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.writeBaselineBuilder`](../specs/context/journal.sdp.md?plain=1#L111) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.driverNotMigrationsComponent`](../specs/context/journal.sdp.md?plain=1#L122) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.journal#design.crossStreamRelation`](../specs/context/journal.sdp.md?plain=1#L125) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 18 declarations as the Spec pins them + +[`spec:context.journal#design.fnCreateJournal`](../specs/context/journal.sdp.md?plain=1#L89) + +```ts +createJournal(config: { + contextId: string; + history: "rebuildable" | "auditOnly"; +}): Journal +``` + +[`spec:context.journal#design.typeJournal`](../specs/context/journal.sdp.md?plain=1#L90) + +```ts +type Journal = { + readonly contextId: string; + readonly history: "rebuildable" | "auditOnly"; +} +``` + +[`spec:context.journal#design.typeStreamRegistration`](../specs/context/journal.sdp.md?plain=1#L91) + +```ts +type StreamRegistration = { + decider: Decider; + mapping: StateDocumentMapping; + stateSchemaVersion: number; + eventValidators: Record>; + dto: Validator; + toDto: (state: S, meta: StreamMeta) => Value; + baselineMigrations: readonly BaselineMigration[]; +} +``` + +[`spec:context.journal#design.typeBaselineMigration`](../specs/context/journal.sdp.md?plain=1#L92) + +```ts +type BaselineMigration = { + name: string; + fromSchemaVersion: number; + toSchemaVersion: number; + readsHistory: boolean; + migrate: (saved: unknown, history: readonly EventEnvelope[]) => S; +} +``` + +[`spec:context.journal#design.typeStreamMeta`](../specs/context/journal.sdp.md?plain=1#L94) + +```ts +type StreamMeta = { + tenantId: string; + contextId: string; + streamType: string; + streamId: string; + streamVersion: number; + stateSchemaVersion: number; + deletedAt?: number; + baselineVersion?: number; +} +``` + +[`spec:context.journal#design.typeLoadedStream`](../specs/context/journal.sdp.md?plain=1#L95) + +```ts +type LoadedStream = { + state: S; + version: number; + exists: boolean; + meta: StreamMeta; + rowId?: GenericId<"streams">; + parts?: Record; +} +``` + +[`spec:context.journal#design.fnLoad`](../specs/context/journal.sdp.md?plain=1#L96) + +```ts +load( + ctx: QueryCtx | MutationCtx, + journal: Journal, + registration: StreamRegistration, + tenantId: string, + streamId: string, +): Promise> +``` + +[`spec:context.journal#design.fnAppend`](../specs/context/journal.sdp.md?plain=1#L97) + +```ts +append( + ctx: MutationCtx, + journal: Journal, + loaded: LoadedStream, + envelope: EnvelopeInput, + events: readonly E[], + expectedVersion: number, +): Promise +``` + +[`spec:context.journal#design.appendCheck`](../specs/context/journal.sdp.md?plain=1#L98) + +```ts +append +``` + +[`spec:context.journal#design.limitPayloadBytes`](../specs/context/journal.sdp.md?plain=1#L100) + +```ts +append +``` + +[`spec:context.journal#design.fnRebuild`](../specs/context/journal.sdp.md?plain=1#L102) + +```ts +rebuildStream( + ctx: QueryCtx, + journal: Journal, + registration: StreamRegistration, + tenantId: string, + streamId: string, + maxEvents?: number, +): Promise< + | { + kind: "folded"; + state: S; + version: number; + fromBaseline: number | null; + eventsApplied: number; + } + | { + kind: "refused"; + reason: "tailTooLong" | "awaitingBaseline" | "budgetExhausted"; + tailLength: number; + maxFoldEvents: number; + savedSchemaVersion: number; + currentSchemaVersion: number; + } +> +``` + +[`spec:context.journal#design.baselineEvent`](../specs/context/journal.sdp.md?plain=1#L105) + +```ts +eventType: "baseline" +``` + +[`spec:context.journal#design.fnMigrateToSchemaVersion`](../specs/context/journal.sdp.md?plain=1#L106) + +```ts +migrateToSchemaVersion( + ctx: MutationCtx, + journal: Journal, + registration: StreamRegistration, + loaded: LoadedStream, + envelope: EnvelopeInput, + toSchemaVersion: number, +): Promise> +``` + +[`spec:context.journal#design.fnDefineMaintenance`](../specs/context/journal.sdp.md?plain=1#L109) + +```ts +defineMaintenance( + journal: Journal, + registrations: readonly StreamRegistration[], +): { + writeBaseline: RegisteredMutation< + "public", + WriteBaselineArgs, + WriteBaselineResult + >; +} +``` + +[`spec:context.journal#design.fnWriteBaseline`](../specs/context/journal.sdp.md?plain=1#L110) + +```ts +export const writeBaseline = mutation({ + args: { + tenantId: v.string(), + streamType: v.string(), + migrationName: v.string(), + actor: actorValidator, + operationId: v.string(), + correlationId: v.optional(v.string()), + afterStreamId: v.optional(v.string()), + maxStreams: v.optional(v.number()), + }, + returns: v.object({ + written: v.number(), + skipped: v.number(), + eventsRead: v.number(), + nextAfterStreamId: v.union(v.string(), v.null()), + }), + handler, +}) +``` + +[`spec:context.journal#design.writeBaselineBuilder`](../specs/context/journal.sdp.md?plain=1#L111) + +```ts +writeBaseline +``` + +[`spec:context.journal#design.driverNotMigrationsComponent`](../specs/context/journal.sdp.md?plain=1#L122), as the Spec writes it, which Prettier does not parse + +```ts +@convex-dev/migrations +``` + +[`spec:context.journal#design.crossStreamRelation`](../specs/context/journal.sdp.md?plain=1#L125) + +```ts +operationId +``` + +
+ +**Other Design entries.** 21 entries pin no declaration: [`transactionBoundary`](../specs/context/journal.sdp.md?plain=1#L88), [`migratedStateSource`](../specs/context/journal.sdp.md?plain=1#L93), [`appendWrites`](../specs/context/journal.sdp.md?plain=1#L99), [`limitEnvelopeCheck`](../specs/context/journal.sdp.md?plain=1#L101), [`rebuildReads`](../specs/context/journal.sdp.md?plain=1#L103), [`limitFoldEvents`](../specs/context/journal.sdp.md?plain=1#L104), [`migrateToSchemaVersionCallers`](../specs/context/journal.sdp.md?plain=1#L107), [`baselineRow`](../specs/context/journal.sdp.md?plain=1#L108), [`writeBaselineSequence`](../specs/context/journal.sdp.md?plain=1#L112), [`writeBaselineOperationRef`](../specs/context/journal.sdp.md?plain=1#L113), [`writeBaselineIdempotence`](../specs/context/journal.sdp.md?plain=1#L114), [`limitBaselineBatch`](../specs/context/journal.sdp.md?plain=1#L115), [`baselineDriver`](../specs/context/journal.sdp.md?plain=1#L116), [`limitDriverDeferral`](../specs/context/journal.sdp.md?plain=1#L117), [`sweepVersionBump`](../specs/context/journal.sdp.md?plain=1#L118), [`migrationWindow`](../specs/context/journal.sdp.md?plain=1#L119), [`codeOlderThanData`](../specs/context/journal.sdp.md?plain=1#L120), [`driverTenancy`](../specs/context/journal.sdp.md?plain=1#L121), [`limitRebuildRead`](../specs/context/journal.sdp.md?plain=1#L123), [`noGlobalOrder`](../specs/context/journal.sdp.md?plain=1#L124), [`schemaMigration`](../specs/context/journal.sdp.md?plain=1#L126). + +### 15. The context queries + +[`spec:context.queries`](../specs/context/queries.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [The event envelope](#13-the-event-envelope) by dependsOn and [The journal](#14-the-journal) by dependsOn. + +**Code.** + +- `impl:context.queries` at [`tests/pure/context-queries.test.ts` line 23](../../tests/pure/context-queries.test.ts#L23): defineGet, defineList and boundedPage in src/context. It stands for [`src/context/queries.ts`](../../src/context/queries.ts). + +**Examples and verifiers.** None is bound to it. + +**Pinned declarations.** 18 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). + +| Design entry | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:context.queries#design.fnDefineGet`](../specs/context/queries.sdp.md?plain=1#L73) | ahead | the type | `defineGet` in [`src/context/index.ts`](../../src/context/index.ts) | through typeStreamRegistration | +| [`spec:context.queries#design.fnDefineList`](../specs/context/queries.sdp.md?plain=1#L74) | ahead | the type | `defineList` in [`src/context/index.ts`](../../src/context/index.ts) | through typeStreamRegistration | +| [`spec:context.queries#design.typeQueryArgs`](../specs/context/queries.sdp.md?plain=1#L75) | bound | the type | `GetArgs` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.queries#design.fnDefineOthers`](../specs/context/queries.sdp.md?plain=1#L76) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.typePageLimit`](../specs/context/queries.sdp.md?plain=1#L79) | bound | the type | `PageLimit` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.queries#design.fnBoundedPage`](../specs/context/queries.sdp.md?plain=1#L80) | bound | the type | `boundedPage` in [`src/context/index.ts`](../../src/context/index.ts) | | +| [`spec:context.queries#design.fnHistory`](../specs/context/queries.sdp.md?plain=1#L81) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.componentPagination`](../specs/context/queries.sdp.md?plain=1#L82) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.fnRebuild`](../specs/context/queries.sdp.md?plain=1#L84) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.typeRebuildResult`](../specs/context/queries.sdp.md?plain=1#L85) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.validatorRebuildResult`](../specs/context/queries.sdp.md?plain=1#L86) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.fnByOperation`](../specs/context/queries.sdp.md?plain=1#L87) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.paginationShape`](../specs/context/queries.sdp.md?plain=1#L88) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.ordersExample`](../specs/context/queries.sdp.md?plain=1#L89) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.parentPassThrough`](../specs/context/queries.sdp.md?plain=1#L90) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.parentGet`](../specs/context/queries.sdp.md?plain=1#L91) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.dtoMapping`](../specs/context/queries.sdp.md?plain=1#L92) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:context.queries#design.limitListPage`](../specs/context/queries.sdp.md?plain=1#L95) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | + +
The 18 declarations as the Spec pins them + +[`spec:context.queries#design.fnDefineGet`](../specs/context/queries.sdp.md?plain=1#L73) + +```ts +defineGet( + journal: Journal, + registration: StreamRegistration, +): RegisteredQuery<"public", GetArgs, Promise> +``` + +[`spec:context.queries#design.fnDefineList`](../specs/context/queries.sdp.md?plain=1#L74) + +```ts +defineList( + journal: Journal, + registration: StreamRegistration, +): RegisteredQuery<"public", ListArgs, Promise>> +``` + +[`spec:context.queries#design.typeQueryArgs`](../specs/context/queries.sdp.md?plain=1#L75) + +```ts +type GetArgs = { tenantId: string; streamId: string } +``` + +[`spec:context.queries#design.fnDefineOthers`](../specs/context/queries.sdp.md?plain=1#L76) + +```ts +defineHistory(journal, registration) +``` + +[`spec:context.queries#design.typePageLimit`](../specs/context/queries.sdp.md?plain=1#L79) + +```ts +type PageLimit = { items: number; bytes: number } +``` + +[`spec:context.queries#design.fnBoundedPage`](../specs/context/queries.sdp.md?plain=1#L80) + +```ts +boundedPage( + opts: PaginationOptions, + limit: PageLimit, +): PaginationOptions +``` + +[`spec:context.queries#design.fnHistory`](../specs/context/queries.sdp.md?plain=1#L81) + +```ts +export const history = query({ + args: { + tenantId: v.string(), + streamId: v.string(), + fromVersion: v.optional(v.number()), + paginationOpts: paginationOptsValidator, + }, + returns: paginationResultValidator(eventEnvelopeValidator), + handler, +}) +``` + +[`spec:context.queries#design.componentPagination`](../specs/context/queries.sdp.md?plain=1#L82) + +```ts +paginator +``` + +[`spec:context.queries#design.fnRebuild`](../specs/context/queries.sdp.md?plain=1#L84) + +```ts +export const rebuild = query({ + args: { + tenantId: v.string(), + streamId: v.string(), + maxEvents: v.optional(v.number()), + }, + returns: rebuildResultValidator, + handler, +}) +``` + +[`spec:context.queries#design.typeRebuildResult`](../specs/context/queries.sdp.md?plain=1#L85) + +```ts +type RebuildResult = + | { + kind: "folded"; + state: Value; + version: number; + fromBaseline: number | null; + eventsApplied: number; + savedVersion: number; + equal: boolean; + } + | { + kind: "refused"; + reason: "tailTooLong" | "awaitingBaseline" | "budgetExhausted"; + tailLength: number; + maxFoldEvents: number; + savedVersion: number; + savedSchemaVersion: number; + currentSchemaVersion: number; + } +``` + +[`spec:context.queries#design.validatorRebuildResult`](../specs/context/queries.sdp.md?plain=1#L86) + +```ts +const rebuildResultValidator = v.union( + v.object({ + kind: v.literal("folded"), + state: v.any(), + version: v.number(), + fromBaseline: v.union(v.number(), v.null()), + eventsApplied: v.number(), + savedVersion: v.number(), + equal: v.boolean(), + }), + v.object({ + kind: v.literal("refused"), + reason: v.union( + v.literal("tailTooLong"), + v.literal("awaitingBaseline"), + v.literal("budgetExhausted"), + ), + tailLength: v.number(), + maxFoldEvents: v.number(), + savedVersion: v.number(), + savedSchemaVersion: v.number(), + currentSchemaVersion: v.number(), + }), +) +``` + +[`spec:context.queries#design.fnByOperation`](../specs/context/queries.sdp.md?plain=1#L87) + +```ts +export const byOperation = query({ + args: { tenantId: v.string(), operationId: v.string() }, + returns: v.array(eventEnvelopeValidator), + handler, +}) +``` + +[`spec:context.queries#design.paginationShape`](../specs/context/queries.sdp.md?plain=1#L88) + +```ts +paginationOptsValidator +``` + +[`spec:context.queries#design.ordersExample`](../specs/context/queries.sdp.md?plain=1#L89) + +```ts +export const get = defineGet(journal, orderStream) +``` + +[`spec:context.queries#design.parentPassThrough`](../specs/context/queries.sdp.md?plain=1#L90) + +```ts +export const listOrders = query({ + args: { tenantId: v.string(), paginationOpts: paginationOptsValidator }, + returns: paginationResultValidator(orderDtoValidator), + handler: async (ctx, args): Promise> => { + await authorizeQuery(ctx, { + name: "listOrders", + tenantId: args.tenantId, + permission: "orders.read", + }); + return (await ctx.runQuery( + components.orders.queries.order.list, + args, + )) as PaginationResult; + }, +}) +``` + +[`spec:context.queries#design.parentGet`](../specs/context/queries.sdp.md?plain=1#L91) + +```ts +export const getOrder = query({ + args: { tenantId: v.string(), orderId: v.string() }, + returns: v.union(orderDtoValidator, v.null()), + handler: async (ctx, { tenantId, orderId }): Promise => { + await authorizeQuery(ctx, { + name: "getOrder", + tenantId, + permission: "orders.read", + }); + return (await ctx.runQuery(components.orders.queries.order.get, { + tenantId, + streamId: orderId, + })) as OrderDto | null; + }, +}) +``` + +[`spec:context.queries#design.dtoMapping`](../specs/context/queries.sdp.md?plain=1#L92) + +```ts +registration.toDto(state, meta) +``` + +[`spec:context.queries#design.limitListPage`](../specs/context/queries.sdp.md?plain=1#L95), as the Spec writes it, which Prettier does not parse + +```ts +limitListPage(budgetBytes) = max(1, min(100, floor(4 MiB / budgetBytes))) +``` + +
+ +**Other Design entries.** 11 entries pin no declaration: [`fnGet`](../specs/context/queries.sdp.md?plain=1#L77), [`fnList`](../specs/context/queries.sdp.md?plain=1#L78), [`pagingByCursor`](../specs/context/queries.sdp.md?plain=1#L83), [`tenantNarrowing`](../specs/context/queries.sdp.md?plain=1#L93), [`reactivityAssumption`](../specs/context/queries.sdp.md?plain=1#L94), [`limitListBytes`](../specs/context/queries.sdp.md?plain=1#L96), [`limitHistoryPage`](../specs/context/queries.sdp.md?plain=1#L97), [`limitHistoryBytes`](../specs/context/queries.sdp.md?plain=1#L98), [`limitRebuildRead`](../specs/context/queries.sdp.md?plain=1#L99), [`observedFullLastPage`](../specs/context/queries.sdp.md?plain=1#L100), [`registeredFunctions`](../specs/context/queries.sdp.md?plain=1#L101). + +### 16. Rebuild online by default, pause writes only for history-dependent views + +[`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) · decision · stated defined · floor ready · next rung ready, which its floor holds. + +**Code.** No implementation anchor binds it. + +**Examples and verifiers.** None is bound to it. + +**Pinned declarations.** It pins none. + +## Pairs without a member's declaration + +1 pair in `tests/types/pinned-pairs.json` names no pinned declaration of a member. + +| Address | Pair | Compared | Code | Why | +|---|---|---|---|---| +| [`spec:application.aggregate-projection#design.tableProjectionMarkers`](../specs/application/aggregate-projection.sdp.md?plain=1#L55) | not compared | nothing | none | The pin is outside pack:history-view and is not emitted; the aggregate form's table, outside the Pack, while readModelTables still holds it | diff --git a/design/tools/check.py b/design/tools/check.py index 0a31441..a61a0f1 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -228,6 +228,21 @@ def run(args): by_slice = collections.Counter(item.get("slice", "none") for item in ledger if item["status"] == "open") +# 5. Each Pack page is what the tree generates. The page design/pages/.md is the page of pack:, +# and the generator's --check names the first line that differs. +pages = sorted(glob.glob(os.path.join(DESIGN, "pages", "*.md"))) +stale_pages = 0 +for path in pages: + name = os.path.splitext(os.path.basename(path))[0] + out = subprocess.run( + ["node", os.path.join(ROOT, "scripts", "pack-page.mjs"), "--pack", f"pack:{name}", "--out", os.path.relpath(path, ROOT), "--check"], + capture_output=True, text=True, cwd=ROOT, + ) + if out.returncode != 0: + stale_pages += 1 + message = (out.stderr + out.stdout).strip().splitlines() + fail(message[0] if message else f"scripts/pack-page.mjs exited {out.returncode} on {os.path.relpath(path, ROOT)}") + digest = hashlib.sha256() tracked = sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)) tracked += [os.path.join(DESIGN, name) for name in ("README.md", "PLAN.md", "SESSIONS.md", "reviews/consensus-ledger.json", "tools/prose-mentions.json")] @@ -243,6 +258,7 @@ def run(args): print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") print(f"open findings by slice: {dict(sorted(by_slice.items()))}") print(f"corpus digest: {digest.hexdigest()[:16]}") +print(f"Pack pages current: {len(pages) - stale_pages} of {len(pages)}") print(f"protocol: {PINNED}") if failures: print(f"\nFAIL ({len(failures)}):") diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index c4640d9..f7d75e4 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -237,6 +237,30 @@ export async function formatDeclaration(text, options = {}) { return { text, formatted: false }; } +// The table entry each index entry is chained on, by entry address, as the pinned module chains it: +// an `index*` entry of the form `.index(...)` belongs to the `table*` entry of the form +// `name: defineTable(...)` that its Spec wrote last before it. `rows` are recipe 24's rows in order. +export function indexTables(rows) { + const tables = new Map(); + let table = null; + for (const row of rows) { + const prefix = /^[a-z]+/.exec(row.key)?.[0]; + const declaration = row.declaration.trim(); + if (prefix === "table" && /^[\w$]+:\s*defineTable\(/.test(declaration)) + table = row; + else if ( + prefix === "index" && + declaration.startsWith(".index(") && + table?.spec === row.spec + ) + tables.set( + `${row.spec}#design.${row.key}`, + `${table.spec}#design.${table.key}`, + ); + } + return tables; +} + // The line of each Design entry and of each open question in a Spec's Markdown carrier. export function specLines(text) { const design = new Map(); @@ -421,6 +445,7 @@ export async function generate(pack, out) { cannot(`package.json does not depend on ${engine}`); const { reader, index, summary, members, questions, declarations } = await readGraph(pack); + const chained = indexTables(declarations.rows); const pairs = readPinnedPairs(root, pack); const sites = readAnchorSites(root); const sources = readQuestionSources(root); @@ -472,16 +497,26 @@ export async function generate(pack, out) { const entries = await Promise.all( declarations.rows .filter((row) => row.spec === id) - .map(async (row) => ({ - key: row.key, - address: `${id}#design.${row.key}`, - line: lines.design.get(row.key) ?? null, - pair: pairs.pairs.get(`${id}#design.${row.key}`) ?? null, - declaration: await formatDeclaration( - row.declaration, - prettierOptions, - ), - })), + .map(async (row) => { + const address = `${id}#design.${row.key}`; + const own = pairs.pairs.get(address) ?? null; + // An index has no pair of its own: its table's pair compares the table's indexes. + const table = own === null ? (chained.get(address) ?? null) : null; + return { + key: row.key, + address, + line: lines.design.get(row.key) ?? null, + pair: own ?? pairs.pairs.get(table) ?? null, + table: + table !== null && pairs.pairs.has(table) + ? table.slice(table.indexOf("#design.") + "#design.".length) + : null, + declaration: await formatDeclaration( + row.declaration, + prettierOptions, + ), + }; + }), ); const declared = new Set(entries.map((entry) => entry.key)); return { @@ -752,8 +787,10 @@ export async function generate(pack, out) { const source = restingOn.get(relation.otherId) ?? { id: relation.otherId, to: [], + members: [], }; source.to.push(`${relation.type} ${span(member.id)}`); + source.members.push(member.id); restingOn.set(relation.otherId, source); } const dependents = [...restingOn.values()].sort((left, right) => @@ -765,6 +802,21 @@ export async function generate(pack, out) { `${plural(dependents.length, "Spec")} outside the Pack ${dependents.length === 1 ? "rests" : "rest"} on a member. An example that verifies a member is listed with that member instead.`, "", ); + const designedOnly = dependents.filter( + (source) => rank(specs.get(source.id)?.statedReadiness) < rank("defined"), + ); + if (designedOnly.length > 0) + write( + `${designedOnly.length === 1 ? "One of them states" : `${designedOnly.length} of them state`} less than defined:`, + "", + ...designedOnly.map( + (source) => + `- ${specLink(source.id)} states ${rungOf(source.id)} and rests on ${list( + [...new Set(source.members)].map((id) => memberLink(id)), + )}.`, + ), + "", + ); if (dependents.length > 0) write( `
The ${plural(dependents.length, "Spec")} that rest on a member`, @@ -902,6 +954,12 @@ export async function generate(pack, out) { entry.line === null ? span(entry.address) : `[${span(entry.address)}](${link(context.file, entry.line)})`; + const tableLink = (key) => { + const line = member.entries.find((entry) => entry.key === key)?.line; + return line === null || line === undefined + ? span(key) + : `[${span(key)}](${link(context.file, line)})`; + }; if (member.entries.length > 0) { write( `**Pinned declarations.** ${plural(member.entries.length, "Design entry", "Design entries")} open with a code span. Each pair comes from [${span(inputs.pairs)}](${link(inputs.pairs)}) and is the test named by its address in [${span(pairs.test)}](${link(pairs.test)}).`, @@ -918,10 +976,16 @@ export async function generate(pack, out) { `${span(inputs.pairs)} lists no pair for it`, ]; const [file, name] = entry.pair.code?.split("#") ?? []; + const comparedText = + entry.table === null + ? compared[entry.pair.comparison] + : entry.pair.comparison === "table" + ? `the indexes, through its table ${tableLink(entry.table)}` + : `${compared[entry.pair.comparison]}, through its table ${tableLink(entry.table)}`; return [ entryLink(entry), states[entry.pair.state], - compared[entry.pair.comparison], + comparedText, file === undefined ? "none" : `${span(name)} in [${span(file)}](${link(file)})`, @@ -960,6 +1024,17 @@ export async function generate(pack, out) { const strays = [...pairs.pairs.values()].filter( (pair) => !shown.has(pair.address), ); + const addressLink = (address) => { + const [id, key] = address.split("#design."); + const spec = specs.get(id); + if (spec === undefined) return span(address); + const line = specLines( + readFileSync(join(root, spec.file), "utf8"), + ).design.get(key); + return line === undefined + ? `[${span(address)}](${link(spec.file)})` + : `[${span(address)}](${link(spec.file, line)})`; + }; if (strays.length > 0) write( "## Pairs without a member's declaration", @@ -967,12 +1042,13 @@ export async function generate(pack, out) { `${plural(strays.length, "pair")} in ${span(inputs.pairs)} ${strays.length === 1 ? "names" : "name"} no pinned declaration of a member.`, "", ...table( - ["Address", "Pair", "Compared", "Code"], + ["Address", "Pair", "Compared", "Code", "Why"], strays.map((pair) => [ - span(pair.address), + addressLink(pair.address), states[pair.state], compared[pair.comparison], pair.code === null ? "none" : span(pair.code), + pair.reason ?? "", ]), ), "", diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index 25d747f..60893a5 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -40,6 +40,9 @@ type PackPage = { readPinnedPairs(base: string, pack: string): unknown; readAnchorSites(base: string): unknown; readQuestionSources(base: string): unknown; + indexTables( + rows: { spec: string; key: string; declaration: string }[], + ): Map; specLines(text: string): { design: Map; questions: number[] }; opening(text: string, limit?: number): string; tierOf(openingLine: string): string | null; @@ -251,7 +254,7 @@ test("an input off its ruled shape is refused", async () => { await mkdir(join(base, "tests/types"), { recursive: true }); await mkdir(join(base, "design/decisions"), { recursive: true }); const pair = { - address: "spec:sample.one#design.typeOne", + address: "spec:application.generation-registry#design.typeRegistryReader", state: "bound", comparison: "type", code: "src/sample/index.ts#One", @@ -276,7 +279,7 @@ test("an input off its ruled shape is refused", async () => { ); await pairs([pair, pair]); expect(() => page.readPinnedPairs(base, "pack:sample")).toThrow( - "pairs[1] repeats spec:sample.one#design.typeOne", + "pairs[1] repeats spec:application.generation-registry#design.typeRegistryReader", ); // A question source that cites the question by its position, the form the rulings retire. await writeFile( @@ -369,3 +372,55 @@ test("the check names the first line where the committed page differs", () => { generated: "b", }); }); + +test("an index belongs to the table its Spec wrote last before it, as the pinned module chains it", () => { + const rows = [ + { + spec: "spec:sample.one", + key: "tableItems", + declaration: "items: defineTable({ name: v.string() })", + }, + { + spec: "spec:sample.one", + key: "validatorItem", + declaration: "const itemValidator = v.object({})", + }, + { + spec: "spec:sample.one", + key: "indexItemsByName", + declaration: '.index("by_name", ["name"])', + }, + { + spec: "spec:sample.one", + key: "indexItemsByNameUse", + declaration: "by_name serves the list", + }, + { + spec: "spec:sample.one", + key: "tableMarks", + declaration: "marks: defineTable({ at: v.number() })", + }, + { + spec: "spec:sample.one", + key: "indexMarksByAt", + declaration: '.index("by_at", ["at"])', + }, + { + spec: "spec:sample.two", + key: "indexOrphan", + declaration: '.index("by_key", ["key"])', + }, + ]; + // Addresses are built, so that the check of entry addresses outside the Specs reads no sample one. + const at = (spec: string, key: string) => `${spec}#design.${key}`; + expect([...page.indexTables(rows)]).toEqual([ + [ + at("spec:sample.one", "indexItemsByName"), + at("spec:sample.one", "tableItems"), + ], + [ + at("spec:sample.one", "indexMarksByAt"), + at("spec:sample.one", "tableMarks"), + ], + ]); +}); From 278ae070310ee5496b6b4401917d29d23e3c281d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:05:46 +0200 Subject: [PATCH 23/60] design: the write pause's statements of the history path move to the history rebuild, and PLAN names the new IDs Three Contract bullets of spec:application.write-pause stated what the history path does as a caller of the pause, behavior no code has: a rebuild that needs a consistent cut closes its view's sources, startGeneration closes one entry per source, and a source scope closes only for a generation startGeneration registers. They move verbatim to spec:application.history-rebuild as Workflow rules, with the narrative's clause that the rebuild closes the gate for its own scope. What src/gate realizes stays: the scope kinds, the generation exemption in gateAllows, closeScope with its generation, the operator entries' refusal of a source scope, abort's resume, and the gate's persistence across a restore. No Design entry and no open question moved. PLAN.md 3.4 names the history rebuild where the rebuild's row meant it, and section 4's L2-6 row names spec:application.history-rebuild as its parent. Co-Authored-By: Claude Opus 5.5 --- design/PLAN.md | 4 ++-- design/specs/application/history-rebuild.sdp.md | 5 ++++- design/specs/application/write-pause.sdp.md | 5 +---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/design/PLAN.md b/design/PLAN.md index ea474a8..72298c3 100644 --- a/design/PLAN.md +++ b/design/PLAN.md @@ -231,7 +231,7 @@ Fact slugs: `f01-serializable-mutations-under-occ`, `f02-component-calls-commit- | `spec:application.parent-use-cases` | behavior | feature | defined | refines epic; decidedBy D1, D10; constrainedBy Law 1, 2, 9, F2, F3, F13, `spec:constraints.one-call-per-context-per-use-case`; dependsOn `spec:context.context-component`, `spec:context.batch-shaped-api`, `spec:command.command-pipeline` | Contexts never read each other or call each other; cross-context rules in the parent, same transaction, or in an obligation; no handler issues commands; one receipt and outcome per use case; PlaceOrder is one command; grouping by flow; too-large operations rejected or a separate import command; OQ3 max lines `[non-blocking]`. Example space for L2-1 | | `spec:application.read-models` | behavior | feature | defined | refines epic; decidedBy D8; constrainedBy Law 9, F7, F15, `spec:constraints.zero-core-projection-jobs`; dependsOn `spec:context.queries` | The read-need table; zero projection jobs; projection properties; committed-or-later visibility; versions in results; reactive queries replace event-to-socket layers; CQRS as separate contracts. Example space for L2-2 | | `spec:application.projection-contract` | contract | story | defined | refines read-models | E-9: the projection signature shared by live update and rebuild; row conventions (tenant, generation, key, source version) | -| `spec:application.rebuild` | workflow | feature | defined | refines read-models; decidedBy D9; constrainedBy Law 10, F1, F17 | The four online steps; the missing-row rule for incremental updates; version-compare backfill; verify, switch, keep old; per-entity markers for counts and sums; the write pause for cross-stream history views (gate, fence, resume, abort); never commands or effects. Probe 6 `[non-blocking]`. Example space for L2-5, L2-6 | +| `spec:application.rebuild` | workflow | feature | defined | refines read-models; decidedBy D9; constrainedBy Law 10, F1, F17 | The four online steps; the missing-row rule for incremental updates; version-compare backfill; verify, switch, keep old; per-entity markers for counts and sums; the write pause for cross-stream history views (gate, fence, resume, abort), in `spec:application.history-rebuild`; never commands or effects. Probe 6 `[non-blocking]`. Example space for L2-5, L2-6 | | `spec:application.generation-registry` | contract | story | defined | refines rebuild; constrainedBy F13 | E-8: the generations table and states, the marker document, the migrations-component binding | | `spec:application.write-pause` | contract | story | defined | refines rebuild | E-8: the maintenance gate document, the writer check, fencing of background writers, operator resume and abort | | `spec:application.restore` | workflow | story | defined | refines `spec:operations.baseline-operations`; decidedBy D19; constrainedBy F12 | Restore with matching code and configuration; invariant checks for domain, journal and read models; what the recovery plan contains; restore is tested, not only backup. Example space for L2-8 | @@ -298,7 +298,7 @@ Every row of the doc's acceptance table becomes at least one `example` Spec. Whe | L2-3 | Orders of 1 line, 10 lines and the maximum | `spec:application.first-experiment` | `.order-of-1-line`, `.order-of-10-lines`, `.order-of-max-lines` | native | D | | L2-4 | Rename a typed handler or break its argument contract | `spec:command.command-declaration` | `.renamed-handler-fails-build` | build | C | | L2-5 | Rebuild a per-entity read model online while commands run; interrupt and resume | `spec:application.rebuild` | `.online-rebuild-interrupt-resume` | native | D | -| L2-6 | Rebuild a cross-stream history view under a write pause; interrupt | `spec:application.rebuild` | `.write-pause-rebuild-interrupt` | native | D | +| L2-6 | Rebuild a cross-stream history view under a write pause; interrupt | `spec:application.history-rebuild` | `.write-pause-rebuild-interrupt` | native | D | | L2-7 | Rebuild a stream that has a baseline event | `spec:context.journal` | `.rebuild-from-baseline` | native | B | | L2-8 | Restore a representative dataset with matching code and configuration | `spec:application.restore` | `.restore-representative-dataset` | end to end | D | | L2-9 | Run native acceptance with production configuration | `spec:application.first-experiment` | `.native-acceptance-production-configuration` | end to end | D | diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index ab8a749..0285c68 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -25,7 +25,7 @@ relations: Layer 2 · Detail: full · Traces: D2, D4, D9, D10, D18, Law 11, F1, F13, F19, Sc L2-6, E-8, E-9, E-24, E-38, E-40, E-48, E-49. -For a read model that depends on history across several streams the rebuild runs under a write pause, because it needs a consistent cut; the scope closed is the view's sources, the context and stream type pairs its bindings name, so every use case that writes one of them and the journal's baseline driver read the gate and are refused, background writers are fenced by that read and by the generation's fence, and an operator can resume or abort. Such a view is a `HistoryProjection` and its backfill pages each source stream's history under the pause. +For a read model that depends on history across several streams the rebuild runs under a write pause, because it needs a consistent cut; the scope closed is the view's sources, the context and stream type pairs its bindings name, so every use case that writes one of them and the journal's baseline driver read the gate and are refused, background writers are fenced by that read and by the generation's fence, and an operator can resume or abort. Such a view is a `HistoryProjection` and its backfill pages each source stream's history under the pause. The rebuild closes the gate for its own scope in the mutation that registers its generation. This workflow is the paused path of `spec:application.rebuild`, which holds the online path and what the two paths share: the operator entries, the batch chain with its fence and its progress row, the switch, the abort, the purge and the tenant fill. The history form and its fold are `spec:application.history-projection`, the gate and its source scopes are `spec:application.write-pause`, the cursor's fields are pinned by `spec:application.generation-registry`, and each source is read through its `list` and `history` queries of `spec:context.queries`. @@ -46,6 +46,9 @@ This workflow is the paused path of `spec:application.rebuild`, which holds the - rule: Under the write pause every writer in the scope reads the maintenance gate, background writers are fenced or drained, and an operator can resume or abort (D9) - rule: A refused write under the pause is a transient refusal, retryable and never a stored rejection (D4, D9) - rule: [extension] Under the pause a history row's recorded version for a stream means every event of that stream with the row's key up to that version is folded: a stream's events reach the fold in version order, from its first event on the backfill and the verify pass and after its last folded version on the live path, a generation in flight is written by its own batches alone while its sources are closed, and no retired generation is reopened; so a verify pass that repeats the backfill and folds no event finds the generation covering every source (E-8, E-9, D9, F1) +- rule: [extension] A rebuild that needs a consistent cut closes the sources of the paused view, one `source:` scope per context and stream type its bindings name, so every writer of those streams is held whether or not it maintains the view; the closed entries name the generation, and `abortGeneration` and the switch's resume reopen every entry that names it (E-8, E-38, D9, Sc L2-6) +- rule: `startGeneration` closes one entry per source of a paused view and records its own generation on each in the mutation that inserts the generation row, so every entry that names a generation names a row that exists (D9, E-8) +- rule: [extension] A source scope closes only for a generation `startGeneration` registers: `rollbackGeneration` of `spec:application.rebuild` refuses a retired generation with `pauseRequired`, because no function would close its sources while live commands fold onto rows that missed the events since its retirement, so a history view returns to earlier rules only through a new generation, whose start closes its sources again (E-8, D9, Sc L2-6) - For a history-dependent read model the generation row records `pauseRequired`, and `startGeneration` closes the maintenance gate for every source scope of the read model's bindings in the mutation that inserts the row, recording its own generation on each closed entry, so the gate is closed before the first batch is scheduled and this generation's batches are the one background writer allowed through (D9, E-8, E-38) - While the gate is closed for the sources, every use case whose declaration writes one of them and the journal's baseline driver refuse with `writePaused` before any write, whether or not they maintain the view; a batch scheduled before the close reads the closed gate when it starts and refuses, a batch running when the close commits loses the optimistic-concurrency race on the gate document and re-runs into the refusal, and a batch of a superseded chain refuses because its generation fence is stale; nothing needs to drain (D9, D4, E-8, E-38, F1) - Backfill under the pause enumerates a consistent cut because no source changes: each history batch takes the next stream of its cursor's source in its tenant, reads one `history` page of it from the saved event cursor, folds the page into the building generation through `applyHistoryProjection` in backfill mode, and saves the source, the stream and the event cursor on the progress row, moving to the next stream when the page reports `isDone`, to the next source when that source's enumeration in the tenant ends, and to the next tenant after the last source; an interrupted batch resumes from its cursor with the gate still closed, and the gate never reopens by itself (D9, E-9, Sc L2-6) diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 4cea00d..2b6d29c 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -23,7 +23,7 @@ relations: Story · Detail: full · Traces: D4, D9, D19, Law 6, F1, F9, F12, F13, Sc L2-6, Sc L2-8, E-8, E-42, E-43, E-48. -The write pause is the maintenance gate every writer in a scope reads inside its own mutation. It exists for the rebuild of a read model that depends on history across several streams, where a consistent cut is needed, and the restore procedure holds the same door closed for every scope through the environment, because the backup archive replaces the gate document, until its checks pass. A closed gate turns every write in scope into a transient refusal, retryable and never stored; a background batch scheduled before the close reads the closed gate when it starts, and a batch of a superseded chain is refused by its generation's fence. The rebuild closes the gate for its own scope in the mutation that registers its generation, an operator entry closes a tenant or the whole deployment, and operator entries resume and abort. Nothing reopens the gate by itself. Optimistic concurrency makes the close a consistent cut, so the gate has one closed state and no drain. +The write pause is the maintenance gate every writer in a scope reads inside its own mutation. It exists for the rebuild of a read model that depends on history across several streams, where a consistent cut is needed, and the restore procedure holds the same door closed for every scope through the environment, because the backup archive replaces the gate document, until its checks pass. A closed gate turns every write in scope into a transient refusal, retryable and never stored; a background batch scheduled before the close reads the closed gate when it starts, and a batch of a superseded chain is refused by its generation's fence. An operator entry closes a tenant or the whole deployment, and operator entries resume and abort. Nothing reopens the gate by itself. Optimistic concurrency makes the close a consistent cut, so the gate has one closed state and no drain. ## Intent @@ -47,14 +47,11 @@ The write pause is the maintenance gate every writer in a scope reads inside its - A use case is in scope when `all` is closed, when its tenant is closed, or when a stream type its declaration's `writes` names is closed (E-8, E-38, D9) - The restore door is read before the gate document: while the deployment's `MAINTENANCE_MODE` environment variable is exactly `restore`, every gate read answers closed with the scope `all` and the reason `restore` and reads no document; any other value, and an unset variable, leave the answer to the gate document (D19, F12, Sc L2-8, E-42) - A deployment with no gate document is open: the gate read never writes, and the first close inserts the document (E-8, D9) -- [extension] A rebuild that needs a consistent cut closes the sources of the paused view, one `source:` scope per context and stream type its bindings name, so every writer of those streams is held whether or not it maintains the view; the closed entries name the generation, and `abortGeneration` and the switch's resume reopen every entry that names it (E-8, E-38, D9, Sc L2-6) - [extension] The rebuild a scope was closed for is the one background writer allowed through it: a gate read that states a generation passes a closed entry only when the entry names a generation and names that one, so an entry with no generation admits no one, and a gate read that states no generation passes no closed entry (E-8, D9) - Background writers are fenced, not drained: a batch scheduled before the close reads the closed gate when it starts and refuses, a batch running when the close commits loses the optimistic-concurrency race on the gate document and re-runs into the refusal, a batch that committed first wrote before the cut, and a batch of a superseded chain checkpoints nothing and schedules nothing because the generation row's fence differs from its argument, writing at most the interruption on the progress row while the row's `interruptedFence` equals its fence (D9, E-8, F1) - The gate has one `closed` state per scope and no draining state, drain interval or confirmation step, because the serialization above already gives the consistent cut and a second state would only add an operator duty (E-8, F1) -- `startGeneration` closes one entry per source of a paused view and records its own generation on each in the mutation that inserts the generation row, so every entry that names a generation names a row that exists (D9, E-8) - [extension] The operator entries are `closeGate` and `resumeGate` for the scope `all` and for a tenant scope, and `getGate` and `getGateAudit` to read; each follows the operator entry contract of `spec:command.actor-and-scope`, and a source scope is closed and reopened only by the rebuild (E-8, E-48, D19) - Abort marks the generation aborted and resumes its scopes in one mutation (D9, Sc L2-6) -- [extension] A source scope closes only for a generation `startGeneration` registers: `rollbackGeneration` of `spec:application.rebuild` refuses a retired generation with `pauseRequired`, because no function would close its sources while live commands fold onto rows that missed the events since its retirement, so a history view returns to earlier rules only through a new generation, whose start closes its sources again (E-8, D9, Sc L2-6) - The restore procedure cannot use the gate document, because the backup archive replaces it; the restore door keeps every writer out through the environment, which survives a restore because backups exclude environment variables; the restore procedure's own mutations, which write only `restoreRuns` and the generation rows the accepted branch resumes with their progress rows, are the one exemption, and that workflow states it (D19, F12, Sc L2-8, E-42) - [extension] A closed entry the backup archive brings back is as closed as one written live: an entry that names a generation stays closed while the restore's pending-work step resumes that generation, and reopens only when that generation is switched or an operator aborts it, and a tenant or `all` entry stays closed until an operator resumes it, so the gate never reopens by itself through a restore either (E-8, E-42, F12, D19) - [extension] Gate changes are treated as mandatory audit: every close and every resume inserts one record through `writeOperatorAudit` of `spec:operations.baseline-operations` inside the same mutation and fails closed, so a gate change whose audit insert fails changes nothing: the gate document is as it was and no record exists; the doc fails closed only for mandatory business or security audit and does not name gate changes among them (E-8, E-43, D19) From e4e468a14666fa5b2914f026030976a7632013be Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:05:46 +0200 Subject: [PATCH 24/60] build: the line pointers into the rebuild Spec become the entry addresses they meant 108 comment lines in tests/simulator, tests/types/rebuild.test-d.ts and tests/native pointed into design/specs/application/rebuild.sdp.md by line (decision 56). Each now names its entry address at the Spec that holds it today, all in spec:application.rebuild; a bare line number was resolved against the Spec at the commit that wrote the comment. Seven pointers meant one of four Workflow rules or the Design narrative, which have no address; they name the Spec and the rule in words. Comments only; no test changes. Co-Authored-By: Claude Opus 5.5 --- ....first-rebuild-installs-read-model.test.ts | 6 +- tests/native/read-models.test.ts | 8 +- tests/native/rebuild-install.ts | 10 +- ...ld.online-rebuild-interrupt-resume.test.ts | 30 ++-- tests/simulator/example.test.ts | 7 +- tests/simulator/gate-support.ts | 10 +- tests/simulator/read-model.test.ts | 15 +- tests/simulator/rebuild.test.ts | 167 ++++++++++++------ tests/types/rebuild.test-d.ts | 83 ++++++--- 9 files changed, 224 insertions(+), 112 deletions(-) diff --git a/tests/native/generation-registry.first-rebuild-installs-read-model.test.ts b/tests/native/generation-registry.first-rebuild-installs-read-model.test.ts index 72dfca2..ab42d18 100644 --- a/tests/native/generation-registry.first-rebuild-installs-read-model.test.ts +++ b/tests/native/generation-registry.first-rebuild-installs-read-model.test.ts @@ -86,7 +86,8 @@ export async function plainNativeMessage(call: Promise) { } async function rebuild(world: World) { const backend = required(world.backend, "the backend"); - // generation-registry.first-rebuild-installs-read-model.sdp.md:30; rebuild.sdp.md:123: the closed tenant gate parks the first batch. + // generation-registry.first-rebuild-installs-read-model.sdp.md:30; + // spec:application.rebuild#design.step3: the closed tenant gate parks the first batch. await backend.admin.run(getFunctionName(internal.gate.closeGate), { scopeKey: `tenant:${tenantId}`, reason: "observe the first generation", @@ -121,7 +122,8 @@ async function rebuild(world: World) { operator, }), ); - // generation-registry.first-rebuild-installs-read-model.sdp.md:30; rebuild.sdp.md:115: exact in-flight refusal. + // generation-registry.first-rebuild-installs-read-model.sdp.md:30; + // spec:application.rebuild#design.fnStartGeneration: exact in-flight refusal. expect(world.second).toBe( "Read model documentSummary already has generation 1 in building", ); diff --git a/tests/native/read-models.test.ts b/tests/native/read-models.test.ts index 8a80bc4..7315d76 100644 --- a/tests/native/read-models.test.ts +++ b/tests/native/read-models.test.ts @@ -77,7 +77,8 @@ test("native: a command whose read model has no generation fails as a technical events: [], summaries: [], }); - // generation-registry.sdp.md:37; rebuild.sdp.md:115,133: the first rebuild installs generation 1. + // generation-registry.sdp.md:37; spec:application.rebuild#design.fnStartGeneration and + // spec:application.rebuild#design.fnSwitchGeneration: the first rebuild installs generation 1. await install(backend); const registry = await backend.admin.readTable("generations"); expect(registry).toMatchObject([ @@ -89,7 +90,8 @@ test("native: a command whose read model has no generation fails as a technical startedBy: operator, }, ]); - // rebuild.sdp.md:115: an active generation does not refuse the next rebuild. + // spec:application.rebuild#design.fnStartGeneration: an active generation does not refuse the + // next rebuild. const nextId = await backend.admin.run( getFunctionName(internal.rebuild.startGeneration), { @@ -100,7 +102,7 @@ test("native: a command whose read model has no generation fails as a technical const next = (await backend.admin.readTable("generations")).find( (row) => row._id === nextId, ); - // rebuild.sdp.md:115: start takes the next generation number. + // spec:application.rebuild#design.fnStartGeneration: start takes the next generation number. expect(next).toMatchObject({ generation: 2, projectionVersion: 1, diff --git a/tests/native/rebuild-install.ts b/tests/native/rebuild-install.ts index e64309b..55274c6 100644 --- a/tests/native/rebuild-install.ts +++ b/tests/native/rebuild-install.ts @@ -20,7 +20,8 @@ export type Progress = Record & { }; export type GenerationEntry = { generation: Generation; progress: Progress }; -// rebuild.sdp.md:137: the operator query returns each generation with its progress row. +// spec:application.rebuild#design.fnGetGenerations: the operator query returns each generation with +// its progress row. export async function generations(backend: Backend, readModel: string) { return (await backend.admin.run("rebuild:getGenerations", { readModel, @@ -65,7 +66,9 @@ export async function waitForGeneration( } } -// generation-registry.sdp.md:37; rebuild.sdp.md:115,127,133: install by the first rebuild. +// generation-registry.sdp.md:37; spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.verifySteps and +// spec:application.rebuild#design.fnSwitchGeneration: install by the first rebuild. async function install( backend: Backend, readModel: string, @@ -81,7 +84,8 @@ async function install( if (typeof id !== "string") throw new Error("startGeneration did not return an ID"); const verified = await waitForGeneration(backend, readModel, id); - // rebuild.sdp.md:115: the installed generation is at the version the setup stated. + // spec:application.rebuild#design.fnStartGeneration: the installed generation is at the version + // the setup stated. expect(verified.generation.projectionVersion).toBe(projectionVersion); await backend.admin.run(refs.switch, { generationId: id, operator }); return id; diff --git a/tests/native/rebuild.online-rebuild-interrupt-resume.test.ts b/tests/native/rebuild.online-rebuild-interrupt-resume.test.ts index a441948..5f057bb 100644 --- a/tests/native/rebuild.online-rebuild-interrupt-resume.test.ts +++ b/tests/native/rebuild.online-rebuild-interrupt-resume.test.ts @@ -657,8 +657,9 @@ bindExample( { generationId: id2(w), operator: "interrupt operator" }, ); await stopLive(w); - // rebuild.online-rebuild-interrupt-resume.sdp.md:33; rebuild.sdp.md step1:125: the batch the interrupt - // replaced records the interruption, with the operator from the generation row, and schedules nothing. + // rebuild.online-rebuild-interrupt-resume.sdp.md:33; spec:application.rebuild#design.step1: + // the batch the interrupt replaced records the interruption, with the operator from the + // generation row, and schedules nothing. w.interrupted = await waitForGeneration( backendOf(w), readModel, @@ -713,7 +714,8 @@ bindExample( (row) => row.tenantId === tenants[0] && row.key === w.existingOrder, )?.status, ).toBe("cancelled"); - // rebuild.sdp.md:69: an existing subject without a building row remains absent until a batch writes it. + // spec:application.rebuild, its rule that live commands also write the generation being + // built: an existing subject without a building row remains absent until a batch writes it. expect( (await rows(w, 2)).find( (row) => row.tenantId === tenants[1] && row.key === w.missingOrder, @@ -746,7 +748,8 @@ bindExample( "changedBy", ]), ); - // rebuild.sdp.md:134: the interrupt replaces the fence, marks it as its own and records the operator. + // spec:application.rebuild#design.fnInterruptGeneration: the interrupt replaces the fence, + // marks it as its own and records the operator. expect(w.interrupted.generation).toMatchObject({ fence: required(w.oldFence, "the original fence") + 1, interruptedFence: required(w.oldFence, "the original fence") + 1, @@ -767,7 +770,8 @@ bindExample( "changedBy", ]), ); - // rebuild.sdp.md:131: resume replaces the fence and keeps the batch size. + // spec:application.rebuild#design.fnResumeChain: resume replaces the fence and keeps the + // batch size. expect(w.resumed).toMatchObject({ generation: { fence: w.interrupted.generation.fence + 1, @@ -775,7 +779,7 @@ bindExample( }, progress: { batchSize: 1 }, }); - // rebuild.sdp.md:131: resume clears the interrupt error. + // spec:application.rebuild#design.fnResumeChain: resume clears the interrupt error. expect(w.resumed.progress.lastError).toBeUndefined(); // rebuild.online-rebuild-interrupt-resume.sdp.md:36: each operator change records a new time. expect(Number(w.interrupted.generation.changedAt)).toBeGreaterThan( @@ -858,13 +862,16 @@ bindExample( "the live writes before rollback", ); const retiredRows = await rows(w, 1); - // rebuild.online-rebuild-interrupt-resume.sdp.md:37; rebuild.sdp.md:74: the retired generation was not written by the new order. + // rebuild.online-rebuild-interrupt-resume.sdp.md:37; spec:application.rebuild, its rule that + // a retired generation is not written: the retired generation was not written by the new + // order. expect( retiredRows.find( (row) => row.tenantId === tenants[0] && row.key === "after-switch", ), ).toBeUndefined(); - // rebuild.online-rebuild-interrupt-resume.sdp.md:37; rebuild.sdp.md:74: the retired row still needs its cancellation repaired. + // rebuild.online-rebuild-interrupt-resume.sdp.md:37; spec:application.rebuild, its rule that + // a retired generation is not written: the retired row still needs its cancellation repaired. expect( retiredRows.find( (row) => row.tenantId === tenants[0] && row.key === cancelled, @@ -901,7 +908,8 @@ bindExample( (record) => record.identifier === "rebuild:backfillBatch", ), ).toEqual([]); - // rebuild.sdp.md:134: rollback retains generation 1's batch size and cumulative counts. + // spec:application.rebuild#design.fnRollbackGeneration: rollback retains generation 1's batch + // size and cumulative counts. expect(verified.progress.batchSize).toBe(before.progress.batchSize); // rebuild.online-rebuild-interrupt-resume.sdp.md:37: every checkpoint in rollback is one committed verify batch. expect(verified.progress.batchesDone - before.progress.batchesDone).toBe( @@ -912,7 +920,9 @@ bindExample( record.error === null, ).length, ); - // rebuild.online-rebuild-interrupt-resume.sdp.md:37; rebuild.sdp.md:127: exactly one verify pass, at generation 1's retained size. + // rebuild.online-rebuild-interrupt-resume.sdp.md:37; + // spec:application.rebuild#design.verifySteps: exactly one verify pass, at generation 1's + // retained size. expect(verified.progress.batchesDone - before.progress.batchesDone).toBe( expectedBatches, ); diff --git a/tests/simulator/example.test.ts b/tests/simulator/example.test.ts index 4e73857..82fb44a 100644 --- a/tests/simulator/example.test.ts +++ b/tests/simulator/example.test.ts @@ -283,7 +283,9 @@ test( entry: "PlaceOrder", message: "An order needs at least one line", }); - // rebuild.sdp.md:115,133: installing returns a generation ID; its number is on the row. + // spec:application.rebuild#design.fnStartGeneration and + // spec:application.rebuild#design.fnSwitchGeneration: installing returns a generation ID; its + // number is on the row. await install(t); expect( await t.run((ctx) => ctx.db.query("generations").collect()), @@ -374,7 +376,8 @@ test( message: "A quantity must be a positive whole number, not 0", details: { quantity: 0 }, }); - // rebuild.sdp.md:115: an unknown read model is refused with the exact message. + // spec:application.rebuild#design.fnStartGeneration: an unknown read model is refused with the + // exact message. expect( String( await failure( diff --git a/tests/simulator/gate-support.ts b/tests/simulator/gate-support.ts index 8b3d2e7..586d85d 100644 --- a/tests/simulator/gate-support.ts +++ b/tests/simulator/gate-support.ts @@ -117,7 +117,9 @@ export const inspection = ( export const depotRows = (t: GateApp) => t.run((ctx) => ctx.runQuery(inspection, {})); -// generation-registry.sdp.md:37; rebuild.sdp.md:115,127,133: scheduled batches finish before switch. +// generation-registry.sdp.md:37; spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.verifySteps and +// spec:application.rebuild#design.fnSwitchGeneration: scheduled batches finish before switch. export async function installFixtureReadModel( t: GateApp, readModel = "documentSummary", @@ -138,7 +140,8 @@ export async function installFixtureReadModel( generationId, operator, }); - // rebuild.sdp.md:115: the active generation is at the version the setup stated. + // spec:application.rebuild#design.fnStartGeneration: the active generation is at the version + // the setup stated. expect(await t.run((ctx) => ctx.db.get(generationId))).toMatchObject({ state: "active", projectionVersion, @@ -166,7 +169,8 @@ export async function installOrderSummary( generationId, operator, }); - // rebuild.sdp.md:115: the active generation is at the version the setup stated. + // spec:application.rebuild#design.fnStartGeneration: the active generation is at the version + // the setup stated. expect(await t.run((ctx) => ctx.db.get(generationId))).toMatchObject({ state: "active", projectionVersion, diff --git a/tests/simulator/read-model.test.ts b/tests/simulator/read-model.test.ts index 6eaa18f..07f3b64 100644 --- a/tests/simulator/read-model.test.ts +++ b/tests/simulator/read-model.test.ts @@ -214,7 +214,8 @@ describe("the first rebuild", () => { async () => { const t = app(); const generationId = await install(t); - // generation-registry.sdp.md:37; rebuild.sdp.md:115,133: installation is the first rebuild. + // generation-registry.sdp.md:37; spec:application.rebuild#design.fnStartGeneration and + // spec:application.rebuild#design.fnSwitchGeneration: installation is the first rebuild. expect(await generations(t)).toMatchObject([ { _id: generationId, @@ -230,7 +231,8 @@ describe("the first rebuild", () => { readModel: "documentSummary", operator, }); - // rebuild.sdp.md:115: active does not refuse a start; building does, by this exact message. + // spec:application.rebuild#design.fnStartGeneration: active does not refuse a start; + // building does, by this exact message. await expect( t.mutation(internal.rebuild.startGeneration, { readModel: "documentSummary", @@ -239,7 +241,8 @@ describe("the first rebuild", () => { ).rejects.toThrow( /^Read model documentSummary already has generation 2 in building$/, ); - // rebuild.sdp.md:115: the refused start inserted no third generation. + // spec:application.rebuild#design.fnStartGeneration: the refused start inserted no third + // generation. expect(await generations(t)).toHaveLength(2); await t.finishAllScheduledFunctions(() => vi.runOnlyPendingTimers()); await t.mutation(internal.rebuild.switchGeneration, { @@ -259,7 +262,8 @@ describe("the first rebuild", () => { const t = app(); await registry(t, [[3, "aborted"]]); const generationId = await install(t); - // rebuild.sdp.md:115: the next generation is one above the last, including an aborted one. + // spec:application.rebuild#design.fnStartGeneration: the next generation is one above the + // last, including an aborted one. expect(await generations(t)).toContainEqual( expect.objectContaining({ _id: generationId, @@ -267,7 +271,8 @@ describe("the first rebuild", () => { state: "active", }), ); - // rebuild.sdp.md:115: an unknown read model is refused before registration. + // spec:application.rebuild#design.fnStartGeneration: an unknown read model is refused before + // registration. await expect( t.mutation(internal.rebuild.startGeneration, { readModel: "nope", diff --git a/tests/simulator/rebuild.test.ts b/tests/simulator/rebuild.test.ts index c179811..b16ec5a 100644 --- a/tests/simulator/rebuild.test.ts +++ b/tests/simulator/rebuild.test.ts @@ -86,7 +86,8 @@ async function lastSchedule(t: App, name: string, args: object) { }); } -// rebuild.sdp.md fnStartGeneration:115; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnStartGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test.each([false, true])( "convex-test: install on an empty deployment, tenant present=%s", async (present) => { @@ -175,7 +176,7 @@ test.each([false, true])( }, ); -// rebuild.sdp.md fnStartGeneration:115; projection-contract.sdp.md typeReadModel:67. +// spec:application.rebuild#design.fnStartGeneration; projection-contract.sdp.md typeReadModel:67. test("convex-test: the default projection is the first and generation numbers increase past aborted rows", async () => { const t = rebuildApp(); const first = await t.mutation(internal.rebuild.startGeneration, { @@ -192,7 +193,9 @@ test("convex-test: the default projection is the first and generation numbers in expect((await read(t, second)).generation.generation).toBe(2); }); -// rebuild.sdp.md fnStartGeneration:115, fnBatchSizeFor:116, errorUnknownGeneration:143. +// spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.fnBatchSizeFor, +// spec:application.rebuild#design.errorUnknownGeneration. test("convex-test: start refusals follow target, projection, batch size, in-flight, empty list and fill order", async () => { const t = rebuildApp(); await grantsWithoutTenants(t, 1); @@ -243,7 +246,8 @@ test("convex-test: start refusals follow target, projection, batch size, in-flig } }); -// rebuild.sdp.md fnStartGeneration:115, fnBatchSizeFor:116. +// spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.fnBatchSizeFor. test.each([0, -1, 1.5, NaN, Infinity])( "convex-test: start refuses batch size %s with its full message", async (batchSize) => { @@ -256,7 +260,8 @@ test.each([0, -1, 1.5, NaN, Infinity])( }, ); -// rebuild.sdp.md fnStartGeneration:115, limitBatchSize:146. +// spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.limitBatchSize. test.each([100, 101])( "convex-test: start stores the capped batch size for requested %i", async (batchSize) => { @@ -266,8 +271,13 @@ test.each([100, 101])( }, ); -// rebuild.sdp.md errorUnknownGeneration:143, fnInterruptGeneration:130, fnResumeGeneration:132, -// fnSwitchGeneration:133, fnRollbackGeneration:134, fnAbortGeneration:135, fnPurgeGeneration:136. +// spec:application.rebuild#design.errorUnknownGeneration, +// spec:application.rebuild#design.fnInterruptGeneration, +// spec:application.rebuild#design.fnResumeGeneration, +// spec:application.rebuild#design.fnSwitchGeneration, +// spec:application.rebuild#design.fnRollbackGeneration, +// spec:application.rebuild#design.fnAbortGeneration, +// spec:application.rebuild#design.fnPurgeGeneration. test("convex-test: every generation entry refuses an unknown ID and every batch leaves it alone", async () => { const t = rebuildApp(); const id = await start(t); @@ -309,7 +319,8 @@ test("convex-test: every generation entry refuses an unknown ID and every batch expect(await snapshot(t)).toStrictEqual(before); }); -// rebuild.sdp.md Design:107, the generation with no progress row; fnInterruptGeneration:134. +// spec:application.rebuild, its Design narrative on a generation with no progress row; +// spec:application.rebuild#design.fnInterruptGeneration. test("convex-test: every entry that reads the progress row and every batch over a generation with none throws, and the interrupt reads none", async () => { const t = rebuildApp(); const id = await start(t); @@ -361,7 +372,8 @@ test("convex-test: every entry that reads the progress row and every batch over }); }); -// actor-and-scope.sdp.md fnAssertOperator:91; rebuild.sdp.md fnStartGeneration:115 through fnFillTenants:139. +// actor-and-scope.sdp.md fnAssertOperator:91; spec:application.rebuild#design.fnStartGeneration +// through spec:application.rebuild#design.fnFillTenants. test.each(["", " \n\t ", " ".repeat(513), "x".repeat(513), "é".repeat(257)])( "convex-test: every operator entry refuses invalid operator %j before a lookup", async (stated) => { @@ -405,7 +417,7 @@ test.each(["", " \n\t ", " ".repeat(513), "x".repeat(513), "é".repeat(257)])( }, ); -// actor-and-scope.sdp.md fnAssertOperator:91; rebuild.sdp.md convexSurface:112. +// actor-and-scope.sdp.md fnAssertOperator:91; spec:application.rebuild#design.convexSurface. test("convex-test: every plain entry checks the operator before touching ctx", async () => { const t = rebuildApp(); const id = await start(t); @@ -455,7 +467,8 @@ test("convex-test: every plain entry checks the operator before touching ctx", a }); }); -// rebuild.sdp.md step6:126, verifySteps:127, fnEnumerateCall:120; actor-and-scope.sdp.md fnNextTenant:89. +// spec:application.rebuild#design.step6, spec:application.rebuild#design.verifySteps, +// spec:application.rebuild#design.fnEnumerateCall; actor-and-scope.sdp.md fnNextTenant:89. test("convex-test: page cursors continue, tenants cross in tenant-ID order and verify restarts at the first tenant", async () => { const t = rebuildApp(); await create(t, "z", "z", "tenant-z"); @@ -520,7 +533,8 @@ test("convex-test: page cursors continue, tenants cross in tenant-ID order and v await lastSchedule(t, "verifyBatch", { generationId: id, fence: 1 }); }); -// rebuild.sdp.md step2:122, step6:126. The empty tenant is an independent tenant-list obligation. +// spec:application.rebuild#design.step2, spec:application.rebuild#design.step6. The empty tenant is +// an independent tenant-list obligation. test("convex-test: an empty tenant consumes a batch and advances to the next tenant", async () => { const t = rebuildApp(); await tenant(t, "tenant-a"); @@ -545,7 +559,10 @@ test("convex-test: an empty tenant consumes a batch and advances to the next ten ]); }); -// rebuild.sdp.md rule:81, step6:126, verifySteps:127. The tenant behind the cursor is an independent obligation. +// spec:application.rebuild, its rule that a tenant entering the tenant list behind a backfill's +// cursor is not visited by that pass; spec:application.rebuild#design.step6, +// spec:application.rebuild#design.verifySteps. The tenant behind the cursor is an independent +// obligation. test("convex-test: a tenant inserted between crossed tenants is skipped by backfill and visited by verify", async () => { const t = rebuildApp(); await install(t); @@ -580,7 +597,9 @@ test("convex-test: a tenant inserted between crossed tenants is skipped by backf ); }); -// rebuild.sdp.md step1:125, verifySteps:131, purgeSteps:132, limitOutstandingBatches:152. +// spec:application.rebuild#design.step1, spec:application.rebuild#design.verifySteps, +// spec:application.rebuild#design.purgeSteps, +// spec:application.rebuild#design.limitOutstandingBatches. test.each(["backfill", "verify", "purge"] as const)( "convex-test: in %s the batch the interrupt replaced records it once, and after a resume writes nothing", async (pass) => { @@ -639,7 +658,10 @@ test.each(["backfill", "verify", "purge"] as const)( }, ); -// rebuild.sdp.md fnInterruptGeneration:134, fnResumeChain:135, fnResumeGeneration:136; rebuild.online-rebuild-interrupt-resume.sdp.md:38. +// spec:application.rebuild#design.fnInterruptGeneration, +// spec:application.rebuild#design.fnResumeChain, +// spec:application.rebuild#design.fnResumeGeneration; +// rebuild.online-rebuild-interrupt-resume.sdp.md:38. test("convex-test: interrupt after exactly three batches and resume at the stored size with a new fence", async () => { const t = rebuildApp(); for (let i = 0; i < 6; i++) await create(t, `d${i}`); @@ -698,7 +720,8 @@ test("convex-test: interrupt after exactly three batches and resume at the store expect(next.progress.cursor).not.toEqual(resumed.progress.cursor); }); -// rebuild.sdp.md fnInterruptGeneration:134, step1:125; rebuild.online-rebuild-interrupt-resume.sdp.md:38. +// spec:application.rebuild#design.fnInterruptGeneration, spec:application.rebuild#design.step1; +// rebuild.online-rebuild-interrupt-resume.sdp.md:38. test("convex-test: an interrupt while a batch is scheduled leaves the progress row untouched, and that batch records the interruption and schedules nothing", async () => { const t = rebuildApp(); for (let i = 0; i < 3; i++) await create(t, `d${i}`); @@ -740,7 +763,8 @@ test("convex-test: an interrupt while a batch is scheduled leaves the progress r expect(await scheduled(t)).toStrictEqual(queued); }); -// rebuild.sdp.md step1:125, fnInterruptGeneration:134, fnResumeChain:135; generation-registry.sdp.md tableGenerations. +// spec:application.rebuild#design.step1, spec:application.rebuild#design.fnInterruptGeneration, +// spec:application.rebuild#design.fnResumeChain; generation-registry.sdp.md tableGenerations. test("convex-test: a batch pending across an interrupt and a resume, or across a resume alone, writes nothing", async () => { const t = rebuildApp(); for (let i = 0; i < 3; i++) await create(t, `d${i}`); @@ -763,7 +787,8 @@ test("convex-test: a batch pending across an interrupt and a resume, or across a } }); -// rebuild.sdp.md step1:125, fnInterruptGeneration:134; generation-registry.sdp.md tableGenerations. +// spec:application.rebuild#design.step1, spec:application.rebuild#design.fnInterruptGeneration; +// generation-registry.sdp.md tableGenerations. test("convex-test: a batch pending across two interrupts writes the note of the second once", async () => { const t = rebuildApp(); for (let i = 0; i < 3; i++) await create(t, `d${i}`); @@ -796,7 +821,8 @@ test("convex-test: a batch pending across two interrupts writes the note of the expect(await snapshot(t)).toStrictEqual(recorded); }); -// rebuild.sdp.md fnInterruptGeneration:134, fnResumeChain:135. +// spec:application.rebuild#design.fnInterruptGeneration, +// spec:application.rebuild#design.fnResumeChain. test.each(states)( "convex-test: an idle pass in %s cannot be resumed, and the interrupt decides from the state alone", async (state) => { @@ -840,7 +866,8 @@ test.each(states)( }, ); -// rebuild.sdp.md step3:123, fnResumeChain:131; write-pause.sdp.md fnGateAllows, restoreDoor. +// spec:application.rebuild#design.step3, spec:application.rebuild#design.fnResumeChain; +// write-pause.sdp.md fnGateAllows, restoreDoor. test.each(["tenant", "restore"])( "convex-test: a parked batch under %s records its error without checkpointing and resumes after an interrupt", async (gate) => { @@ -1040,7 +1067,7 @@ test("convex-test: active version one and building version two project live writ ).toEqual(["deleted-before", "deleted-live", "live"]); }); -// rebuild.sdp.md verifySteps:127; projection-contract.sdp.md step1:90, step3:92. +// spec:application.rebuild#design.verifySteps; projection-contract.sdp.md step1:90, step3:92. test("convex-test: verify inserts a missing row, updates an older row and deletes a row projected to null", async () => { const t = rebuildApp(); for (const key of ["missing", "older", "deleted"]) @@ -1139,7 +1166,7 @@ test.each(["active", "building", "verifying"] as const)( }, ); -// rebuild.sdp.md fnSwitchGeneration:133; generation-registry.sdp.md transitionCost. +// spec:application.rebuild#design.fnSwitchGeneration; generation-registry.sdp.md transitionCost. test.each([undefined, 0, 2592000000])( "convex-test: switch patches both generations atomically with rollback period %s", async (rollbackPeriodMs) => { @@ -1179,7 +1206,7 @@ test.each([undefined, 0, 2592000000])( }, ); -// rebuild.sdp.md fnSwitchGeneration:133. +// spec:application.rebuild#design.fnSwitchGeneration. test.each(states.filter((s) => s !== "verified"))( "convex-test: switch refuses %s before an invalid rollback period", async (state) => { @@ -1198,7 +1225,7 @@ test.each(states.filter((s) => s !== "verified"))( }, ); -// rebuild.sdp.md fnSwitchGeneration:133. +// spec:application.rebuild#design.fnSwitchGeneration. test.each([-1, 0.5, 2592000001, NaN, Infinity])( "convex-test: switch refuses rollback period %s without changing either row", async (rollbackPeriodMs) => { @@ -1219,7 +1246,8 @@ test.each([-1, 0.5, 2592000001, NaN, Infinity])( }, ); -// rebuild.sdp.md fnSwitchGeneration:133, fnAbortGeneration:135. +// spec:application.rebuild#design.fnSwitchGeneration, +// spec:application.rebuild#design.fnAbortGeneration. test("convex-test: abort cannot remove the active generation while another awaits switch", async () => { const t = rebuildApp(); const active = await install(t); @@ -1247,7 +1275,8 @@ test("convex-test: abort cannot remove the active generation while another await expect((await read(t, id)).generation.state).toBe("active"); }); -// rebuild.sdp.md fnRollbackGeneration:134, verifySteps:127; rebuild.online-rebuild-interrupt-resume.sdp.md:38. +// spec:application.rebuild#design.fnRollbackGeneration, +// spec:application.rebuild#design.verifySteps; rebuild.online-rebuild-interrupt-resume.sdp.md:38. test("convex-test: rollback at version two repairs intervening creates, updates and a deletion before switch", async () => { const t = rebuildApp(); await install(t, "documentSummary"); @@ -1362,7 +1391,8 @@ test("convex-test: rollback at version two repairs intervening creates, updates expect((await read(t, id)).generation.state).toBe("retired"); }); -// rebuild.sdp.md fnRollbackGeneration:134, limitRollbackPeriod:150. +// spec:application.rebuild#design.fnRollbackGeneration, +// spec:application.rebuild#design.limitRollbackPeriod. test.each(states.filter((s) => s !== "retired"))( "convex-test: rollback refuses %s", async (state) => { @@ -1380,7 +1410,8 @@ test.each(states.filter((s) => s !== "retired"))( }, ); -// rebuild.sdp.md fnRollbackGeneration:134. The remaining five refusals are checked in their pinned order. +// spec:application.rebuild#design.fnRollbackGeneration. The remaining five refusals are checked in +// their pinned order. test("convex-test: rollback checks period, purge, pause, in-flight generation and projection in order", async () => { const t = rebuildApp(); const old = await install(t); @@ -1418,8 +1449,10 @@ test("convex-test: rollback checks period, purge, pause, in-flight generation an ); await patchGeneration(t, old, {}, { pass: "idle" }); const other = await start(t); - // rebuild.sdp.md:84, :134: a fill and a reopened generation exclude each other; the pause refusal - // precedes the fill refusal, which precedes the in-flight refusal. + // spec:application.rebuild, its rule that a tenant fill and a generation in flight exclude each + // other, and spec:application.rebuild#design.fnRollbackGeneration: a fill and a reopened + // generation exclude each other; the pause refusal precedes the fill refusal, which precedes the + // in-flight refusal. const fillRow = { fence: 1, cursor: null, @@ -1485,7 +1518,7 @@ test("convex-test: rollback checks period, purge, pause, in-flight generation an ); }); -// rebuild.sdp.md fnAbortGeneration:135. +// spec:application.rebuild#design.fnAbortGeneration. test.each(["building", "verifying", "verified"] as const)( "convex-test: abort from %s keeps its cursor and counts and ends the pass", async (state) => { @@ -1527,7 +1560,7 @@ test.each(["building", "verifying", "verified"] as const)( }, ); -// rebuild.sdp.md fnAbortGeneration:135. +// spec:application.rebuild#design.fnAbortGeneration. test.each(["", "x".repeat(257), "é".repeat(129)])( "convex-test: abort refuses reason %j before checking state", async (reason) => { @@ -1546,7 +1579,7 @@ test.each(["", "x".repeat(257), "é".repeat(129)])( }, ); -// rebuild.sdp.md fnAbortGeneration:135. +// spec:application.rebuild#design.fnAbortGeneration. test.each(["active", "retired", "aborted", "purged"] as const)( "convex-test: abort refuses %s", async (state) => { @@ -1569,7 +1602,8 @@ test.each(["active", "retired", "aborted", "purged"] as const)( }, ); -// rebuild.sdp.md fnRollbackGeneration:134, fnAbortGeneration:135. +// spec:application.rebuild#design.fnRollbackGeneration, +// spec:application.rebuild#design.fnAbortGeneration. test("convex-test: aborting a rollback leaves the serving generation active", async () => { const t = rebuildApp(); const old = await install(t); @@ -1603,7 +1637,7 @@ test("convex-test: aborting a rollback leaves the serving generation active", as }); }); -// rebuild.sdp.md fnPurgeGeneration:136. +// spec:application.rebuild#design.fnPurgeGeneration. test.each(["building", "verifying", "verified", "active", "purged"] as const)( "convex-test: purge refuses %s", async (state) => { @@ -1621,7 +1655,9 @@ test.each(["building", "verifying", "verified", "active", "purged"] as const)( }, ); -// rebuild.sdp.md fnPurgeGeneration:136, fnRollbackGeneration:134, limitRollbackPeriod:150. +// spec:application.rebuild#design.fnPurgeGeneration, +// spec:application.rebuild#design.fnRollbackGeneration, +// spec:application.rebuild#design.limitRollbackPeriod. test("convex-test: purge is refused before retireAfter and allowed at it while rollback is refused at it", async () => { const t = rebuildApp(); const old = await install(t); @@ -1699,7 +1735,8 @@ async function purgeRows( }); } -// rebuild.sdp.md purgeSteps:128, fnPurgeGeneration:136; generation-registry.sdp.md tableGenerationProgress. +// spec:application.rebuild#design.purgeSteps, spec:application.rebuild#design.fnPurgeGeneration; +// generation-registry.sdp.md tableGenerationProgress. test("convex-test: purge crosses tenants and checkpoints only progress until the pass ends", async () => { const t = rebuildApp(); const id = await start(t, { batchSize: 2 }); @@ -1768,7 +1805,8 @@ test("convex-test: purge crosses tenants and checkpoints only progress until the expect(await scheduled(t)).toStrictEqual(queue); }); -// rebuild.sdp.md purgeSteps:128, limitPurgeBatch:147. The purge near its bound is an independent obligation. +// spec:application.rebuild#design.purgeSteps, spec:application.rebuild#design.limitPurgeBatch. The +// purge near its bound is an independent obligation. test("convex-test: one more row than the purge cap takes exactly two batches on the tenant", async () => { const t = rebuildApp(); const id = await start(t, { batchSize: 2 }); @@ -1809,8 +1847,9 @@ test("convex-test: one more row than the purge cap takes exactly two batches on }); }); -// rebuild.sdp.md purgeSteps:128, limitPurgeBatch:147. A valid start caps batchSize below this limit; -// these stored progress rows exercise the defensive cap with a size above it. +// spec:application.rebuild#design.purgeSteps, spec:application.rebuild#design.limitPurgeBatch. A +// valid start caps batchSize below this limit; these stored progress rows exercise the defensive cap +// with a size above it. test.each([256, 257])( "convex-test: the read-model purge limit caps an oversized stored batch at 256 for %i rows", async (count) => { @@ -1857,7 +1896,9 @@ test.each([256, 257])( }, ); -// rebuild.sdp.md fnPurgeGeneration:136, fnInterruptGeneration:130, fnResumeGeneration:132, purgeSteps:128. +// spec:application.rebuild#design.fnPurgeGeneration, +// spec:application.rebuild#design.fnInterruptGeneration, +// spec:application.rebuild#design.fnResumeGeneration, spec:application.rebuild#design.purgeSteps. test.each(["retired", "aborted"] as const)( "convex-test: an interrupted purge of %s resumes at its stored batch size", async (state) => { @@ -1955,7 +1996,7 @@ test.each(["retired", "aborted"] as const)( }, ); -// rebuild.sdp.md fnStartGeneration:115, fnFillTenants:139. +// spec:application.rebuild#design.fnStartGeneration, spec:application.rebuild#design.fnFillTenants. test("convex-test: a grant beside an empty tenant list refuses start with the fillTenants message", async () => { const t = rebuildApp(); await grantsWithoutTenants(t, 1); @@ -1966,7 +2007,8 @@ test("convex-test: a grant beside an empty tenant list refuses start with the fi ); }); -// rebuild.sdp.md tableTenantFill:138, fnFillTenants:139, fillSteps:141, limitTenantFillBatch:142. +// spec:application.rebuild#design.tableTenantFill, spec:application.rebuild#design.fnFillTenants, +// spec:application.rebuild#design.fillSteps, spec:application.rebuild#design.limitTenantFillBatch. test.each([8, 9])( "convex-test: fill walks %i distinct tenants with a bound of eight and a second fill inserts none", async (count) => { @@ -2066,7 +2108,7 @@ test.each([8, 9])( }, ); -// rebuild.sdp.md fnFillTenants:139, fnStartGeneration:115. +// spec:application.rebuild#design.fnFillTenants, spec:application.rebuild#design.fnStartGeneration. test.each(["building", "verifying", "verified"] as const)( "convex-test: fillTenants refuses a generation in %s", async (state) => { @@ -2081,7 +2123,8 @@ test.each(["building", "verifying", "verified"] as const)( }, ); -// rebuild.sdp.md fnStartGeneration:115, fnFillTenants:139, fillSteps:141. +// spec:application.rebuild#design.fnStartGeneration, spec:application.rebuild#design.fnFillTenants, +// spec:application.rebuild#design.fillSteps. test("convex-test: start refuses an unfinished fill even after the tenant list has rows", async () => { const t = rebuildApp(); await grantsWithoutTenants(t, 9); @@ -2097,7 +2140,8 @@ test("convex-test: start refuses an unfinished fill even after the tenant list h expect((await read(t, id)).generation.state).toBe("building"); }); -// rebuild.sdp.md fillSteps:141, fnFillTenants:139; write-pause.sdp.md fnGateAllows. +// spec:application.rebuild#design.fillSteps, spec:application.rebuild#design.fnFillTenants; +// write-pause.sdp.md fnGateAllows. test("convex-test: fill ignores a tenant gate, parks under the deployment gate and keeps its cursor on resumption", async () => { const t = rebuildApp(); await grantsWithoutTenants(t, 9); @@ -2155,7 +2199,7 @@ test("convex-test: fill ignores a tenant gate, parks under the deployment gate a }); }); -// rebuild.sdp.md fnFillTenants:139, fillSteps:141. +// spec:application.rebuild#design.fnFillTenants, spec:application.rebuild#design.fillSteps. test("convex-test: fill refuses exactly the restore door and its batch parks there", async () => { const t = rebuildApp(); await grantsWithoutTenants(t, 1); @@ -2181,7 +2225,7 @@ test("convex-test: fill refuses exactly the restore door and its batch parks the expect(await scheduled(t)).toStrictEqual(queue); }); -// rebuild.sdp.md fillSteps:141. +// spec:application.rebuild#design.fillSteps. test("convex-test: fill batches with no row, a stale fence or an idle pass write nothing", async () => { const t = rebuildApp(); const empty = await snapshot(t); @@ -2197,7 +2241,8 @@ test("convex-test: fill batches with no row, a stale fence or an idle pass write expect(await snapshot(t)).toStrictEqual(idle); }); -// rebuild.sdp.md fnGetGenerations:137, limitGenerationsListed:151. +// spec:application.rebuild#design.fnGetGenerations, +// spec:application.rebuild#design.limitGenerationsListed. test("convex-test: getGenerations returns the newest twenty complete row pairs from twenty-one generations", async () => { const t = rebuildApp(); const ids: GenerationId[] = []; @@ -2229,7 +2274,8 @@ test("convex-test: getGenerations returns the newest twenty complete row pairs f expect(await snapshot(t)).toStrictEqual(before); }); -// actor-and-scope.sdp.md fnAssertOperator:91; rebuild.sdp.md fnStartGeneration:115 through fnFillTenants:139. +// actor-and-scope.sdp.md fnAssertOperator:91; spec:application.rebuild#design.fnStartGeneration +// through spec:application.rebuild#design.fnFillTenants. test("convex-test: every operator entry accepts and records the trimmed 512-byte bound", async () => { const t = rebuildApp(); const atBound = "é".repeat(256); @@ -2279,7 +2325,9 @@ test("convex-test: every operator entry accepts and records the trimmed 512-byte expect((await fill(t))?.changedBy).toBe(atBound); }); -// rebuild.sdp.md convexSurface:112, fnStartGeneration:115, fnBackfillBatch:117, fnVerifyBatch:118, fnSwitchGeneration:133. +// spec:application.rebuild#design.convexSurface, spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.fnBackfillBatch, spec:application.rebuild#design.fnVerifyBatch, +// spec:application.rebuild#design.fnSwitchGeneration. test("convex-test: the example composition installs orderSummary through its registered rebuild entries", async () => { const t = productionTest(); const id = await t.mutation(exampleInternal.rebuild.startGeneration, { @@ -2330,7 +2378,8 @@ test("convex-test: the example composition installs orderSummary through its reg }); }); -// rebuild.sdp.md step1:121, verifySteps:127, purgeSteps:128. +// spec:application.rebuild#design.step1, spec:application.rebuild#design.verifySteps, +// spec:application.rebuild#design.purgeSteps. test.each([ ["backfillBatch", "active", "backfill"], ["backfillBatch", "building", "verify"], @@ -2351,7 +2400,8 @@ test.each([ }, ); -// rebuild.sdp.md fnResumeChain:131, fnResumeGeneration:132, verifySteps:127. +// spec:application.rebuild#design.fnResumeChain, +// spec:application.rebuild#design.fnResumeGeneration, spec:application.rebuild#design.verifySteps. test("convex-test: resuming verify preserves its counts and cursor and schedules verify with the new fence", async () => { const t = rebuildApp(); for (let i = 0; i < 3; i++) await create(t, `document-${i}`); @@ -2413,7 +2463,8 @@ test("convex-test: resuming verify preserves its counts and cursor and schedules }); }); -// rebuild.sdp.md step3:123, verifySteps:127, purgeSteps:128; write-pause.sdp.md fnGateAllows:66. +// spec:application.rebuild#design.step3, spec:application.rebuild#design.verifySteps, +// spec:application.rebuild#design.purgeSteps; write-pause.sdp.md fnGateAllows:66. test.each(["verify", "purge"] as const)( "convex-test: %s also parks under a closed tenant without touching rows or checkpoint counts", async (pass) => { @@ -2455,7 +2506,8 @@ test.each(["verify", "purge"] as const)( }, ); -// rebuild.sdp.md fnStartGeneration:115, fnSwitchGeneration:133; generation-registry.sdp.md transitionCost. +// spec:application.rebuild#design.fnStartGeneration, +// spec:application.rebuild#design.fnSwitchGeneration; generation-registry.sdp.md transitionCost. test("convex-test: a failed activation commits neither half of the switch", async () => { const t = rebuildApp(true); const old = await install(t); @@ -2473,7 +2525,8 @@ test("convex-test: a failed activation commits neither half of the switch", asyn expect((await read(t, id)).generation.state).toBe("verified"); }); -// rebuild.sdp.md fnStartGeneration:115, Design:107; projection-contract.sdp.md readModelRowShape. +// spec:application.rebuild#design.fnStartGeneration, its Design narrative; +// projection-contract.sdp.md readModelRowShape. test("convex-test: startGeneration schedules exactly one batch and an install leaves one row per subject and no marker", async () => { const t = rebuildApp(); for (const documentId of ["a1", "a2", "a3"]) await create(t, documentId); @@ -2503,7 +2556,7 @@ test("convex-test: startGeneration schedules exactly one batch and an install le ).toStrictEqual([]); }); -// rebuild.sdp.md fnGetGenerations:137: only a declared read model's rows are listed. +// spec:application.rebuild#design.fnGetGenerations: only a declared read model's rows are listed. test("convex-test: getGenerations answers [] for an undeclared read model even when rows name it", async () => { const t = rebuildApp(); const id = await start(t); diff --git a/tests/types/rebuild.test-d.ts b/tests/types/rebuild.test-d.ts index eea8313..89928c2 100644 --- a/tests/types/rebuild.test-d.ts +++ b/tests/types/rebuild.test-d.ts @@ -68,7 +68,8 @@ type Progress = { updatedAt: number; }; -// rebuild.sdp.md fnStartGeneration:115; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnStartGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example startGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -114,7 +115,8 @@ test("compiled: example startGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnInterruptGeneration:130; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnInterruptGeneration; generation-registry.sdp.md +// tableGenerations, tableGenerationProgress. test("compiled: example interruptGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -144,7 +146,8 @@ test("compiled: example interruptGeneration arguments, visibility and return", ( void [generationId, wrong]; }); -// rebuild.sdp.md fnResumeGeneration:132; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnResumeGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example resumeGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -178,7 +181,8 @@ test("compiled: example resumeGeneration arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnSwitchGeneration:133; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnSwitchGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example switchGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -221,7 +225,8 @@ test("compiled: example switchGeneration arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnRollbackGeneration:134; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnRollbackGeneration; generation-registry.sdp.md +// tableGenerations, tableGenerationProgress. test("compiled: example rollbackGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -254,7 +259,8 @@ test("compiled: example rollbackGeneration arguments, visibility and return", () void [generationId, wrong]; }); -// rebuild.sdp.md fnAbortGeneration:135; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnAbortGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example abortGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -292,7 +298,8 @@ test("compiled: example abortGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnPurgeGeneration:136; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnPurgeGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example purgeGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -326,7 +333,8 @@ test("compiled: example purgeGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnBackfillBatch:117; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnBackfillBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example backfillBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -358,7 +366,8 @@ test("compiled: example backfillBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnVerifyBatch:118; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnVerifyBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example verifyBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -384,7 +393,8 @@ test("compiled: example verifyBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnPurgeBatch:119; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnPurgeBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example purgeBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -414,7 +424,8 @@ test("compiled: example purgeBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnFillTenants:139; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnFillTenants; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example fillTenants arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -435,7 +446,8 @@ test("compiled: example fillTenants arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnFillTenantsBatch:140; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnFillTenantsBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example fillTenantsBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -460,7 +472,8 @@ test("compiled: example fillTenantsBatch arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnGetGenerations:137; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnGetGenerations; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: example getGenerations arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -491,7 +504,8 @@ test("compiled: example getGenerations arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnStartGeneration:115; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnStartGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture startGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -537,7 +551,8 @@ test("compiled: fixture startGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnInterruptGeneration:130; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnInterruptGeneration; generation-registry.sdp.md +// tableGenerations, tableGenerationProgress. test("compiled: fixture interruptGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -567,7 +582,8 @@ test("compiled: fixture interruptGeneration arguments, visibility and return", ( void [generationId, wrong]; }); -// rebuild.sdp.md fnResumeGeneration:132; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnResumeGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture resumeGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -601,7 +617,8 @@ test("compiled: fixture resumeGeneration arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnSwitchGeneration:133; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnSwitchGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture switchGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -644,7 +661,8 @@ test("compiled: fixture switchGeneration arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnRollbackGeneration:134; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnRollbackGeneration; generation-registry.sdp.md +// tableGenerations, tableGenerationProgress. test("compiled: fixture rollbackGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -677,7 +695,8 @@ test("compiled: fixture rollbackGeneration arguments, visibility and return", () void [generationId, wrong]; }); -// rebuild.sdp.md fnAbortGeneration:135; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnAbortGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture abortGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -715,7 +734,8 @@ test("compiled: fixture abortGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnPurgeGeneration:136; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnPurgeGeneration; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture purgeGeneration arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -749,7 +769,8 @@ test("compiled: fixture purgeGeneration arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md fnBackfillBatch:117; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnBackfillBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture backfillBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -781,7 +802,8 @@ test("compiled: fixture backfillBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnVerifyBatch:118; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnVerifyBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture verifyBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -807,7 +829,8 @@ test("compiled: fixture verifyBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnPurgeBatch:119; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnPurgeBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture purgeBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -837,7 +860,8 @@ test("compiled: fixture purgeBatch arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnFillTenants:139; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnFillTenants; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture fillTenants arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -858,7 +882,8 @@ test("compiled: fixture fillTenants arguments, visibility and return", () => { void [generationId, wrong]; }); -// rebuild.sdp.md fnFillTenantsBatch:140; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnFillTenantsBatch; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture fillTenantsBatch arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -883,7 +908,8 @@ test("compiled: fixture fillTenantsBatch arguments, visibility and return", () = void [generationId, wrong]; }); -// rebuild.sdp.md fnGetGenerations:137; generation-registry.sdp.md tableGenerations, tableGenerationProgress. +// spec:application.rebuild#design.fnGetGenerations; generation-registry.sdp.md tableGenerations, +// tableGenerationProgress. test("compiled: fixture getGenerations arguments, visibility and return", () => { expectTypeOf< FunctionArgs @@ -914,7 +940,10 @@ test("compiled: fixture getGenerations arguments, visibility and return", () => void [generationId, wrong]; }); -// rebuild.sdp.md typeRebuildTarget:113, typeRebuildConfig:114, fnBatchSizeFor:116, fnResumeChain:131, limitPurgeBatch:147. +// spec:application.rebuild#design.typeRebuildTarget, +// spec:application.rebuild#design.typeRebuildConfig, +// spec:application.rebuild#design.fnBatchSizeFor, spec:application.rebuild#design.fnResumeChain, +// spec:application.rebuild#design.limitPurgeBatch. test("compiled: rebuild configuration and helpers have the pinned signatures", () => { type Dto = { documentId: string }; type Row = { documentId: string }; From 5eb158d4214beb4fa899d5318434abcf6ad82985 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:06:48 +0200 Subject: [PATCH 25/60] design: the history view's page, generated after the write pause's history statements moved Co-Authored-By: Claude Opus 5.5 --- design/pages/history-view.md | 72 ++++++++++++++++++------------------ 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/design/pages/history-view.md b/design/pages/history-view.md index fd2aa7e..8f89bf6 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -1037,13 +1037,13 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L58) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L59) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L60) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L61) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L62) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L63) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it |
The 3 declarations as the Spec pins them -[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L58) +[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L61) ```ts type HistorySource = { @@ -1068,7 +1068,7 @@ type HistorySource = { } ``` -[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L59) +[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L62) ```ts type HistoryRebuildTarget = { @@ -1077,7 +1077,7 @@ type HistoryRebuildTarget = { } ``` -[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L60) +[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L63) ```ts ctx.runQuery(source.history, { @@ -1089,7 +1089,7 @@ ctx.runQuery(source.history, {
-**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L61), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L62), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L63), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L64), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L65). +**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L64), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L65), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L66), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L68). ### 6. Rebuild a cross-stream history view under a write pause; interrupt, then resume @@ -1127,24 +1127,24 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L67) | bound | the type | `closedEntryValidator` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L68) | bound | the table's document and indexes | `gateTables` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L70) | bound | the type | `ScopeKey` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L71) | bound | the type | `gateAllows` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L72) | bound | the type | `assertWritable` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L73) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L74) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L75) | bound | the type | `scopesOfUseCase` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L76) | not compared | nothing | none | differs only in ctx | -| [`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L77) | not compared | nothing | none | differs only in ctx | -| [`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L79) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L80) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L81) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L64) | bound | the type | `closedEntryValidator` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L65) | bound | the table's document and indexes | `gateTables` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L67) | bound | the type | `ScopeKey` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L68) | bound | the type | `gateAllows` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L69) | bound | the type | `assertWritable` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L70) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L71) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L72) | bound | the type | `scopesOfUseCase` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L73) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L74) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L75) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L76) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L77) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it |
The 14 declarations as the Spec pins them -[`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L67) +[`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L64) ```ts const closedEntryValidator = v.object({ @@ -1156,7 +1156,7 @@ const closedEntryValidator = v.object({ }) ``` -[`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L68) +[`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L65) ```ts maintenanceGates: defineTable({ @@ -1166,13 +1166,13 @@ maintenanceGates: defineTable({ }).index("by_key", ["key"]) ``` -[`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L70) +[`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L67) ```ts type ScopeKey = "all" | (string & {}) ``` -[`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L71) +[`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L68) ```ts gateAllows( @@ -1184,7 +1184,7 @@ gateAllows( > ``` -[`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L72) +[`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L69) ```ts assertWritable( @@ -1193,19 +1193,19 @@ assertWritable( ): Promise ``` -[`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L73) +[`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L70) ```ts writePaused ``` -[`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L74) +[`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L71) ```ts gateAllows ``` -[`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L75) +[`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L72) ```ts scopesOfUseCase( @@ -1214,7 +1214,7 @@ scopesOfUseCase( ): ScopeKey[] ``` -[`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L76) +[`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L73) ```ts closeScope( @@ -1226,7 +1226,7 @@ closeScope( ): Promise ``` -[`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L77) +[`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L74) ```ts resumeScope( @@ -1236,7 +1236,7 @@ resumeScope( ): Promise ``` -[`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L78) +[`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L75) ```ts export const closeGate = internalMutation({ @@ -1246,7 +1246,7 @@ export const closeGate = internalMutation({ }) ``` -[`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L79) +[`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L76) ```ts export const resumeGate = internalMutation({ @@ -1256,7 +1256,7 @@ export const resumeGate = internalMutation({ }) ``` -[`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L80) +[`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L77) ```ts export const getGate = internalQuery({ @@ -1269,7 +1269,7 @@ export const getGate = internalQuery({ }) ``` -[`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L81) +[`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L78) ```ts export const getGateAudit = internalQuery({ @@ -1281,7 +1281,7 @@ export const getGateAudit = internalQuery({
-**Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L69), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L82), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L83), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L84), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L85), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L86). +**Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L66), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L79), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L80), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L81), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L82), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L83). ### 9. Generation registry From 0f6e91bc83039fc9545e6a216b1a171fa3358f80 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:21:07 +0200 Subject: [PATCH 26/60] build: the review's fold-in: check.py keeps a list of its pages, and the page says what a register row blocks The behavior review (gpt-6-astra, job-mut4hpxq-53aad487) found that deleting the committed page left check.py with nothing to check and printing OK. It now keeps PACK_PAGES, fails on a listed page that is missing or behind, and on a page it does not list. The reader (job-mut4hpww-482df8d2) could not tell what 'blocks S5' meant: the page now says a register row blocks the first unit of work that needs it, apart from a question marked blocking and from the floor. The last line pointer into the rebuild Spec, in src/read-model/rebuild.ts, becomes the entry address it meant. A pass reads the Pack's page first and says what the page did not give (step 5 of the selection). Co-Authored-By: Claude Opus 5.5 --- design/advisors/task-pass.md | 2 +- design/pages/history-view.md | 83 ++++++++++++++++++------------------ design/tools/check.py | 14 +++--- scripts/pack-page.mjs | 3 +- src/read-model/rebuild.ts | 2 +- 5 files changed, 55 insertions(+), 49 deletions(-) diff --git a/design/advisors/task-pass.md b/design/advisors/task-pass.md index 4f32716..8c38103 100644 --- a/design/advisors/task-pass.md +++ b/design/advisors/task-pass.md @@ -8,7 +8,7 @@ A capability is designed in its Specs before anyone builds it. The owner asked o ## Before you read -Read `design/advisors/protocol.md`, then `design/advisors/project-context.md`, then `design/advisors/lenses/.md`. Then read the Pack through the graph, from the repository root, with bodies copied verbatim from `node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md`: +Read `design/advisors/protocol.md`, then `design/advisors/project-context.md`, then `design/advisors/lenses/.md`. Then read the Pack's page, `design/pages/.md` for `pack:`: the members in reading order with their rungs, bindings, pairs and open questions on one page. Your memo ends with one line on what you needed that the page did not give. Then read the Pack through the graph where the page is not enough, from the repository root, with bodies copied verbatim from `node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md`: - recipe 5, the Pack review backbone, with ``: the members, their rungs and bindings; - recipe 20, the open questions, and recipe 21, the dependency footing, for each member that pins what the capability builds; diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 8f89bf6..97efbc5 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -11,6 +11,7 @@ This page is generated from the Specs of `pack:history-view` by `scripts/pack-pa Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them. - The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready. +- A register row blocks the first unit of work that needs its decision, a build slice such as S5 named in `design/STATE.md`. That is apart from a question marked blocking, which holds its Spec at scoped, and apart from the floor. - The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. - The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. - An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it. @@ -159,91 +160,91 @@ No target outside the Pack holds a member below its next rung. - No register row. [question 1](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … - No register row. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … -- **OD-160** class none, status unsorted, advisor convex, blocks S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … +- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … **[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` -- **OD-075** class delegated, status decided, advisor domain, blocks S4. [question 1](../specs/application/projection-contract.sdp.md?plain=1#L33), [non-blocking]: Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker … -- **OD-014** class delegated, status decided, advisor domain, blocks S4. [question 2](../specs/application/projection-contract.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model … -- **OD-020** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/application/projection-contract.sdp.md?plain=1#L35), [non-blocking]: The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading … +- **OD-075** class delegated, status decided, advisor domain, blocks the unit S4. [question 1](../specs/application/projection-contract.sdp.md?plain=1#L33), [non-blocking]: Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker … +- **OD-014** class delegated, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/projection-contract.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model … +- **OD-020** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/application/projection-contract.sdp.md?plain=1#L35), [non-blocking]: The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading … - No register row. [question 4](../specs/application/projection-contract.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole … -- **OD-159** class none, status unsorted, advisor convex, blocks S5. [question 5](../specs/application/projection-contract.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by … +- **OD-159** class none, status unsorted, advisor convex, blocks the unit S5. [question 5](../specs/application/projection-contract.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by … **[Read models](#3-read-models)**, `spec:application.read-models` -- **OD-076** class delegated, status sorted, advisor convex, blocks nothing. [question 1](../specs/application/read-models.sdp.md?plain=1#L49), [non-blocking]: Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw … -- **OD-077** class delegated, status sorted, advisor convex, blocks nothing. [question 2](../specs/application/read-models.sdp.md?plain=1#L50), [non-blocking]: Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's … -- **OD-017** class owner, status decided, advisor domain, blocks nothing. [question 3](../specs/application/read-models.sdp.md?plain=1#L51), [non-blocking]: Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field … -- **OD-078** class owner, status waiting, advisor domain, blocks nothing. [question 4](../specs/application/read-models.sdp.md?plain=1#L52), [non-blocking]: Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) -- **OD-079** class delegated, status waiting, advisor domain, blocks nothing. [question 5](../specs/application/read-models.sdp.md?plain=1#L53), [non-blocking]: Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 … +- **OD-076** class delegated, status sorted, advisor convex, blocks no unit. [question 1](../specs/application/read-models.sdp.md?plain=1#L49), [non-blocking]: Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw … +- **OD-077** class delegated, status sorted, advisor convex, blocks no unit. [question 2](../specs/application/read-models.sdp.md?plain=1#L50), [non-blocking]: Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's … +- **OD-017** class owner, status decided, advisor domain, blocks no unit. [question 3](../specs/application/read-models.sdp.md?plain=1#L51), [non-blocking]: Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field … +- **OD-078** class owner, status waiting, advisor domain, blocks no unit. [question 4](../specs/application/read-models.sdp.md?plain=1#L52), [non-blocking]: Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) +- **OD-079** class delegated, status waiting, advisor domain, blocks no unit. [question 5](../specs/application/read-models.sdp.md?plain=1#L53), [non-blocking]: Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 … - No register row. [question 6](../specs/application/read-models.sdp.md?plain=1#L54), [non-blocking]: Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of … **[Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause)**, `spec:application.rebuild` -- **OD-057** class delegated, status decided, advisor convex, blocks S4. [question 1](../specs/application/rebuild.sdp.md?plain=1#L59), [non-blocking]: `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the … -- **OD-080** class delegated, status decided, advisor domain, blocks S4. [question 2](../specs/application/rebuild.sdp.md?plain=1#L60), [non-blocking]: Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. -- **OD-068** class owner, status decided, advisor domain, blocks S4. [question 3](../specs/application/rebuild.sdp.md?plain=1#L61), [non-blocking]: Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned … +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [question 1](../specs/application/rebuild.sdp.md?plain=1#L59), [non-blocking]: `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the … +- **OD-080** class delegated, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/rebuild.sdp.md?plain=1#L60), [non-blocking]: Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [question 3](../specs/application/rebuild.sdp.md?plain=1#L61), [non-blocking]: Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned … - No register row. [question 4](../specs/application/rebuild.sdp.md?plain=1#L62), [non-blocking]: Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in … - No register row. [question 5](../specs/application/rebuild.sdp.md?plain=1#L63), [non-blocking]: Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no … **[Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause)**, `spec:application.history-rebuild` -- **OD-156** class none, status unsorted, advisor convex, blocks S5. [question 1](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … -- **OD-157** class owner, status sorted, advisor convex, blocks S5. [question 2](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … -- **OD-158** class none, status unsorted, advisor convex, blocks S5. [question 3](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … +- **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [question 1](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … +- **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [question 2](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … +- **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … **[Write pause](#8-write-pause)**, `spec:application.write-pause` -- **OD-084** class delegated, status sorted, advisor operator, blocks S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … -- **OD-161** class none, status unsorted, advisor convex, blocks S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … +- **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … +- **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … **[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` -- **OD-068** class owner, status decided, advisor domain, blocks S4. [question 1](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … -- **OD-069** class owner, status decided, advisor domain, blocks S4. [question 2](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … -- **OD-070** class delegated, status sorted, advisor operator, blocks nothing. [question 3](../specs/application/generation-registry.sdp.md?plain=1#L39), [non-blocking]: Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the … -- **OD-010** class delegated, status decided, advisor domain, blocks S4. [question 4](../specs/application/generation-registry.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, … -- **OD-071** class delegated, status decided, advisor domain, blocks S4. [question 5](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [question 1](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … +- **OD-069** class owner, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … +- **OD-070** class delegated, status sorted, advisor operator, blocks no unit. [question 3](../specs/application/generation-registry.sdp.md?plain=1#L39), [non-blocking]: Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the … +- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4. [question 4](../specs/application/generation-registry.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, … +- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4. [question 5](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … - No register row. [question 6](../specs/application/generation-registry.sdp.md?plain=1#L42), [non-blocking]: Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that … **[Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain)**, `spec:application.orders-inventory-example` -- **OD-019** class delegated, status sorted, advisor convex, blocks nothing. [question 1](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … +- **OD-019** class delegated, status sorted, advisor convex, blocks no unit. [question 1](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … **[Command declaration and bindings](#11-command-declaration-and-bindings)**, `spec:command.command-declaration` -- **OD-087** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … -- **OD-015** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … -- **OD-088** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … +- **OD-087** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … +- **OD-015** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … +- **OD-088** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … **[The command pipeline](#12-the-command-pipeline)**, `spec:command.command-pipeline` -- **OD-089** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … -- **OD-090** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … -- **OD-091** class delegated, status sorted, advisor domain, blocks nothing. [question 3](../specs/command/command-pipeline.sdp.md?plain=1#L70), [non-blocking]: Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command … -- **OD-028** class owner, status sorted, advisor domain, blocks nothing. [question 4](../specs/command/command-pipeline.sdp.md?plain=1#L71), [non-blocking]: Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of … -- **OD-092** class delegated, status sorted, advisor convex, blocks nothing. [question 5](../specs/command/command-pipeline.sdp.md?plain=1#L72), [non-blocking]: Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a … -- **OD-093** class delegated, status sorted, advisor domain, blocks nothing. [question 6](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … -- **OD-094** class delegated, status sorted, advisor domain, blocks nothing. [question 7](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … +- **OD-089** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … +- **OD-090** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … +- **OD-091** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/command/command-pipeline.sdp.md?plain=1#L70), [non-blocking]: Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command … +- **OD-028** class owner, status sorted, advisor domain, blocks no unit. [question 4](../specs/command/command-pipeline.sdp.md?plain=1#L71), [non-blocking]: Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of … +- **OD-092** class delegated, status sorted, advisor convex, blocks no unit. [question 5](../specs/command/command-pipeline.sdp.md?plain=1#L72), [non-blocking]: Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a … +- **OD-093** class delegated, status sorted, advisor domain, blocks no unit. [question 6](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … +- **OD-094** class delegated, status sorted, advisor domain, blocks no unit. [question 7](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … **[The event envelope](#13-the-event-envelope)**, `spec:context.event-envelope` -- **OD-104** class delegated, status sorted, advisor domain, blocks nothing. [question 1](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … -- **OD-105** class delegated, status sorted, advisor domain, blocks nothing. [question 2](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … +- **OD-104** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … +- **OD-105** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … **[The journal](#14-the-journal)**, `spec:context.journal` -- **OD-106** class delegated, status sorted, advisor domain, blocks S5. [question 1](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … +- **OD-106** class delegated, status sorted, advisor domain, blocks the unit S5. [question 1](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … **[The context queries](#15-the-context-queries)**, `spec:context.queries` -- **OD-108** class none, status folded, advisor convex, blocks nothing. [question 1](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … -- **OD-109** class delegated, status sorted, advisor convex, blocks nothing. [question 2](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … -- **OD-110** class owner, status decided, advisor convex, blocks nothing. [question 3](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … +- **OD-108** class none, status folded, advisor convex, blocks no unit. [question 1](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … +- **OD-109** class delegated, status sorted, advisor convex, blocks no unit. [question 2](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … +- **OD-110** class owner, status decided, advisor convex, blocks no unit. [question 3](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … **[Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views)**, `spec:decisions.d09-rebuild-online-by-default` -- **OD-057** class delegated, status decided, advisor convex, blocks S4. [question 1](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [question 1](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) ## Each member diff --git a/design/tools/check.py b/design/tools/check.py index a61a0f1..601413b 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -229,11 +229,15 @@ def run(args): by_slice = collections.Counter(item.get("slice", "none") for item in ledger if item["status"] == "open") # 5. Each Pack page is what the tree generates. The page design/pages/.md is the page of pack:, -# and the generator's --check names the first line that differs. -pages = sorted(glob.glob(os.path.join(DESIGN, "pages", "*.md"))) +# and the generator's --check names the first line that differs. PACK_PAGES is the list of pages the corpus +# keeps, so a page deleted by mistake fails here instead of leaving nothing to check. +PACK_PAGES = ("history-view",) +for path in sorted(glob.glob(os.path.join(DESIGN, "pages", "*.md"))): + if os.path.splitext(os.path.basename(path))[0] not in PACK_PAGES: + fail(f"{os.path.relpath(path, ROOT)} is not in PACK_PAGES") stale_pages = 0 -for path in pages: - name = os.path.splitext(os.path.basename(path))[0] +for name in PACK_PAGES: + path = os.path.join(DESIGN, "pages", name + ".md") out = subprocess.run( ["node", os.path.join(ROOT, "scripts", "pack-page.mjs"), "--pack", f"pack:{name}", "--out", os.path.relpath(path, ROOT), "--check"], capture_output=True, text=True, cwd=ROOT, @@ -258,7 +262,7 @@ def run(args): print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") print(f"open findings by slice: {dict(sorted(by_slice.items()))}") print(f"corpus digest: {digest.hexdigest()[:16]}") -print(f"Pack pages current: {len(pages) - stale_pages} of {len(pages)}") +print(f"Pack pages current: {len(PACK_PAGES) - stale_pages} of {len(PACK_PAGES)}") print(f"protocol: {PINNED}") if failures: print(f"\nFAIL ({len(failures)}):") diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index f7d75e4..e9607ad 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -618,6 +618,7 @@ export async function generate(pack, out) { "Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them.", "", "- The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready.", + "- A register row blocks the first unit of work that needs its decision, a build slice such as S5 named in `design/STATE.md`. That is apart from a question marked blocking, which holds its Spec at scoped, and apart from the floor.", "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", "- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it.", @@ -847,7 +848,7 @@ export async function generate(pack, out) { "", ); const rowText = (row) => - `**${row.id}** class ${row.class ?? "none"}, status ${row.status ?? "none"}, advisor ${row.advisor ?? "none"}, blocks ${row.blocks ?? "nothing"}`; + `**${row.id}** class ${row.class ?? "none"}, status ${row.status ?? "none"}, advisor ${row.advisor ?? "none"}, ${row.blocks ? `blocks the unit ${row.blocks}` : "blocks no unit"}`; for (const member of model) { if (member.questions.length === 0 && member.leftRows.length === 0) continue; write(`**${memberLink(member.id)}**, ${span(member.id)}`, ""); diff --git a/src/read-model/rebuild.ts b/src/read-model/rebuild.ts index 01bc07c..846c2fa 100644 --- a/src/read-model/rebuild.ts +++ b/src/read-model/rebuild.ts @@ -642,7 +642,7 @@ export async function getGenerations( config: RebuildConfig, args: { readModel: string }, ) { - // rebuild.sdp.md:137: a read model the composition does not declare has no generations to list. + // spec:application.rebuild#design.fnGetGenerations: a read model the composition does not declare has no generations to list. if ( !config.targets.some(({ readModel }) => readModel.name === args.readModel) ) From 62dde32da2a6da7880984d79c77e6bad1dc953fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:23:20 +0200 Subject: [PATCH 27/60] design: the close of the unit pack-page STATE.md takes the check's numbers, the unit's work, the owner's rulings of 2026-10-04 (OD-162, OD-163) and the owner's words on sizing review and isolation, tactical decisions 58 to 63 and Leads 45, and retires the two items of Leads 44 this unit closed. The running feedback file tells the Protocol's maintainers what the Pack page needed that the Protocol does not give. Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 54 ++++++++++++++++++++++---------- docs/feedback/sdp-feedback-01.md | 12 +++++++ 2 files changed, 49 insertions(+), 17 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index 5a8cb3e..c54c66f 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -1,28 +1,29 @@ # State of the design corpus -Written on 2026-10-03 at the close of the unit `design-in-the-graph`, a pull request stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. +Written on 2026-10-04 at the close of the unit `pack-page`, which extends the pull request of the unit `design-in-the-graph` (#12), stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. ## Measured at close ``` -239 specs · 6 packs · 142 anchors → 387 nodes · 1348 edges (0 errors, 0 warnings) +240 specs · 6 packs · 144 anchors → 390 nodes · 1365 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] -entry addresses outside the Specs: 84 -open questions: 71 Specs, 160 questions, 10 blocking; extensions registered: 54 -stated readiness: {'defined': 228, 'idea': 1, 'scoped': 10} +entry addresses outside the Specs: 297 +open questions: 72 Specs, 160 questions, 10 blocking; extensions registered: 54 +stated readiness: {'defined': 229, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 7e0bc2107a16b129 +corpus digest: 73543acdec58767f +Pack pages current: 1 of 1 protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz ``` -`python3 design/tools/decisions.py`, after this unit's register commit, which adds OD-156 to OD-161 from the Convex pass: +`python3 design/tools/decisions.py`, after this unit, which adds OD-162 and OD-163, the owner's rulings of 2026-10-04: ``` -total: 161 -status: unsorted=5, sorted=81, waiting=21, decided=39, folded=15 -class: tactical=3, delegated=86, owner=52, null=20 -advisor: convex=43, domain=45, operator=34, product=39 +total: 163 +status: unsorted=5, sorted=81, waiting=21, decided=41, folded=15 +class: tactical=3, delegated=86, owner=54, null=20 +advisor: convex=43, domain=46, operator=34, product=40 ``` **Round 2, the tooling unit, round 3's unit 3b, sitting two and the close of round 3 are on `feature/round-2`, not on `main`.** `main` is still at `592f1dc`, the close of round 1. The close of round 3 did the rest of the mini roadmap (4f, the hosted tier, 4c, 4a and 4d) and ends the branch: `feature/round-2` goes to `main` as one pull request, which the main thread opens at this close for the owner's review and merge. The owner's words at the opening of the close: "forks have been resolved and mini roadmap unlocked. please complete the work to wrap up the feature branch and PR. use Opus, GPT 6 Astra and 6.1 Sol and orchestrate from the main thread". The main thread was Opus 5.5; no Fable agent and no advisor ran. Its head is this close's commit, on top of the fold-in's follow-up `651fcc3`. Tactical decision 42 holds the branch and its one pull request. @@ -35,6 +36,14 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` ## Where the work stands +**The unit `pack-page`**, on 2026-10-04, on `unit/design-in-the-graph` from `746782c`, extending pull request #12. Main thread Opus 5.5. The owner: "Please help me plan and execute a logical but sizeable part of this scope: docs/feedback/sdp-feedback-03-selection.md", and chose its scope from the main thread's options: round 1 of the selection, steps 1, 3 and 4 with the review's conditions, the passes (step 5) next. The rulings, briefs and job reports are in the unit folder the project notes name, `application-platform-pack-page`. + +- The owner's rulings of 2026-10-04, chosen from the main thread's options. OD-162: the generation registry, the command declaration and the command pipeline pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers ("Drop the aggregate form"). OD-163: a stated `ready` means approved to build, the Protocol's reading ("Approved to build"); no Spec states it in this unit. And the move of the feedback file into `docs/feedback/`. +- The page. `scripts/pack-page.mjs` writes `design/pages/history-view.md` from the graph in memory (`npm run pages`). It puts the members in the Pack file's order with their rung, floor, next rung and what blocks it, anchors and their sources, verifiers and tiers, pinned pairs, the outside dependencies, and the open questions joined to register rows. The page is committed and deterministic, and `check.py` fails when it is behind the tree, missing or unlisted (`PACK_PAGES`). The next-rung blocker walks the Protocol's own `readinessFloors`, because the Protocol's evaluator takes no target rung. +- The data the page reads. `tests/types/pinned-pairs.json` holds the type test's pairs: 52 bound, 14 ahead and 10 not compared. A pure test keeps it in step with the test. `scripts/pinned.mjs` formats its module with Prettier. `design/tools/anchor-sites.json` names the source files of the 22 anchors that live in tests, kept by a pure test. The register cites each open question by its Spec and opening text (151 sources), `check.py` verifies it, and `test_decisions.py` passes and runs in CI. +- One maturity per Spec, applied. `spec:application.history-rebuild` takes the rebuild's history path, its two paused examples and the write pause's statements of it, verbatim. The rebuild and the write pause now carry implementation anchors. The aggregate form left the three built Specs for `spec:application.aggregate-projection`, and their floors reach `ready`. `design/PLAN.md` 6.7 states the principle: a type the design widens stays as an ahead pair, and a behavior the code lacks gets its own Spec. Line pointers into the rebuild Spec became entry addresses, in tests and in the register. +- The review. `gpt-6-astra` at high ran the behavior lane on a frozen copy with one plant (`job-mut4hpxq-53aad487`, 10.0 min). It caught the plant, `check.py` ignoring a generator that cannot read an input. It found one more blocker: a deleted page left nothing to check. And it confirmed all 16 members against the Protocol's floor evaluation. An astra reader (`job-mut4hpww-482df8d2`, 2.9 min) did A1, A3, A4 and A5 from the page alone, and A2 in part: "blocks S5" was unexplained. The fold-in (`0f6e91b`) closes both. Two sol lanes and an Opus taste lane were stopped by the owner as excessive (decision 63). + **The unit `design-in-the-graph`**, on 2026-10-03, on `unit/design-in-the-graph` from `77acdf2`, a pull request stacked on `feature/round-2`. The owner, after the Protocol's pull request 27 merged: "My primary motivation was to unlock management of specs at different levels of maturity and ability to capture and present designs for upcoming implementations as SDP first-class citizens and enable iterative design with iterations focusing on different perspectives of the system, before committing to implementation.", then "please investigate opportunities to better use SDP sepecs and designs (stubs) and propose a stacked PR for platform to showcase that." The main thread was Opus 5.5 at xhigh effort. It showed, on the history view as the subject: - The adoption. The pin moved to `5e29c03`, the merge of pull request 27; the graph kept its shape and `npm test` passed unchanged. The 83 prose-mention warnings were read pair by pair: 70 were dependencies, now 56 declared relations, 12 stay prose and are listed with their reason in `design/tools/prose-mentions.json`, one moved with its text. Two older `dependsOn` edges of the event envelope ran backwards and closed nine Specs into cycles with the new edges; they are reversed and the corpus has no cycle. `check.py` accepts a mention warning only for a listed pair and resolves every entry address in the code, the tests and the records. @@ -230,7 +239,7 @@ Thirty-eight more findings are `partially-fixed`, each waiting for its slice. Re - The hosted tier's first runs, the owner's steps 10 and 11 of `design-hosted-tier.md`: first from the owner's machine with `npm run test:hosted`, then the workflow on `main`, which the `hosted` environment admits, since GitHub runs a schedule only from the default branch. They settle the design's eight "built when" items, OD-036's count, and Leads 39 and 43's assumptions about a hosted deployment. - The dashboard check of `clean-capybara-16`: a production deployment, reference `production`, never deployed, with no tables and no keys, made by the project's default. The design wants `dev/hosted` only, so the owner deletes it if nothing uses it. Deletion is permanent and an agent does not do it. -- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b, 5c and 5d, discussed with the owner before they are prepared (decision 42). 5d's design is `pack:history-view`; its domain and operator passes, one advisor launch each with `design/advisors/task-pass.md`, come before its build. +- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b, 5c and 5d, discussed with the owner before they are prepared (decision 42). 5d's design is `pack:history-view`; its domain and operator passes, one advisor launch each with `design/advisors/task-pass.md`, come before its build. Each reads `design/pages/history-view.md` first and ends with what the page did not give; that is step 5 of `docs/feedback/sdp-feedback-03-selection.md`, and with OD-163 the history projection may state `ready` after them. Under OD-163, 4e is the owner stating `ready` on a family approved for its build. The setup is done: the project `libar-platform-hosted` and its development deployment `dev/hosted` (`wandering-mule-403`, `HOSTED_DEPLOYMENT_URL` in the regional form the CLI printed), the GitHub environment `hosted` with its `main` branch policy and its three variables (`HOSTED_PLAN` is `Professional`, `HOSTED_DEPLOY_KEY_NAME` is `hosted-ci-scoped`), and the key `hosted-ci-scoped` with exactly the fourteen actions as the secret `HOSTED_DEPLOY_KEY`, which passed the key-only check (Owner queue); the first key, with 25 actions, is revoked. The local backend stays primary, by the owner's words of 2026-10-03: "Local backend should be primary, IMO. But happy to take the hosted as default if easier for start." @@ -326,6 +335,12 @@ The owner accepted the first nine on the session's recommendation. The session t 54. One maturity per Spec (`PLAN.md` 6.7). The projection contract is split into the per-entity, history and aggregate projections, the moved text verbatim. The new IDs follow the code's names, `HistoryProjection` and `AggregateProjection`, while the language rows "history view" and "history projection" wait for the owner; a ruling of other words renames them. 55. The pinned module is this corpus's recipe for the Protocol's declarations module: `scripts/pinned.mjs` over one Pack, run by `sdp:build`, and `tests/types/pinned.test-d.ts` with three lists named by entry address, bound, ahead and not compared. A pin that leads its code is listed ahead with what closes it, and a duplicate pin fails the compile. The scope grows a Pack at a time. 56. A Design entry is cited by its entry address, `spec:#design.`, in code comments, test names, the register, the ledger and the advisors' memos; `check.py` resolves each one outside the Specs. A line pointer into a Spec is replaced when its file is next touched. +58. A capability Pack has a committed page, `design/pages/.md`, written by `scripts/pack-page.mjs` from the graph in memory, with no commit, timestamp or absolute path; `check.py` keeps the list of pages (`PACK_PAGES`) and fails on one that is behind, missing or unlisted. An edit to a member Spec is followed by `npm run pages`. A pass reads the page first. +59. The pinned pairs are data, `tests/types/pinned-pairs.json`, beside the type test, which a pure test keeps in step; the page reads them and parses no test. The pinned module is formatted by Prettier. +60. An anchor that lives in a test names the source files it stands for in `design/tools/anchor-sites.json`, kept by a pure test; the graph does not hold the link. +61. The register cites an open question by its Spec and the opening of its text, never by position; `check.py` verifies it, and a source whose question left its Spec keeps its last text with `open: false`, only on a decided or folded row. Elsewhere a question is cited by its OD number. +62. A built Spec may pin a type that a designed form widens, listed ahead; a behavior the code lacks lives in a Spec of its own (`PLAN.md` 6.7). The rebuild is split by it. +63. The owner, 2026-10-04, on this unit's four worktree lanes and five review lanes: "This approach is appropriate if for implementation of a large full-week epic. ... it is excessive, very."; on worktrees: "I would say no benefit at all."; and "situation dictates actions. And intelligence of the orchestrator decides. Guides are recommendations to consider (unless project has hard rules)." Until the owner rules on the proposal (Owner queue), the main thread sizes review and isolation to the work, and one review that runs things is the usual start. 57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. ## Owner queue @@ -344,9 +359,9 @@ The key check is done ("Next unit"). For the record, the procedure that worked w What waits for the owner at the close of round 3: - The pull request of `feature/round-2` into `main`, which the main thread opens at this close: the owner reviews and merges it. And the pull request of `unit/design-in-the-graph`, stacked on it. -- What `ready` states. The Protocol reads `ready` as approved for building: its build backlog (recipe 1) is `ready` and not implemented, and its drift alarm (recipe 2) is implemented and not `ready`. This corpus states `ready` after a Spec's slice passes (4e). With designs ahead of their code first-class, the owner chooses: keep the convention, and read "designed, not built" as `defined` with no implementation binding, as the history view's Pack page shows; or state `ready` on a design the owner approves for its build, such as the history projection, whose floor reaches `ready`. No Spec states `ready` until the owner rules. -- The aggregate's reach into built Specs. `spec:application.generation-registry`, `spec:command.command-declaration` and `spec:command.command-pipeline` pin `ReadModelBinding`, the markers and step 9 over all three projection forms, so they depend on the deferred aggregate Spec and their `ready` floor waits on it, which 4e meets for the command family. Either narrow those pins to the forms the code admits and keep the aggregate's in its own Spec until it is built (the platform review's "narrow an unsupported generic promise"), or keep the promise and let the floor wait. -- Words for the design language that this unit used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack; and from the Convex pass, batch, source, consistent cut, history view. +- Decided on 2026-10-04: OD-163, a stated `ready` means approved to build, and OD-162, the aggregate form leaves the three built Specs ("Where the work stands"). No Spec states `ready` yet. +- The proposal on sizing review and isolation to the work, from the owner's words of 2026-10-04, is `proposal-review-sizing.md` in the unit folder of `pack-page`. It would change step 6 of `slice` in `SESSIONS.md`, the guide's run pattern and decision 39's default, once the owner rules. +- Words for the design language that this unit used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack; from `pack-page`, history rebuild (the new Spec's ID), Pack page, stated rung, floor, next rung, pair with bound, ahead and not compared, an anchor's site, register row; and from the Convex pass, batch, source, consistent cut, history view. - The doc's two hunks, from OD-008 and OD-044, in `patch-doc-sitting-two.diff` of sitting two's folder: `git apply ~/dev-libar-supporting-context/calibration/application-platform-sitting-two/patch-doc-sitting-two.diff` from the repository root, then a commit. Only the owner edits the doc. - The hosted tier's first run, from the owner's machine and then by the workflow on `main`, and the dashboard check of `clean-capybara-16` ("Next unit"). OD-036, Probe 3's quota half, is `waiting` for that run. - The untracked `tmp-convex-findings.txt` at the repository root, the owner's notes of the hosted key rotation, makes every local run record "not clean" until the owner moves it. @@ -488,12 +503,17 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - The interrupt accepts a `retired` or `aborted` generation, because its row does not show whether a purge's batches run; a fence bump with nothing running is harmless, and a purge marker on the row would tell the two apart if an interrupt of a purge must ever be refused. 44. From the unit `design-in-the-graph`. Each is a gap a later unit takes when it touches its subject. - - `spec:application.rebuild` and `spec:application.write-pause` carry no implementation binding, though `src/read-model/rebuild.ts` and `src/gate/` realize them: no `codeAnchor` satisfies either, so the Pack's page and the drift alarm do not see them. - Nine pairs of `tests/types/pinned.test-d.ts` are not compared because they differ in the ctx they take: the pinned `MutationCtx` is the emitter's generic stand-in, so it never equals a composition's ctx. Five of them (`typeCommandDeclaration`, `fnPublicCommand`, `fnInternalCommand`, `fnRunPipeline`, `fnRelayFailure`) also lead the code and carry the ctx inside the executor type, so nothing flips when their build lands. Either the notation pins a ctx generic over the data model, or the emitter compares with the ctx erased throughout. - Thirteen names the design uses and no Spec pins stand in the emitter's preamble, each pointing at the code's type: `ReadModelDataModel`, `RowDataModel`, `GateDataModel`, `ListArgs`, `BatchRef`, `FillBatchRef`, `AppendResult`, `SubjectRef`, `DiagnosticSink`, `FailedCall`, `outcomeKindValidator`, `WriteBaselineArgs`, `WriteBaselineResult`. The Spec that uses one may pin it when next touched. - The emitter takes no Convex registration (`export const name = mutation({ ... })`, 51 `fn*` entries in the corpus), no `index*` fragment and no `limit*` formula; the module covers shapes, not the registered surface. - The Convex pass left questions to two lenses: the operator's, whether an entry computes the pause length from the tenant list and the stream counts before `startGeneration` and who takes the batch time; the domain's, what `verified` asserts for a history view nothing could change, if OD-157 keeps the pass. - - `python3 -m unittest design/tools/test_decisions.py` errors in its test of the real register, already at `77acdf2`: OD-006's source `spec:application.first-experiment#7` no longer exists, and the test expects 144 open questions. CI does not run it. + +45. From the unit `pack-page`. + - `readModelTables` in `src/read-model/tables.ts` still installs `projectionMarkers`, which only the aggregate form uses and no Pack Spec pins after OD-162; its pair is not compared. The build that next touches the read-model tables drops it, or OD-075's build keeps it. + - The rebuild keeps the whole example space, because a one-value slot is refused; `spec:application.history-rebuild` has none, and its two examples' steps are free-form. + - The anchor sites live beside the graph: `byFile` on `src/read-model/rebuild.ts` and `src/gate/` still returns nothing, and only the page joins the map. A companion binding is a question for the Protocol (`docs/feedback/sdp-feedback-01.md`). + - The page is about 160 KB, most of it the pinned-declaration tables. The reader's remaining obstacles: the test link has no line anchor, and the aggregate answer is spread over three sections. + - Every edit to a member Spec moves line links, so `check.py` fails until `npm run pages` runs. The reports behind leads 1 to 3 and 6 are outside the repository, because they quote a private repository. The project notes file named in `AGENTS.md` lists them, with the reports, briefs and rulings of S0. diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index dde004c..7f93be6 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -4,6 +4,18 @@ A running file, addressed to the Protocol's maintainers. Each `adopt` unit and e Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-04, a page per capability Pack, built by the adopter + +The unit `pack-page` built round 1 of `sdp-feedback-03-selection.md` beside this file. `scripts/pack-page.mjs` reads the graph in memory, through the package's exported `extract` and `createReader`. It writes `design/pages/history-view.md`, one committed page for `pack:history-view`: the members in authored order, each with its rung, floor, next rung and the clause that blocks it, its anchors and verifiers, its pinned pairs, the dependencies outside the Pack, and the open questions joined to the register. `check.py` fails when the page is behind the tree. Five things the page needed are not in the Protocol, and the page works around each: + +- **A floor at a rung above the stated one.** `evaluateReadinessFloor(node, index)` takes no target rung, and `floorFailures` covers only the stated rung. So recipe 9 answers `firstUnmetClause: null` for a Spec that stated `defined` and could not state `ready`. The page walks the exported `readinessFloors` with `buildGraphIndex` one rung up, using the Protocol's own predicates. A target rung on the evaluator would retire that walk, and recipe 9 could report the next rung's blocker. +- **Which targets fail the typed-dependency clause.** Its failure names the clause, not the dependencies that break it, so the page recomputes "a target stating below `defined`". +- **Pack order.** The reader's `packContext` and `graph.json` still sort the members, so the page reads the list in the `.pack.sdp.md` file. +- **An anchor that lives in a test.** The read-model library and the gate cannot import the Protocol, so their anchors sit in tests. `design/tools/anchor-sites.json` names the source files each such anchor stands for, and a pure test keeps it true. The graph does not hold that link: `byFile("src/read-model/rebuild.ts")` still returns no Spec, and recipe 4 does not see it. A companion binding on the anchor would let the graph see it. +- **A question's identity.** The register now cites an open question by its Spec and the opening of its text, verified by `check.py`, in place of a position that collided with the entry-address grammar and had drifted in 47 of 151 sources. An optional question key in the Protocol would make that an address. + +The page was tested against the reader this file's section of the same day describes. A `gpt-6-astra` job read only the page and the files it links to, and was given five tasks: find the history contract, locate OD-157, explain the aggregate dependency, find one declaration's type comparison, and say whether a paused-rebuild example has native-backend evidence. It did four in full. It found OD-157 but could not tell what "blocks S5" meant, and the page now says. That reader is the one plan 35 asks to be named before Spec Studio resumes. + ## 2026-10-04, the design as a person working in the repository reads it The unit `design-in-the-graph` gave this corpus the content a design ahead of its code needs. It has one maturity per Spec, `pack:history-view` in reading order, pinned declarations compiled and compared with the code, entry addresses in code, tests and the register, and two passes. Read through `npx sdp view` at `d39c89e` on the pin `5e29c03`, little of it reaches a person who navigates the repository and works on it. This section describes that reader and what the reader meets. It asks for no particular feature. From 15f3d04f0adeadfca368c7daa579ae629fb729af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 03:24:28 +0200 Subject: [PATCH 28/60] docs: the second read of 2026-10-04 links into the repository, not into a local checkout Its eleven absolute local links become repository-relative links, or code spans where they pointed into node_modules or the Protocol's repository. Co-Authored-By: Claude Opus 5.5 --- docs/feedback/sdp-feedback-02.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/feedback/sdp-feedback-02.md b/docs/feedback/sdp-feedback-02.md index 427fa19..f27c6cc 100644 --- a/docs/feedback/sdp-feedback-02.md +++ b/docs/feedback/sdp-feedback-02.md @@ -1,6 +1,6 @@ **I would make the human reading experience the next SDP milestone.** The platform now has enough design content to support useful review, but the reader still has to reconstruct the design from several files and tools. The next work should let a person open one capability and understand its design, unresolved choices, relationship to code, and available proof. -I read the updated [feedback](/Users/darkomijic/dev-libar/libar-platform/docs/sdp-feedback.md:7), [platform PR #12](https://github.com/libar-dev/libar-platform/pull/12), and [SDP PR #27](https://github.com/libar-dev/software-delivery-protocol/pull/27). I also queried the platform at `d39c89e` using its installed SDP pin, `5e29c03`, and rendered the existing pages in memory. +I read the updated [feedback](sdp-feedback-01.md), [platform PR #12](https://github.com/libar-dev/libar-platform/pull/12), and [SDP PR #27](https://github.com/libar-dev/software-delivery-protocol/pull/27). I also queried the platform at `d39c89e` using its installed SDP pin, `5e29c03`, and rendered the existing pages in memory. The current graph confirms 239 Specs, six Packs, 977 Design entries across 59 Specs, and 401 declaration entries across 39 Specs. All 15 members of `pack:history-view` state `defined`. That last fact explains why a maturity table alone cannot present this work well. @@ -8,13 +8,13 @@ Three implementation details affect the recommendations: - Pack membership retains authored order in the freshly derived edges, but `packContext` sorts members by ID, and graph serialization sorts the edges. Preserving reading order needs to survive the whole path. - `byFile("src/read-model/rebuild.ts")` returns no Specs. A file browser would expose the existing binding gap unless that is addressed. -- `sdp validate` calls the build routine, which removes generated projection directories. A viewer needs a refresh path that does not remove the pages being read. These behaviors are visible in the [installed engine](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/dist/cli/sdp.js:7756). +- `sdp validate` calls the build routine, which removes generated projection directories. A viewer needs a refresh path that does not remove the pages being read. These behaviors are visible in the installed engine (`node_modules/@libar-dev/software-delivery-protocol/dist/cli/sdp.js`, line 7756). Here are the changes I would consider, starting with the most immediately useful. The first group makes individual Specs readable. -1. **Finish the proposed rendering of Design entries.** Render each keyed entry as a readable item in authored order. Show the key, its value, and a link to the source. Keep JSON only for structured values that need it. This has a carrying decision already, [authored-entry-order](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/specs/decisions/authored-entry-order.sdp.md). It is the smallest change that improves all 977 entries at once. +1. **Finish the proposed rendering of Design entries.** Render each keyed entry as a readable item in authored order. Show the key, its value, and a link to the source. Keep JSON only for structured values that need it. This has a carrying decision already, authored-entry-order (`node_modules/@libar-dev/software-delivery-protocol/specs/decisions/authored-entry-order.sdp.md`). It is the smallest change that improves all 977 entries at once. 2. **Format declarations for reading in the generated view.** The source can retain the one-line declaration shape while the page displays a formatted code block, followed by the explanatory prose. For example, the existing declaration could appear as: @@ -58,7 +58,7 @@ The next group gives a reader a way into the corpus. 9. **Preserve Pack order through extraction, serialization, the reader, and rendering.** Add an explicit representation of authored order, either on the Pack or its membership data, and validate that it agrees with membership. The acceptance case should serialize and reload the graph before rendering. A fix that only reads the in-memory edge order would leave consumers of `graph.json` with different behavior. -10. **Give a Pack an authored reading guide.** The [history-view Pack](/Users/darkomijic/dev-libar/libar-platform/design/specs/history-view.pack.sdp.md) already explains why each group belongs. Present that guide as short reading stages beside the member list. A future Pack extension could support named groups containing references, but those groups should organize reading only. They should not restate contracts or store implementation status. +10. **Give a Pack an authored reading guide.** The [history-view Pack](../../design/specs/history-view.pack.sdp.md) already explains why each group belongs. Present that guide as short reading stages beside the member list. A future Pack extension could support named groups containing references, but those groups should organize reading only. They should not restate contracts or store implementation status. 11. **Distinguish the design being considered from its supporting context.** A capability page should identify the focal Spec, shared contracts, examples, supporting facts, and shaping decisions. Start with presentation configuration or explicit reading groups. Derive “changed in this PR” from the selected Git comparison. Avoid permanently recording “new” or “already built” in a Pack, since those descriptions change. @@ -99,9 +99,9 @@ The next group makes status and evidence useful without overstating them. 17. **Explain what prevents the next readiness rung.** Current `floorFailures` describes whether the stated rung is honest. It can be empty while a higher rung remains unavailable. I checked the three aggregate-dependent Specs: evaluating their prospective `ready` statement produces the typed-dependency failure. A human view should explain the target and clause, for example: “Cannot state ready because aggregate projection states scoped.” This can begin as a recipe using the existing floor evaluator, without editing the Spec. -18. **Put the pinned type-test inventory beside the declaration.** The current [type-test file](/Users/darkomijic/dev-libar/libar-platform/tests/types/pinned.test-d.ts:42) declares 53 matching pairs, 14 expected differences, and nine pairs it does not compare. A platform adapter can expose each pair’s address, comparison mode, code symbol, and test location. A declaration page can then show “expected to match” or “expected to differ,” with the actual execution result loaded separately. +18. **Put the pinned type-test inventory beside the declaration.** The current [type-test file](../../tests/types/pinned.test-d.ts#L42) declares 53 matching pairs, 14 expected differences, and nine pairs it does not compare. A platform adapter can expose each pair’s address, comparison mode, code symbol, and test location. A declaration page can then show “expected to match” or “expected to differ,” with the actual execution result loaded separately. -19. **Expose what a type comparison leaves out.** “Compared after removing the context parameter” matters. So do placeholder declarations, imported fallback types, and declarations the emitter skips. Display these qualifications beside the comparison. Also distinguish an entry with no comparison from an entry that the emitter cannot emit. The [emitter](/Users/darkomijic/dev-libar/libar-platform/scripts/pinned.mjs) already contains much of this information. +19. **Expose what a type comparison leaves out.** “Compared after removing the context parameter” matters. So do placeholder declarations, imported fallback types, and declarations the emitter skips. Display these qualifications beside the comparison. Also distinguish an entry with no comparison from an entry that the emitter cannot emit. The [emitter](../../scripts/pinned.mjs) already contains much of this information. 20. **Strengthen selected “ahead” checks around the intended difference.** An inequality assertion shows that the types differ. It does not establish that they differ for the expected reason. For consequential pairs, add compiled-tier assertions for the supported common shape and the specific proposed extension. For example, check the intended projection forms explicitly. This is worth doing selectively where unrelated drift could otherwise remain green. @@ -109,7 +109,7 @@ The next group makes status and evidence useful without overstating them. 22. **Repair missing bindings before using their absence to guide work.** Rebuild and write pause are already recorded as binding gaps. Address those, while checking whether each carrying Spec’s scope is narrow enough for an honest binding. A broad workflow with only one realized path may need a better boundary. Until then, render “no implementation binding recorded,” which is what the graph actually knows. -23. **Represent the binding location and implementation location separately.** The read-model anchors live in [a test file](/Users/darkomijic/dev-libar/libar-platform/tests/pure/read-model.test.ts:17) because deployed code cannot import SDP. A useful page needs to show both where that assertion is made and which implementation it points to. Start with an explicit platform mapping or an extractor-owned companion-binding design. If SDP generalizes this, preserve the authored binding and validate its target. Do not silently treat a test import as proof that the imported module satisfies the Spec. +23. **Represent the binding location and implementation location separately.** The read-model anchors live in [a test file](../../tests/pure/read-model.test.ts#L17) because deployed code cannot import SDP. A useful page needs to show both where that assertion is made and which implementation it points to. Start with an explicit platform mapping or an extractor-owned companion-binding design. If SDP generalizes this, preserve the authored binding and validate its target. Do not silently treat a test import as proof that the imported module satisfies the Spec. 24. **Add a reverse file view.** Opening a source file should show the Specs bound to it, relevant declarations, examples, and affected Packs. Use `byFile` for recorded coverage, and display “coverage unknown” when it has none. This is especially useful during implementation and review, where the reader often arrives holding a filename rather than a Spec ID. @@ -117,11 +117,11 @@ The next group makes status and evidence useful without overstating them. The next group supports repeated design passes. -26. **Present unresolved choices as an actionable decision list.** Join recipe 20 with [the decision register](/Users/darkomijic/dev-libar/libar-platform/design/decisions/register.json:6403). Show the question, provisional reading, class, advisor, affected Specs, and downstream consequences. Preserve the difference between a question that blocks an SDP readiness floor and a register decision that blocks a platform unit. OD-157 is a concrete case: its Spec question is non-blocking for readiness, while the register assigns an owner decision affecting S5. +26. **Present unresolved choices as an actionable decision list.** Join recipe 20 with [the decision register](../../design/decisions/register.json#L6403). Show the question, provisional reading, class, advisor, affected Specs, and downstream consequences. Preserve the difference between a question that blocks an SDP readiness floor and a register decision that blocks a platform unit. OD-157 is a concrete case: its Spec question is non-blocking for readiness, while the register assigns an owner decision affecting S5. 27. **Give open questions stable identities.** Positional references such as `spec:application.rebuild#7` are fragile and are not current SDP entry addresses. A small SDP extension could add optional question keys and a ruled address form. Migration should validate uniqueness and detect missing references. Until then, the existing `OD-*` identity can be the stable presentation link, with its Spec association checked by platform tooling. Any proposed question-address syntax should remain explicitly a proposal until ruled. -28. **Make a review lens a filter over the same capability.** Domain, Convex, operator, and implementation views can reorder or emphasize relevant questions, entries, examples, and constraints. They should open the same carrying Specs. The existing [pass task](/Users/darkomijic/dev-libar/libar-platform/design/advisors/task-pass.md) already supplies the working pattern. A lens does not need a new Spec kind or a compulsory stage sequence. +28. **Make a review lens a filter over the same capability.** Domain, Convex, operator, and implementation views can reorder or emphasize relevant questions, entries, examples, and constraints. They should open the same carrying Specs. The existing [pass task](../../design/advisors/task-pass.md) already supplies the working pattern. A lens does not need a new Spec kind or a compulsory stage sequence. 29. **Generate the next pass’s reading material.** Given a Pack and lens, produce a disposable view containing the reading order, open questions, dependency concerns, relevant declarations, and examples. This could be copied into an advisor brief or read directly by a person. Start with a platform recipe. Generalize it only after repeated use shows which joins are stable. @@ -141,7 +141,7 @@ Several supporting changes would make these views dependable. 36. **Separate inspection from artifact publication.** A local viewer should use in-memory extraction, validation, and rendering. It should not call the build path on every refresh. A future CLI cleanup could provide the same separation for checks, but the first viewer can use the exported APIs. When extraction fails, display the diagnostics and clearly identify any retained page as the last successful snapshot. -37. **Keep changing context outside the pure Design Review.** The current Design Review is specified as a function of the graph alone, without timestamps or commit identities. A repository browser can surround that content with the selected commit, engine pin, Git comparison, and test run. That separation lets the pure pages stay deterministic while the browser answers practical questions about freshness. The current boundary is explicit in the [Design Review Spec](/Users/darkomijic/dev-libar/libar-platform/node_modules/@libar-dev/software-delivery-protocol/specs/consumers/design-review.sdp.md:19). +37. **Keep changing context outside the pure Design Review.** The current Design Review is specified as a function of the graph alone, without timestamps or commit identities. A repository browser can surround that content with the selected commit, engine pin, Git comparison, and test run. That separation lets the pure pages stay deterministic while the browser answers practical questions about freshness. The current boundary is explicit in the Design Review Spec (`node_modules/@libar-dev/software-delivery-protocol/specs/consumers/design-review.sdp.md`, line 19). 38. **Build a small read-only browser with static output first.** It needs a navigation column, a readable content column, search, filters, entry links, and an optional context panel. Static HTML with client-side search is sufficient for an initial export; local refresh can be added around the same renderer. Keyboard navigation, readable line lengths, text labels beside colors, and print output should be part of that first cut. @@ -176,7 +176,7 @@ I would package the work into a short sequence of reviewable PRs: | 5 | **Iteration review.** Add entry-level comparisons, changes since a pass, and CI review artifacts. | A reviewer can identify what changed in the design since the previous pass and inspect the source diff. | | 6 | **Reusable integrity improvements.** Add question identities, cycle reporting, and batch address resolution. | Reordering questions preserves references; dependency loops and broken external citations are explained directly. | -The current projection freeze and Studio deferral should be addressed explicitly in those proposals. The freeze requires a superseding decision for changes to the shipped views. [Plan 35](/Users/darkomijic/dev-libar/software-delivery-protocol/plans/35-agent-surface-adoption-and-self-binding.md:80) also asks for a named underserved reader and a package home before Studio resumes. Your updated feedback supplies a concrete reader: a person working inside this repository who needs to inspect and iterate on a capability. I would recommend `@libar-dev/` as the proposed home for that developer tool and keep the first scope to reading and review. +The current projection freeze and Studio deferral should be addressed explicitly in those proposals. The freeze requires a superseding decision for changes to the shipped views. Plan 35 (`plans/35-agent-surface-adoption-and-self-binding.md` in the Protocol's repository, line 80) also asks for a named underserved reader and a package home before Studio resumes. Your updated feedback supplies a concrete reader: a person working inside this repository who needs to inspect and iterate on a capability. I would recommend `@libar-dev/` as the proposed home for that developer tool and keep the first scope to reading and review. **My first choice would be PRs 1–3, followed promptly by the small browser.** Formatting the pages will provide immediate value; navigation and the platform adapters will make them useful for actual design decisions. I would postpone new maturity rungs and changes to the declaration carrier until that readable view has been used for the remaining history-view passes. From ee8846a56eea116c96bacb39450bff5477983385 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 04:01:51 +0200 Subject: [PATCH 29/60] design: fold the domain and operator passes over the history view, first round The domain pass (Opus 5.5 on the advisor-domain definition) and the operator pass (gpt-6-astra) read pack:history-view from its page first. Each memo was checked by the other family on a copy with one planted citation, and each check caught its plant. The rulings that needed no lean are applied: - OD-162's residue: the history projection, the rebuild, the projection contract and the read models name the per-entity and history forms only, and point at spec:application.aggregate-projection for the aggregate form. - What the history verify pass checks, as a consequence of the write rule: it writes a missing row, brings a lagging row up, and never folds a covered row again. - Seven non-blocking open questions, OD-164 to OD-170: order independence per history projection, a history row and D19's deletion policy, the restore's history comparison, a migration that needs the paused source, audit failure in an abort, the pause across tenants, and a verified generation that still holds writers. - OD-171, an owner row on the terms of the history form. Found beside: defineList maps saved state through toDto without the schema-version checks spec:context.queries#design.fnList specifies. Co-Authored-By: Claude Opus 5.5 --- design/decisions/register.json | 240 ++++++++++++++++++ design/pages/history-view.md | 120 ++++----- .../application/aggregate-projection.sdp.md | 1 + .../application/history-projection.sdp.md | 4 +- .../specs/application/history-rebuild.sdp.md | 5 +- .../application/projection-contract.sdp.md | 4 +- design/specs/application/read-models.sdp.md | 4 +- design/specs/application/rebuild.sdp.md | 2 +- design/specs/application/restore.sdp.md | 1 + design/specs/application/write-pause.sdp.md | 1 + 10 files changed, 318 insertions(+), 64 deletions(-) diff --git a/design/decisions/register.json b/design/decisions/register.json index f30d527..eb29c9e 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6626,6 +6626,246 @@ "decidedBy": "owner", "decidedOn": "2026-10-04", "ruling": "A stated ready means approved to build, the Protocol's reading: recipe 1 is the build backlog and recipe 2 the drift alarm. No Spec states ready until the owner rules on it; the history projection may after the domain and operator passes. The owner chose, on 2026-10-04, from the main thread's options: \"Approved to build (Recommended)\": \"The Protocol's reading. Recipe 1 becomes the build backlog; the history projection could state ready after the domain and operator passes; roadmap 4e ('ready by family') changes meaning. No Spec states ready in this unit.\"" + }, + { + "id": "OD-164", + "title": "Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allo", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-projection", + "question": "Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view (E-9, D2, D18)", + "file": "design/specs/application/history-projection.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "D2", + "D18" + ], + "provisionalReading": "the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view", + "blocks": "S5", + "advisor": "domain", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-165", + "title": "A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history vi", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-projection", + "question": "A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, waits for that policy (D19, D9, E-9)", + "file": "design/specs/application/history-projection.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "D19", + "D9" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "domain", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-166", + "title": "Before a restore accepts an active history generation, how does its bounded check compare the projected fields and sourc", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.restore", + "question": "Before a restore accepts an active history generation, how does its bounded check compare the projected fields and source versions against an independent fold without changing the read model, including when the saved code declares a different projection version from the active generation?", + "file": "design/specs/application/restore.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-167", + "title": "Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, m", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-rebuild", + "question": "Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not?", + "file": "design/specs/application/history-rebuild.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-168", + "title": "Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation,", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-rebuild", + "question": "Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one successful abort with both sources reopened?", + "file": "design/specs/application/history-rebuild.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-169", + "title": "Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separatel", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-rebuild", + "question": "Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while a command writing only an unrelated source remains allowed?", + "file": "design/specs/application/history-rebuild.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-170", + "title": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those exi", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.write-pause", + "question": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort?", + "file": "design/specs/application/write-pause.sdp.md" + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "unsorted", + "foldedInto": [], + "class": null, + "reason": null, + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null + }, + { + "id": "OD-171", + "title": "The terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events", + "sources": [ + { + "kind": "specLine", + "ref": "application.projection-contract#source-versions", + "file": "design/specs/application/projection-contract.sdp.md", + "line": 47 + } + ], + "families": [ + "application" + ], + "cites": [], + "provisionalReading": null, + "blocks": null, + "advisor": "domain", + "status": "sorted", + "foldedInto": [], + "class": "owner", + "reason": "Rule 1, a term: it rules on terms of CONTEXT.md for the history form; raised by the domain pass over pack:history-view and made a row by its fold-in.", + "lean": null, + "checkedBy": null, + "fork": null, + "decidedBy": null, + "decidedOn": null, + "ruling": null } ], "possiblySame": [ diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 97efbc5..399c4c9 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -23,14 +23,14 @@ Start with the members and with what holds a member below its next rung: togethe | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| -| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 5 bound, 3 without a pair | 3, none blocking | +| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 5 bound, 3 without a pair | 5, none blocking | | [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | | [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | -| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 2 examples with a verifier | 3 without a pair | 3, none blocking | +| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 2 examples with a verifier | 3 without a pair | 6, none blocking | | [6](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume) | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [7](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort) | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | -| [8](#8-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 2, none blocking | +| [8](#8-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | | [9](#9-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | | [10](#10-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 1 anchor | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | | [11](#11-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | @@ -154,13 +154,15 @@ No target outside the Pack holds a member below its next rung. ## Open questions -48 open questions on 14 members, none blocking. 41 join a register row by their opening text; 7 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. +54 open questions on 14 members, none blocking. 47 join a register row by their opening text; 7 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. **[History projection](#1-history-projection)**, `spec:application.history-projection` - No register row. [question 1](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … - No register row. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … - **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … +- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [question 4](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … +- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [question 5](../specs/application/history-projection.sdp.md?plain=1#L38), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … **[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` @@ -192,11 +194,15 @@ No target outside the Pack holds a member below its next rung. - **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [question 1](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … - **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [question 2](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … - **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … +- **OD-167** class none, status unsorted, advisor operator, blocks the unit S5. [question 4](../specs/application/history-rebuild.sdp.md?plain=1#L43), [non-blocking]: Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must … +- **OD-168** class none, status unsorted, advisor operator, blocks the unit S5. [question 5](../specs/application/history-rebuild.sdp.md?plain=1#L44), [non-blocking]: Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one … +- **OD-169** class none, status unsorted, advisor operator, blocks the unit S5. [question 6](../specs/application/history-rebuild.sdp.md?plain=1#L45), [non-blocking]: Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while … **[Write pause](#8-write-pause)**, `spec:application.write-pause` - **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … - **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … +- **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [question 3](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort? Keep any … **[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` @@ -262,18 +268,18 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L51) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L52) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L53) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L54) | bound | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L55) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L56) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L57) | bound | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L58) | bound | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L53) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L54) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L55) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L56) | bound | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L57) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L58) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L59) | bound | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) | bound | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | |
The 8 declarations as the Spec pins them -[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L51) +[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L53) ```ts interface HistoryProjection { @@ -286,7 +292,7 @@ interface HistoryProjection { } ``` -[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L52) +[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L54) ```ts applyHistoryProjection( @@ -301,7 +307,7 @@ applyHistoryProjection( ): Promise<{ key: string; results: ApplyResult[] }[]> ``` -[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L53) +[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L55) ```ts orderAllocationHistory: defineTable({ @@ -320,7 +326,7 @@ orderAllocationHistory: defineTable({ }).index("by_key", ["tenantId", "generation", "key"]) ``` -[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L54) +[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L56) ```ts type HistoryEvent = { @@ -332,7 +338,7 @@ type HistoryEvent = { } ``` -[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L55) +[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L57) ```ts type OrderAllocation = { @@ -343,7 +349,7 @@ type OrderAllocation = { } ``` -[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L56) +[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L58) ```ts type OrderAllocationHistoryFields = { @@ -354,7 +360,7 @@ type OrderAllocationHistoryFields = { } ``` -[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L57) +[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L59) ```ts orderAllocationHistoryKeyOf( @@ -363,7 +369,7 @@ orderAllocationHistoryKeyOf( ): string | null ``` -[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L58) +[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) ```ts projectOrderAllocationHistory( @@ -375,7 +381,7 @@ projectOrderAllocationHistory(
-**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L59), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L60). +**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L61), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L62). ### 2. Projection contract @@ -1038,13 +1044,13 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L61) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L62) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L63) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L64) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L65) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L66) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it |
The 3 declarations as the Spec pins them -[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L61) +[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L64) ```ts type HistorySource = { @@ -1069,7 +1075,7 @@ type HistorySource = { } ``` -[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L62) +[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L65) ```ts type HistoryRebuildTarget = { @@ -1078,7 +1084,7 @@ type HistoryRebuildTarget = { } ``` -[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L63) +[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L66) ```ts ctx.runQuery(source.history, { @@ -1090,7 +1096,7 @@ ctx.runQuery(source.history, {
-**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L64), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L65), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L66), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L68). +**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L68), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L69), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L70), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L71). ### 6. Rebuild a cross-stream history view under a write pause; interrupt, then resume @@ -1128,24 +1134,24 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L64) | bound | the type | `closedEntryValidator` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L65) | bound | the table's document and indexes | `gateTables` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L67) | bound | the type | `ScopeKey` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L68) | bound | the type | `gateAllows` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L69) | bound | the type | `assertWritable` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L70) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L71) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L72) | bound | the type | `scopesOfUseCase` in [`src/gate/index.ts`](../../src/gate/index.ts) | | -| [`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L73) | not compared | nothing | none | differs only in ctx | -| [`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L74) | not compared | nothing | none | differs only in ctx | -| [`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L75) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L76) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L77) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L65) | bound | the type | `closedEntryValidator` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L66) | bound | the table's document and indexes | `gateTables` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L68) | bound | the type | `ScopeKey` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L69) | bound | the type | `gateAllows` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L70) | bound | the type | `assertWritable` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L71) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L72) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L73) | bound | the type | `scopesOfUseCase` in [`src/gate/index.ts`](../../src/gate/index.ts) | | +| [`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L74) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L75) | not compared | nothing | none | differs only in ctx | +| [`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L76) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L77) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L78) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L79) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it |
The 14 declarations as the Spec pins them -[`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L64) +[`spec:application.write-pause#design.validatorClosedEntry`](../specs/application/write-pause.sdp.md?plain=1#L65) ```ts const closedEntryValidator = v.object({ @@ -1157,7 +1163,7 @@ const closedEntryValidator = v.object({ }) ``` -[`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L65) +[`spec:application.write-pause#design.tableMaintenanceGates`](../specs/application/write-pause.sdp.md?plain=1#L66) ```ts maintenanceGates: defineTable({ @@ -1167,13 +1173,13 @@ maintenanceGates: defineTable({ }).index("by_key", ["key"]) ``` -[`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L67) +[`spec:application.write-pause#design.typeScopeKey`](../specs/application/write-pause.sdp.md?plain=1#L68) ```ts type ScopeKey = "all" | (string & {}) ``` -[`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L68) +[`spec:application.write-pause#design.fnGateAllows`](../specs/application/write-pause.sdp.md?plain=1#L69) ```ts gateAllows( @@ -1185,7 +1191,7 @@ gateAllows( > ``` -[`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L69) +[`spec:application.write-pause#design.fnAssertWritable`](../specs/application/write-pause.sdp.md?plain=1#L70) ```ts assertWritable( @@ -1194,19 +1200,19 @@ assertWritable( ): Promise ``` -[`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L70) +[`spec:application.write-pause#design.errorCodeWritePaused`](../specs/application/write-pause.sdp.md?plain=1#L71) ```ts writePaused ``` -[`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L71) +[`spec:application.write-pause#design.restoreDoor`](../specs/application/write-pause.sdp.md?plain=1#L72) ```ts gateAllows ``` -[`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L72) +[`spec:application.write-pause#design.fnScopesOfUseCase`](../specs/application/write-pause.sdp.md?plain=1#L73) ```ts scopesOfUseCase( @@ -1215,7 +1221,7 @@ scopesOfUseCase( ): ScopeKey[] ``` -[`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L73) +[`spec:application.write-pause#design.fnCloseScope`](../specs/application/write-pause.sdp.md?plain=1#L74) ```ts closeScope( @@ -1227,7 +1233,7 @@ closeScope( ): Promise ``` -[`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L74) +[`spec:application.write-pause#design.fnResumeScope`](../specs/application/write-pause.sdp.md?plain=1#L75) ```ts resumeScope( @@ -1237,7 +1243,7 @@ resumeScope( ): Promise ``` -[`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L75) +[`spec:application.write-pause#design.fnCloseGate`](../specs/application/write-pause.sdp.md?plain=1#L76) ```ts export const closeGate = internalMutation({ @@ -1247,7 +1253,7 @@ export const closeGate = internalMutation({ }) ``` -[`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L76) +[`spec:application.write-pause#design.fnResumeGate`](../specs/application/write-pause.sdp.md?plain=1#L77) ```ts export const resumeGate = internalMutation({ @@ -1257,7 +1263,7 @@ export const resumeGate = internalMutation({ }) ``` -[`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L77) +[`spec:application.write-pause#design.fnGetGate`](../specs/application/write-pause.sdp.md?plain=1#L78) ```ts export const getGate = internalQuery({ @@ -1270,7 +1276,7 @@ export const getGate = internalQuery({ }) ``` -[`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L78) +[`spec:application.write-pause#design.fnGetGateAudit`](../specs/application/write-pause.sdp.md?plain=1#L79) ```ts export const getGateAudit = internalQuery({ @@ -1282,7 +1288,7 @@ export const getGateAudit = internalQuery({
-**Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L66), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L79), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L80), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L81), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L82), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L83). +**Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L67), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L80), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L81), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L82), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L83), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L84). ### 9. Generation registry diff --git a/design/specs/application/aggregate-projection.sdp.md b/design/specs/application/aggregate-projection.sdp.md index d9bef36..3d08d3b 100644 --- a/design/specs/application/aggregate-projection.sdp.md +++ b/design/specs/application/aggregate-projection.sdp.md @@ -67,3 +67,4 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; - A reviewer confirms that `applyAggregate` compares the marker's `sourceVersions` before it touches `value`, that it reads no mode, that it derives `entityKey` from the input's stream version, that a key change moves the contribution and the count from the marker's key's row to the new key's row, and that a `null` contribution removes the marker and its recorded contribution and creates no row. - A reviewer confirms that the marker table's index leads with the tenant, that `applyAggregate` reads it before every aggregate write, and that it compares the marker's `sourceVersions` before adjusting the sum. +- A reviewer confirms that the pipeline's step 9 and the rebuild's batches are the only callers of `applyAggregate`. diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 535804a..b4f8b82 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -34,6 +34,8 @@ A history projection is the form of a read model whose row depends on history ac - [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) - [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) - [non-blocking] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) +- [non-blocking] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view (E-9, D2, D18) +- [non-blocking] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, waits for that policy (D19, D9, E-9) ## Contract @@ -42,7 +44,7 @@ A history projection is the form of a read model whose row depends on history ac - [extension] `project` never answers `null`: a history row, once written, keeps its subject's ended state, such as a cancelled order, and leaves its table only when its generation is purged, so its `sourceVersions`, the fold's one memory, outlive the subject's end, and an event that arrives after it, such as `AllocationReleased` after `OrderCancelled`, folds into the row and never makes a new one (E-9, D9) - [extension] `applyHistoryProjection` drops every event of the reserved type `baseline` before `keyOf`, on both paths: a baseline holds a stream's migrated state and no fact a view folds, and a migration that changes what a source's earlier events mean to the view is a new projection version and so a new generation, never a rewrite of rows in place (E-9, E-25, D9) - [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) -- [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` or an `AggregateProjection` takes one entry's DTO, so a read model of those forms derives each row from one source stream (E-9, E-7, D8) +- [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` takes one entry's DTO, so a per-entity read model derives each row from one source stream (E-9, E-7, D8) ## Design diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index 0285c68..6e03081 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -40,6 +40,9 @@ This workflow is the paused path of `spec:application.rebuild`, which holds the - [non-blocking] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) - [non-blocking] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) - [non-blocking] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) +- [non-blocking] Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must instead remain possible during that migration, which context query provides it without constructing a DTO of the wrong meaning? +- [non-blocking] Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one successful abort with both sources reopened? The same atomicity check should cover the switch that reopens them. +- [non-blocking] Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while a command writing only an unrelated source remains allowed? Include a retry of resume after its response is lost so the same saved event page cannot change the fold twice. ## Workflow @@ -64,7 +67,7 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - historyCursor: a history view's batch cursor adds `sourceIndex`, the position in the target's `sources`, so a pass goes tenant by tenant in tenant-ID order, source by source in `sources` order within a tenant, stream by stream in the source's `list` order and page by page in version order within a stream, and reads the stream a cursor names from that source's `history`, so two sources with equal local stream IDs never meet; a pass of a history view costs at least one batch per tenant and source, the batch whose `list` page holds no stream (E-8, E-40, E-49, Law 11) - historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) - historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) -- historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause (D9, E-8, E-9, Sc L2-6) +- historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause; because the write rule drops every event at or below a row's recorded version before `project`, the pass writes a missing row and brings a lagging row up to the last event of each source stream with its key, and never folds a covered row again, so it finds a missing or lagging row and not a fold that disagrees with itself (D9, E-8, E-9, Sc L2-6) - limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) ## Verification — reviewed diff --git a/design/specs/application/projection-contract.sdp.md b/design/specs/application/projection-contract.sdp.md index 0247052..c4cb5bf 100644 --- a/design/specs/application/projection-contract.sdp.md +++ b/design/specs/application/projection-contract.sdp.md @@ -83,7 +83,7 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape w ## Verification — reviewed -- A reviewer confirms that every read model in the corpus and the experiment is declared as a `ReadModel` with its `Projection`, an `AggregateProjection` or a `HistoryProjection` bound on a command declaration, and that the pipeline's step 9 and the rebuild's batches are the only callers of `applyProjection`, `applyAggregate` and `applyHistoryProjection`. +- A reviewer confirms that every read model in the corpus and the experiment is declared as a `ReadModel` with its `Projection` or a `HistoryProjection` bound on a command declaration, and that the pipeline's step 9 and the rebuild's batches are the only callers of `applyProjection` and `applyHistoryProjection`. - A reviewer confirms that no `project` function touches `ctx`, the database, the scheduler or the environment. -- A reviewer confirms that every per-entity or history read-model table spreads `rowConventions`, that every aggregate table spreads `aggregateRowConventions`, and that each carries the `by_key` index. +- A reviewer confirms that every per-entity or history read-model table spreads `rowConventions` and carries the `by_key` index; an aggregate table carries the conventions `spec:application.aggregate-projection` pins for it. - A reviewer confirms that a `convex-test` test on the fixture composition writes one `CreateTwiceSummarizedDocument` into an active generation of `documentTitle` at version 1 and a generation being built at version 2 and finds on each row its own generation's `projectionVersion`, that a backfill batch of each generation over a document whose `title` is the depot's `deletedTitle` leaves version 1's row with that title and no row at version 2, the two versions' one difference, and that a test deletes a row through a `null` projection, `applyProjection` in the backfill mode at version 2 over that document, and finds the next live-updated write of the same document at a higher stream version with a live title, `applyProjection` called with the mode `live-updated` because no fixture command amends a document under `documentTitle`, answering `inserted` in the active generation and in a generation in `verifying`, and `skipped-missing` in one in `building`. diff --git a/design/specs/application/read-models.sdp.md b/design/specs/application/read-models.sdp.md index 1113326..ac6ca76 100644 --- a/design/specs/application/read-models.sdp.md +++ b/design/specs/application/read-models.sdp.md @@ -104,13 +104,13 @@ Nothing here schedules, and nothing here reads `ctx.auth` inside a component. Th - noActiveGeneration: a query over a read model that has no active generation throws a plain `Error` that names the read model, a technical failure, and never answers an empty page (D9, Law 6) - fnCrossContextView: `export const getOrderWithStock = query({ args: { tenantId: v.string(), orderId: v.string() }, returns: v.union(v.object({ data: orderWithStockDto, sourceVersions: v.array(streamVersionValidator) }), v.null()), handler })` making at most 8 component reads and returning a `VersionedResult` whose `sourceVersions` are the DTOs' stream versions; no read-model row serves it, because no form writes one row from the DTOs of two contexts (D8, E-45, E-9) - typeVersionedResult: `[extension] type VersionedResult = { data: T; sourceVersions: StreamVersion[] }`, the result of a cross-context view composed from component reads, whose `data` is not a row; every query result carries source versions in one of three ways, a per-entity or history read-model row carries `sourceVersions` by the row conventions so a list page needs no wrapper, an entity DTO carries its stream version from `toDto`, and a composed view is wrapped in this type, so the client can always compare with the versions its command returned; an aggregate row carries no comparable version, so a client that needs its own write reflected compares its entity's row, and the sum's freshness is the subscription's re-run when the command commits (E-45, D8, E-9) -- readModelRowShape: every read-model row carries `tenantId`, `generation`, `key`, `projectionVersion` and the projected fields, a per-entity or history row carries `sourceVersions`, and an aggregate row carries `value` and `entityCount` with the versions on its markers, as the projection contract pins (E-9, D8, D9) +- readModelRowShape: every read-model row carries `tenantId`, `generation`, `key`, `projectionVersion` and the projected fields, and a per-entity or history row carries `sourceVersions`, as the projection contract pins; the row of the aggregate form is pinned by `spec:application.aggregate-projection` (E-9, D8, D9) - indexReadModelByKey: `.index("by_key", ["tenantId", "generation", "key"])` on every read-model table (E-9, Law 11) - indexReadModelByKeyUse: point read of one row by the parent query and by `applyProjection` before an update; the generation comes from the registry's active row, which is one per read model and the same for every tenant, so a query narrows by its own `tenantId` and never by a tenant's generation (D8, D9, E-8, Law 11) - pagination: every list returns through `paginationResultValidator(item)` of `convex/server` and passes its one `paginate` call the options of `boundedPage`, as `spec:context.queries` pins; a list over a parent read-model table calls `paginator` of `convex-helpers` with the composition's schema, as a context list does, over the index of `indexReadModelList`, with the client's cursors moved into the active generation by `pageInGeneration`, relays `pageStatus` and `splitCursor` as the helper returns them, and maps the page's rows through `readModelView`; a list served by a context relays the context's page; a client pages either by an explicit cursor pair; a function runs at most one built-in `.paginate`, because Convex refuses a second with "Convex only supports a single paginated query in each function" (D8, S4, Probe 5, F15, E-24) - limitReadModelList: `limitReadModelList(readModel) = { items: limitListPage(readModel.rowBudgetBytes), bytes: limitListBytes }`, a function of the read model, so 100 items at the default 16 KiB and 64 at the 64 KiB cap; `paginator` honours the item cap on a first run and the row cap and the byte cap on every run, and answers `SplitRequired` with a `splitCursor` for a page that reaches either cap (F13, E-9, Probe 5) - limitComponentReadsPerQuery: `[extension]` 8 component reads per parent query (E-45, D8) -- limitReadModelWritesPerCommand: `[extension]` 4 read-model rows per command, counted as the rows step 9 inserts, replaces or deletes, a row in each generation once, and checked after each call of a write helper, one per `streams` entry for a per-entity read model and one per command for a history read model; an aggregate key change counts the two aggregate rows it writes, and a history row counts once however many entries fed it; above it step 9 throws a plain error and nothing of the command commits (E-45, D8, Sc L2-3) +- limitReadModelWritesPerCommand: `[extension]` 4 read-model rows per command, counted as the rows step 9 inserts, replaces or deletes, a row in each generation once, and checked after each call of a write helper, one per `streams` entry for a per-entity read model and one per command for a history read model; a history row counts once however many entries fed it, and the aggregate form's rows count as `spec:application.aggregate-projection` states; above it step 9 throws a plain error and nothing of the command commits (E-45, D8, Sc L2-3) - readModelVisibility: a subscription re-runs when a row it read changes, including on generation switch, because the query reads the registry row too; after the switch and after a switch back each page shows the rows of the generation then active from the position its cursors name, so a client sees the same orders and never `InvalidCursor` (D8, F7, D9) - noProjectionJob: no scheduled function, cron, action or component maintains a read model on the core path; the only batch writer of read models is the rebuild (D8, D9) diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index ca81587..a8feada 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -59,7 +59,7 @@ The registry, the progress row and the gate document are pinned by `spec:applica - [non-blocking] `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9) - [non-blocking] Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. The option taken here: a batch is one mutation with one cursor on the progress row and a bound of at most 100 entities, capped by the read model's declared `rowBudgetBytes` so that the parent's point reads and writes stay under 4 MiB, and by the context's byte-derived `list` page bound, which is 16 items at the default 256 KiB stream budget; every batch, the backfill and the verify pass over a context's enumeration and the purge over a parent table, is driven by the platform's own self-scheduled internal mutation, and the rebuild uses the component for nothing, because Probe 6 showed that it walks only the tables of the component it is defined in and drives a context's rows only through a parent internal mutation written by hand against a contract its README does not document; the progress row is the one checkpoint (E-40, E-24, E-9, F17, F13, F1) - [non-blocking] Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9) -- [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in `spec:application.history-rebuild`; an `AggregateProjection` has no rebuild here and gets one when a view needs it, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) +- [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in `spec:application.history-rebuild`; the aggregate form's rebuild is deferred with the form in its own Spec, the aggregate projection, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) - [non-blocking] Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no tenant and still ends; the option taken here is that `startGeneration` refuses an empty list beside a grant with a message naming `fillTenants`, and `fillTenants`, an operator entry, walks the grants in bounded batches through a progress row of its own and inserts each missing tenant once; a list that holds a tenant whose first grant came after the table and misses an older one is not detected by that refusal, so the operator runs `fillTenants` on such a deployment before its first `startGeneration` (E-49, E-48, E-40, Law 11) ## Workflow diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index 8900130..35319f2 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -57,6 +57,7 @@ The parts of restore that concern obligations, external dispatch and provider ev - [non-blocking] Extension E-42: the doc says restore runs with matching code and configuration, that domain, journal and read-model invariants hold, and that restore is tested; it does not list the checks or the record, and it does not say what a restore does to a rebuild that was in flight at the backup. The option taken here: four checks, journal, domain, read model and receipt, each a bounded checkpointed batch, the stream check bounded through the `rebuild` query's `maxEvents` argument so a batch folds at most 500 events in all, each folded stream also reading its own stored baseline event, a fifth step that inventories the closed gate entries, the generations in `building`, `verifying` or `verified` and the `imports` rows in `running` that the backup archive restored, a `restoreRuns` row as the record, an accepted branch that resumes every stranded generation the operator did not abort, the `MAINTENANCE_MODE` environment variable as the door, a failed check keeping the whole deployment closed with no override, and the drill before every release with its cadence reconsidered on the first drill's measured check times; the owner confirmed the checks, the door and both policies (E-42, D19, F12) - [non-blocking] Extension E-42, the stream check's batch size: `limitCheckBatch` states the read of a batch that folds one stream, and each further stream the same batch folds reads its own stored baseline event of at most `budgetBytes + 4,096 + 61` bytes; the batch size that keeps a batch of several folded streams under the 16 MiB read ceiling is not pinned (E-42, F13) - [non-blocking] Extension E-42, the enumeration of a stream awaiting a baseline: the journal check enumerates streams through `list`, and `list` refuses a row behind a registered step that reads history with the transient refusal `writePaused`, so the check cannot reach such a stream to inventory it as `awaitingBaseline`; that enumeration needs a read that does not refuse it, designed together with the entry of the baseline-migration sweep (E-42, E-25) +- [non-blocking] Before a restore accepts an active history generation, how does its bounded check compare the projected fields and source versions against an independent fold without changing the read model, including when the saved code declares a different projection version from the active generation? What history-specific assertion belongs in the restore example? ## Workflow diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 2b6d29c..5245a89 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -38,6 +38,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its - [non-blocking] Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1) - [non-blocking] Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9) +- [non-blocking] Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort? Keep any acceptable pause length for the owner's decision rather than deriving a timeout from a batch estimate. ## Contract From c3637e96115054d3f2da36659b792c5a6c240157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 04:07:11 +0200 Subject: [PATCH 30/60] design: the domain lens decides which declarations bind a history view and which event shapes it reads Two delegated rows of the domain lens, decided by the advisor's leans after a gpt-6.1-sol check on a copy with one planted citation (caught; seven corrections to the reasons, applied before the ruling; neither do changed): - OD-172: every command declaration whose writes name a source of a history projection binds it, whether or not its events carry a key the view folds; a pure test over the declarations finds a missing binding. PlaceOrder, CancelOrder and ReceiveStock name the order allocation history in the example's Spec; 5d builds it. - OD-173: a history projection reads every eventSchemaVersion of the event types it folds, since no baseline retires an older shape for it, and HistoryEvent carries eventSchemaVersion. Three pairs move from bound to ahead until 5d's code carries the field. Also: the last lines that named the aggregate form in the built Specs point at spec:application.aggregate-projection, which gains the sentences and a keyChangeCheck entry; two questions lose a work word, and one names getGenerations and getGate. Co-Authored-By: Claude Opus 5.5 --- design/decisions/register.json | 91 ++++++++++++++++++- design/pages/history-view.md | 41 +++++---- .../application/aggregate-projection.sdp.md | 2 + .../application/history-projection.sdp.md | 10 +- .../orders-inventory-example.sdp.md | 6 +- .../application/projection-contract.sdp.md | 6 +- design/specs/application/read-models.sdp.md | 2 +- design/specs/application/write-pause.sdp.md | 2 +- tests/types/pinned-pairs.json | 42 ++++----- tests/types/pinned.test-d.ts | 26 +++--- 10 files changed, 157 insertions(+), 71 deletions(-) diff --git a/design/decisions/register.json b/design/decisions/register.json index eb29c9e..b2e9301 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6634,7 +6634,7 @@ { "kind": "specQuestion", "spec": "spec:application.history-projection", - "question": "Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view (E-9, D2, D18)", + "question": "Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18)", "file": "design/specs/application/history-projection.sdp.md" } ], @@ -6646,7 +6646,7 @@ "D2", "D18" ], - "provisionalReading": "the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view", + "provisionalReading": "the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view", "blocks": "S5", "advisor": "domain", "status": "unsorted", @@ -6667,7 +6667,7 @@ { "kind": "specQuestion", "spec": "spec:application.history-projection", - "question": "A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, waits for that policy (D19, D9, E-9)", + "question": "A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9)", "file": "design/specs/application/history-projection.sdp.md" } ], @@ -6811,12 +6811,12 @@ }, { "id": "OD-170", - "title": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those exi", + "title": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGener", "sources": [ { "kind": "specQuestion", "spec": "spec:application.write-pause", - "question": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort?", + "question": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort?", "file": "design/specs/application/write-pause.sdp.md" } ], @@ -6866,6 +6866,87 @@ "decidedBy": null, "decidedOn": null, "ruling": null + }, + { + "id": "OD-172", + "title": "Which declarations bind a history view", + "sources": [ + { + "kind": "specLine", + "ref": "application.history-projection#declarations-bind", + "file": "design/specs/application/history-projection.sdp.md", + "line": 49 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "E-7", + "D8" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "domain", + "status": "decided", + "foldedInto": [], + "class": "delegated", + "reason": "Rule 3, a rule of the history form that an edit inside this repository takes back; raised by the domain pass over pack:history-view.", + "lean": { + "do": "Add to `spec:application.history-projection` a Contract rule that every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds. Check the rule in 5d with a pure test over the example's three declarations, and list the order allocation history in the `readModels` of `PlaceOrder`, `CancelOrder` and `ReceiveStock`.", + "restsOn": "A history projection is bound per declaration, once per source stream type [design/specs/application/history-projection.sdp.md:45] [spec:command.command-declaration#design.typeReadModelBinding]. The write pause holds every writer of a source \"whether or not it maintains the view\" [design/specs/application/history-rebuild.sdp.md:49]. The meaning of a row's recorded version, that every event of the stream with the row's key up to that version is folded, is stated under the pause only [design/specs/application/history-rebuild.sdp.md:48]. `applyHistoryProjection` drops every event whose version is not above the row's recorded version [spec:application.history-projection#design.fnApplyHistoryProjection]. A per-entity row repairs itself, because `project` sees the whole DTO and the next live write replaces the row [design/specs/application/projection-contract.sdp.md:45] [design/specs/application/projection-contract.sdp.md:50]. The CancelOrder declaration lists only the order summary [design/specs/application/orders-inventory-example.sdp.md:57], and `ReceiveStock` writes the stock item source [design/specs/application/orders-inventory-example.sdp.md:55]. A search of `design/specs` found no rule that a writer of a source binds the view. **Judgment.** On the specified paths, an event with a row's key that an unbound declaration writes is never folded into the live generation. Once a later bound event on the same stream raises the recorded version past it, no specified path folds it into that generation; of those paths, only a new generation does. The rule is kept by the set of all declarations, so only a check over that set keeps it. The wide rule can be checked from the declarations alone, by comparing each `writes` with its bindings. A pure test over the example's three declarations proves the rule for that set only. Each application that declares a history projection needs its own test over its own declarations.", + "against": "The do-nothing option states no rule and leaves each binding to the author of each declaration. In 5d the builder binds `PlaceOrder` and `CancelOrder`, and the L2-6 resume example compares each rebuilt row with the fold of the journal's events [design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md:37] and with the row live commands wrote [design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md:38], which would show a binding missing from that sample. **Judgment.** That catches a gap in the example's tested sample and nothing in an adopter's application, and nothing tells the 5d builder which declarations to bind. The narrower rule binds only the declarations that write a source stream with events the view folds, such as `CancelOrder`'s release of an order's stock. It is what must be true. It spares `ReceiveStock`, whose `StockReceived` has no key [spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf], up to two indexed registry reads per command [spec:application.generation-registry#design.limitRegistryReadsPerCommand]. It also keeps `ReceiveStock` working wherever the wide rule makes it a technical failure. Those cases are while the view has no generation, before the first `startGeneration` and after the only generation was aborted [spec:application.generation-registry#design.errorNoGenerationToWrite], and after a deploy that changes the projection's version, until a generation of that version is switched [design/specs/application/history-projection.sdp.md:35] [spec:application.history-projection#design.fnApplyHistoryProjection]. **Judgment.** I still drop the narrow rule, with moderate confidence. Whether a declaration's events are folded depends on `keyOf` at run time, not on the declaration, so no test can read it from the declarations. A change to `keyOf` that folds one more event type would then silently require bindings on declarations nobody looks at. Under the pause `ReceiveStock` is refused either way, because it writes a closed source [design/specs/application/history-rebuild.sdp.md:53]. In each case where the wide rule makes it fail, `PlaceOrder` and `CancelOrder` fail as well. The cost is real: receiving stock then depends on a view it does not feed.", + "settles": "The build of 5d. The pure test of the rule passes over the example's three declarations (pure test). The L2-6 resume example, at the native backend tier, compares rebuilt rows with the journal's events and with the live rows [design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md:37] [design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md:38]. Neither has run.", + "changes": "For the lean: `design/specs/application/history-projection.sdp.md` gains a Contract bullet after line 45. `design/specs/application/orders-inventory-example.sdp.md` names the binding in the CancelOrder declaration at line 57 and states it for `PlaceOrder` and `ReceiveStock`. In 5d, the code's `readModels` at `example/convex/ordering.ts:48` and `:112` and the declaration of `ReceiveStock` change, and one pure test is added. The `PlaceOrder` counts of `design/specs/application/first-experiment.sdp.md:124` already add the history row and its registry read when the view is bound. `ReceiveStock` adds up to two indexed registry reads per command, and no row, because a `null` key reads none [spec:application.history-projection#design.fnApplyHistoryProjection]. For the narrow rule, the same Spec bullet names folded events instead of `writes`, `ReceiveStock` stays unbound, and nothing beyond the example is tested. For the do-nothing option, only the example's declarations change.", + "ifWrong": "If the wide rule's cost matters, removing `ReceiveStock`'s binding and narrowing the test is one edit. If no rule is stated and a binding is missing, the active generation loses events with no error. The loss shows only when its rows are compared with the journal's events or with a rebuilt generation [design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md:37]. The specified repair is a new generation under a write pause. The Spec edit itself is easy to take back." + }, + "checkedBy": "gpt-6.1-sol, medium, 2026-10-04: plant caught; seven corrections to the reasons, applied by the advisor before the ruling; neither do changed (job-mut64uxp-2eb47318)", + "fork": null, + "decidedBy": "advisor:domain", + "decidedOn": "2026-10-04", + "ruling": "Add to `spec:application.history-projection` a Contract rule that every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds. Check the rule in 5d with a pure test over the example's three declarations, and list the order allocation history in the `readModels` of `PlaceOrder`, `CancelOrder` and `ReceiveStock`." + }, + { + "id": "OD-173", + "title": "A history projection reads every event schema version", + "sources": [ + { + "kind": "specLine", + "ref": "application.history-projection#event-schema-versions", + "file": "design/specs/application/history-projection.sdp.md", + "line": 46 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "E-25", + "D2", + "D5" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "domain", + "status": "decided", + "foldedInto": [], + "class": "delegated", + "reason": "Rule 3, a rule of the history form and the shape of a type, which an edit inside this repository takes back; raised by the domain pass over pack:history-view.", + "lean": { + "do": "Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. Add `eventSchemaVersion: number` to `HistoryEvent`.", + "restsOn": "An older `eventSchemaVersion` is upcast in `evolve` \"until a baseline retires it\" [design/specs/context/journal.sdp.md:71], and a migration retires once every stream has its baseline [design/specs/context/journal.sdp.md:33]. `applyHistoryProjection` drops baselines and leaves out events whose key is `null` [design/specs/application/history-projection.sdp.md:52], and the backfill reads each stream with no `fromVersion` [spec:application.history-rebuild#design.fnHistoryPageCall]. A history query returns the events before a baseline [design/specs/context/queries.sdp.md:54] [design/specs/context/queries.sdp.md:81]. `eventType` and `eventSchemaVersion` are an event's historical contract [design/specs/context/event-envelope.sdp.md:39]. `HistoryEvent` carries no `eventSchemaVersion` [spec:application.history-projection#design.typeHistoryEvent] [example/domain/orderAllocationHistory.ts:11], and the fold chooses its case by `eventType` alone [example/domain/orderAllocationHistory.ts:66] and casts the payload [example/domain/orderAllocationHistory.ts:72]. **Judgment.** A history projection folds every event of its types from a stream's first version, so for those types it meets every shape ever stored, and it reads the raw payload, not an upcast one. The pinned input type gives its rules no way to tell those shapes apart.", + "against": "Do nothing yet. Each event type of the example has one schema version: the Orders and Inventory deciders write `eventSchemaVersion` 1 [example/domain/order.ts:50] [example/domain/stockItem.ts:37]. **Judgment.** The rule could wait for the first schema change of a folded type. D18's triggers do not name a schema change, so the waiting rests on the same reading of need and not on a trigger the doc lists. Meanwhile, adding the field moves a bound pair to `ahead` and adds a field no rule reads today. The field supplies a discriminator only; a projection still has to handle each old shape itself. A second option hands the projection the stream type's upcasters. Each context owns its current state, its journal and its stream metadata [D2]. **Judgment.** Sharing a context's upcasters with a view in the parent would reach into what the context owns; D2 says nothing about upcasters. I keep the lean, because the rule is one sentence and the field one line, while the case it guards comes late.", + "settles": "The build of 5d at the compiled tier: the type test of `typeHistoryEvent` is bound again once the code carries the field. The first schema change of a folded event type shows the rule in use. It has not been run.", + "changes": "For the lean: `design/specs/application/history-projection.sdp.md` gains a Contract bullet after line 43, and its `typeHistoryEvent` and `fnOrderAllocationHistoryKeyOf` entries, lines 54 and 57, add `eventSchemaVersion: number`. In the pinned module, `generated/pinned/history-view.ts`, the `HistoryEvent` declaration under `typeHistoryEvent` gains the field when the main thread regenerates it. The pair of `spec:application.history-projection#design.typeHistoryEvent` in `tests/types/pinned-pairs.json`, now `bound`, becomes `ahead` until 5d's `example/domain/orderAllocationHistory.ts` carries the field, and the page is regenerated. The journal's rules are unchanged. For the do-nothing option, nothing changes now, and the rule and the field arrive with the first schema change of a folded type.", + "ifWrong": "If the rule is unneeded, the cost is one sentence and one field, and an edit takes both back. **Judgment.** If it is needed and left out, the strongest case is a future schema change of a folded event type that leaves the stored older payloads unreadable by the projection, so it throws on them or misreads them, with no field to tell the shapes apart. The repair is explicit handling of the old shape in `project`, and a new projection version and so a new generation under a write pause when the projection's output changes [design/specs/application/history-projection.sdp.md:43]." + }, + "checkedBy": "gpt-6.1-sol, medium, 2026-10-04: plant caught; seven corrections to the reasons, applied by the advisor before the ruling; neither do changed (job-mut64uxp-2eb47318)", + "fork": null, + "decidedBy": "advisor:domain", + "decidedOn": "2026-10-04", + "ruling": "Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. Add `eventSchemaVersion: number` to `HistoryEvent`." } ], "possiblySame": [ diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 399c4c9..796c81d 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -23,7 +23,7 @@ Start with the members and with what holds a member below its next rung: togethe | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| -| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 5 bound, 3 without a pair | 5, none blocking | +| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 2 bound, 3 ahead, 3 without a pair | 5, none blocking | | [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | | [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | @@ -202,7 +202,7 @@ No target outside the Pack holds a member below its next rung. - **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … - **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … -- **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [question 3](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort? Keep any … +- **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [question 3](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep … **[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` @@ -268,18 +268,18 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L53) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L54) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L55) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L56) | bound | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L57) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L58) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L59) | bound | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) | bound | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L55) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L56) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L57) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L58) | ahead | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L59) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L60) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L61) | ahead | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L62) | ahead | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d |
The 8 declarations as the Spec pins them -[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L53) +[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L55) ```ts interface HistoryProjection { @@ -292,7 +292,7 @@ interface HistoryProjection { } ``` -[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L54) +[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L56) ```ts applyHistoryProjection( @@ -307,7 +307,7 @@ applyHistoryProjection( ): Promise<{ key: string; results: ApplyResult[] }[]> ``` -[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L55) +[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L57) ```ts orderAllocationHistory: defineTable({ @@ -326,19 +326,20 @@ orderAllocationHistory: defineTable({ }).index("by_key", ["tenantId", "generation", "key"]) ``` -[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L56) +[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L58) ```ts type HistoryEvent = { streamId: string; eventType: string; + eventSchemaVersion: number; recordedAt: number; occurredAt?: number; payload: unknown; } ``` -[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L57) +[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L59) ```ts type OrderAllocation = { @@ -349,7 +350,7 @@ type OrderAllocation = { } ``` -[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L58) +[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L60) ```ts type OrderAllocationHistoryFields = { @@ -360,7 +361,7 @@ type OrderAllocationHistoryFields = { } ``` -[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L59) +[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L61) ```ts orderAllocationHistoryKeyOf( @@ -369,7 +370,7 @@ orderAllocationHistoryKeyOf( ): string | null ``` -[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) +[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L62) ```ts projectOrderAllocationHistory( @@ -381,7 +382,7 @@ projectOrderAllocationHistory(
-**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L61), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L62). +**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L63), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L64). ### 2. Projection contract @@ -2621,4 +2622,4 @@ limitListPage(budgetBytes) = max(1, min(100, floor(4 MiB / budgetBytes))) | Address | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.aggregate-projection#design.tableProjectionMarkers`](../specs/application/aggregate-projection.sdp.md?plain=1#L55) | not compared | nothing | none | The pin is outside pack:history-view and is not emitted; the aggregate form's table, outside the Pack, while readModelTables still holds it | +| [`spec:application.aggregate-projection#design.tableProjectionMarkers`](../specs/application/aggregate-projection.sdp.md?plain=1#L56) | not compared | nothing | none | The pin is outside pack:history-view and is not emitted; the aggregate form's table, outside the Pack, while readModelTables still holds it | diff --git a/design/specs/application/aggregate-projection.sdp.md b/design/specs/application/aggregate-projection.sdp.md index 3d08d3b..46cf01d 100644 --- a/design/specs/application/aggregate-projection.sdp.md +++ b/design/specs/application/aggregate-projection.sdp.md @@ -35,6 +35,7 @@ An aggregate projection is the form of a read model whose row sums a number over ## Contract - [extension] An aggregate row derives from every entity under its key, so it carries no `sourceVersions`; it carries `value`, the sum of the recorded contributions, and `entityCount`, the number of markers, and the per-entity marker carries the `sourceVersions` the row conventions would otherwise hold (E-9, D9) +- [extension] An aggregate row carries no comparable version, so a client that needs its own write reflected compares its entity's row, and the sum's freshness is the subscription's re-run when the command commits (E-45, D8, E-9) - An aggregate projection contributes a number per entity to an aggregate row and keeps a per-entity marker so live commands and backfill never count one entity twice (D9) - An aggregate read model keeps one marker per entity per generation with the contribution last recorded and the source versions it was computed from, and every aggregate write reads and writes the marker in the same mutation as the aggregate row; the marker's `sourceVersions` are compared like a row's, so a DTO older than the marker never adjusts the sum (D9, E-8, E-9) - [extension] `applyAggregate` ignores the mode: the marker's `sourceVersions` decide, a marker that is not older than the input makes the write `skipped-newer`, and otherwise the marker's recorded contribution leaves the row of the marker's `aggregateKey` and the new contribution joins the row of `aggregateKeyOf`, one row moved by the difference when the key is the same and two rows when it changed, a row whose `entityCount` reaches 0 being deleted, and a `null` contribution joins no row and removes the marker; a live update on an entity backfill has not reached is therefore not partial, because `contribute` sees the whole DTO, which is why the missing-row rule of the per-entity path does not apply (E-9, D9, F1) @@ -61,6 +62,7 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape; - extendsReadModelBinding: when a read model needs an aggregate row, `spec:command.command-declaration#design.typeReadModelBinding` takes the form beside the other two, `readModel: ReadModel | AggregateProjection | HistoryProjection`, where `readModel` is a per-entity read model, an aggregate projection or a history projection, and a per-entity read model or an aggregate projection is bound to its one source stream type (E-7, E-9, OD-075) - extendsStepNine: when a read model needs an aggregate row, the step 9 of `spec:command.command-pipeline` calls, for every binding of a per-entity read model, `applyProjection` of `spec:application.projection-contract`, or `applyAggregate` for a binding of that form, for each matching entry with the entry's DTO and version and the list unchanged, and its `readModelWrites` makes one `applyProjection` or `applyAggregate` call per matching `streams` entry per binding of those forms the declaration lists (E-7, E-9, D8, OD-075) - extendsRegistry: when a read model needs an aggregate row, `projectionMarkers` and its `by_entity` index join `readModelTables` of `spec:application.generation-registry`, so `ReadModelDataModel` holds them, and the registry's reads and transitions stay as they are, because a marker names a generation and never changes one (E-8, E-9, OD-075) +- keyChangeCheck: a test of `applyAggregate` moves an entity from one aggregate key to another and finds the old key's row without its contribution and count and the new key's with them (D9, E-9) - deferred: the code of `AggregateProjection` and `applyAggregate`, a rebuild path for an aggregate read model and the tests of this contract, until a read model needs an aggregate row (E-9, OD-075) ## Verification — reviewed diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index b4f8b82..3cd30d4 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -34,8 +34,8 @@ A history projection is the form of a read model whose row depends on history ac - [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) - [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) - [non-blocking] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) -- [non-blocking] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test waits for a second history view (E-9, D2, D18) -- [non-blocking] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, waits for that policy (D19, D9, E-9) +- [non-blocking] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18) +- [non-blocking] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9) ## Contract @@ -43,8 +43,10 @@ A history projection is the form of a read model whose row depends on history ac - [extension] A history projection's fold gives the same row whatever the order in which the events of different streams arrive and however they are split between calls: from one prior row, the events of one key folded in one call or in several, with the streams interleaved in any way that keeps each stream's events in version order, give equal rows; D2 orders events only within a stream, and the live path feeds a row command by command while the backfill feeds it stream by stream, so a view whose meaning depends on the order across streams is not a history projection and waits for the ordered consumer of D18 (E-9, D2, D8, D18) - [extension] `project` never answers `null`: a history row, once written, keeps its subject's ended state, such as a cancelled order, and leaves its table only when its generation is purged, so its `sourceVersions`, the fold's one memory, outlive the subject's end, and an event that arrives after it, such as `AllocationReleased` after `OrderCancelled`, folds into the row and never makes a new one (E-9, D9) - [extension] `applyHistoryProjection` drops every event of the reserved type `baseline` before `keyOf`, on both paths: a baseline holds a stream's migrated state and no fact a view folds, and a migration that changes what a source's earlier events mean to the view is a new projection version and so a new generation, never a rewrite of rows in place (E-9, E-25, D9) +- [extension] `project` reads every `eventSchemaVersion` of every event type it folds that its sources' journals hold, because the projection drops baselines and so no baseline retires an older shape for it; a stream type's `evolve` may retire an upcaster, and a history projection keeps its own handling of each older shape while any event of that version is stored (E-9, E-25, D2, D5) - [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) - [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` takes one entry's DTO, so a per-entity read model derives each row from one source stream (E-9, E-7, D8) +- [extension] Every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds, so every event of a source stream reaches `keyOf` on the live path and a row's recorded version for a stream means that every event of that stream with the row's key up to it is folded, on the live path as under the pause; a declaration that writes a source without the binding is a defect, which a pure test over the application's declarations finds (E-9, E-7, D8) ## Design @@ -53,10 +55,10 @@ The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:c - typeHistoryProjection: `interface HistoryProjection { name: string; version: number; table: string; rowBudgetBytes?: number; keyOf(tenantId: string, event: EventEnvelope): string | null; project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row }` where `EventEnvelope` is the envelope of `spec:context.event-envelope`, `null` from `keyOf` means the event is not this view's, `prior` is `null` before the key's first event, `events` are the events of one key not yet folded into `prior`, each stream's in version order and the streams interleaved in any order, `project` answers a row and never `null`, and `rowBudgetBytes` is 16 KiB when absent; a history row is a bounded summary of history, never a list that grows with it, so `rowBudgetBytes` binds it like any row (E-9, D8, D9, F13) - fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing, and a generation given whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf` before it reads a row, a technical failure (E-9, D8, D9, F1, Law 6) - tableOrderAllocationHistory: `orderAllocationHistory: defineTable({ ...rowConventions, orderId: v.string(), placedAt: v.optional(v.number()), cancelledAt: v.optional(v.number()), allocations: v.array(v.object({ stockItemId: v.string(), quantity: v.number(), allocatedAt: v.number(), releasedAt: v.optional(v.number()) })) }).index("by_key", ["tenantId", "generation", "key"])` the history-dependent cross-stream view of the example domain, the `HistoryProjection` named `orderAllocationHistory` over the table of that name, keyed by order ID and folded from `OrderPlaced` and `OrderCancelled` in Orders and `StockAllocated` and `AllocationReleased` in Inventory, with one entry of `allocations` per stock item the order allocated on and `sourceVersions` holding the order stream and every stock stream folded, so a row holds at most 100 entries and 101 versions; `getConvexSize` measures the largest such row, at 256-byte tenant and order IDs and 100 stock item IDs of 64 bytes, every allocation released, at 55,803 bytes, so the view declares `rowBudgetBytes` 65,536, the ceiling; it is bound once per source stream type, rebuilds only under the write pause, and Sc L2-6 builds it (E-9, E-46, D9, F13, Sc L2-6) -- typeHistoryEvent: `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }`, the part of an event envelope the order allocation history's rules read, so that every `EventEnvelope` of `spec:context.event-envelope` is one and `keyOf` and `project` of the view take it where `HistoryProjection` hands them envelopes (E-9) +- typeHistoryEvent: `type HistoryEvent = { streamId: string; eventType: string; eventSchemaVersion: number; recordedAt: number; occurredAt?: number; payload: unknown }`, the part of an event envelope the order allocation history's rules read, so that every `EventEnvelope` of `spec:context.event-envelope` is one and `keyOf` and `project` of the view take it where `HistoryProjection` hands them envelopes (E-9) - typeOrderAllocation: `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the quantity one stock item allocated to the order, when, and when it was released (E-9) - typeOrderAllocationHistoryFields: `type OrderAllocationHistoryFields = { orderId: string; placedAt?: number; cancelledAt?: number; allocations: OrderAllocation[] }` where `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the projected fields of the order allocation history, in `example/domain/orderAllocationHistory.ts` (E-9, E-46, Sc L2-6) -- fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) +- fnOrderAllocationHistoryKeyOf: `orderAllocationHistoryKeyOf(tenantId: string, event: HistoryEvent): string | null` in `example/domain/orderAllocationHistory.ts`, answering the stream ID of an `OrderPlaced` or an `OrderCancelled`, the payload's `orderId` of a `StockAllocated` or an `AllocationReleased`, and `null` for every other event, where `type HistoryEvent = { streamId: string; eventType: string; eventSchemaVersion: number; recordedAt: number; occurredAt?: number; payload: unknown }` is the part of `EventEnvelope` the rules read, so the example's pure domain code imports no context library (E-9, E-46, Sc L2-6) - fnProjectOrderAllocationHistory: `projectOrderAllocationHistory(tenantId: string, prior: OrderAllocationHistoryFields | null, events: readonly HistoryEvent[]): OrderAllocationHistoryFields` in the same file, folding the events one by one into `prior`, or, when `prior` is `null`, into `{ orderId, allocations: [] }` with the key of the first event that has one, and throwing the plain `Error` `"The order allocation history needs a prior row or an event of an order"` when there is neither; the view's `HistoryProjection` holds this function and `orderAllocationHistoryKeyOf` as its `project` and `keyOf` (E-9, E-46, Sc L2-6) - orderAllocationHistoryFold: each field is written by the events of one stream, each event's time being its `occurredAt`, or its `recordedAt` when absent: `OrderPlaced` sets `placedAt` and `OrderCancelled` sets `cancelledAt`; `StockAllocated` on a stock item sets that stock item's entry of `allocations` to the payload's `quantity` and the time as `allocatedAt`, with no `releasedAt`; `AllocationReleased` sets `releasedAt` on that entry and changes nothing when the order has none on that stock item; every other event changes nothing; `allocations` is kept sorted by stock item ID, compared by UTF-16 code units; so the fold gives one row whatever the order across streams, a stock event before `OrderPlaced` included, and a pure test folds one order's events in every interleaving of its three streams and every split into calls and finds one row (E-9, D2, Sc L2-6) - limitHistoryFold: on the live path step 9 calls `applyHistoryProjection` once per history read model per command, so it reads and writes at most one row per distinct key among the command's events in each generation, each at most `rowBudgetBytes`, and a `PlaceOrder` of 100 lines, whose 101 `streams` entries key to one order, reads and writes the order allocation history's one row once; on the backfill it takes one `history` page of at most the progress row's `batchSize` events, as `spec:application.history-rebuild#design.limitHistoryBatch` bounds it, so one batch reads at most that many events plus as many rows (F13, E-9, E-40) diff --git a/design/specs/application/orders-inventory-example.sdp.md b/design/specs/application/orders-inventory-example.sdp.md index 5842e28..7348db2 100644 --- a/design/specs/application/orders-inventory-example.sdp.md +++ b/design/specs/application/orders-inventory-example.sdp.md @@ -51,10 +51,10 @@ The second lifecycle command is `CancelOrder`. The stock item keeps two totals a - **place operation** — The Orders context's list-shaped operation `place({ orders: [{ orderId, lines }] })`, planning one order stream per order at expected version 0, so a second place of the same order ID is answered `entityExists` before its decider runs (D10, E-46, Sc L1-4). - **cancel operation** — The Orders context's list-shaped operation `cancel({ orders: [{ orderId }] })`, planning one `cancel` stream command per order with no expected version, so the order's own state decides it, and declaring `maxStreams` 32 as the place operation does; it returns `{ orders: [{ orderId, lines }] }`, the lines of each cancelled order taken from its DTO (D10, E-46). - **receive operation** — The Inventory context's list-shaped operation `receive({ items })`, planning one stock item stream per distinct stock item, which creates the stream of a stock item that has none and adds the quantity to the quantity on hand; it is the only way a stock item comes to exist (Law 1, D10, E-46). -- **PlaceOrder** — The composed use case that records an order in Orders and allocates every line in Inventory in one mutation, with one receipt and one outcome, calling Orders first because it creates the order, so a UI double submit is answered `entityExists` before Inventory decides, and Inventory second; it rejects when stock is short, and an order with no line, or with a line whose stock item ID is longer than the stock item ID bound, is refused `invalidInput` at step 1 of the command pipeline, before any read and before either context is called (D10, D4, E-39, E-46, Sc L1-4). -- **ReceiveStock** — The command that receives stock, one call to the Inventory context's receive operation with one receipt and one outcome; every stock item of the experiment, a test's and a measurement's included, is created through it, and an item whose stock item ID is longer than the stock item ID bound is refused `invalidInput` at step 1 of the command pipeline, before any read and before the Inventory context is called (Law 1, D10, E-46). +- **PlaceOrder** — The composed use case that records an order in Orders and allocates every line in Inventory in one mutation, with one receipt and one outcome, calling Orders first because it creates the order, so a UI double submit is answered `entityExists` before Inventory decides, and Inventory second; it rejects when stock is short, and an order with no line, or with a line whose stock item ID is longer than the stock item ID bound, is refused `invalidInput` at step 1 of the command pipeline, before any read and before either context is called; its declaration binds the order summary from the Orders `order` and the order allocation history from the Orders `order` and from the Inventory `stockItem` (D10, D4, E-9, E-39, E-46, Sc L1-4). +- **ReceiveStock** — The command that receives stock, one call to the Inventory context's receive operation with one receipt and one outcome; every stock item of the experiment, a test's and a measurement's included, is created through it, and an item whose stock item ID is longer than the stock item ID bound is refused `invalidInput` at step 1 of the command pipeline, before any read and before the Inventory context is called; its declaration writes the Inventory `stockItem` and binds the order allocation history from it, though `StockReceived` carries no key the view folds (Law 1, D10, E-9, E-46). - **CancelOrder** — The second lifecycle command: the composed use case `cancelOrder`, input `{ orderId: string }`, that calls the Orders context's cancel operation once with the one order and then the Inventory context's release operation once with the order ID and the stock item and quantity of each line Orders returned for that order, in one mutation with one receipt and one outcome, and answers `{ orderId: string; released: { stockItemId: string; quantity: number }[] }`, the release operation's lines; Orders comes first because the order's state refuses a cancel before Inventory decides, and the quantities are read from what Orders returned in this mutation, never from a read model (D10, D4, Law 9, E-39, E-46). -- **CancelOrder declaration** — `name: "CancelOrder"`, `contractVersion: 1`, `permission: { permission: "orders.cancel" }`, `writes` the Orders `order` and the Inventory `stockItem`, `readModels` the order summary from the Orders `order`, `rejections: ["orderNotFound", "orderAlreadyCancelled", "insufficientAllocation"]` and no `bounds`, because the input holds no list, the streams the command writes are its one order and the stock items of that order's lines, at most the 100 `PlaceOrder` admitted, and the order ID is bounded at 256 bytes as every stream ID is (D6, D10, E-38, E-46). +- **CancelOrder declaration** — `name: "CancelOrder"`, `contractVersion: 1`, `permission: { permission: "orders.cancel" }`, `writes` the Orders `order` and the Inventory `stockItem`, `readModels` the order summary from the Orders `order` and the order allocation history from the Orders `order` and from the Inventory `stockItem`, `rejections: ["orderNotFound", "orderAlreadyCancelled", "insufficientAllocation"]` and no `bounds`, because the input holds no list, the streams the command writes are its one order and the stock items of that order's lines, at most the 100 `PlaceOrder` admitted, and the order ID is bounded at 256 bytes as every stream ID is (D6, D10, E-38, E-46). - **permissions** — `orders.place`, which `PlaceOrder` requires, `orders.cancel`, which `CancelOrder` requires, `inventory.receive`, which `ReceiveStock` requires, and the read permissions `orders.read`, which the parent queries over orders and the order summary require, and `inventory.read` (D11, E-37, E-46). - **OrderPlaced** — The Orders event recorded by `PlaceOrder`, carrying the accepted lines and the total, `{ lines, total }`, bounded by the events-stay-small constraint (First experiment, D2). - **OrderCancelled** — The Orders event recorded by `CancelOrder` on a placed order, with the empty payload `{}` and the time in `occurredAt`; folding it sets the order's status to `cancelled` and keeps its lines, total and `placedAt` (E-46, D2). diff --git a/design/specs/application/projection-contract.sdp.md b/design/specs/application/projection-contract.sdp.md index c4cb5bf..f6db5c3 100644 --- a/design/specs/application/projection-contract.sdp.md +++ b/design/specs/application/projection-contract.sdp.md @@ -30,7 +30,7 @@ A projection is the named, versioned, deterministic function that turns a contex ### Open questions -- [non-blocking] Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input. The option taken here: a per-entity read model declared as a `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, a list of `Projection` with the latest first, each holding `version`, `keyOf` and `project` alone, rows with `tenantId`, `generation`, `key`, `projectionVersion` and `sourceVersions`, one `applyProjection` helper with a mode per caller that writes each generation by its role, active, building or verifying, with the projection whose version the generation records, for an `AggregateProjection` an aggregate row with `value` and `entityCount` and no `sourceVersions`, because the markers carry them, written by `applyAggregate` under the marker's version compare with the mode ignored, and for a history-dependent view a `HistoryProjection` that folds events into the prior row, fed on the live path by the events the operation appended, which the adapter's `streams` entry carries, and on the backfill by the context's `history` pages under the write pause, with `sourceVersions` recording the highest version folded per stream so that an event is never folded twice; a row that derives from more than one source stream type is a history row, its projection bound once per source stream type, and a small cross-context view of current state is D8's parent query over bounded component reads; the owner confirms the three forms and has not ruled on the split of a per-entity read model into `ReadModel` and `Projection`, on the write by generation role or on the row measured against its budget at every write (E-9, E-23, E-24, D8, D9) +- [non-blocking] Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input. The option taken here: a per-entity read model declared as a `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, a list of `Projection` with the latest first, each holding `version`, `keyOf` and `project` alone, rows with `tenantId`, `generation`, `key`, `projectionVersion` and `sourceVersions`, one `applyProjection` helper with a mode per caller that writes each generation by its role, active, building or verifying, with the projection whose version the generation records, for the aggregate form the row and the writer `spec:application.aggregate-projection` pins, and for a history-dependent view a `HistoryProjection` that folds events into the prior row, fed on the live path by the events the operation appended, which the adapter's `streams` entry carries, and on the backfill by the context's `history` pages under the write pause, with `sourceVersions` recording the highest version folded per stream so that an event is never folded twice; a row that derives from more than one source stream type is a history row, its projection bound once per source stream type, and a small cross-context view of current state is D8's parent query over bounded component reads; the owner confirms the three forms and has not ruled on the split of a per-entity read model into `ReadModel` and `Projection`, on the write by generation role or on the row measured against its budget at every write (E-9, E-23, E-24, D8, D9) - [non-blocking] Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9) - [non-blocking] The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9) - [non-blocking] Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole row from one DTO and a backfill enumerates one source; the option taken here is D8's other default, a parent query over bounded component reads, until a view needs such a row, which then needs a form whose `project` takes the DTO of every matching entry of one command and whose backfill reads the other context in the same mutation, online (E-9, D8, E-45) @@ -67,7 +67,7 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape w - typeApplyMode: `type ApplyMode = "live-created" | "live-updated" | "backfill"` (E-9, D9) - typeApplyResult: `type ApplyResult = "inserted" | "updated" | "deleted" | "skipped-missing" | "skipped-newer" | "unchanged"` (E-9, D9) - fnApplyProjection: `applyProjection>(ctx: RowWriter, readModel: ReadModel, input: { tenantId: string; dto: D; versions: StreamVersion[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise` writing one result per generation in the order given; the pipeline's step 9 calls it with `versions: [entry.version]` for a per-entity row and the rebuild's batch with `versions: [dto.version]` (E-9, D8, D9) -- callers: the two callers are the command pipeline's step 9, with the mode from the `streams` entry's `created` flag and the list `generationsToWrite` returned, passed unchanged, and the rebuild's backfill and verify batches in `backfill` mode for the one generation they build or verify; a use case body never calls it, and the same two callers are the only callers of `applyAggregate` and `applyHistoryProjection`; step 9 calls `applyHistoryProjection` once per history read model per command, in the live-updated mode, with the events of every `streams` entry any of its bindings matches in the order of the entries, and a history batch calls it once with its one `history` page (E-9, D8, D9, E-7) +- callers: the two callers are the command pipeline's step 9, with the mode from the `streams` entry's `created` flag and the list `generationsToWrite` returned, passed unchanged, and the rebuild's backfill and verify batches in `backfill` mode for the one generation they build or verify; a use case body never calls it, and the same two callers are the only callers of `applyHistoryProjection` and, as `spec:application.aggregate-projection` states, of the aggregate form's writer; step 9 calls `applyHistoryProjection` once per history read model per command, in the live-updated mode, with the events of every `streams` entry any of its bindings matches in the order of the entries, and a history batch calls it once with its one `history` page (E-9, D8, D9, E-7) - validatorRowConventions: `const rowConventions = { tenantId: v.string(), generation: v.number(), key: v.string(), projectionVersion: v.number(), sourceVersions: v.array(streamVersionValidator) }` spread into every per-entity and history read-model `defineTable` (E-9, Law 11) - validatorOrderSummaryFields: `const orderSummaryFields = { orderId: v.string(), status: v.union(v.literal("placed"), v.literal("cancelled")), lineCount: v.number(), total: v.number(), placedAt: v.number() }` the projected fields of the order summary, which its table spreads and its query's view validator spreads (E-9, E-46, First experiment) - tableOrderSummaries: `orderSummaries: defineTable({ ...rowConventions, ...orderSummaryFields }).index("by_key", ["tenantId", "generation", "key"]).index("by_status", ["tenantId", "generation", "status", "placedAt", "key"])` (E-9, E-46, First experiment) @@ -79,7 +79,7 @@ The shapes are TypeScript in the parent. `StreamVersion` is the kernel's shape w - step4: before a write it throws a plain error when the row measures above `rowBudgetBytes` with `getConvexSize`; then it writes with `ctx.db.insert`, `ctx.db.replace` or `ctx.db.delete` in the same mutation, a written row carrying the generation's `projectionVersion`, which is the version of the projection that built it, and returns the results in generation order (E-9, F1, F13) - limitRowSize: a read-model row stays under its read model's `rowBudgetBytes`, which `applyProjection` checks at every write, 16 KiB by default and at most 64 KiB, the library constant `limitRowBudgetBytes`, well under the 1 MiB document limit; the rebuild's batch bound is derived from the declared budget, and a row that would grow without bound with history is a wrong read model for this contract, a history projection included, whose row summarizes history within the same budget (F13, E-9, E-40) - limitGenerationsPerWrite: at most 2 generations are written per row per command, the active one and the one in building, verifying or verified if any; a retired generation is kept but never written, so one read model costs at most 2 point reads and 2 writes per command and exactly 1 of each outside a rebuild (E-9, E-8, F13) -- determinismCheck: the acceptance suite folds a sample of DTOs through `project` twice and compares, and compares a backfilled row with the live-written row for the same entity; a pure test folds one order's events through the order allocation history's `project` in every interleaving of its streams and every split into calls and finds one row; a test of `applyAggregate` moves an entity from one aggregate key to another and finds the old key's row without its contribution and count and the new key's with them (D8, D9, Sc L2-5, Sc L2-6) +- determinismCheck: the acceptance suite folds a sample of DTOs through `project` twice and compares, and compares a backfilled row with the live-written row for the same entity; a pure test folds one order's events through the order allocation history's `project` in every interleaving of its streams and every split into calls and finds one row; the aggregate form's test is in `spec:application.aggregate-projection` (D8, D9, Sc L2-5, Sc L2-6) ## Verification — reviewed diff --git a/design/specs/application/read-models.sdp.md b/design/specs/application/read-models.sdp.md index ac6ca76..bdebc90 100644 --- a/design/specs/application/read-models.sdp.md +++ b/design/specs/application/read-models.sdp.md @@ -103,7 +103,7 @@ Nothing here schedules, and nothing here reads `ctx.auth` inside a component. Th - validatorReadModelView: `orderSummaryView = v.object({ tenantId: v.string(), key: v.string(), projectionVersion: v.number(), sourceVersions: v.array(streamVersionValidator), ...orderSummaryFields })` where `orderSummaryFields` are the projected fields `spec:application.projection-contract` declares for `tableOrderSummaries` (E-9, D8) - noActiveGeneration: a query over a read model that has no active generation throws a plain `Error` that names the read model, a technical failure, and never answers an empty page (D9, Law 6) - fnCrossContextView: `export const getOrderWithStock = query({ args: { tenantId: v.string(), orderId: v.string() }, returns: v.union(v.object({ data: orderWithStockDto, sourceVersions: v.array(streamVersionValidator) }), v.null()), handler })` making at most 8 component reads and returning a `VersionedResult` whose `sourceVersions` are the DTOs' stream versions; no read-model row serves it, because no form writes one row from the DTOs of two contexts (D8, E-45, E-9) -- typeVersionedResult: `[extension] type VersionedResult = { data: T; sourceVersions: StreamVersion[] }`, the result of a cross-context view composed from component reads, whose `data` is not a row; every query result carries source versions in one of three ways, a per-entity or history read-model row carries `sourceVersions` by the row conventions so a list page needs no wrapper, an entity DTO carries its stream version from `toDto`, and a composed view is wrapped in this type, so the client can always compare with the versions its command returned; an aggregate row carries no comparable version, so a client that needs its own write reflected compares its entity's row, and the sum's freshness is the subscription's re-run when the command commits (E-45, D8, E-9) +- typeVersionedResult: `[extension] type VersionedResult = { data: T; sourceVersions: StreamVersion[] }`, the result of a cross-context view composed from component reads, whose `data` is not a row; every query result carries source versions in one of three ways, a per-entity or history read-model row carries `sourceVersions` by the row conventions so a list page needs no wrapper, an entity DTO carries its stream version from `toDto`, and a composed view is wrapped in this type, so the client can always compare with the versions its command returned; what a client compares for the aggregate form is in `spec:application.aggregate-projection` (E-45, D8, E-9) - readModelRowShape: every read-model row carries `tenantId`, `generation`, `key`, `projectionVersion` and the projected fields, and a per-entity or history row carries `sourceVersions`, as the projection contract pins; the row of the aggregate form is pinned by `spec:application.aggregate-projection` (E-9, D8, D9) - indexReadModelByKey: `.index("by_key", ["tenantId", "generation", "key"])` on every read-model table (E-9, Law 11) - indexReadModelByKeyUse: point read of one row by the parent query and by `applyProjection` before an update; the generation comes from the registry's active row, which is one per read model and the same for every tenant, so a query narrows by its own `tenantId` and never by a tenant's generation (D8, D9, E-8, Law 11) diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index 5245a89..c06f4e7 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -38,7 +38,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its - [non-blocking] Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1) - [non-blocking] Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9) -- [non-blocking] Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using those existing reads, and measure the closed interval through the successful switch or abort? Keep any acceptable pause length for the owner's decision rather than deriving a timeout from a batch estimate. +- [non-blocking] Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep any acceptable pause length for the owner's decision rather than deriving a timeout from a batch estimate. ## Contract diff --git a/tests/types/pinned-pairs.json b/tests/types/pinned-pairs.json index 04d5c3c..c22c28f 100644 --- a/tests/types/pinned-pairs.json +++ b/tests/types/pinned-pairs.json @@ -44,13 +44,6 @@ "code": "src/read-model/index.ts#readModelTables", "reason": null }, - { - "address": "spec:application.history-projection#design.typeHistoryEvent", - "state": "bound", - "comparison": "type", - "code": "example/domain/orderAllocationHistory.ts#HistoryEvent", - "reason": null - }, { "address": "spec:application.history-projection#design.typeOrderAllocation", "state": "bound", @@ -65,20 +58,6 @@ "code": "example/domain/orderAllocationHistory.ts#OrderAllocationHistoryFields", "reason": null }, - { - "address": "spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf", - "state": "bound", - "comparison": "type", - "code": "example/domain/orderAllocationHistory.ts#orderAllocationHistoryKeyOf", - "reason": null - }, - { - "address": "spec:application.history-projection#design.fnProjectOrderAllocationHistory", - "state": "bound", - "comparison": "type", - "code": "example/domain/orderAllocationHistory.ts#projectOrderAllocationHistory", - "reason": null - }, { "address": "spec:application.projection-contract#design.typeProjection", "state": "bound", @@ -380,6 +359,27 @@ "code": "src/read-model/index.ts#readModelTables", "reason": "its cursor, through validatorBatchCursor" }, + { + "address": "spec:application.history-projection#design.typeHistoryEvent", + "state": "ahead", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#HistoryEvent", + "reason": "the design adds `eventSchemaVersion`; the code carries it in 5d" + }, + { + "address": "spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf", + "state": "ahead", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#orderAllocationHistoryKeyOf", + "reason": "the design adds `eventSchemaVersion`; the code carries it in 5d" + }, + { + "address": "spec:application.history-projection#design.fnProjectOrderAllocationHistory", + "state": "ahead", + "comparison": "type", + "code": "example/domain/orderAllocationHistory.ts#projectOrderAllocationHistory", + "reason": "the design adds `eventSchemaVersion`; the code carries it in 5d" + }, { "address": "spec:application.rebuild#design.typeRebuildConfig", "state": "ahead", diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index 2c2585f..82a1b40 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -72,25 +72,12 @@ describe("bound: the code equals the pin", () => { TableShape<(typeof readModel.readModelTables)["generations"]> >().toEqualTypeOf>(); }); - test("spec:application.history-projection#design.typeHistoryEvent", () => { - expectTypeOf().toEqualTypeOf(); - }); test("spec:application.history-projection#design.typeOrderAllocation", () => { expectTypeOf().toEqualTypeOf(); }); test("spec:application.history-projection#design.typeOrderAllocationHistoryFields", () => { expectTypeOf().toEqualTypeOf(); }); - test("spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf", () => { - expectTypeOf< - typeof allocationHistory.orderAllocationHistoryKeyOf - >().toEqualTypeOf(); - }); - test("spec:application.history-projection#design.fnProjectOrderAllocationHistory", () => { - expectTypeOf< - typeof allocationHistory.projectOrderAllocationHistory - >().toEqualTypeOf(); - }); test("spec:application.projection-contract#design.typeProjection", () => { expectTypeOf>().toEqualTypeOf< pinned.Projection @@ -287,6 +274,19 @@ describe("ahead: the design leads the code", () => { TableShape<(typeof pinned.tables)["generationProgress"]> >(); }); + test("spec:application.history-projection#design.typeHistoryEvent: the design adds `eventSchemaVersion`; the code carries it in 5d", () => { + expectTypeOf().not.toEqualTypeOf(); + }); + test("spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf: the design adds `eventSchemaVersion`; the code carries it in 5d", () => { + expectTypeOf< + typeof allocationHistory.orderAllocationHistoryKeyOf + >().not.toEqualTypeOf(); + }); + test("spec:application.history-projection#design.fnProjectOrderAllocationHistory: the design adds `eventSchemaVersion`; the code carries it in 5d", () => { + expectTypeOf< + typeof allocationHistory.projectOrderAllocationHistory + >().not.toEqualTypeOf(); + }); test("spec:application.rebuild#design.typeRebuildConfig: the history view's build adds history targets", () => { expectTypeOf().not.toEqualTypeOf(); }); From e54ae38a0e5d1d66b0aca99ad126500b99d7339a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 04:24:39 +0200 Subject: [PATCH 31/60] design: the history projection's one version and its handoff, and the source check of a history generation OD-174, the owner's ruling of 2026-10-04 on the operator lens's lean ("One version + handoff"): a history projection keeps one version, and a version-changing deploy, a first binding, an aborted rebuild and an aborted installation follow a handoff under the `all` scope, so callers see writePaused, a transient refusal, where they saw technical failures. The history rebuild carries the sequence (historyHandoff, historyAbortHandoff) and eight Verification cases; the history projection states the release contract and what callers see in each window. OD-175, decided by the operator lens after an Opus check on a copy with one plant (caught) and a re-check of its revision: a history batch, the resume helper and switchGeneration compare the target's ordered sources with the gate entries naming the generation, and the projection version with the generation row, keep the pause on a mismatch, and refuse a restore's finish as one mutation until compatible code is restored or the generation is aborted. No generation field is added. The write pause's list of mutations that skip the gate read, and the two Verification bullets that repeat it, name the rebuild's operator entries, whose Design entries read no gate. Co-Authored-By: Claude Opus 5.5 --- design/decisions/register.json | 83 +++++++++++++++++++ design/pages/history-view.md | 48 +++++------ .../application/history-projection.sdp.md | 5 +- .../specs/application/history-rebuild.sdp.md | 14 ++++ design/specs/application/rebuild.sdp.md | 6 +- design/specs/application/restore.sdp.md | 4 +- design/specs/application/write-pause.sdp.md | 6 +- 7 files changed, 134 insertions(+), 32 deletions(-) diff --git a/design/decisions/register.json b/design/decisions/register.json index b2e9301..12bc6ee 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6947,6 +6947,89 @@ "decidedBy": "advisor:domain", "decidedOn": "2026-10-04", "ruling": "Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. Add `eventSchemaVersion: number` to `HistoryEvent`." + }, + { + "id": "OD-174", + "title": "Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it l", + "sources": [ + { + "kind": "specQuestion", + "spec": "spec:application.history-projection", + "question": "Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6)", + "file": "design/specs/application/history-projection.sdp.md", + "open": false + } + ], + "families": [ + "application" + ], + "cites": [ + "E-9", + "D8", + "D9", + "Law 6" + ], + "provisionalReading": "the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once", + "blocks": "S5", + "advisor": "operator", + "status": "decided", + "foldedInto": [], + "class": "owner", + "reason": "Rule 1, it trades one value for another with no evidence which weighs more: unrelated commands and grant changes held during a handoff against technical failures or a list of versions; operator 1 of the pass over pack:history-view, merged with domain 6.", + "lean": { + "do": "Keep one history projection version and require an operator-controlled handoff from an all-scope pause to the generation's source scopes before exposing a changed version or a new binding to commands.", + "restsOn": "The do-nothing option retains the present contract: a mismatched projection version throws, and a bound read model with no generation also throws, both as technical failures; start then closes the sources, and abort removes those source closures without replacing the active generation. [spec:application.history-projection#design.fnApplyHistoryProjection] [spec:application.generation-registry#design.errorNoGenerationToWrite] [spec:application.history-rebuild#design.historyStart] [spec:application.rebuild#design.fnAbortGeneration] The existing operator entries can close and reopen all, while a batch encountering that closure parks without scheduling another batch. [spec:application.write-pause#design.fnCloseGate] [spec:application.write-pause#design.fnResumeGate] [spec:application.rebuild#design.step3]\n\n**Judgment.** Use those entries in this sequence, with maintenance control coordinated until the handoff and its possible abort are finished. Before the change, establish a compatible code and schema path back to the active projection, or back to commands without the new installation's bindings. Finish source migrations and the tenant fill first; finish or deliberately interrupt unrelated generation passes, retaining their IDs for later resume. Keep capacity for all beside every source closure, including capacity to close all again before an abort; do not reopen another maintenance procedure's closure. The gate's existing limit and the all closure mean a target that cannot fit with all closed must be refused before this procedure starts, not admitted by temporarily reopening writers. [spec:application.write-pause#design.limitClosedScopes] [spec:application.write-pause#design.fnCloseScope]\n\n**Judgment.** For a version-changing deploy or a first binding, close all with the reason and stated operator, confirm it through getGate, and only then deploy. Call startGeneration under the new code while all stays closed, and inspect both the new generation and the complete source closures naming it. If deployment or start fails, keep all closed until compatible code is restored or start succeeds. Once every required source scope is closed, resume only this procedure's all entry, then resumeGeneration for a pass still in backfill or verify; if it has already reached verified, proceed to switch instead. Reopening all alone is not resuming a parked chain. After verification, switchGeneration makes the generation active and removes its source closures. Explicitly resume unrelated passes this procedure interrupted or parked. [spec:application.write-pause#design.fnGetGate] [spec:application.rebuild#design.fnGetGenerations] [spec:application.rebuild#design.fnResumeGeneration] [spec:application.rebuild#design.fnSwitchGeneration]\n\n**Judgment.** Before aborting either a rebuild or an installation, close all again and confirm it, then abortGeneration. For a rebuild, leave all closed until the deployed projection matches the unchanged active generation; when that is already true, no replacement deploy is needed. Otherwise deploy the prepared compatible code, or start a fresh generation under the desired code and repeat the handoff. For an abandoned installation, remove its new command bindings and withhold its parent queries through a compatible deploy before reopening all; retain its table, rebuild target and operator entries until its aborted rows can be purged. Starting a replacement installation is the other exit. A compatible deploy is not automatically an old commit: newer stream data can make old code invalid. [spec:application.rebuild#design.fnAbortGeneration] [spec:application.rebuild#design.purgeSteps] [spec:context.journal#design.codeOlderThanData]\n\n**Judgment.** The caller contract for this sequence is ordinary command processing before the first close; transient writePaused for every new command reaching step 7 while all is closed; then writePaused only for commands covered by remaining closures during backfill and verification; then ordinary processing after switch or after compatible abort recovery. Earlier authentication, authorization, receipt and admission decisions keep their existing answers, so an authorized duplicate may still return its receipt during the pause. [design/specs/command/command-pipeline.sdp.md:92] [design/specs/command/command-pipeline.sdp.md:93] [design/specs/command/command-pipeline.sdp.md:95] [design/specs/command/command-pipeline.sdp.md:96] Skipping the sequence still exposes the existing technical failures; do not relabel every missing-generation or version defect as transient. A first installation has no active read model until switch, and the gate does not promise successful parent queries during that interval. [spec:application.generation-registry#design.fnActiveGeneration]", + "against": "**Judgment.** The do-nothing option is fewer operator steps but accepts an unbounded technical-failure window; the strongest alternative retains several history projection versions, so the active generation remains writable before start and after abort without closing unrelated commands. That alternative follows the per-entity ReadModel shape, but a first binding still needs a staged installation or a pause, and retaining versions does not remove the source pause during the history rebuild itself. [spec:application.projection-contract#design.typeReadModel] [spec:application.generation-registry#design.errorNoGenerationToWrite] [design/specs/application/history-rebuild.sdp.md:52] **Judgment.** The proposed handoff instead spends operator coordination and temporary refusal of unrelated commands to keep the single-version form; the evidence does not decide whether that cost is acceptable.", + "settles": "**Judgment.** Class this merged decision owner: the owner must choose whether the supported release procedure may hold unrelated commands during deployment and abort recovery, whether single-version history is sufficient, and whether omission of the procedure remains a technical failure rather than a supported transient installation state. After that ruling, native-backend tests should exercise version change, first binding, failed start, a parked first batch, same-version abort, version-changing abort and abandoned installation, checking callers at each handoff and recovery; test the gate audit failing before any reopen as well. These are proposed proofs, not results: no compiled, pure test, convex-test or native-backend test was run for this lean, and its new claims have not had the other-family check.", + "changes": "**Judgment.** For unit 5d, keep the signature in design/specs/application/history-projection.sdp.md and expand its one-version question into the ruled release contract; add the sequence to design/specs/application/history-rebuild.sdp.md and extend its interrupt and abort example Specs with version and installation cases. Clarify in design/specs/application/write-pause.sdp.md and design/specs/application/rebuild.sdp.md that the operator entries needed for this handoff may change their control rows under all while batches still park, and that an abort's source reopen is not a promise that commands can yet write; retain the missing-generation contract in design/specs/application/generation-registry.sdp.md. The alternative version list changes history-projection.sdp.md, the history start and writer selection, the command bindings' comparisons and the same examples in 5d; staged installation would need an additional owner-approved contract before its build.", + "ifWrong": "**Judgment.** If the coordinated all-scope pauses are unacceptable, adopt the version-list alternative and an installation contract; the proposed sequence changes no persisted shape and can be replaced by an edit. An operator who bypasses or breaks it can still expose technical failures, while a missing compatible recovery deploy can prolong the pause, so no acceptable duration or automatic reopen is promised by this lean." + }, + "checkedBy": "Opus 5.5, 2026-10-04: plant caught; every operator entry of the sequence exists with the arguments and effects the lean uses", + "fork": null, + "decidedBy": "owner", + "decidedOn": "2026-10-04", + "ruling": "Keep one history projection version and require an operator-controlled handoff from an all-scope pause to the generation's source scopes before exposing a changed version or a new binding to commands. The owner chose, on 2026-10-04, from the main thread's options: \"One version + handoff (Recommended)\": \"The advisor's lean. Keep one version. The operator closes the `all` scope before the deploy, starts the generation, then reopens `all` once the source scopes are closed; an abort runs under `all` again. Callers see `writePaused`, a transient refusal, instead of technical failures. The cost: unrelated commands, and grant changes, are refused during the handoff.\"" + }, + { + "id": "OD-175", + "title": "A saved cursor needs stable sources", + "sources": [ + { + "kind": "specLine", + "ref": "application.history-rebuild#historyCompatibility", + "file": "design/specs/application/history-rebuild.sdp.md", + "line": 73 + } + ], + "families": [ + "application" + ], + "cites": [ + "E-8", + "E-9", + "D9", + "D19" + ], + "provisionalReading": null, + "blocks": "S5", + "advisor": "operator", + "status": "decided", + "foldedInto": [], + "class": "delegated", + "reason": "Rule 3, a mechanism and the order of steps inside what D9 and D19 rule, which an edit inside this repository takes back; operator 2 of the pass over pack:history-view.", + "lean": { + "do": "Compare each history generation's declared source order with the gate entries naming it, and its declared projection version with the generation row, before backfill, verify, their resume and switch; retain the pause on mismatch and block restore acceptance until compatible code is restored or the generation is deliberately aborted.", + "restsOn": "**Judgment.** The do-nothing option remains a release rule alone, preserving source order and query contracts while saved cursors refer to them. The cursor stores sourceIndex into the current target's sources, the generation row stores projectionVersion, and the resumeChain helper preserves the cursor. [spec:application.history-rebuild#design.historyCursor] [spec:application.history-rebuild#design.historySteps] [spec:application.generation-registry#design.tableGenerations] [spec:application.rebuild#design.fnResumeChain]\n\nhistoryStart closes the sources in order, maintenanceGates.closed retains closing order, and resumeGate cannot reopen a source scope; restored generation closures also stay closed until switch or abort. [spec:application.history-rebuild#design.historyStart] [spec:application.write-pause#design.tableMaintenanceGates] [spec:application.write-pause#design.fnResumeGate] [design/specs/application/write-pause.sdp.md:56] **Judgment.** Those entries provide the ordered identities for the period in which a history generation can backfill, verify or switch, so use them without adding a field to the generation row.\n\n**Judgment.** For a generation with pauseRequired, require a history target with nonempty, distinct sources, derive their source scope keys in order, and compare that complete array with closed entries naming this generation, filtered without sorting; also compare the declared projection version with the generation row. A missing gate, a missing target, or a difference in order, length, identity or version is incompatible. Read the stored gate document for this comparison, including during restore, rather than treating gateAllows as an inventory of its entries: its restore-door branch reads no document. [spec:application.write-pause#design.fnGateAllows] [spec:application.write-pause#design.indexGatesByKeyUse]\n\n**Judgment.** After ordinary state and fence checks, backfill and verify must check compatibility before interpreting any cursor or reading any source, including an empty tenant list. A mismatched batch keeps the cursor, counts, read-model rows, generation state and gate unchanged, records a bounded lastError naming the generation and incompatibility with updatedAt, and schedules nothing. The resumeChain helper checks backfill and verify before changing a fence or scheduling; switchGeneration checks before changing state or reopening scopes, and both refuse with a plain error on mismatch. Abort, purge and purge resume remain available without this check, since switch and abort remove the closures and purge reads the read model's table. [spec:application.rebuild#design.fnAbortGeneration] [spec:application.rebuild#design.fnSwitchGeneration] [spec:application.rebuild#design.purgeSteps]\n\nfinishRestoreRun calls resumeChain for each inventoried generation still building or verifying at its inventoried fence, and acceptance and rescheduling commit or fail as one mutation. [spec:application.restore#design.fnFinishRestoreRun] [spec:application.restore#design.transactionBoundary] **Judgment.** Therefore one compatibility refusal must refuse the whole finish, leaving the run unaccepted and committing none of its resumptions or resolutions; do not catch it and accept the remaining generations. Require compatible backup code and configuration, as the restore workflow already states, and retry finish after correcting a mismatch. [design/specs/application/restore.sdp.md:64]\n\n**Judgment.** Before opening the restore door for finish, establish and confirm an all closure using lean 1's capacity and recovery requirements, so a refused finish leaves callers paused. If compatible code cannot be restored, keep all closed, explicitly abort the incompatible generation after the checks have passed and the restore door has opened, complete lean 1's compatible abort recovery, and retry finish; its existing aborted resolution then accounts for the generation, rather than silently omitting it. Retain all until acceptance and safe command bindings and projection versions are established, then reopen it and explicitly resume any compatible chains parked under all. The entry already refuses acceptance while the restore door is closed and records aborted generations. [spec:application.restore#design.fnFinishRestoreRun] A verified generation has no backfill or verify chain for finish to resume; the proposed switch check still guards it. [spec:application.rebuild#design.verifySteps]\n\n**Judgment.** Preserve the meaning of saved list and history cursors for the lifetime of the projection version; a changed query contract or fold requires a new version, and equivalent code moves must preserve pending function handles and cursor meaning. Neither ordered scope keys nor a saved identity list detects changed query or fold semantics under unchanged identities and version. Outside restore, recover by compatible code and resume, or lean 1's protected abort and a fresh generation from a null cursor; do not translate sourceIndex or reuse incompatible partial rows. This release obligation follows D19's preserve, migrate or drain rule. [D19]", + "against": "**Judgment.** The strongest alternative is the saved ordered list on the generation row: while the gate follows its contract it detects the same source changes, but it also retains the original identities after switch or abort and provides an independent comparison if the gate's entries are lost, reordered or changed in a way that happens to match the current target. I prefer the gate for 5d because the guarded operations precede removal of those entries and a separate list adds persisted compatibility handling, while acknowledging that the gate alone cannot distinguish such an invalid gate change from the original closure order and neither choice detects an unbumped query or fold change.", + "settles": "**Judgment.** Treat the gate comparison as a delegated mechanism after the other-family check; ask the owner to confirm the restore consequence and recovery pause, alongside lean 1, if acceptance must instead remain possible with incompatible generations left parked. Proposed pure tests compare ordered scope arrays amid unrelated closures, and proposed native-backend tests cover source reorder, addition, removal, version change, missing closures, a restored interrupted cursor, and a deploy between verified and switch, including a restore with two resumable generations whose second is incompatible: it must accept neither, commit no fence or scheduling changes, retain all and the source closures, and succeed after compatible code or deliberate abort recovery; no compiled, pure test, convex-test or native-backend test was run for this revision, and its new claims await the other-family check.", + "changes": "**Judgment.** In unit 5d, pin the comparison and mismatch behavior in design/specs/application/history-rebuild.sdp.md and its interrupt example, preserve the relied-on order in design/specs/application/write-pause.sdp.md, guard resumeChain and switchGeneration in design/specs/application/rebuild.sdp.md while preserving abort and purge, state cursor compatibility in design/specs/context/queries.sdp.md and the version rule in design/specs/application/history-projection.sdp.md, and add the atomic refusal and protected retry or abort sequence to design/specs/application/restore.sdp.md and its pending-work example. The saved-list alternative changes those same checks and recovery rules in 5d and additionally changes design/specs/application/generation-registry.sdp.md and its declaration comparisons to save immutable ordered source identities on the generation row; the release-rule-only option needs the history release rules and examples but no stored shape or guard.", + "ifWrong": "**Judgment.** An overly strict comparison can block acceptance of the whole restore or cost an abort and another paused backfill; replacing it with a saved list later requires recovering original identities for existing generations or deliberately aborting them, since blindly copying the current target would hide the mismatch. If the gate is invalid in a way this check cannot see, or query semantics change without a version bump, an incorrect fold can survive the check and require a fresh generation from the journal; the check is reversible by an edit, but that edit cannot repair written rows." + }, + "checkedBy": "Opus 5.5, 2026-10-04: plant caught on the first version; the revision re-checked: 18 of 19 citations hold, write-pause.sdp.md:56 is :57; corrections to the reasons: `fnApplyHistoryProjection` already throws on a version mismatch before it reads a row, which ends a folding batch's chain with no lastError and does not reach the resume helper, `finishRestoreRun`, `switchGeneration` or a batch whose page is empty, so the version half adds those four; the do-nothing option includes that throw; the do stands", + "fork": null, + "decidedBy": "advisor:operator", + "decidedOn": "2026-10-04", + "ruling": "Compare each history generation's declared source order with the gate entries naming it, and its declared projection version with the generation row, before backfill, verify, their resume and switch; retain the pause on mismatch and block restore acceptance until compatible code is restored or the generation is deliberately aborted." } ], "possiblySame": [ diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 796c81d..d1d81ab 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -23,7 +23,7 @@ Start with the members and with what holds a member below its next rung: togethe | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| -| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 2 bound, 3 ahead, 3 without a pair | 5, none blocking | +| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 2 bound, 3 ahead, 3 without a pair | 4, none blocking | | [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | | [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | @@ -154,15 +154,15 @@ No target outside the Pack holds a member below its next rung. ## Open questions -54 open questions on 14 members, none blocking. 47 join a register row by their opening text; 7 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. +53 open questions on 14 members, none blocking. 47 join a register row by their opening text; 6 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. **[History projection](#1-history-projection)**, `spec:application.history-projection` - No register row. [question 1](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … -- No register row. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … -- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … -- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [question 4](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … -- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [question 5](../specs/application/history-projection.sdp.md?plain=1#L38), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … +- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … +- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … +- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [question 4](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … +- **OD-174** class owner, status decided, advisor operator, blocks the unit S5. Its source names a question this Spec no longer holds: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … **[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` @@ -268,18 +268,18 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L55) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L56) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L57) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L58) | ahead | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | -| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L59) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L60) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L61) | ahead | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | -| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L62) | ahead | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L58) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L59) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L61) | ahead | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L62) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L63) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L64) | ahead | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L65) | ahead | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d |
The 8 declarations as the Spec pins them -[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L55) +[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L58) ```ts interface HistoryProjection { @@ -292,7 +292,7 @@ interface HistoryProjection { } ``` -[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L56) +[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L59) ```ts applyHistoryProjection( @@ -307,7 +307,7 @@ applyHistoryProjection( ): Promise<{ key: string; results: ApplyResult[] }[]> ``` -[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L57) +[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) ```ts orderAllocationHistory: defineTable({ @@ -326,7 +326,7 @@ orderAllocationHistory: defineTable({ }).index("by_key", ["tenantId", "generation", "key"]) ``` -[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L58) +[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L61) ```ts type HistoryEvent = { @@ -339,7 +339,7 @@ type HistoryEvent = { } ``` -[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L59) +[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L62) ```ts type OrderAllocation = { @@ -350,7 +350,7 @@ type OrderAllocation = { } ``` -[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L60) +[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L63) ```ts type OrderAllocationHistoryFields = { @@ -361,7 +361,7 @@ type OrderAllocationHistoryFields = { } ``` -[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L61) +[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L64) ```ts orderAllocationHistoryKeyOf( @@ -370,7 +370,7 @@ orderAllocationHistoryKeyOf( ): string | null ``` -[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L62) +[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L65) ```ts projectOrderAllocationHistory( @@ -382,7 +382,7 @@ projectOrderAllocationHistory(
-**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L63), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L64). +**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L66), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L67). ### 2. Projection contract @@ -1097,7 +1097,7 @@ ctx.runQuery(source.history, {
-**Other Design entries.** 5 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L68), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L69), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L70), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L71). +**Other Design entries.** 9 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L68), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L69), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L70), [`historyHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L71), [`historyAbortHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L72), [`historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L73), [`historyMismatch`](../specs/application/history-rebuild.sdp.md?plain=1#L74), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L75). ### 6. Rebuild a cross-stream history view under a write pause; interrupt, then resume diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 3cd30d4..881f14a 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -32,7 +32,6 @@ A history projection is the form of a read model whose row depends on history ac ### Open questions - [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) -- [non-blocking] Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose events feed the view fails as a technical failure until a generation of the new version is switched; the option taken here is that one version, because a view rebuilt under the pause is never written by two versions at once, and a list of versions like the `projections` of a `ReadModel` is the form a view takes when its sources must stay writable across such a deploy (E-9, D8, D9, Law 6) - [non-blocking] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) - [non-blocking] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18) - [non-blocking] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9) @@ -47,6 +46,10 @@ A history projection is the form of a read model whose row depends on history ac - [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) - [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` takes one entry's DTO, so a per-entity read model derives each row from one source stream (E-9, E-7, D8) - [extension] Every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds, so every event of a source stream reaches `keyOf` on the live path and a row's recorded version for a stream means that every event of that stream with the row's key up to it is folded, on the live path as under the pause; a declaration that writes a source without the binding is a defect, which a pure test over the application's declarations finds (E-9, E-7, D8) +- [extension] A history projection declares one version, so no generation of a view is written by two versions at once: a deploy that changes the version leaves the active generation, which records the earlier one, refused by `applyHistoryProjection`, and a deploy that adds the view's first binding leaves it no generation to write, and in both every command whose declaration binds the view fails as a technical failure until a generation of the deployed version is switched, unless the operator runs the handoff of `spec:application.history-rebuild#design.historyHandoff` (E-9, D8, D9, Law 6) +- [extension] The handoff under `all` is the release contract for four cases: a deploy that changes the version, a deploy that adds the view's first binding, the abort of a rebuild and the abort of an installation; an operator who deploys or aborts without it leaves callers the technical failures above, and they stay technical failures, never turned into transient refusals (E-9, E-8, D9, Law 6) +- [extension] What a caller sees through the handoff: ordinary answers before `all` closes; `writePaused`, a transient refusal, for every command that reaches step 7 while `all` is closed, with grant changes through `insertGrant` and `revokeGrant` refused alike and every rebuild batch, the new generation's first included, and every tenant-fill batch parked; `writePaused` only for the writers of the view's sources while the generation's source scopes stay closed through backfill and verification; and ordinary answers after `switchGeneration`, or after an abort and the compatible deploy it needs; a refusal before step 7 and a duplicate answered from its receipt keep their answers throughout, and a first installation's parent queries have no active generation to read until the switch (E-9, E-8, D9, D4) +- [extension] A history projection's version also fixes what its generations' saved cursors mean: a change of the fold or of a source's `list` or `history` contract is a new version, never a change under the same one, because the history rebuild's compatibility check compares the version and the order and identity of the sources and cannot see a change of meaning beneath them, and code moved without such a change keeps the batches' function references and what each saved cursor names (E-9, E-24, D9, D19) ## Design diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index 6e03081..8352efc 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -68,9 +68,23 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) - historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) - historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause; because the write rule drops every event at or below a row's recorded version before `project`, the pass writes a missing row and brings a lagging row up to the last event of each source stream with its key, and never folds a covered row again, so it finds a missing or lagging row and not a fold that disagrees with itself (D9, E-8, E-9, Sc L2-6) +- historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; then `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `resumeGate` reopens the `all` entry this sequence closed and no other entry; `resumeGeneration` resumes the generation's parked chain while its pass is `backfill` or `verify`, or `switchGeneration` follows once it is `verified`, because reopening `all` resumes no chain; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds (E-8, E-9, D9, D19) +- historyAbortHandoff: [extension] before `abortGeneration` of a history generation the operator closes `all` again and confirms it with `getGate`; after the abort of a rebuild `all` stays closed until the deployed projection's version is the active generation's, which needs no deploy when it already is and otherwise the prepared compatible deploy, or a fresh `startGeneration` under the desired code and `historyHandoff` again; after the abort of an installation `all` stays closed until a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows, or until a new installation starts; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) +- historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version before it reads a row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page folds nothing, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) +- historyMismatch: [extension] a backfill or verify batch of a history view makes the check of `historyCompatibility` after step 1's state and fence checks and before step 2, so before it reads the cursor, the tenant list or a source; on a mismatch it keeps the cursor, the counts, the rows, the generation's state and the gate as they are, patches the progress row's `lastError` to one line naming the generation and what differs and `updatedAt`, and schedules nothing, so the source scopes stay closed and the pause holds; `resumeChain`, for a backfill or verify pass, and `switchGeneration` make the check before they change the fence, the state or a gate entry and throw a plain `Error` naming the difference on a mismatch; `abortGeneration`, `purgeGeneration` and the resume of a purge make no check, because an abort or a switch removes the entries the check reads and a purge reads only the read model's table; the recovery is compatible code and `resumeGeneration`, or `historyAbortHandoff` and a fresh generation from a `null` cursor, never a translated `sourceIndex` or rows kept from the incompatible pass (E-8, E-9, D9) - limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) ## Verification — reviewed - A reviewer confirms that `startGeneration` closes one entry per source of a paused view and nothing else, and that the write-pause examples assert a refusal of a source writer while closed, the fold of the history view against the journal, and a reopen only after verification. - A reviewer confirms that a history target's `sources` name exactly the context and stream type pairs the view's bindings name, so `startGeneration` closes every writer of its sources, and that `rollbackGeneration` refuses every generation with `pauseRequired`. +- A reviewer confirms that a test at the native backend tier deploys a changed projection version through `historyHandoff` and finds every command refused `writePaused` while `all` is closed, only the writers of the view's sources refused while the source scopes stay closed, and ordinary answers after the switch, with no technical failure at any step. +- A reviewer confirms that a test at the native backend tier deploys the view's first binding through `historyHandoff` and finds the same three windows, with no command failing for a missing generation. +- A reviewer confirms that a test at the native backend tier makes `startGeneration` fail inside `historyHandoff` and finds `all` still closed, no generation row inserted and every command refused `writePaused` until compatible code is deployed or the start succeeds. +- A reviewer confirms that a test at the native backend tier finds the new generation's first batch parked on `all` with its `lastError`, and that reopening `all` schedules nothing until `resumeGeneration` resumes the chain. +- A reviewer confirms that a test at the native backend tier aborts a rebuild whose deployed version is the active generation's through `historyAbortHandoff` and finds ordinary answers once `all` is reopened, with no deploy. +- A reviewer confirms that a test at the native backend tier aborts a rebuild of a changed version through `historyAbortHandoff` and finds the active generation unchanged and every command refused `writePaused`, never failed, until the compatible deploy or a fresh generation's handoff. +- A reviewer confirms that a test at the native backend tier aborts an installation through `historyAbortHandoff`, deploys declarations without the view's bindings and finds ordinary answers after `all` is reopened, with the aborted rows purged by `purgeGeneration`. +- A reviewer confirms that a test at the native backend tier makes the operator audit insert fail on a reopen of the handoff, the `resumeGate` of `all` and the `resumeScope` of an abort or a switch, and finds the gate, the generation and its progress row as they were and the scope still closed. +- A reviewer confirms that a pure test compares a target's ordered source scope keys with gate entries mixed with unrelated closed entries, and finds a reorder, an added source, a removed source and a missing entry incompatible and the same list compatible. +- A reviewer confirms that a test at the native backend tier deploys between an interruption and its resume a reordered, added or removed source or a changed projection version, and finds the batch parked with a `lastError` naming the difference, `resumeGeneration` refused, the cursor, the rows and the gate unchanged, and a deploy between `verified` and the switch refused by `switchGeneration`. diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index a8feada..5916539 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -94,7 +94,7 @@ The registry, the progress row and the gate document are pinned by `spec:applica - Each verify batch enumerates the sources again from the progress row's cursor, which the end of the backfill reset to `null`, the first tenant, and calls `applyProjection` in backfill mode for every DTO, so a missing row is inserted, an older one updated, and the row of a DTO that projects to `null` deleted; each such repair is counted as a miss; when the last tenant's last page is done the generation moves to `verified` and no batch is scheduled (D9, E-8, Sc L2-5) - `switchGeneration` sets the verified generation `active` and, when the read model has an active generation, sets that one `retired` with `retiredAt` and `retireAfter`, in one mutation; every query reads the active generation from the registry, so every subscription on the read model re-runs (D9, F7, F1) - [extension] During the rollback period the retired generation's rows are kept and not written; `rollbackGeneration` reopens the retired generation it is given, one without `pauseRequired`, as `verifying` with a new fence and a `null` cursor and schedules a verify batch, live commands write it again from that commit, its one verify pass repairs every row that is missing, older or left behind by a deleted subject, and the ordinary `switchGeneration` makes it active and retires the generation that served meanwhile (E-8, D9, Sc L2-5) -- `abortGeneration` marks a building, verifying or verified generation `aborted`, leaves the active generation untouched, and resumes every closed gate entry that names this generation; an aborted rollback leaves the reopened generation `aborted`, never `retired` again (D9, Sc L2-6, E-8) +- `abortGeneration` marks a building, verifying or verified generation `aborted`, leaves the active generation untouched, and resumes every closed gate entry that names this generation; an aborted rollback leaves the reopened generation `aborted`, never `retired` again; reopening the sources is not a promise that commands can write, because a bound history view whose deployed version is not its active generation's, or that has no other generation, still fails its commands as a technical failure until `spec:application.history-rebuild#design.historyAbortHandoff` has ended (D9, Sc L2-6, E-8) - `purgeGeneration` starts the purge of an aborted generation, or of a retired one once `retireAfter` has passed; each purge batch deletes at most the progress row's batch size, capped by `limitPurgeBatch`, of rows of the generation for one tenant by the `by_key` range, stays on that tenant while a full batch came back, moves to the next tenant of the tenant list otherwise, and marks the generation `purged` after the last tenant; nothing starts a purge by itself, and a purge whose chain ended, a restore among the causes, is continued by `resumeGeneration` from its progress row (D19, E-40, E-49) ## Design @@ -123,9 +123,9 @@ The enumeration is the context's `list` query with `includeDeleted`, the one rea - purgeSteps: `purgeBatch` runs steps 1 to 3 with `state` `retired` or `aborted` and `pass` `purge`; it then reads `ctx.db.query(readModel.table).withIndex("by_key", (q) => q.eq("tenantId", tenantId).eq("generation", n)).take(Math.min(batchSize, limitPurgeBatch(readModel)))` with `batchSize` the progress row's and `readModel` the generation's read model, whose cap `limitPurgeBatch` declares, deletes each row and adds their number to `rowsPurged`; when it deleted that many rows the cursor stays on the tenant, and otherwise it moves to `nextTenant(ctx, tenantId)`, a purge cursor being `{ tenantId, pageCursor: null }`; a pass that is not done checkpoints, patching the progress row with the cursor, `rowsPurged`, `batchesDone` plus 1, no `lastError` and `updatedAt`, and schedules `refs.purgeBatch`; a pass that is done patches the generation row to `state: "purged"`, no `retiredAt` and no `retireAfter`, and nothing else on it, and the progress row to `pass: "idle"`, `cursor: null`, `rowsPurged`, `batchesDone` plus 1 and `updatedAt` (D19, E-40, E-49, Law 11) - purgeDriver: the purge batch is driven by the same self-scheduled internal mutation as the other batches (E-40, F17, Probe 6) - fnInterruptGeneration: `export const interruptGeneration = internalMutation({ args: { generationId: v.id("generations"), operator: v.string() }, returns: v.null(), handler })` after `assertOperator`, reading the generation row and nothing else, throwing `"Generation " + n + " of " + name + " has no batch to interrupt"` when `state` is `verified`, `active` or `purged`, in which no pass runs; otherwise adding 1 to the fence, setting `interruptedFence` to the new fence, setting `changedAt` and `changedBy`, and scheduling nothing; a `retired` or `aborted` generation runs a pass only during a purge, which its row does not tell, so the interrupt accepts either and the new fence changes nothing when no batch runs; it neither reads nor patches the progress row, so no checkpoint conflicts with it: the chain's pending batch finds `interruptedFence` equal to the fence and records the interruption as step 1 states, the generation stays at its checkpoint, and a parked or stranded chain, which has no pending batch, keeps its progress row as it was (E-40, E-48, D9, Sc L2-5) -- fnResumeChain: `resumeChain(ctx: MutationCtx, config: RebuildConfig, generationId: Id<"generations">, operator: string): Promise` throwing `"Generation " + n + " of " + name + " has no batch to resume"` when `pass` is `idle`; otherwise adding 1 to the fence, setting `changedAt` and `changedBy`, patching the progress row to no `lastError` and `updatedAt` and leaving its `batchSize`, cursor and counts as they are, and scheduling the batch of the pass, `refs.backfillBatch`, `refs.verifyBatch` or `refs.purgeBatch`, with the new fence, all in the caller's mutation; called by `resumeGeneration` and by the restore's `finishRestoreRun` for every generation the backup archive stranded (D9, F8, E-40, E-42) +- fnResumeChain: `resumeChain(ctx: MutationCtx, config: RebuildConfig, generationId: Id<"generations">, operator: string): Promise` throwing `"Generation " + n + " of " + name + " has no batch to resume"` when `pass` is `idle`; otherwise adding 1 to the fence, setting `changedAt` and `changedBy`, patching the progress row to no `lastError` and `updatedAt` and leaving its `batchSize`, cursor and counts as they are, and scheduling the batch of the pass, `refs.backfillBatch`, `refs.verifyBatch` or `refs.purgeBatch`, with the new fence, all in the caller's mutation; called by `resumeGeneration` and by the restore's `finishRestoreRun` for every generation the backup archive stranded; for a backfill or verify pass of a generation with `pauseRequired` it first makes the check of `spec:application.history-rebuild#design.historyCompatibility` and throws on a mismatch before it changes anything (D9, F8, E-40, E-42) - fnResumeGeneration: `export const resumeGeneration = internalMutation({ args: { generationId: v.id("generations"), operator: v.string() }, returns: v.null(), handler })` `assertOperator` and then `resumeChain`; it takes no batch size, so a resumed pass runs at the progress row's `batchSize`, a purge capped by `limitPurgeBatch`; for a generation in any state whose progress row names a pass, so it continues a backfill or verify pass of a generation in `building` or `verifying` and a started purge of a `retired` or `aborted` one, which is how an operator continues a purge a restore stranded (D9, Sc L2-5, E-40, E-48) -- fnSwitchGeneration: `export const switchGeneration = internalMutation({ args: { generationId: v.id("generations"), rollbackPeriodMs: v.optional(v.number()), operator: v.string() }, returns: v.null(), handler })` after `assertOperator`, throwing `"Generation " + n + " of " + name + " is " + state + "; switchGeneration needs verified"` unless the state is `verified`, and `"The rollback period must be between 0 and 2592000000 ms, and " + rollbackPeriodMs + " is not"` unless it is absent or a whole number in that range; then, with `now` the mutation's `Date.now()`, it reads the read model's active generation by `by_read_model_state` and, when there is one, patches it to `state: "retired"`, `retiredAt: now`, `retireAfter: now + (rollbackPeriodMs ?? 604800000)`, `changedAt` and `changedBy`, patches the verified generation to `state: "active"`, `switchedAt: now`, no `retiredAt`, no `retireAfter`, `changedAt` and `changedBy`, and, for a generation with `pauseRequired`, calls the write pause's `resumeScope` for every closed entry that names it (D9, E-8, E-48, F1) +- fnSwitchGeneration: `export const switchGeneration = internalMutation({ args: { generationId: v.id("generations"), rollbackPeriodMs: v.optional(v.number()), operator: v.string() }, returns: v.null(), handler })` after `assertOperator`, throwing `"Generation " + n + " of " + name + " is " + state + "; switchGeneration needs verified"` unless the state is `verified`, and `"The rollback period must be between 0 and 2592000000 ms, and " + rollbackPeriodMs + " is not"` unless it is absent or a whole number in that range, and, for a generation with `pauseRequired`, the error of the check of `spec:application.history-rebuild#design.historyCompatibility` on a mismatch; then, with `now` the mutation's `Date.now()`, it reads the read model's active generation by `by_read_model_state` and, when there is one, patches it to `state: "retired"`, `retiredAt: now`, `retireAfter: now + (rollbackPeriodMs ?? 604800000)`, `changedAt` and `changedBy`, patches the verified generation to `state: "active"`, `switchedAt: now`, no `retiredAt`, no `retireAfter`, `changedAt` and `changedBy`, and, for a generation with `pauseRequired`, calls the write pause's `resumeScope` for every closed entry that names it (D9, E-8, E-48, F1) - fnRollbackGeneration: `export const rollbackGeneration = internalMutation({ args: { generationId: v.id("generations"), operator: v.string() }, returns: v.null(), handler })` the operator names the retired generation to return to, and any retired generation inside its rollback period may be named; after `assertOperator` it throws `"Generation " + n + " of " + name + " is " + state + "; rollbackGeneration needs retired"` unless the state is `retired`, `"Generation " + n + " of " + name + " is past its rollback period"` when the mutation's `Date.now()` is at or after `retireAfter`, `"Generation " + n + " of " + name + " is already being purged"` when `pass` is `purge`, `"Generation " + n + " of " + name + " needs a write pause and cannot be rolled back"` when `pauseRequired` is set, `"The tenant list is being filled; rollbackGeneration waits until fillTenants has ended"` while the `tenantFill` row's `pass` is `fill`, the in-flight error of `startGeneration`, naming that generation's number and state, when another generation is `building`, `verifying` or `verified`, and the error of `projectionOf` when the read model no longer declares the generation's projection version; otherwise it patches the row to `state: "verifying"`, fence plus 1, no `retiredAt`, no `retireAfter`, `changedAt` and `changedBy`, patches the progress row to `pass: "verify"`, `cursor: null`, `misses: 0`, no `lastError` and `updatedAt`, with `batchSize` and the other counts kept, and schedules `refs.verifyBatch` with the new fence; the switch that completes the rollback is `switchGeneration` (D9, E-8, E-9, E-48) - fnAbortGeneration: `export const abortGeneration = internalMutation({ args: { generationId: v.id("generations"), reason: v.string(), operator: v.string() }, returns: v.null(), handler })` after `assertOperator`, throwing `"The reason must be between 1 and 256 bytes"` unless `utf8Length(reason)` is, and `"Generation " + n + " of " + name + " is " + state + "; abortGeneration needs building, verifying or verified"` unless the state is one of the three; otherwise patching the row to `state: "aborted"`, fence plus 1, `changedAt` and `changedBy`, patching the progress row to `pass: "idle"`, `lastError: "aborted: " + reason` and `updatedAt`, with the cursor and the counts kept, and calling the write pause's `resumeScope` for every closed entry that names this generation (D9, Sc L2-6, E-8, E-48) - fnPurgeGeneration: `export const purgeGeneration = internalMutation({ args: { generationId: v.id("generations"), operator: v.string() }, returns: v.null(), handler })` after `assertOperator`, throwing `"Generation " + n + " of " + name + " is " + state + "; purgeGeneration needs retired or aborted"` unless the state is one of the two, `"Generation " + n + " of " + name + " is inside its rollback period"` for a retired generation while the mutation's `Date.now()` is before `retireAfter`, and `"Generation " + n + " of " + name + " is already being purged; resumeGeneration continues it"` when `pass` is `purge`; otherwise adding 1 to the fence, setting `changedAt` and `changedBy`, patching the progress row to `pass: "purge"`, `cursor: null`, no `lastError` and `updatedAt`, and scheduling `refs.purgeBatch` with the new fence (D19, E-40, E-48) diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index 35319f2..2087e51 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -105,6 +105,7 @@ The restore itself is a platform operation outside any mutation. Everything the - fnReceiptCheckBatch: `export const receiptCheckBatch = internalMutation({ args: { runId: v.id("restoreRuns"), scope: checkScopeValidator }, returns: v.boolean(), handler })` reading 25 receipts by tenant from the receipt cursor and calling `ctx.runQuery(components.orders.queries.operations.byOperation, { tenantId, operationId })` per receipt for each context the receipt's versions name (E-42, D6, D19) - fnPendingWorkBatch: `export const pendingWorkBatch = internalMutation({ args: { runId: v.id("restoreRuns") }, returns: v.boolean(), handler })` which on its first call, when the inventory's cursor is empty, reads the gate document and appends one `closedScope` item per closed entry, then reads `by_read_model_state` for each read model the parent's declarations name and each of `building`, `verifying` and `verified` and appends one `generation` item per row with its state and fence, and on every call pages the `imports` table with `.paginate` in creation order, `limitPendingWorkBatch` rows at a time, appending one `import` item per row in `running`; it saves the page cursor on its `checks` entry and returns whether the paging is done (E-42, F12, D19, E-41) - fnFinishRestoreRun: `export const finishRestoreRun = internalMutation({ args: { runId: v.id("restoreRuns"), operator: v.string() }, returns: v.null(), handler })` an operator entry of `spec:command.actor-and-scope`, which calls `assertOperator` first, writes the stated operator on the run as `finishedBy` whether it marks the run failed or accepted, and passes it to `resumeChain`, marking the run failed when any check has a finding; otherwise refusing with a plain error while `MAINTENANCE_MODE` is still `restore` or the inventory has not finished, and then, for every `generation` item whose row is still in `building` or `verifying` at the inventoried fence, calling the rebuild's `resumeChain` in this mutation, which bumps the fence and schedules the next batch from the saved cursor, writing `resumed` on the item, `aborted` on one whose row is `aborted`, `kept` on a `closedScope` item still closed, `recorded` on an `import` item, and marking the run accepted with the finish time (E-42, E-48, D19, F8, F12, Sc L2-8) +- finishCompatibility: [extension] `resumeChain` refuses a history generation that is not compatible with the deployed code, as the history rebuild's compatibility check states, and `finishRestoreRun` does not catch the refusal, so one incompatible generation refuses the whole finish: the run stays unaccepted and no fence, schedule or item resolution commits; before clearing `MAINTENANCE_MODE` for a finish that resumes a history generation the operator closes `all` with `closeGate` and confirms it with `getGate`, so a refused finish leaves callers refused with `writePaused`; the operator then deploys compatible code and calls `finishRestoreRun` again, or, with `all` still closed, aborts the incompatible generation, completes the history rebuild's abort handoff and calls it again, the item then answered `aborted`; `all` is reopened only after the run is accepted and the deployed bindings and projection versions are compatible, and each chain parked under it is then resumed with `resumeGeneration` (E-42, E-8, E-9, D19) - doorExemption: `startRestoreRun`, `streamCheckBatch`, `readModelCheckBatch`, `receiptCheckBatch`, `pendingWorkBatch` and `finishRestoreRun` do not read the gate through `assertWritable` or `gateAllows` and write only `restoreRuns`, except that `finishRestoreRun`'s accepted branch also patches the generation rows it resumes and their progress rows; `startRestoreRun` refuses when `MAINTENANCE_MODE` is not `restore`, and each later mutation refuses when its run is not `running`, so no operational row is written outside a restore and no business table is written by them at all (E-42, D19) - checkOrder: journal, domain, read model, receipt, then the inventory; a later check does not start while an earlier one has findings, because a broken journal makes the fold check meaningless, and the inventory runs last because it is not a check and its items never fail the run (E-42, D3) - gapRecord: the run record's `backupTakenAt` is the gap start; the procedure writes no synthetic receipt and invents no event for the gap (D19, Existing systems) @@ -128,8 +129,9 @@ And a generation stranded in the backup archive is {stranded:"resumed by the acc ## Verification — reviewed - A reviewer confirms that no check batch calls a context operation, schedules anything or writes anything but the run record, and that the only scheduling in the procedure is `finishRestoreRun`'s rescheduling of inventoried generations in its accepted branch. -- A reviewer confirms that the six restore mutations are the only functions in the parent that skip the gate read, that each writes only `restoreRuns` apart from the generation rows `finishRestoreRun` resumes, and that each refuses outside a running restore. +- A reviewer confirms that the six restore mutations and the rebuild's operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, are the only functions in the parent that skip the gate read, that each restore mutation writes only `restoreRuns` apart from the generation rows `finishRestoreRun` resumes, and that each restore mutation refuses outside a running restore. - A reviewer confirms that the door is read by the writer check before the gate document and that the procedure clears it only in the accepted branch, before `finishRestoreRun` reschedules anything. - A reviewer confirms that `streamCheckBatch` passes `maxEvents` on every `rebuild` call, that a `budgetExhausted` refusal is never recorded as a finding, and that the read of a batch that folds one stream, one full fold with its stored baseline event plus the page read twice, is stated below the ceiling, with each further folded stream's own stored baseline event named beside it. - A reviewer confirms that every generation the inventory lists is `resumed` or `aborted` on an accepted run record and that no closed gate entry on an accepted run names a generation that is not `building`, `verifying` or `verified` again. +- A reviewer confirms that a test restores two resumable history generations of which the second is incompatible with the deployed code, and finds `finishRestoreRun` refused, the run unaccepted, no fence or schedule changed and `all` and the source scopes closed, and the finish accepted after compatible code or the abort handoff. - A reviewer confirms that the recovery plan entry named in the first flow exists for every backup the drill uses. diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index c06f4e7..efe632e 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -42,7 +42,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its ## Contract -- There is one gate document per deployment, read through `assertWritable`, which throws, by the command pipeline at its step 7 and by the grant helpers `insertGrant` and `revokeGrant` of `spec:command.actor-and-scope` before they write, and by every background batch at the start of its mutation through `gateAllows`, which answers and lets the batch park, never cached across mutations; the background readers are the rebuild's backfill, verify and purge batches, its tenant fill's `fillTenantsBatch`, and the journal's baseline driver of `spec:context.journal`, which writes a source stream and reschedules itself when refused; the only mutations that skip the read are the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, and the restore procedure's `startRestoreRun`, its check batches, its pending-work inventory and `finishRestoreRun`, which write only the `restoreRuns` record and the generation rows the accepted branch resumes, with their progress rows, while the restore door is closed, as `spec:application.restore` states; every command that reaches step 7 reads the gate; a duplicate answered from its receipt does not, because its answer writes nothing (D9, D6, E-8, E-25, E-37, E-42) +- There is one gate document per deployment, read through `assertWritable`, which throws, by the command pipeline at its step 7 and by the grant helpers `insertGrant` and `revokeGrant` of `spec:command.actor-and-scope` before they write, and by every background batch at the start of its mutation through `gateAllows`, which answers and lets the batch park, never cached across mutations; the background readers are the rebuild's backfill, verify and purge batches, its tenant fill's `fillTenantsBatch`, and the journal's baseline driver of `spec:context.journal`, which writes a source stream and reschedules itself when refused; the only mutations that skip the read are the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, the rebuild's other operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the restore procedure's `startRestoreRun`, its check batches, its pending-work inventory and `finishRestoreRun`, which write only the `restoreRuns` record and the generation rows the accepted branch resumes, with their progress rows, while the restore door is closed, as `spec:application.restore` states; every command that reaches step 7 reads the gate; a duplicate answered from its receipt does not, because its answer writes nothing (D9, D6, E-8, E-25, E-37, E-42) - A scope is `all`, one tenant, or one source stream type of one context; the gate holds the set of closed scopes, each with a reason, the generation it serves if any, and the operator who closed it (E-8, E-48, D9) - A writer in a closed scope refuses before any write with the transient refusal `writePaused`, whose message carries the scope and the reason; nothing is stored, no operation ID is minted, and the same request key succeeds once the scope is open (D9, D4, Law 6) - A use case is in scope when `all` is closed, when its tenant is closed, or when a stream type its declaration's `writes` names is closed (E-8, E-38, D9) @@ -63,7 +63,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its The gate is one document so that a command pays one point read. Scopes are strings so that the same document serves tenants, source stream types and the whole deployment without a table per kind. The refusal is a `ConvexError` whose data is the outcome boundary's `TransientData`. The table is `gateTables`, a schema fragment the library exports, and `GateDataModel` is its data model; every composition that registers a command spreads it into its schema, because step 7 reads it. The library exports the four operator entries as registered internal functions, built with `internalMutationGeneric` and `internalQueryGeneric` of `convex/server`, and a composition's `gate` module re-exports them, so they are reached as `internal.gate.closeGate`, `internal.gate.resumeGate`, `internal.gate.getGate` and `internal.gate.getGateAudit`. Every refusal of an operator entry is a plain `Error` with the message given. - validatorClosedEntry: `const closedEntryValidator = v.object({ scopeKey: v.string(), reason: v.string(), generationId: v.optional(v.id("generations")), changedAt: v.number(), changedBy: v.string() })` where `changedBy` is the stated operator and `changedAt` the closing mutation's `Date.now()` (E-8, E-48) -- tableMaintenanceGates: `maintenanceGates: defineTable({ key: v.literal("gates"), closed: v.array(closedEntryValidator), updatedAt: v.number() }).index("by_key", ["key"])` holding at most one document, whose `closed` lists the entries in the order they were closed (E-8, D9) +- tableMaintenanceGates: `maintenanceGates: defineTable({ key: v.literal("gates"), closed: v.array(closedEntryValidator), updatedAt: v.number() }).index("by_key", ["key"])` holding at most one document, whose `closed` lists the entries in the order they were closed, an order `closeScope` and `resumeScope` keep, because a history generation's compatibility check reads its source entries in that order (E-8, D9) - indexGatesByKeyUse: the one point read every writer makes, `.withIndex("by_key", (q) => q.eq("key", "gates")).unique()`; an absent document reads as no closed scope (E-8, D9) - typeScopeKey: `type ScopeKey = "all" | (string & {})` where a tenant scope is `"tenant:" + tenantId` and a source scope is `"source:" + contextId + ":" + streamType`, built only by `scopesOfUseCase`, `startGeneration`, the rebuild's batches, the journal's baseline driver and the operator entries (E-8, E-38, D11) - fnGateAllows: `gateAllows(ctx: { db: GenericDatabaseReader }, scopes: readonly ScopeKey[], allowGeneration?: Id<"generations">): Promise<{ allowed: true } | { allowed: false; scopeKey: ScopeKey; reason: string }>` the one gate read: it first reads `process.env.MAINTENANCE_MODE` and answers `{ allowed: false, scopeKey: "all", reason: "restore" }` without reading the document when the value is `restore`; otherwise it reads the gate document once and answers not allowed with the `scopeKey` and `reason` of the first entry of `closed`, in array order, whose `scopeKey` is one of `scopes` and which is not exempt, and allowed when there is none; an entry is exempt only when `allowGeneration` is given, the entry has a `generationId`, and the two are equal; it writes nothing (E-8, E-42, D9, F9) @@ -85,7 +85,7 @@ The gate is one document so that a command pays one point read. Scopes are strin ## Verification — reviewed -- A reviewer confirms that `assertWritable` is called by the command pipeline's step 7 for every command that reaches it and by the two grant helpers before they write, that `gateAllows` is called by every background batch before its first write and that the batch parks rather than throws on a refusal, that the two are one read because `assertWritable` is `gateAllows` plus the throw, that the gate's entries and the restore procedure's six mutations are the only exemptions, and that no function caches the gate across mutations. +- A reviewer confirms that `assertWritable` is called by the command pipeline's step 7 for every command that reaches it and by the two grant helpers before they write, that `gateAllows` is called by every background batch before its first write and that the batch parks rather than throws on a refusal, that the two are one read because `assertWritable` is `gateAllows` plus the throw, that the gate's entries, the rebuild's operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the restore procedure's six mutations are the only exemptions, and that no function caches the gate across mutations. - A reviewer confirms that `gateAllows` reads the environment before the document, that an entry with no generation is never exempt, and that a gate read with no generation passes no closed entry. - A reviewer confirms that no function other than `startGeneration` closes a source scope, so every closed entry that names a generation names a row that exists, and that the journal's baseline driver reads the gate with the source scope of the stream type it migrates before every batch. - A reviewer confirms that `closeScope` and `resumeScope` are the only writers of the gate document, that each inserts its audit record in the same mutation with no catch around it, and that a test whose audit table refuses the record finds the gate unchanged. From 8c217aa8a98f71e1ac468d8d34a28544e6847026 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 05:20:14 +0200 Subject: [PATCH 32/60] build: adopt the Protocol at 27b896a and cite every open question by key The pin moves to the round-2 branch of the Protocol (schema 0.7.0), packed from a clean clone at 27b896a. The graph keeps its shape: 240 Specs, 6 Packs, 144 anchors, 390 nodes, 1,365 edges, no error, the 12 listed warnings. By the owner's ruling of 2026-10-04 ("Key in the marker"), each of the 166 open questions carries a lower-camel key in its marker, `[blocking #key]`, and the register's 152 open question sources cite their question by entry address, `spec:#question.`; the seven closed sources keep their text. decisions.py, its tests and check.py resolve an open source through recipe 25; a removed key fails the check. The keys were drafted by a gpt-6.1-sol job from each question's subject and applied by one script. The page still reads the old source shape; the next commit moves it. Co-Authored-By: Claude Opus 5.5 --- design/advisors/register.md | 6 +- design/decisions/register.json | 456 ++++++------------ .../advanced/coalesced-recomputation.sdp.md | 2 +- .../cross-stream-online-rebuild.sdp.md | 2 +- design/specs/advanced/ordered-consumer.sdp.md | 2 +- design/specs/advanced/trigger-table.sdp.md | 2 +- design/specs/agents/agent-runs.sdp.md | 4 +- design/specs/agents/budget-accounting.sdp.md | 2 +- .../application/aggregate-projection.sdp.md | 2 +- .../specs/application/first-experiment.sdp.md | 12 +- .../application/generation-registry.sdp.md | 12 +- .../application/history-projection.sdp.md | 8 +- .../specs/application/history-rebuild.sdp.md | 12 +- .../orders-inventory-example.sdp.md | 2 +- .../specs/application/parent-use-cases.sdp.md | 6 +- .../application/projection-contract.sdp.md | 10 +- design/specs/application/read-models.sdp.md | 12 +- design/specs/application/rebuild.sdp.md | 10 +- design/specs/application/restore.sdp.md | 10 +- design/specs/application/write-pause.sdp.md | 6 +- design/specs/command/actor-and-scope.sdp.md | 10 +- .../specs/command/command-declaration.sdp.md | 6 +- design/specs/command/command-pipeline.sdp.md | 14 +- .../command/idempotency-and-receipts.sdp.md | 10 +- design/specs/command/outcome-boundary.sdp.md | 8 +- design/specs/command/receipt-table.sdp.md | 2 +- .../command/tenancy-and-authority.sdp.md | 6 +- .../constraints/events-stay-small.sdp.md | 2 +- design/specs/context/context-component.sdp.md | 6 +- design/specs/context/event-envelope.sdp.md | 4 +- design/specs/context/journal.sdp.md | 2 +- .../specs/context/persistence-adapter.sdp.md | 2 +- design/specs/context/queries.sdp.md | 6 +- design/specs/context/tables.sdp.md | 2 +- .../d02-context-owns-state-and-journal.sdp.md | 4 +- ...03-events-only-source-of-next-state.sdp.md | 4 +- ...d06-idempotency-client-and-receipts.sdp.md | 2 +- .../d07-rejections-thrown-not-stored.sdp.md | 2 +- .../d08-read-models-in-command.sdp.md | 2 +- .../d09-rebuild-online-by-default.sdp.md | 2 +- .../d13-deferred-work-is-an-obligation.sdp.md | 2 +- ...9-operations-travel-with-capability.sdp.md | 2 +- design/specs/effects/claim-call-settle.sdp.md | 4 +- design/specs/effects/external-effects.sdp.md | 6 +- .../f11-components-have-no-ctx-auth.sdp.md | 2 +- ...exclude-pending-scheduled-functions.sdp.md | 2 +- ...d-functions-table-shows-failed-runs.sdp.md | 2 +- ...migrations-fits-generation-backfill.sdp.md | 2 +- .../specs/facts/f18-commit-timestamps.sdp.md | 2 +- ...f19-nested-calls-share-time-budgets.sdp.md | 2 +- ...gination-checks-bytes-after-reading.sdp.md | 2 +- design/specs/facts/probe-plan.sdp.md | 12 +- design/specs/kernel/decider-contract.sdp.md | 2 +- design/specs/kernel/domain-kernel.sdp.md | 4 +- design/specs/kernel/initial-state.sdp.md | 2 +- design/specs/kernel/outcome-model.sdp.md | 2 +- .../kernel/state-document-mapping.sdp.md | 2 +- .../specs/obligations/do-nothing-check.sdp.md | 2 +- .../obligations/fan-out-and-chains.sdp.md | 2 +- .../obligations/lifecycle-transitions.sdp.md | 4 +- .../obligations/local-reaction-wrapper.sdp.md | 2 +- .../obligations/obligation-module.sdp.md | 8 +- .../obligations/operator-operations.sdp.md | 2 +- .../specs/obligations/record-contract.sdp.md | 4 +- .../obligations/retention-and-restore.sdp.md | 6 +- design/specs/obligations/sweeper.sdp.md | 6 +- .../operations/baseline-operations.sdp.md | 4 +- .../specs/platform/acceptance-contract.sdp.md | 4 +- design/specs/platform/native-harness.sdp.md | 8 +- .../transactional-domain-platform.sdp.md | 2 +- design/specs/platform/vocabulary.sdp.md | 4 +- design/specs/processes/approvals.sdp.md | 2 +- .../processes/start-checkout-example.sdp.md | 4 +- .../specs/processes/workflow-processes.sdp.md | 4 +- design/tools/check.py | 28 +- design/tools/decisions.py | 71 ++- design/tools/test_decisions.py | 102 +++- package-lock.json | 6 +- package.json | 2 +- ...ftware-delivery-protocol-0.0.0-27b896a.tgz | Bin 0 -> 433257 bytes ...ftware-delivery-protocol-0.0.0-5e29c03.tgz | Bin 408437 -> 0 bytes 81 files changed, 469 insertions(+), 534 deletions(-) create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz diff --git a/design/advisors/register.md b/design/advisors/register.md index bd7ad25..cff6fc8 100644 --- a/design/advisors/register.md +++ b/design/advisors/register.md @@ -58,7 +58,7 @@ An advisor that finds a row plainly another's leaves it unsorted and says so in "id": "OD-014", "title": "Admission is an optional per-command policy in the declaration, absent by default", "sources": [ - {"kind": "specQuestion", "spec": "spec:command.command-pipeline", "question": "Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7)", "file": "design/specs/command/command-pipeline.sdp.md"}, + {"kind": "specQuestion", "address": "spec:command.command-pipeline#question.commandAdmissionPolicy", "file": "design/specs/command/command-pipeline.sdp.md"}, { "kind": "extension", "ref": "E-32", "file": "design/README.md", "line": 211 } ], "families": ["command"], @@ -81,7 +81,7 @@ An advisor that finds a row plainly another's leaves it unsorted and says so in } ``` -`check.py` verifies each question source against exactly one open question of its Spec by its first sentence, normalizing whitespace only, and refuses a removed question that resolves again. +`check.py` resolves each open question source through the Protocol's address-resolution recipe and checks that `file` names its Spec. Every open question carries a key in its marker, such as `[non-blocking #commandAdmissionPolicy]`, addressed as `spec:#question.`. A closed source keeps its Spec and opening text. The check compares that text with the open questions' first sentences, normalizing whitespace only, and refuses a removed question that resolves again. `units` is the order of the units a decision can block. The tool reads "before S4" from it, and a close keeps it current. @@ -89,7 +89,7 @@ An advisor that finds a row plainly another's leaves it unsorted and says so in |---|---|---| | `id` | `OD-` and three digits, given in source order and never reused | the load | | `title` | The first sentence of the first source, cut at 120 characters | the load | -| `sources` | Where the decision came from, every place once. `kind` is `ownerQueue`, `specQuestion`, `extension`, `planAmbiguity`, `productDecision` or `specLine`. `specQuestion` uses `spec`, the question's opening text in `question`, and `file`, with `open: false` only for a removed question on a decided or folded row. Other source kinds use `ref` as the lasting name: `000/3` for the third bullet of owner queue item 000, `E-32`, `11.3` for an ambiguity of `PLAN.md`, `product/1`, `product/2` or `product/3` for a product decision, and `#` for a named Spec bullet that is not an open question. `file` and `line` on those other kinds say where it stood at the load. | the load | +| `sources` | Where the decision came from, every place once. `kind` is `ownerQueue`, `specQuestion`, `extension`, `planAmbiguity`, `productDecision` or `specLine`. An open `specQuestion` uses `address`, in the form `spec:#question.`, and `file`. A closed source keeps `spec`, the question's opening text in `question`, `file` and `open: false`, only for a removed question on a decided or folded row. Other source kinds use `ref` as the lasting name: `000/3` for the third bullet of owner queue item 000, `E-32`, `11.3` for an ambiguity of `PLAN.md`, `product/1`, `product/2` or `product/3` for a product decision, and `#` for a named Spec bullet that is not an open question. `file` and `line` on those other kinds say where it stood at the load. | the load | | `families` | The Spec families it touches | the load | | `cites` | The tokens its sources cite: E, D, F, OQ, Sc, Probe, Law | the load | | `provisionalReading` | What the code or the Specs rest on today, word for word from the source, or `null` | the load | diff --git a/design/decisions/register.json b/design/decisions/register.json index 12bc6ee..8e341e1 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -149,8 +149,7 @@ }, { "kind": "specQuestion", - "spec": "spec:platform.acceptance-contract", - "question": "Extension E-17: the doc says that a link between source and test is not a passing run and that the first experiment passes when every Layer 0, 1 and 2 scenario passes, and it does not say how a pass of the whole is established from runs; the option taken here is the acceptance check: the required scenarios are generated from the graph, one per example of a required row with its tier, composition and verifiers, and read against one run's record, so that a scenario with no verifier, with no result or with a result other than passed keeps the whole from passing; the alternative, a list of scenarios and verifiers kept by hand beside the tests, was not taken because the graph already holds each example's row, tier, composition and verifiers; the owner confirms (E-17, Acceptance scenarios, First experiment)", + "address": "spec:platform.acceptance-contract#question.scenarioAcceptanceCheck", "file": "design/specs/platform/acceptance-contract.sdp.md" }, { @@ -200,8 +199,7 @@ }, { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "Extension E-17, the rows the experiment requires: the doc says the experiment passes when every Layer 0, 1 and 2 scenario passes, and its one all-layer row, Sc ALL-1, applies to every installed layer; the option taken here requires the twenty-three rows the doc's table gives Layer 0, 1 or 2 and Sc ALL-1, each at the tier the acceptance contract names for it, so that the native proof of the audit and the diagnostic is part of the experiment; the owner confirmed both (E-17, First experiment, Sc ALL-1)", + "address": "spec:application.first-experiment#question.requiredAcceptanceScenarios", "file": "design/specs/application/first-experiment.sdp.md" } ], @@ -359,8 +357,7 @@ }, { "kind": "specQuestion", - "spec": "spec:application.generation-registry", - "question": "Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, generation 1 starting as `building` like any other, so a read model added to a deployment that has history serves that history from its first switch and no transition claims coverage it did not build; a command that finds no generation to write fails as a technical failure and a query that finds no active generation fails the same way (E-8, D9, D19)", + "address": "spec:application.generation-registry#question.readModelInstallation", "file": "design/specs/application/generation-registry.sdp.md" } ], @@ -487,8 +484,7 @@ }, { "kind": "specQuestion", - "spec": "spec:platform.native-harness", - "question": "Extension E-15: the doc does not say what the fixture app contains, how a fault enters a run, what a test may observe, or what a test controls on a backend that offers no clock and no scheduler switch; the option taken here is the rules below; two of them read the doc for the owner: the production-configuration run of Sc L2-9 is taken as the scenarios routed to the production composition, where the corpus earlier asked for the full Layer 0 to 2 suite on a release build, and evidence records that back a pass claim are kept in the repository; whether the durations Layer 3 pins become configuration, so that a test can outwait them, is left to Layer 3; and because the Convex CLI reads `convex.json` and `package.json` from its working directory, a composition is a name, a project directory and a functions directory, the production composition's project directory is `example/` with a `package.json` that links to the repository's one, and both compositions' generated files are committed; the owner has not ruled on the layout (E-15, Acceptance scenarios, Sc L2-9)", + "address": "spec:platform.native-harness#question.fixtureCompositionContract", "file": "design/specs/platform/native-harness.sdp.md" }, { @@ -533,8 +529,7 @@ }, { "kind": "specQuestion", - "spec": "spec:application.projection-contract", - "question": "Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9)", + "address": "spec:application.projection-contract#question.projectionGenerationVersions", "file": "design/specs/application/projection-contract.sdp.md" } ], @@ -579,8 +574,7 @@ }, { "kind": "specQuestion", - "spec": "spec:command.command-declaration", - "question": "Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration exists; the conditional dispatcher of `spec:command.outcome-boundary` is the one thing that would need such a map and brings it with it; this is a provisional reading the owner rules (E-7, D12, D18, OQ2)", + "address": "spec:command.command-declaration#question.commandDeclarationLookup", "file": "design/specs/command/command-declaration.sdp.md" } ], @@ -657,14 +651,12 @@ }, { "kind": "specQuestion", - "spec": "spec:application.read-models", - "question": "Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field `entry` and the codes `unauthenticated` or `forbidden`; the owner confirmed the word, and nothing else of the shape is new (E-6, D7, D11, Law 5)", + "address": "spec:application.read-models#question.parentQueryRefusal", "file": "design/specs/application/read-models.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:command.outcome-boundary", - "question": "Extension E-5: the doc says a query authorizes before it discloses and does not say how a refused query is answered; here a parent query's refusal is the same `RejectionData` a command's is, with the name of the entry that refused in the field `entry` and only the codes `unauthenticated` and `forbidden`, and a use case's own rejection is thrown as the kernel's bare `Rejection`, the way a context throws one, while a context query's transient refusal `writePaused` reaches the caller unchanged, in the transient shape with no `entry`, because it is not a refusal of the caller; the owner confirmed the shared shape, the two codes, the bare use-case rejection and the word entry for the field (E-5, D7, Law 5)", + "address": "spec:command.outcome-boundary#question.parentQueryRefusalShape", "file": "design/specs/command/outcome-boundary.sdp.md" } ], @@ -746,14 +738,12 @@ }, { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "Extension E-46: the doc asks for one more lifecycle command and one essential summary without naming them; the option taken here is `CancelOrder`, which releases the allocation, and the order summary read model (E-46, First experiment)", + "address": "spec:application.first-experiment#question.lifecycleCommandSummary", "file": "design/specs/application/first-experiment.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:application.orders-inventory-example", - "question": "Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream budgets of the two stream types, the order of the two context calls and the history-dependent view Sc L2-6 builds are choices the doc leaves open; two of them are decided, that the stock item keeps totals only and `release` takes its quantities from the cancelled order's own lines, and that the order allocation history view stays in the experiment; the owner may substitute the others, and the experiment's terms move with them (E-46, E-2, E-9, First experiment)", + "address": "spec:application.orders-inventory-example#question.orderInventoryCommandChoices", "file": "design/specs/application/orders-inventory-example.sdp.md" }, { @@ -801,8 +791,7 @@ }, { "kind": "specQuestion", - "spec": "spec:application.projection-contract", - "question": "The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9)", + "address": "spec:application.projection-contract#question.backfillVersionOverwrite", "file": "design/specs/application/projection-contract.sdp.md" } ], @@ -977,8 +966,7 @@ }, { "kind": "specQuestion", - "spec": "spec:command.tenancy-and-authority", - "question": "Extension E-37: the design takes grants as written by plain library helpers, `insertGrant` and `revokeGrant`, over which the application registers its own internal mutations, with a tenant's first grant created with admin access through the composition's own internal grant mutation, and later grants the same way or by whatever command the composition registers; the library registers no grant function and promises no recorded bootstrap, first-admin flow or invitation, which are an adopter's to build on the helpers (E-37, D11, Law 5)", + "address": "spec:command.tenancy-and-authority#question.grantCreationEntries", "file": "design/specs/command/tenancy-and-authority.sdp.md" } ], @@ -1019,8 +1007,7 @@ }, { "kind": "specQuestion", - "spec": "spec:command.actor-and-scope", - "question": "Extension E-6: the tenant scope of an operation, of a command and of a query is the `tenantId` argument alone, so none takes a separate scope argument; this is a provisional reading the owner rules (E-6, Law 11, D11)", + "address": "spec:command.actor-and-scope#question.commandQueryTenantScope", "file": "design/specs/command/actor-and-scope.sdp.md" } ], @@ -1065,8 +1052,7 @@ }, { "kind": "specQuestion", - "spec": "spec:facts.f11-components-have-no-ctx-auth", - "question": "Observed against the documentation on 2026-10-01: the components page says `ctx.auth` is not available within a component; on the pinned native backend, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0, `ctx.auth.getUserIdentity()` inside a component query returned the caller's identity, and `convex-test` 0.0.60 returns null for the same call; the design does not depend on which holds, because D11 passes the actor explicitly and no component function reads `ctx.auth`; whether this fact's wording and status follow the documentation or the backend is the owner's ruling; the design takes the provisional reading that the documentation's sentence stays the fact and that the Specs of the kernel, context and command families state no component function reads `ctx.auth` or `process.env` as the design's rule, which a lint check over `src/context` and every component directory of the fixture composition enforces (F11, D11)", + "address": "spec:facts.f11-components-have-no-ctx-auth#question.contextActorIdentity", "file": "design/specs/facts/f11-components-have-no-ctx-auth.sdp.md" } ], @@ -1106,32 +1092,27 @@ }, { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of `ConvexHttpClient` needs when it retries, and the internal entry always requires one (E-33, D6, Probe 1)", + "address": "spec:command.command-pipeline#question.publicRequestKey", "file": "design/specs/command/command-pipeline.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:command.idempotency-and-receipts", - "question": "Probe 1 showed on the pinned backend that a closed client leaves its mutation executed once or not at all, that a backend restart leaves it executed once, and that `ConvexHttpClient` does not retry, so a caller's retry is a second execution; whether the public entry requires a request key from callers of the HTTP client, or leaves it optional, is the owner's ruling; the design takes it optional on the public entry and required on the internal entry, a provisional reading the owner rules (Probe 1, D6, E-33)", + "address": "spec:command.idempotency-and-receipts#question.httpCallerRequestKey", "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:command.idempotency-and-receipts", - "question": "Extension E-33: a public caller may supply a request key to opt into a receipt, and the internal entry always requires one; the doc lists the callers that need receipts and does not say whether a UI caller may opt in (E-33, D6)", + "address": "spec:command.idempotency-and-receipts#question.publicReceiptChoice", "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d06-idempotency-client-and-receipts", - "question": "Probe 1 ran on 2026-10-01: the guarantee holds across a backend restart, a closed client leaves its mutation executed once or not at all, and the HTTP client does not retry; `ConvexHttpClient` is a Convex client the guarantee does not reach, so whether its callers join the callers that need receipts is the owner's ruling (Probe 1, D6)", + "address": "spec:decisions.d06-idempotency-client-and-receipts#question.httpCallerReceipts", "file": "design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Probe 1 ran on 2026-10-01: a closed client leaves its mutation executed once or not at all, a backend restart leaves it executed once, and the HTTP client does not retry; whether callers of `ConvexHttpClient` must supply a request key is D6's question for the owner (Probe 1, D6)", + "address": "spec:facts.probe-plan#question.httpClientRequestKey", "file": "design/specs/facts/probe-plan.sdp.md" }, { @@ -1210,8 +1191,7 @@ }, { "kind": "specQuestion", - "spec": "spec:platform.native-harness", - "question": "Extension E-15: the design takes the fixture action `nonUiCaller:send`, which any authenticated client of the fixture composition may call to run any fixture command's internal entry under any namespace and actor kind, as the fixture's stand-in for trusted server code, kept out of the production composition; it is a provisional reading the owner rules, because within the fixture composition it lets a client do what `spec:command.tenancy-and-authority` refuses a client (E-15, D11, Sc L1-7)", + "address": "spec:platform.native-harness#question.fixtureCallerNamespace", "file": "design/specs/platform/native-harness.sdp.md" } ], @@ -1283,8 +1263,7 @@ }, { "kind": "specQuestion", - "spec": "spec:platform.native-harness", - "question": "Extension E-13: the doc says native acceptance runs with production authority and a disposable backend per test and does not say how a test obtains a signed identity, which a production issuer cannot mint for a throwaway backend; the option taken here is a fixture issuer: a composition that runs natively reads its issuer, application ID and key set from the deployment's environment variables, the harness sets the key set to a data URI whose private key it holds, and each caller under test is an ordinary client carrying a token the harness signs; the option first taken, the backend's admin key acting as an identity, was dropped because such a caller passes Convex's visibility check for internal functions, which `spec:platform.native-harness.admin-key-acting-as-identity-reaches-internal-function` shows; this reading reaches into production, because running the production composition natively with no changed file means the example application's `auth.config.ts` is a `customJwt` provider whose trust root is whatever the deployment's environment names, and a provider that fetches its keys from an issuer's own endpoint cannot be run on a disposable backend this way; the owner rules on both halves, the test identity and the production provider (E-13, S13, Sc L2-9, D11)", + "address": "spec:platform.native-harness#question.nativeCallerIdentity", "file": "design/specs/platform/native-harness.sdp.md" }, { @@ -1330,8 +1309,7 @@ }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Extension E-16: the doc says each probe is one small test on a native backend and that a probed fact is one a native backend test showed, and does not say how a test that settles an unknown states what it expects or what follows when the backend answers otherwise; the option taken here: a probe is written as example Specs that verify its fact, each bound to its native test; an example's bound values are the expectation written before the first run; a first run that shows another value is a finding recorded on the fact, and the example is then bound to what that release does and says so; an example fails when its run did not reach the boundary it is about; a later run on a new release that shows another value is again a finding, and the test is not repaired to keep the old value; a size is recorded and not asserted, while a limit the backend enforces is bound as observed; and what a local backend cannot answer is named on the example and stays open on the fact; the owner confirms (E-16, Probes, Acceptance scenarios)", + "address": "spec:facts.probe-plan#question.probeExpectationContract", "file": "design/specs/facts/probe-plan.sdp.md" }, { @@ -1450,8 +1428,7 @@ }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Probe 3 ran on 2026-10-01 for latency on a local backend; a local backend has no function-call quota, so that half is the hosted example `spec:facts.f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls`, which only a hosted deployment can run (Probe 3, F4, D2, D8, E-59)", + "address": "spec:facts.probe-plan#question.hostedContextCallQuota", "file": "design/specs/facts/probe-plan.sdp.md" } ], @@ -1936,8 +1913,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:advanced.coalesced-recomputation", - "question": "The dirty-mark table, the recompute scheduling and the staleness field are deferred to the build on this trigger (D18, Decision method rule 4)", + "address": "spec:advanced.coalesced-recomputation#question.recomputationStalenessRecords", "file": "design/specs/advanced/coalesced-recomputation.sdp.md" } ], @@ -1970,8 +1946,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:advanced.cross-stream-online-rebuild", - "question": "The dependency protocol or the consistent source cut, and the online cutover for this class, are deferred to the build on this trigger (D18, Decision method rule 4)", + "address": "spec:advanced.cross-stream-online-rebuild#question.crossStreamRebuildCut", "file": "design/specs/advanced/cross-stream-online-rebuild.sdp.md" } ], @@ -2004,8 +1979,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:advanced.ordered-consumer", - "question": "The sequence allocation, the consumer position record, the worker's batch bound and the skip authorization are deferred to the build on this trigger (D18, Decision method rule 4)", + "address": "spec:advanced.ordered-consumer#question.orderedConsumerPosition", "file": "design/specs/advanced/ordered-consumer.sdp.md" } ], @@ -2038,8 +2012,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:advanced.trigger-table", - "question": "No trigger has fired; each capability's design is deferred until its activation record exists (D18, Decision method rule 4)", + "address": "spec:advanced.trigger-table#question.capabilityActivationTrigger", "file": "design/specs/advanced/trigger-table.sdp.md" } ], @@ -2072,8 +2045,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:agents.agent-runs", - "question": "The trigger has not fired; the run, proposal and attempt tables, the proposal schema, the policy engine's inputs and the provider adapters are deferred to the build (D17, Decision method rule 4)", + "address": "spec:agents.agent-runs#question.agentProposalAttempts", "file": "design/specs/agents/agent-runs.sdp.md" } ], @@ -2106,20 +2078,17 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:agents.agent-runs", - "question": "OQ2 dependency: whether a rejected agent proposal must be recorded as a fact decides whether the generic internal dispatcher of D7 is needed at the agent boundary; the design carries it as a conditional (OQ2, D7)", + "address": "spec:agents.agent-runs#question.agentProposalRejectionRecord", "file": "design/specs/agents/agent-runs.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:command.outcome-boundary", - "question": "OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides whether the generic internal dispatcher below exists; until then it is a conditional design and no command uses it (OQ2, D7)", + "address": "spec:command.outcome-boundary#question.refusedCommandRecord", "file": "design/specs/command/outcome-boundary.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d07-rejections-thrown-not-stored", - "question": "OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides where the nested mutation is required and whether the generic internal dispatcher exists (OQ2, D7)", + "address": "spec:decisions.d07-rejections-thrown-not-stored#question.refusedCommandHistory", "file": "design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md" }, { @@ -2160,8 +2129,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:agents.budget-accounting", - "question": "The reservation and usage records, the slot allocator and the reconciliation operation are deferred to the build on the agent trigger (D17, Decision method rule 4)", + "address": "spec:agents.budget-accounting#question.agentBudgetAccounting", "file": "design/specs/agents/budget-accounting.sdp.md" } ], @@ -2194,26 +2162,22 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:facts.f17-migrations-fits-generation-backfill", - "question": "Hosted quotas, sustained contention, automatic stall detection, backup replacement, old encrypted cursors, fence advancement, parallel callbacks and a rebuild across changing tenants are not run by these examples; the native backend evidence proves only the named boundaries and does not settle those behaviors.", + "address": "spec:facts.f17-migrations-fits-generation-backfill#question.rebuildBackendCoverage", "file": "design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:application.rebuild", - "question": "`@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9)", + "address": "spec:application.rebuild#question.rebuildBatchDriver", "file": "design/specs/application/rebuild.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d09-rebuild-online-by-default", - "question": "Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9)", + "address": "spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage", "file": "design/specs/decisions/d09-rebuild-online-by-default.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Probe 6 records native backend evidence on the pins named by F17: a row race, cancel and resume, thrown-batch rollback, restart, table scope and a parent batch returning a context cursor to the migrations driver; hosted quotas and sustained contention are not run.", + "address": "spec:facts.probe-plan#question.rebuildNativeCoverage", "file": "design/specs/facts/probe-plan.sdp.md" } ], @@ -2255,8 +2219,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:processes.approvals", - "question": "The approvals table, its indexes and the approval command's declaration are deferred to the build on the process trigger; the rules here are the promise the build must keep (D16, Decision method rule 4)", + "address": "spec:processes.approvals#question.approvalCommandDeclaration", "file": "design/specs/processes/approvals.sdp.md" } ], @@ -2288,8 +2251,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:processes.start-checkout-example", - "question": "The trigger has not fired; the workflow definition, the process record, the reservation's business expiry and the payment obligation's handler are deferred to the build until the operation spans time, external systems or human decisions (D16, Decision method rule 4)", + "address": "spec:processes.start-checkout-example#question.checkoutProcessDefinition", "file": "design/specs/processes/start-checkout-example.sdp.md" } ], @@ -2321,8 +2283,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:processes.start-checkout-example", - "question": "Which of the three late-payment policies applies is a product decision the build records per deployment: reallocate, ask a person, or refund as a separately tracked operation (D16)", + "address": "spec:processes.start-checkout-example#question.latePaymentPolicy", "file": "design/specs/processes/start-checkout-example.sdp.md" }, { @@ -2360,8 +2321,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:processes.workflow-processes", - "question": "The trigger has not fired; the process record's table, the step signatures, the wait mechanism for an obligation's result and the deploy procedure are deferred to the build (D16, Decision method rule 4)", + "address": "spec:processes.workflow-processes#question.processObligationWait", "file": "design/specs/processes/workflow-processes.sdp.md" } ], @@ -2393,8 +2353,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:processes.workflow-processes", - "question": "Whether an old run is kept, migrated or blocked on a given deploy is a per-release choice the build records; the README's determinism rule means keeping requires the old definition to stay registered under its version (D16, S11)", + "address": "spec:processes.workflow-processes#question.processDefinitionRetention", "file": "design/specs/processes/workflow-processes.sdp.md" }, { @@ -2432,26 +2391,22 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on this experiment's local measurement of component call cost, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, Probe 3)", + "address": "spec:application.first-experiment#question.contextIsolationCost", "file": "design/specs/application/first-experiment.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:context.context-component", - "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, with the hosted usage reading as the one measurement still to take, and a measured workload that misses an agreed target or a usage reading above an agreed share reopens it (OQ1, D2)", + "address": "spec:context.context-component#question.contextIsolationMeasurement", "file": "design/specs/context/context-component.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d02-context-owns-state-and-journal", - "question": "OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, D2)", + "address": "spec:decisions.d02-context-owns-state-and-journal#question.contextIsolationChoice", "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.obligation-module", - "question": "OQ1 dependency: OQ1 is answered with a component for every context, so a local reaction's body runs as a nested mutation; if a measured workload reopens it, only the bodies change shape (OQ1, Probe 3)", + "address": "spec:obligations.obligation-module#question.contextReactionIsolation", "file": "design/specs/obligations/obligation-module.sdp.md" }, { @@ -2556,8 +2511,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "Extension E-47: the doc lists what to count but not how; the option taken here is a measurement record per run captured from the disposable backend's function execution log, documents and bytes from the `usageStats` of the command's top-level completion record, and the calls per context from a pure test of the use case's executor, because the log holds no record of a component call inside a mutation, with any count the backend does not expose recorded as a gap; the owner has not ruled (E-47, First experiment)", + "address": "spec:application.first-experiment#question.commandMeasurementRecord", "file": "design/specs/application/first-experiment.sdp.md" }, { @@ -2600,8 +2554,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "Extension E-47, the documents a command reads: the design expected one `PlaceOrder` of N lines to read about N + 6 documents, and the pinned backend counted 3N + 5; the measurement run decides where the other 2N reads come from (E-47, F13)", + "address": "spec:application.first-experiment#question.commandDocumentReads", "file": "design/specs/application/first-experiment.sdp.md" } ], @@ -2639,8 +2592,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.first-experiment", - "question": "Extensions E-8, E-13, E-15 and E-37, as the experiment's setup takes them: stock exists only through `ReceiveStock`, a run seeds its grants and makes the order summary writable with admin access before its first command, the production composition names no service issuer, its `auth.config.ts` reads its issuer from environment variables, and it is the Convex app whose project directory is `example/`; these are options taken here and the owner has not ruled (E-8, E-13, E-15, E-37, E-46)", + "address": "spec:application.first-experiment#question.compositionInitialGrants", "file": "design/specs/application/first-experiment.sdp.md" } ], @@ -2682,14 +2634,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.generation-registry", - "question": "Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` table below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5)", + "address": "spec:application.generation-registry#question.generationRollbackPolicy", "file": "design/specs/application/generation-registry.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:application.rebuild", - "question": "Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9)", + "address": "spec:application.rebuild#question.rebuildGenerationPauseContract", "file": "design/specs/application/rebuild.sdp.md" }, { @@ -2733,8 +2683,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.generation-registry", - "question": "Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57)", + "address": "spec:application.generation-registry#question.generationTenantReach", "file": "design/specs/application/generation-registry.sdp.md" } ], @@ -2771,8 +2720,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.generation-registry", - "question": "Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the restore's proof that the generation is still stranded, and `resumeChain` bumping it is the proof that it is not (E-42, F12)", + "address": "spec:application.generation-registry#question.restoreGenerationFence", "file": "design/specs/application/generation-registry.sdp.md" } ], @@ -2810,8 +2758,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.generation-registry", - "question": "Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight on the read model once per batch; the progress row is the one checkpoint of every batch whatever drives it (E-40, F1)", + "address": "spec:application.generation-registry#question.rebuildProgressRow", "file": "design/specs/application/generation-registry.sdp.md" } ], @@ -2849,8 +2796,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.parent-use-cases", - "question": "Extension E-41: the doc says a too-large operation is rejected or becomes a separate import command with honest partial progress; it does not say what the import command records.", + "address": "spec:application.parent-use-cases#question.importCommandProgress", "file": "design/specs/application/parent-use-cases.sdp.md" }, { @@ -2891,8 +2837,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.parent-use-cases", - "question": "Extension E-44: the doc says keeping a refused request as a fact is a business policy chosen per command, and the executor signature is pinned by `spec:command.command-declaration`; what neither says is how a use case declares what a context's business failure means to it.", + "address": "spec:application.parent-use-cases#question.contextBusinessFailurePolicy", "file": "design/specs/application/parent-use-cases.sdp.md" }, { @@ -2935,8 +2880,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.parent-use-cases", - "question": "Extension E-39: the doc fixes no order for a use case's context calls; the option taken here is one fixed order the executor states, the creating context first, with no failure handling of a later call, because the calls before it roll back with the mutation; the owner has not ruled (E-39, D1, D10)", + "address": "spec:application.parent-use-cases#question.useCaseContextOrder", "file": "design/specs/application/parent-use-cases.sdp.md" } ], @@ -2971,8 +2915,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.projection-contract", - "question": "Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input.", + "address": "spec:application.projection-contract#question.projectionRowContract", "file": "design/specs/application/projection-contract.sdp.md" }, { @@ -3020,8 +2963,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.read-models", - "question": "Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw `InvalidCursor` at a switch; a parent list therefore pages with `paginator` of `convex-helpers`, as a context list does, and a pinned page is bounded on every run by the row cap and by the byte cap as `spec:context.queries` states it, the helper stopping at the row that reaches it and admitting that row whole, and answers `SplitRequired` beyond them (Probe 5, F13, D8, D9)", + "address": "spec:application.read-models#question.parentListGenerationSwitch", "file": "design/specs/application/read-models.sdp.md" } ], @@ -3060,8 +3002,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.read-models", - "question": "Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's pair moved into the active generation by `pageInGeneration`, and returns through `paginationResultValidator` with its rows mapped by `readModelView`, and a client pages every list by an explicit cursor pair with no hook; these are options taken here and the owner has not ruled (E-24, S4, Probe 5, D8)", + "address": "spec:application.read-models#question.readModelListBounds", "file": "design/specs/application/read-models.sdp.md" } ], @@ -3101,20 +3042,17 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.read-models", - "question": "Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1)", + "address": "spec:application.read-models#question.contextQueryCost", "file": "design/specs/application/read-models.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:context.context-component", - "question": "Probe 3: the cost of one component call in latency and function-call quota decides where hot reads land; the latency is an order of magnitude read on a local backend, the quota needs a hosted deployment to read, and isolation itself stays (Probe 3, F4, D2, D8)", + "address": "spec:context.context-component#question.contextQueryLatencyQuota", "file": "design/specs/context/context-component.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d02-context-owns-state-and-journal", - "question": "Probe 3: the latency of one component call is measured and keeps every context a component; its function-call quota is a hosted usage reading, and isolation itself stays (Probe 3, D2, OQ1)", + "address": "spec:decisions.d02-context-owns-state-and-journal#question.contextCallLatencyQuota", "file": "design/specs/decisions/d02-context-owns-state-and-journal.sdp.md" }, { @@ -3158,8 +3096,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.read-models", - "question": "Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 read-model rows written per command, both measured by the first experiment (E-45, D8)", + "address": "spec:application.read-models#question.parentQueryReadBounds", "file": "design/specs/application/read-models.sdp.md" }, { @@ -3199,8 +3136,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.rebuild", - "question": "Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component.", + "address": "spec:application.rebuild#question.rebuildBatchBounds", "file": "design/specs/application/rebuild.sdp.md" }, { @@ -3250,8 +3186,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.restore", - "question": "Probe 7 observes local CLI replacement restoring the parent, Orders and Inventory documents with IDs and creation times; fresh replacement leaves scheduler tables empty and replacement in place keeps existing schedules; the complete Layer 2 restore drill, hosted dashboard restore, Workpool and Workflow remain open (Probe 7, F12, D19)", + "address": "spec:application.restore#question.restoreBackupCoverage", "file": "design/specs/application/restore.sdp.md" } ], @@ -3287,8 +3222,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.restore", - "question": "Extension E-42: the doc says restore runs with matching code and configuration, that domain, journal and read-model invariants hold, and that restore is tested; it does not list the checks or the record, and it does not say what a restore does to a rebuild that was in flight at the backup.", + "address": "spec:application.restore#question.restoreInvariantChecks", "file": "design/specs/application/restore.sdp.md" }, { @@ -3333,8 +3267,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.restore", - "question": "Extension E-42, the stream check's batch size: `limitCheckBatch` states the read of a batch that folds one stream, and each further stream the same batch folds reads its own stored baseline event of at most `budgetBytes + 4,096 + 61` bytes; the batch size that keeps a batch of several folded streams under the 16 MiB read ceiling is not pinned (E-42, F13)", + "address": "spec:application.restore#question.restoreStreamBatchBounds", "file": "design/specs/application/restore.sdp.md" } ], @@ -3369,8 +3302,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.write-pause", - "question": "Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1)", + "address": "spec:application.write-pause#question.writePauseSourceScopes", "file": "design/specs/application/write-pause.sdp.md" } ], @@ -3413,14 +3345,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.actor-and-scope", - "question": "Extension E-6: the doc names the actor kinds, the envelope's actor field and the worker's two modes; the field names, the namespace union, the grant fields and the `authorize` signature are the design's, and the grant's `permission` string vocabulary is per product; the worker's two modes are one `Authority` shape, `{ actor, scope, mode }` with the literals `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated, where the delegation travels on the actor's own `onBehalfOf` and `delegationRef`; and the doc says a derived command carries a server namespace without naming it, so this design assigns `worker` to every command a reaction issues, which is the namespace Sc L1-7 refuses to a client and the one D6 lists among the receipted callers, and reserves `system` for the platform's own maintenance chains and operator operations that run a receipted command, such as a restore or a migration driver, so a `system` receipt is never a reaction's; the owner confirms both (E-6, E-54, D6, D11, D13, Sc L1-7)", + "address": "spec:command.actor-and-scope#question.actorCallerNamespaceContract", "file": "design/specs/command/actor-and-scope.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:command.tenancy-and-authority", - "question": "Extension E-6: the doc names the actor kinds and the worker's two modes but not the types; the actor, scope, namespace, grant and `Authority` shapes are the design's and are pinned once in `spec:command.actor-and-scope`, which also rules that a derived command's namespace is `worker` (E-6, D11)", + "address": "spec:command.tenancy-and-authority#question.actorCallerNamespaceShapes", "file": "design/specs/command/tenancy-and-authority.sdp.md" }, { @@ -3465,8 +3395,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.actor-and-scope", - "question": "Extension E-6: the doc says a query authorizes before it discloses and does not say how; here a parent query calls `authorizeQuery`, which establishes and authorizes its actor through the same two helpers a command's entry uses and is generic over the parent's data model; the owner has not ruled (E-6, D11, Law 5)", + "address": "spec:command.actor-and-scope#question.parentQueryAuthorization", "file": "design/specs/command/actor-and-scope.sdp.md" } ], @@ -3501,8 +3430,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-declaration", - "question": "Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per command instead of one, and the cheaper alternative the design refuted is one public export per command plus one generic internal dispatcher mutation keyed by command type, as D7's conditional dispatcher already does; it lost because trusted server callers would then reach every command through one untyped `internalMutation`, so a renamed handler or a broken argument contract would pass `tsc` at the caller and fail only at runtime, which is the check Sc L2-4 exists to keep before traffic, and because the receipt fingerprint's contract version would be looked up by string rather than typed; the owner may still prefer the dispatcher form once code generation makes the per-command internal entry free (E-7, D12, D7, Sc L2-4, Decision method rule 5)", + "address": "spec:command.command-declaration#question.commandEntrySignatures", "file": "design/specs/command/command-declaration.sdp.md" }, { @@ -3543,8 +3471,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-declaration", - "question": "Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` and `writes`, each serving a cited rule of another Spec, and asks whether the owner accepts them as part of the one declaration; `bounds` is the one input bound in the corpus, `maxItems` and `maxBytes`, checked by the pipeline's step 1 and by no executor body, so `spec:application.parent-use-cases` reads it rather than declaring a bound of its own; `writes` is required on every declaration, because an absent list would be an unchecked one, and `readModels` is optional, absent meaning none, which the owner has not ruled; `writes` names the context and stream type pairs the executor may write, from which the pipeline's step 7 derives the source scopes the write pause closes for a consistent cut and which step 9 proves against the `streams` entries the executor returns, because a use case that writes a source stream without maintaining the paused view would otherwise pass the gate; the declaration still imports nothing from the obligation family, so a command's static reactions are not a field here but the `createObligation` calls of its executor, as `spec:obligations.fan-out-and-chains` rules under E-54 (E-38, E-8, E-54, D6, D9, D10, D19, Thesis)", + "address": "spec:command.command-declaration#question.commandDeclarationFields", "file": "design/specs/command/command-declaration.sdp.md" }, { @@ -3590,8 +3517,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member carries the declaration's result and whose replayed member carries `result` null because a receipt stores no result, so the entry's returns validator admits a replay as a value; affected IDs are application IDs, never private document IDs (E-30, D2, D6, D8)", + "address": "spec:command.command-pipeline#question.commandOutcomeWireShape", "file": "design/specs/command/command-pipeline.sdp.md" }, { @@ -3632,8 +3558,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event without saying how that cause reaches the pipeline; here the pipeline mints the operation ID once per top-level mutation with `crypto.randomUUID()` before the first context call, a duplicate returns the operation ID stored on the receipt, and the internal entry takes an optional `causedBy` argument that step 7 copies onto the `OperationRef` when present, so a reaction that issues a derived command passes `causedBy` of kind `event` naming its publication event and the envelope's `event` variant has exactly one producer, while an entry called without it mints `causedBy` of kind `command` from the declaration's name; the obligation and attempt behind a derived command are found through its receipt, whose request key is the obligation's effect key, and never through the envelope (E-31, E-54, D2, D13, Vocab: operation)", + "address": "spec:command.command-pipeline#question.operationIdentityCause", "file": "design/specs/command/command-pipeline.sdp.md" }, { @@ -3675,8 +3600,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7)", + "address": "spec:command.command-pipeline#question.commandAdmissionPolicy", "file": "design/specs/command/command-pipeline.sdp.md" }, { @@ -3717,8 +3641,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a `transactionLimits` option, the design passes none on a context call, and whether a call should reserve room with it for the work after it stays open (Probe 4, F13, S3)", + "address": "spec:command.command-pipeline#question.contextCallBudgetReservation", "file": "design/specs/command/command-pipeline.sdp.md" } ], @@ -3756,8 +3679,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from its events, and a history read model from the events of every matching entry in one call per command, checks `writes` first, then that each bound read model has a generation to write, then the count of the rows it writes against `limitReadModelWritesPerCommand`, each failure a plain error, and the library helpers that step 9 calls are generic over the application's data model; the owner has not ruled on any of it (E-9, E-7, E-8, E-45, D8, D9)", + "address": "spec:command.command-pipeline#question.commandReadModelWrites", "file": "design/specs/command/command-pipeline.sdp.md" } ], @@ -3795,8 +3717,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.command-pipeline", - "question": "Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists them, as rejection `invalidInput`, and treats a declaration name above `limitIdLength` as a defect, a plain error, because these fields become fields of the receipt row or of every event's envelope; the doc says events stay small and names no number; the owner has not ruled (E-34, D6, D12, D19)", + "address": "spec:command.command-pipeline#question.commandTextBounds", "file": "design/specs/command/command-pipeline.sdp.md" } ], @@ -3831,8 +3752,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.idempotency-and-receipts", - "question": "Extension E-34: the doc says expiry is explicit and names no number; here the default retry window is 7 days per command, expiry is checked lazily at lookup so the core path needs no job, and a bounded per-tenant sweep deletes expired receipts in batches of at most 1,000; the tenant ID and the request key are bounded to 256 bytes of UTF-8, a declaration name above that bound is a defect and a plain error, and a receipt is bounded to 1,000 affected refs; the owner has not ruled (E-34, D6, D19, F13)", + "address": "spec:command.idempotency-and-receipts#question.receiptRetentionBounds", "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { @@ -3873,8 +3793,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.idempotency-and-receipts", - "question": "Extension E-36: the doc says the fingerprint covers business input and its contract version; here it is the SHA-256 digest, computed with the Convex runtime's `crypto.subtle.digest`, over the canonical JSON of the business input with object keys sorted, followed by the contract version; the outside facts the executor captures travel beside the input and are excluded, so a retry that captures a fresher fact is not a conflict, which the decider contract cites; a change to the canonical form is a contract version bump (E-36, D6, D3)", + "address": "spec:command.idempotency-and-receipts#question.businessInputFingerprint", "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { @@ -3914,8 +3833,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.idempotency-and-receipts", - "question": "Extension E-39: the doc says a client-generated entity ID plus a uniqueness check gives one entity on a UI double submit and does not say what the second submit is told; here the second submit is answered with the rejection `entityExists` naming the existing entity, not with an idempotent success, because no receipt exists on the UI path to replay an outcome from and the client already holds the entity ID it needs to read the result; the owner may prefer an idempotent success, which would need a receipt on every create (E-39, D6, Sc L1-4)", + "address": "spec:command.idempotency-and-receipts#question.duplicateSubjectCreation", "file": "design/specs/command/idempotency-and-receipts.sdp.md" }, { @@ -3955,8 +3873,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.outcome-boundary", - "question": "Extension E-5: the doc fixes the four outcomes and that a rejection is a structured `ConvexError`, but not the data shape or the code list; the shape and the platform codes below are the design's, and the domain codes are closed per declaration (E-5, D4, D7)", + "address": "spec:command.outcome-boundary#question.rejectionShapeCodes", "file": "design/specs/command/outcome-boundary.sdp.md" }, { @@ -3996,8 +3913,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.outcome-boundary", - "question": "Extension E-35: the write pause of D9 refuses writers in its scope while a cross-stream history view rebuilds; the doc does not say how a refused writer is answered; this contract reserves the transient code `writePaused` for Package D so the refusal is retryable and stores nothing, which Package D confirms or replaces (E-35, D9, D4)", + "address": "spec:command.outcome-boundary#question.writePauseTransientRefusal", "file": "design/specs/command/outcome-boundary.sdp.md" }, { @@ -4037,8 +3953,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.receipt-table", - "question": "Extension E-4: the doc fixes what a receipt holds and that expiry is explicit; the concrete fields, the three indexes, the tombstone shape and the defaults are the design's, and the expiry number is a product decision the declaration overrides (E-4, D6)", + "address": "spec:command.receipt-table#question.receiptFieldsIndexes", "file": "design/specs/command/receipt-table.sdp.md" }, { @@ -4077,8 +3992,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:command.tenancy-and-authority", - "question": "Extension E-37: the doc says the parent authenticates and that grants are authoritative data, but not how an identity becomes an actor or how revocation takes effect; here the public entry and a parent query's `authorizeQuery` map `ctx.auth.getUserIdentity()` to a human actor, or a service actor when the issuer is a configured service issuer, grants live in a parent table by default and are revoked by deleting the row, with no cache, so a revoked grant fails the next command (E-37, D11)", + "address": "spec:command.tenancy-and-authority#question.actorGrantRevocation", "file": "design/specs/command/tenancy-and-authority.sdp.md" }, { @@ -4122,8 +4036,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:constraints.events-stay-small", - "question": "Extension E-12: the payload byte bound is the design's number, 16 KiB, chosen with the envelope bound of 4 KiB so that a fold of 500 events of at most 20 KiB each stays under 9.8 MiB, under the 16 MiB read ceiling with headroom; the owner may set another, and the journal's 500-event fold bound moves with it; the reserved `baseline` event of E-25 is exempt from the 16 KiB bound and bounded by its stream type's `budgetBytes` instead, at most 512 KiB, because its payload is the migrated state of its stream, which the fold reads once as its start and never folds, and the owner confirms the exemption with E-25 (E-12, E-2, E-25, D19, F13)", + "address": "spec:constraints.events-stay-small#question.eventPayloadBound", "file": "design/specs/constraints/events-stay-small.sdp.md" }, { @@ -4172,8 +4085,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.context-component", - "question": "Extension E-22: the doc says the parent calls the context's sanctioned operations and does not say how they are registered; this Spec registers one Convex mutation per sanctioned operation built by `defineOperation` with args `{ tenantId, actor, operation, input, facts }`, fixes the context ID as a code constant equal to the mount name, sets the per-call bounds in documents and in bytes derived from each stream type's budget, names the query and maintenance surface, and adds `convex-helpers` as the component's one dependency because the built-in `.paginate()` does not work in a component; the alternative of one generic `execute` mutation per context with an untyped command was not taken because D12 wants static exports with one canonical schema; the owner confirms (D10, D12, S4, E-22)", + "address": "spec:context.context-component#question.contextOperationRegistration", "file": "design/specs/context/context-component.sdp.md" }, { @@ -4218,8 +4130,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.event-envelope", - "question": "Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the event ID as a version 4 UUID from the runtime's `crypto`; the owner confirms (D2, E-26)", + "address": "spec:context.event-envelope#question.eventEnvelopeFields", "file": "design/specs/context/event-envelope.sdp.md" }, { @@ -4258,8 +4169,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.event-envelope", - "question": "Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set at 256 bytes of UTF-8, 512 for an actor's ID, so the largest stored event, `limitEventBytes`, is derived and enforced and never assumed; the owner may set other numbers, and the fold bound of `spec:context.journal` moves with them (E-12, D19, F13)", + "address": "spec:context.event-envelope#question.envelopeTextBounds", "file": "design/specs/context/event-envelope.sdp.md" } ], @@ -4294,8 +4204,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.journal", - "question": "Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what a live command does on a stream the migration has not reached; this Spec fixes the representation, an event of the reserved type `baseline` whose payload holds the state and its schema version and is bounded by the stream's `budgetBytes` instead of the payload bound, a `baselineVersion` on the stream row, a `BaselineMigration` registered on the stream type whose `migrate` function computes the migrated state from the saved state, or, for a step that declares `readsHistory`, from the saved state and the events since the last baseline in the sweep only, the rule that `stateSchemaVersion` counts meaning only and lives on the registration, one helper `migrateToSchemaVersion` that writes the baseline chain, called by the adapter on load for a chain that reads no history and by the `writeBaseline` maintenance mutation for every chain, the code-older-than-data error, the `writeBaseline` mutation built by `defineMaintenance` and declared with the component's public `mutation` builder, the parent-side scheduled chain that drives it by cursor, the batch bound derived from `budgetBytes`, the upcasting rule for old event schema versions, the fold bound of 500 events with the refusals `rebuildStream` returns above it and for a stream awaiting its baseline, the retirement rule for a migration, and the payload byte check in `append`; the option of refusing commands on unmigrated streams with a transient code until the sweep arrives was not taken for a state-only migration, because it turns a deploy into a partial write pause the doc reserves for history-dependent views, and is taken for a history-reading migration, the exception, where it holds only the streams the sweep has not reached and keeps D3 whole on the command path, which the owner confirmed; a consequence the owner should weigh is that every baseline bumps its stream's version, so a reviewed version held across the sweep is answered `staleVersion` and re-reviewed rather than silently accepted, because Sc L1-10 forbids reinterpreting a reviewed version against fresh state and the baseline is a real event of the stream, while a live stream migrated on load never trips it because its expected-version check runs before the chain; and the driver reads the write pause's gate before every batch and reschedules itself when refused, so a sweep never changes a source under a paused rebuild's cut; the owner confirms (D5, D9, S4, Sc L1-10, E-2, E-8, E-12, E-25)", + "address": "spec:context.journal#question.baselineMigrationContract", "file": "design/specs/context/journal.sdp.md" }, { @@ -4342,8 +4251,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.persistence-adapter", - "question": "Extension E-23: the doc gives the sequence and the one-authority rule; this Spec fixes the request and result types, the operation runner with `plan` and `combine`, the aggregation of per-stream outcomes, the per-stream `dto` and `created` flag that the operation returns beside the kernel's outcome so the parent's projections and the backfill take one DTO shape, the semantics of a caller-named expected version including expected version 0 as the create's uniqueness check, the byte-derived bounds on streams and writes per call and the bound on the value a call returns, the on-load baseline migration of step 3a whose rules `spec:context.journal` carries under E-25, and the internal guards that turn a defect into a technical failure; this is a provisional reading the owner has not ruled (D3, D6, E-23, E-25)", + "address": "spec:context.persistence-adapter#question.contextOperationOutcome", "file": "design/specs/context/persistence-adapter.sdp.md" }, { @@ -4384,20 +4292,17 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.queries", - "question": "Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` with its `splitCursor`, and that the `usePaginatedQuery` hook of `convex-helpers/react` then shows 40 of 45 rows; this design uses no hook across the boundary, and the examples are rerun when either pin moves (Probe 5, F15, S4, D8, E-24)", + "address": "spec:context.queries#question.contextPaginationSplit", "file": "design/specs/context/queries.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:decisions.d08-read-models-in-command", - "question": "Probe 5 ran on 2026-10-01: a parent query over component queries stays reactive, and pagination crosses the boundary with pages pinned by their end cursors; the client hook lost rows after a capped page split, which slice S2 settles before it builds a list (Probe 5, F15, D8)", + "address": "spec:decisions.d08-read-models-in-command#question.parentQueryPaginationSplit", "file": "design/specs/decisions/d08-read-models-in-command.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Probe 5 ran on 2026-10-01: a parent query over a component query stays reactive, pages pinned by their end cursors stay contiguous, and a capped page crosses the boundary as `SplitRequired`; the `convex-helpers/react` hook then lost rows, and slice S2 decides how a context list is capped before it builds one (Probe 5, F15, S4, D8)", + "address": "spec:facts.probe-plan#question.contextListSplit", "file": "design/specs/facts/probe-plan.sdp.md" } ], @@ -4434,8 +4339,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.queries", - "question": "Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on every DTO, pagination through `paginator`, the item cap with a row cap of twice the item cap and a byte cap passed on every run, the relay of `pageStatus` and `splitCursor` unchanged, paging by an explicit cursor pair with no client hook, the parent query's one `authorizeQuery` call and its refusal as a rejection, the `maxEvents` argument of the `rebuild` query and its `budgetExhausted` refusal for a batching caller, and the fold refusal of the `rebuild` query; this is a provisional reading the owner has not ruled (D8, S4, E-24, E-42)", + "address": "spec:context.queries#question.contextQueryContract", "file": "design/specs/context/queries.sdp.md" }, { @@ -4481,8 +4385,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.queries", - "question": "A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed the word (D7, E-24)", + "address": "spec:context.queries#question.queryRefusalEntry", "file": "design/specs/context/queries.sdp.md" } ], @@ -4516,8 +4419,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:context.tables", - "question": "Extension E-3: the doc names three indexes and the fields of the envelope; this Spec fixes the concrete tables, the operation index, the `streamParts` table for the derived mapping, the deleted-subject marker as `deletedAt` on the stream row and the size budgets; the owner confirms (D2, E-3)", + "address": "spec:context.tables#question.contextJournalTables", "file": "design/specs/context/tables.sdp.md" }, { @@ -4561,20 +4463,17 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:decisions.d03-events-only-source-of-next-state", - "question": "Gap, initial state: the v0.1 interface has none; add `initial()` or let `evolve` accept an empty state so a rebuild from the creation event has a defined start; ruled provisionally as E-1 in the kernel's initial-state decision (D3, E-1)", + "address": "spec:decisions.d03-events-only-source-of-next-state#question.initialStateChoice", "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:kernel.domain-kernel", - "question": "Extension E-1: the doc leaves open whether the interface gains `initial()` or `evolve` accepts an empty state; the initial-state decision rules for `initial()` provisionally (D3, E-1)", + "address": "spec:kernel.domain-kernel#question.initialStateChoice", "file": "design/specs/kernel/domain-kernel.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:kernel.initial-state", - "question": "Extension E-1: the doc offers `initial()` or an `evolve` that accepts an empty state and rules on neither; this Spec takes `initial()` provisionally and the owner confirms or reverses it (D3, E-1)", + "address": "spec:kernel.initial-state#question.initialStateChoice", "file": "design/specs/kernel/initial-state.sdp.md" }, { @@ -4614,14 +4513,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:decisions.d03-events-only-source-of-next-state", - "question": "Gap, state across several documents, its size budget: one document per stream stays the default while it fits the size budget, and where it cannot, the document writes are derived from the folded state in one place per context, as the kernel's state-document mapping decision states; the size budget there is a provisional number of E-2 (D3, E-2, OQ3)", + "address": "spec:decisions.d03-events-only-source-of-next-state#question.streamStateSizeBudget", "file": "design/specs/decisions/d03-events-only-source-of-next-state.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:kernel.state-document-mapping", - "question": "Extension E-2: the doc prefers one document per stream within a size budget and names no budget; this Spec sets `budgetBytes` as one number per stream type meaning the whole stream, the single document or the head and every part together, at most 256 KiB for the single mapping and at most 512 KiB over at most 32 parts for the derived mapping, provisionally, lets a stream type declare a smaller `budgetBytes` on its mapping, caps the derived budget at half the document ceiling because a baseline event holds the whole migrated state in one document, and derives every bound on streams per call, list page, backfill batch and baseline batch from that budget so that the 16 MiB read ceiling binds in bytes and not only in documents; the owner confirms the numbers (D3, D5, OQ3, F13, E-2, E-25)", + "address": "spec:kernel.state-document-mapping#question.streamStateBudget", "file": "design/specs/kernel/state-document-mapping.sdp.md" }, { @@ -4666,14 +4563,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:decisions.d13-deferred-work-is-an-obligation", - "question": "Probe 7 observes the local scheduled reaction, states, scan boundary and both CLI replacement modes; the owner confirmed D13 on these observations; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain unprobed (Probe 7, D13, F12, F16)", + "address": "spec:decisions.d13-deferred-work-is-an-obligation#question.obligationSchedulerCoverage", "file": "design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.do-nothing-check", - "question": "Probe 7 observes a plain scheduled local reaction and all five states on the pinned native backend; a failed-function scan counts zero documents and bytes but exhausts the 4096-read allowance at 4092 total rows; fresh CLI replacement leaves no scheduler intent, while replacement in place preserves later intent outside restored data; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open, and the owner confirmed D13 on these observations (Probe 7, F12, F16, F13)", + "address": "spec:obligations.do-nothing-check#question.schedulerObligationEvidence", "file": "design/specs/obligations/do-nothing-check.sdp.md" } ], @@ -4712,14 +4607,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:decisions.d19-operations-travel-with-capability", - "question": "Probe 7 pending: what a restore leaves of Workpool and Workflow state decides how much of the restore procedure the obligation module must rebuild (Probe 7, F12, D19)", + "address": "spec:decisions.d19-operations-travel-with-capability#question.restoreObligationCoverage", "file": "design/specs/decisions/d19-operations-travel-with-capability.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.retention-and-restore", - "question": "Probe 7 pending: what a restore leaves of Workpool and Workflow state decides whether the rebuild covers only the module's own dispatches or also passed-ownership work (Probe 7, F12, D19)", + "address": "spec:obligations.retention-and-restore#question.restoreDeferredWorkCoverage", "file": "design/specs/obligations/retention-and-restore.sdp.md" } ], @@ -4755,8 +4648,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:effects.claim-call-settle", - "question": "Extension E-11: the doc gives the three steps and the three policies but no signatures; this Spec pins them and adds a fourth policy value `none`, which is the declared absence of a safe policy the doc describes (D14, E-11)", + "address": "spec:effects.claim-call-settle#question.effectAttemptPolicies", "file": "design/specs/effects/claim-call-settle.sdp.md" }, { @@ -4796,14 +4688,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:effects.claim-call-settle", - "question": "Extension E-58: the doc gives no lease duration, key derivation, late evidence bound, reconcile shape or handling of a settle call that throws; this design sets the lease to the handler runtime's action timeout plus 5 minutes, derives the key from tenant and effect key, keeps ten late reports, defines a reconcile as a provider query that returns the same report union, and lets the action repeat a thrown settle call three times, with a duplicate rule in the settle, before leaving the attempt to lease expiry (D14, D15, F13, E-58)", + "address": "spec:effects.claim-call-settle#question.effectAttemptLeaseEvidence", "file": "design/specs/effects/claim-call-settle.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:effects.external-effects", - "question": "Extension E-58: the doc does not give the lease duration, the provider key derivation, the late evidence bound, the shape of a reconcile, or what the action does when its settle call throws; `spec:effects.claim-call-settle` pins them (D14, E-58)", + "address": "spec:effects.external-effects#question.effectAttemptRecoveryContract", "file": "design/specs/effects/external-effects.sdp.md" }, { @@ -4846,14 +4736,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:effects.external-effects", - "question": "Extension E-51: a declined provider report settles the obligation as cancelled with `businessRejection` evidence, by the same reading as the local wrapper (D14, D4, E-51)", + "address": "spec:effects.external-effects#question.providerBusinessRejection", "file": "design/specs/effects/external-effects.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.lifecycle-transitions", - "question": "Extension E-51: the doc says a known business rejection settles the business result but not which state it settles to; this design reads a body's business failure, which commits like a success, as succeeded with evidence naming its event, and a thrown rejection, which commits nothing, as cancelled with the settled result as `businessRejection` evidence, because cancelled means the effect will not happen and no call is in flight; the owner may prefer a seventh state (D13, D4, E-51)", + "address": "spec:obligations.lifecycle-transitions#question.obligationBusinessRejection", "file": "design/specs/obligations/lifecycle-transitions.sdp.md" }, { @@ -4896,14 +4784,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:effects.external-effects", - "question": "Decision method rule 4: the doc writes Layer 3 from what the first experiment shows, and this Spec and `spec:effects.claim-call-settle` are written before it runs; the lease durations, the settle repeats and the late-evidence bound of E-58 and the backoff shared under E-51 are provisional defaults until the experiment's measurements and Probe 7 confirm or replace them, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D14, D15, E-51, E-58)", + "address": "spec:effects.external-effects#question.effectAttemptDefaultBounds", "file": "design/specs/effects/external-effects.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.obligation-module", - "question": "Decision method rule 4: the doc says Layers 0 to 2 get full detail, the first experiment runs, and Layer 3 is written from what it showed; this module and its children are written now, at the depth D13 to D15 give, with numeric defaults the doc does not give, the backoff and attempt budget of E-51, the sweeper's cadence and bounds of E-52, the fan-out bounds of E-54, the retention horizons of E-55, the lease and settle repeats of E-58 and the index set of E-57; every such number is a provisional default until the experiment's measurements and Probe 7 confirm or replace it, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D13, Probe 7, E-51, E-52, E-54, E-55, E-57, E-58)", + "address": "spec:obligations.obligation-module#question.obligationDefaultBounds", "file": "design/specs/obligations/obligation-module.sdp.md" }, { @@ -4952,20 +4838,17 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:facts.f16-scheduled-functions-table-shows-failed-runs", - "question": "Seven-day retention and expiry, hosted dashboard restore, Workpool and Workflow are not run; the short native retention observation does not establish the documented window.", + "address": "spec:facts.f16-scheduled-functions-table-shows-failed-runs#question.scheduledFunctionRetentionCoverage", "file": "design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:facts.probe-plan", - "question": "Probe 7 observes all five scheduler states, local CLI replacement into a fresh backend and in place, stored scheduler IDs, kept reactions, scheduled-argument limits and failed-function scan cost; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open before the decisions resting on those observations.", + "address": "spec:facts.probe-plan#question.schedulerRestoreCoverage", "file": "design/specs/facts/probe-plan.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.obligation-module", - "question": "Probe 7 observes local scheduler states, short retention, both CLI replacement modes, scheduler-ID validation and the failed-function scan boundary; a stored `v.id(\"_scheduled_functions\")` can validate after fresh replacement while resolving to no row, so it is a typed reference and not proof of a live dispatch; seven-day expiry, hosted restore, Workpool and Workflow remain open, and the owner confirmed the do-nothing check's rejection on these observations (Probe 7, D13, F12, F16)", + "address": "spec:obligations.obligation-module#question.obligationDispatchEvidence", "file": "design/specs/obligations/obligation-module.sdp.md" } ], @@ -5007,14 +4890,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:kernel.decider-contract", - "question": "Extension E-20: the concrete generic parameters, the fields of `DecisionContext`, the `DomainEvent` shape, the at-least-one-event rule and the helper shapes are this design's; the owner confirms them before code names them (D3, E-20)", + "address": "spec:kernel.decider-contract#question.deciderEventContract", "file": "design/specs/kernel/decider-contract.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:kernel.domain-kernel", - "question": "Extension E-20: the doc gives `decide(state, command, context)`, `fold(evolve, state, newEvents)` and the purity rule, and nothing about the concrete generic parameters, the fields of the decision context, the shape of a domain event, or the state-machine and invariant helpers; the decider contract fixes them and the owner confirms them before code names them (D3, E-20)", + "address": "spec:kernel.domain-kernel#question.deciderStateContract", "file": "design/specs/kernel/domain-kernel.sdp.md" }, { @@ -5053,8 +4934,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:kernel.outcome-model", - "question": "Extension E-21: the doc names the four outcomes and their commit behavior but not their TypeScript shape; this Spec fixes `Outcome`, `Rejection`, `CommittedOutcome`, `AffectedRef`, the rule that a committed outcome carries at least one event, and the three rejection codes the adapter reserves, `staleVersion`, `operationTooLarge` and `entityExists`, the last being the adapter's answer to a create planned at expected version 0 whose stream already exists, which is the uniqueness check D6 names for a client-generated entity ID; the owner confirms the shapes or renames the reserved codes before code names them (D4, D6, E-21)", + "address": "spec:kernel.outcome-model#question.outcomeRejectionContract", "file": "design/specs/kernel/outcome-model.sdp.md" }, { @@ -5135,8 +5015,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.fan-out-and-chains", - "question": "Extension E-54: the doc bounds neither static fan-out, nor the dynamic fan-out batch, nor the chain depth, and it says where a static subscription's obligations are created without saying where the subscription is declared; this design allows 16 obligations per publishing transaction, 500 derived obligations per fan-out attempt with one child fan-out obligation per further page, and a causation depth of 8, and it reads the static subscription as the `createObligation` calls in the command's executor body, reviewed at build time and counted at creation, rather than a reactions field on the command declaration, because D12 lists no such field and the declaration is Layer 1 machinery that imports nothing from this family; the namespace a derived command carries, `worker`, is E-6's ruling on `spec:command.actor-and-scope`, and the path by which its causation reaches the pipeline, the internal entry's `causedBy` argument, is E-31's on `spec:command.command-pipeline`; the owner confirms the numbers and the reading (D12, D13, F13, Thesis, E-6, E-31, E-54)", + "address": "spec:obligations.fan-out-and-chains#question.obligationFanOutBounds", "file": "design/specs/obligations/fan-out-and-chains.sdp.md" }, { @@ -5181,8 +5060,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.lifecycle-transitions", - "question": "Extension E-10: the doc names the six states but not the allowed transitions or their causes; this Spec lists them and refuses every other transition (D13, E-10)", + "address": "spec:obligations.lifecycle-transitions#question.obligationStateTransitions", "file": "design/specs/obligations/lifecycle-transitions.sdp.md" } ], @@ -5216,8 +5094,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.local-reaction-wrapper", - "question": "Extension E-51: the doc does not give the backoff schedule, the default attempt budget, the default deadline or what a maintenance refusal does to the attempt count; this design uses exponential backoff from 1 second with base 2 capped at 1 hour, 8 attempts by default and no deadline by default, all per handler in the registry, and treats a transient `writePaused` or `capacity` refusal as a delay of the same attempt after `retryAfterMs` or 60 seconds; every number is a provisional default until the first experiment (D13, E-51, Decision method rule 4)", + "address": "spec:obligations.local-reaction-wrapper#question.obligationAttemptBackoff", "file": "design/specs/obligations/local-reaction-wrapper.sdp.md" } ], @@ -5252,8 +5129,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.obligation-module", - "question": "Extension E-50: the doc does not say where the module lives; this design places it in the parent as a library plus the `obligations` and `obligationRepairs` tables with a static handler registry keyed by handler key and version, because the wrapper runs parent-side bodies as nested mutations and the record reuses the parent's actor and scope types; the alternative, a Convex component driven by function handles like Workpool, is not pre-empted (D13, D11, E-50)", + "address": "spec:obligations.obligation-module#question.parentObligationPlacement", "file": "design/specs/obligations/obligation-module.sdp.md" }, { @@ -5294,8 +5170,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.operator-operations", - "question": "Extension E-53: the doc names the five operations and the repair record's fields but not their signatures or their transaction shape; this design makes them authorized parent mutations and queries that write the repair in the same transaction, refuses cancel and reconcile while a lease is live, and lets reconcile either mint a reconcile attempt that the claim mutation of `spec:effects.claim-call-settle` dispatches, or accept supplied provider evidence from needs attention (D13, D14, E-53)", + "address": "spec:obligations.operator-operations#question.operatorObligationRepair", "file": "design/specs/obligations/operator-operations.sdp.md" }, { @@ -5341,8 +5216,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.record-contract", - "question": "Extension E-10: the doc lists the fields and the six states but not the concrete table, the index set, the payload bound or the evidence shapes; this Spec pins them, with the inline payload bounded at 64 KiB and completion evidence as a closed union; the doc names four meanings of needs attention, exhausted, uncertain, authority revoked and unsupported version, and this design adds two reasons the doc describes without naming, `recoveryFailing` for the sweeper's escalation when recovery itself keeps failing and `chainBound` for a reaction refused at the chain's depth bound, which the owner confirms (D13, E-10, E-52, E-54)", + "address": "spec:obligations.record-contract#question.obligationCompletionEvidence", "file": "design/specs/obligations/record-contract.sdp.md" }, { @@ -5384,14 +5258,12 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.record-contract", - "question": "Extension E-57: the sweeper and the retention batch are deployment-wide, so `by_status_next_attempt`, `by_status_lease_expiry` and `by_status_settled_at` lead with `status` rather than `tenantId`; every index a tenant-scoped query reads still leads with `tenantId`, and tenant fairness in the sweeper's scan order stays a policy to add when one tenant can starve another (D13, Law 11, E-57)", + "address": "spec:obligations.record-contract#question.obligationTenantIndexes", "file": "design/specs/obligations/record-contract.sdp.md" }, { "kind": "specQuestion", - "spec": "spec:obligations.sweeper", - "question": "Extension E-57: the sweeper scans deployment-wide by status; tenant fairness in its order is a policy to add when one tenant can starve another (D13, E-57)", + "address": "spec:obligations.sweeper#question.tenantSweepFairness", "file": "design/specs/obligations/sweeper.sdp.md" }, { @@ -5432,8 +5304,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.retention-and-restore", - "question": "Extension E-55: the doc gives no retention horizon, compaction rule or batch bound; this design keeps a completed obligation for the longest repetition policy validity in the module and never less than 30 days, compacts `lastError.message` and `lateEvidence` after 7 days into a count, and deletes at most 500 rows per retention run (D19, F13, E-55)", + "address": "spec:obligations.retention-and-restore#question.obligationRetentionBounds", "file": "design/specs/obligations/retention-and-restore.sdp.md" }, { @@ -5474,8 +5345,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.retention-and-restore", - "question": "Extension E-56: the doc says restore starts with dispatch off but not how the switch works; this design reads a deployment environment variable in the parent's claim mutation only, where a call-mode claim defers its attempt without counting it and a reconcile-mode claim proceeds, sets it before the restore, adds a cursor-driven `rebuildSchedules` operation for a backlog larger than the sweeper's batch, and orders the two switches: `OBLIGATIONS_DISPATCH` goes off before the backup archive is restored and on last, and `rebuildSchedules` refuses to run while `MAINTENANCE_MODE` is `restore`, so it runs only after `spec:application.restore` has accepted the run and reopened writers (D19, F12, E-42, E-56)", + "address": "spec:obligations.retention-and-restore#question.restoreDispatchSwitch", "file": "design/specs/obligations/retention-and-restore.sdp.md" }, { @@ -5522,8 +5392,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.sweeper", - "question": "Extension E-52: the doc says the sweeper is batched and bounded but gives no cadence, batch bound, grace period, rearm bound or time guard; this design runs every 60 seconds, examines at most 100 candidates and 100 expired leases per scan, stops a run after 500 ms of elapsed time by `performance.now()`, waits a grace of 120 seconds past the next attempt time, allows 5 rearms, and isolates each candidate in a nested mutation; the numbers are tested against the pinned Convex version (D13, D19, E-52)", + "address": "spec:obligations.sweeper#question.obligationSweepBounds", "file": "design/specs/obligations/sweeper.sdp.md" }, { @@ -5565,8 +5434,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:obligations.sweeper", - "question": "Probe 3 pending: the candidate bound of 100 is provisional; it assumes a nested `ctx.runMutation` costs a few milliseconds, which F4 records as unknown, so the bound is reset from the probe's measured cost so that a full scan of 200 nested calls fits inside the elapsed guard, and until then the guard rather than the count is what keeps a run under the mutation timeout (Probe 3, F4, F13, E-52)", + "address": "spec:obligations.sweeper#question.sweepContextCallCost", "file": "design/specs/obligations/sweeper.sdp.md" } ], @@ -5601,8 +5469,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:operations.baseline-operations", - "question": "Extension E-43: the doc says audit is written inside the transaction and fails closed, that diagnostics hold no raw prompts, credentials or unbounded payloads, and that personal data sits behind references; it does not give the audit record, the diagnostic record or the reference.", + "address": "spec:operations.baseline-operations#question.commandAuditDiagnostics", "file": "design/specs/operations/baseline-operations.sdp.md" }, { @@ -5646,8 +5513,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:operations.baseline-operations", - "question": "The retention and deletion policy's content is the owner's: which historical claims survive deletion and how long receipts, audit records and diagnostics are kept; the design gives the hooks and states no periods (D19)", + "address": "spec:operations.baseline-operations#question.historicalClaimRetention", "file": "design/specs/operations/baseline-operations.sdp.md" }, { @@ -5685,8 +5551,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:platform.acceptance-contract", - "question": "Extension E-14: the doc's four tiers, domain, simulator, native and end to end, name no compile-time check, while Sc L2-4's pass condition is a build, type or registration check that fails before any traffic; the option taken here is the compiled tier, a compile with no backend of a typed caller that states the change, which asserts that `tsc` refuses it, run with every type check and recorded like any run, and this corpus reads the doc's end to end tier as the native backend tier on the production composition; the alternative, folding it into the native backend tier as a compile step that precedes the native run, was not taken because a native run needs a backend and the check needs none; the owner confirms (E-14, Sc L2-4, Acceptance scenarios)", + "address": "spec:platform.acceptance-contract#question.compiledAcceptanceTier", "file": "design/specs/platform/acceptance-contract.sdp.md" }, { @@ -5730,8 +5595,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:platform.transactional-domain-platform", - "question": "OQ5 asks whether the decisions move into SDP carriers; this corpus is that move, with ledger facts as constraint Specs, decisions as decision Specs that list the do-nothing option first, and scenarios as example Specs under the component that provides the capability, which is the form the doc's behavior rules with examples take here; the owner confirmed the mapping (OQ5)", + "address": "spec:platform.transactional-domain-platform#question.decisionSpecMapping", "file": "design/specs/platform/transactional-domain-platform.sdp.md" }, { @@ -5769,8 +5633,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:platform.vocabulary", - "question": "OQ6, receipt: this design uses receipt for the stored outcome of a command for idempotency, while today's glossary uses receipt for a row that proves an effect happened; the owner answered OQ6 with receipt for the stored outcome of a command and completion evidence for the row that proves an effect happened (OQ6, Vocabulary)", + "address": "spec:platform.vocabulary#question.receiptCompletionEvidence", "file": "design/specs/platform/vocabulary.sdp.md" } ], @@ -5802,8 +5665,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:platform.vocabulary", - "question": "OQ6, generation: this design uses generation for a numbered build of a read model, while today's glossary uses it for the attempt number of watched work; the owner answered OQ6 with generation for a numbered build of a read model and attempt for one try at an obligation (OQ6, Vocabulary)", + "address": "spec:platform.vocabulary#question.generationObligationAttempt", "file": "design/specs/platform/vocabulary.sdp.md" } ], @@ -6336,8 +6198,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:platform.native-harness", - "question": "Extension E-59: the doc's native tier is a test on a real backend, S13 names a local one, and Sc L2-9 is read as the local observation; the doc does not say whether a native test runs on a hosted deployment, where alone Probe 3 can read function-call quota and where F12 and F16 keep parts that only documentation states; the option taken here: the same harness, run record and compositions run natively on one hosted development deployment in a Convex team and project of their own, selected by process variables under a test configuration of its own, one run at a time, from a workflow whose failure fails no other check, with one development deploy key limited to the actions `deployKeyActions` lists; the alternatives were each developer's own deployment, which still needs one more key for the continuous integration, a preview deployment per run, which on the Free and Starter plans expires by default five days after it is created, before F16's seven-day window, and a fresh development deployment per run, which needs a project key, a credential the docs give total control over a project; the team, the project, the plan and the key are the owner's to provide (E-59, Sc L2-9, F4, F12, F16, Probe 3, Probe 7)", + "address": "spec:platform.native-harness#question.hostedNativeTarget", "file": "design/specs/platform/native-harness.sdp.md" } ], @@ -6376,8 +6237,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9)", + "address": "spec:application.history-rebuild#question.historyBatchShape", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6411,8 +6271,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's \"Verify coverage, then switch\" and Sc L2-6's \"writes reopen only after verification\" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6)", + "address": "spec:application.history-rebuild#question.verifyPassUnderPause", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6443,8 +6302,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40)", + "address": "spec:application.history-rebuild#question.historyBatchWriteThroughput", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6476,8 +6334,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.projection-contract", - "question": "Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by `spec:application.history-projection#design.tableOrderAllocationHistory`; whether a row's `sourceVersions` may omit `tenantId`, equal to the row's on every entry, and the write rule compare three identity fields, is a choice the owner may take with the pinned conventions (E-9, Law 11, F13)", + "address": "spec:application.projection-contract#question.historySourceVersionTenant", "file": "design/specs/application/projection-contract.sdp.md" } ], @@ -6509,8 +6366,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-projection", - "question": "The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13)", + "address": "spec:application.history-projection#question.historyProjectionCost", "file": "design/specs/application/history-projection.sdp.md" } ], @@ -6542,8 +6398,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.write-pause", - "question": "Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9)", + "address": "spec:application.write-pause#question.generationGateExemption", "file": "design/specs/application/write-pause.sdp.md" } ], @@ -6633,8 +6488,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-projection", - "question": "Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18)", + "address": "spec:application.history-projection#question.historyFoldPureTest", "file": "design/specs/application/history-projection.sdp.md" } ], @@ -6666,8 +6520,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-projection", - "question": "A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9)", + "address": "spec:application.history-projection#question.historySubjectErasure", "file": "design/specs/application/history-projection.sdp.md" } ], @@ -6699,8 +6552,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.restore", - "question": "Before a restore accepts an active history generation, how does its bounded check compare the projected fields and source versions against an independent fold without changing the read model, including when the saved code declares a different projection version from the active generation?", + "address": "spec:application.restore#question.restoreHistoryFoldVerification", "file": "design/specs/application/restore.sdp.md" } ], @@ -6728,8 +6580,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not?", + "address": "spec:application.history-rebuild#question.historyMigrationBeforePause", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6757,8 +6608,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one successful abort with both sources reopened?", + "address": "spec:application.history-rebuild#question.abortSwitchAtomicity", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6786,8 +6636,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.history-rebuild", - "question": "Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while a command writing only an unrelated source remains allowed?", + "address": "spec:application.history-rebuild#question.historyTenantPauseIsolation", "file": "design/specs/application/history-rebuild.sdp.md" } ], @@ -6815,8 +6664,7 @@ "sources": [ { "kind": "specQuestion", - "spec": "spec:application.write-pause", - "question": "Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort?", + "address": "spec:application.write-pause#question.writePauseOperatingInstructions", "file": "design/specs/application/write-pause.sdp.md" } ], diff --git a/design/specs/advanced/coalesced-recomputation.sdp.md b/design/specs/advanced/coalesced-recomputation.sdp.md index 6868740..28ef0c3 100644 --- a/design/specs/advanced/coalesced-recomputation.sdp.md +++ b/design/specs/advanced/coalesced-recomputation.sdp.md @@ -26,7 +26,7 @@ A command marks a scoped view key dirty in its own transaction, and several chan ### Open questions -- [blocking] The dirty-mark table, the recompute scheduling and the staleness field are deferred to the build on this trigger (D18, Decision method rule 4) +- [blocking #recomputationStalenessRecords] The dirty-mark table, the recompute scheduling and the staleness field are deferred to the build on this trigger (D18, Decision method rule 4) ## Behavior diff --git a/design/specs/advanced/cross-stream-online-rebuild.sdp.md b/design/specs/advanced/cross-stream-online-rebuild.sdp.md index bb09cec..465259c 100644 --- a/design/specs/advanced/cross-stream-online-rebuild.sdp.md +++ b/design/specs/advanced/cross-stream-online-rebuild.sdp.md @@ -26,7 +26,7 @@ The rebuild class is declared first: per entity, bounded current state, or histo ### Open questions -- [blocking] The dependency protocol or the consistent source cut, and the online cutover for this class, are deferred to the build on this trigger (D18, Decision method rule 4) +- [blocking #crossStreamRebuildCut] The dependency protocol or the consistent source cut, and the online cutover for this class, are deferred to the build on this trigger (D18, Decision method rule 4) ## Behavior diff --git a/design/specs/advanced/ordered-consumer.sdp.md b/design/specs/advanced/ordered-consumer.sdp.md index be2a076..01a4a9c 100644 --- a/design/specs/advanced/ordered-consumer.sdp.md +++ b/design/specs/advanced/ordered-consumer.sdp.md @@ -26,7 +26,7 @@ Order is per tenant, consumer, generation and partition, with the smallest parti ### Open questions -- [blocking] The sequence allocation, the consumer position record, the worker's batch bound and the skip authorization are deferred to the build on this trigger (D18, Decision method rule 4) +- [blocking #orderedConsumerPosition] The sequence allocation, the consumer position record, the worker's batch bound and the skip authorization are deferred to the build on this trigger (D18, Decision method rule 4) ## Behavior diff --git a/design/specs/advanced/trigger-table.sdp.md b/design/specs/advanced/trigger-table.sdp.md index e35156e..4917c6c 100644 --- a/design/specs/advanced/trigger-table.sdp.md +++ b/design/specs/advanced/trigger-table.sdp.md @@ -19,7 +19,7 @@ Twelve capabilities each wait for a named trigger. Activating one records the ac ### Open questions -- [blocking] No trigger has fired; each capability's design is deferred until its activation record exists (D18, Decision method rule 4) +- [blocking #capabilityActivationTrigger] No trigger has fired; each capability's design is deferred until its activation record exists (D18, Decision method rule 4) ## Rule diff --git a/design/specs/agents/agent-runs.sdp.md b/design/specs/agents/agent-runs.sdp.md index fdd0c31..424fbf3 100644 --- a/design/specs/agents/agent-runs.sdp.md +++ b/design/specs/agents/agent-runs.sdp.md @@ -33,8 +33,8 @@ Agent reasoning produces a structured proposal. A deterministic policy checks it ### Open questions -- [blocking] The trigger has not fired; the run, proposal and attempt tables, the proposal schema, the policy engine's inputs and the provider adapters are deferred to the build (D17, Decision method rule 4) -- [non-blocking] OQ2 dependency: whether a rejected agent proposal must be recorded as a fact decides whether the generic internal dispatcher of D7 is needed at the agent boundary; the design carries it as a conditional (OQ2, D7) +- [blocking #agentProposalAttempts] The trigger has not fired; the run, proposal and attempt tables, the proposal schema, the policy engine's inputs and the provider adapters are deferred to the build (D17, Decision method rule 4) +- [non-blocking #agentProposalRejectionRecord] OQ2 dependency: whether a rejected agent proposal must be recorded as a fact decides whether the generic internal dispatcher of D7 is needed at the agent boundary; the design carries it as a conditional (OQ2, D7) ## Behavior diff --git a/design/specs/agents/budget-accounting.sdp.md b/design/specs/agents/budget-accounting.sdp.md index 8fa97ce..f1338a8 100644 --- a/design/specs/agents/budget-accounting.sdp.md +++ b/design/specs/agents/budget-accounting.sdp.md @@ -20,7 +20,7 @@ A paid call reserves budget before dispatch and settles once from evidence. Conc ### Open questions -- [blocking] The reservation and usage records, the slot allocator and the reconciliation operation are deferred to the build on the agent trigger (D17, Decision method rule 4) +- [blocking #agentBudgetAccounting] The reservation and usage records, the slot allocator and the reconciliation operation are deferred to the build on the agent trigger (D17, Decision method rule 4) ## Rule diff --git a/design/specs/application/aggregate-projection.sdp.md b/design/specs/application/aggregate-projection.sdp.md index 46cf01d..3ef48ed 100644 --- a/design/specs/application/aggregate-projection.sdp.md +++ b/design/specs/application/aggregate-projection.sdp.md @@ -30,7 +30,7 @@ An aggregate projection is the form of a read model whose row sums a number over ### Open questions -- [blocking] Deferred until a read model needs an aggregate row: OD-075 keeps this form a signature to which no read model of the example domain is bound, `orderTotals` is the shape of an aggregate table and not a read model, and the rebuild has no path for an aggregate; the first read model that needs a count or a sum over its entities is the trigger, and with it this contract takes its rebuild path, its tests and the owner's confirmation of the form under E-9 (OD-075, E-9) +- [blocking #aggregateReadModelRebuild] Deferred until a read model needs an aggregate row: OD-075 keeps this form a signature to which no read model of the example domain is bound, `orderTotals` is the shape of an aggregate table and not a read model, and the rebuild has no path for an aggregate; the first read model that needs a count or a sum over its entities is the trigger, and with it this contract takes its rebuild path, its tests and the owner's confirmation of the form under E-9 (OD-075, E-9) ## Contract diff --git a/design/specs/application/first-experiment.sdp.md b/design/specs/application/first-experiment.sdp.md index ccf16d7..2cdbe2b 100644 --- a/design/specs/application/first-experiment.sdp.md +++ b/design/specs/application/first-experiment.sdp.md @@ -61,12 +61,12 @@ The six cost targets are the constraint Specs this workflow is constrained by. T ### Open questions -- [non-blocking] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on this experiment's local measurement of component call cost, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, Probe 3) -- [non-blocking] Extension E-46: the doc asks for one more lifecycle command and one essential summary without naming them; the option taken here is `CancelOrder`, which releases the allocation, and the order summary read model (E-46, First experiment) -- [non-blocking] Extension E-47: the doc lists what to count but not how; the option taken here is a measurement record per run captured from the disposable backend's function execution log, documents and bytes from the `usageStats` of the command's top-level completion record, and the calls per context from a pure test of the use case's executor, because the log holds no record of a component call inside a mutation, with any count the backend does not expose recorded as a gap; the owner has not ruled (E-47, First experiment) -- [non-blocking] Extension E-47, the documents a command reads: the design expected one `PlaceOrder` of N lines to read about N + 6 documents, and the pinned backend counted 3N + 5; the measurement run decides where the other 2N reads come from (E-47, F13) -- [non-blocking] Extensions E-8, E-13, E-15 and E-37, as the experiment's setup takes them: stock exists only through `ReceiveStock`, a run seeds its grants and makes the order summary writable with admin access before its first command, the production composition names no service issuer, its `auth.config.ts` reads its issuer from environment variables, and it is the Convex app whose project directory is `example/`; these are options taken here and the owner has not ruled (E-8, E-13, E-15, E-37, E-46) -- [non-blocking] Extension E-17, the rows the experiment requires: the doc says the experiment passes when every Layer 0, 1 and 2 scenario passes, and its one all-layer row, Sc ALL-1, applies to every installed layer; the option taken here requires the twenty-three rows the doc's table gives Layer 0, 1 or 2 and Sc ALL-1, each at the tier the acceptance contract names for it, so that the native proof of the audit and the diagnostic is part of the experiment; the owner confirmed both (E-17, First experiment, Sc ALL-1) +- [non-blocking #contextIsolationCost] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on this experiment's local measurement of component call cost, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, Probe 3) +- [non-blocking #lifecycleCommandSummary] Extension E-46: the doc asks for one more lifecycle command and one essential summary without naming them; the option taken here is `CancelOrder`, which releases the allocation, and the order summary read model (E-46, First experiment) +- [non-blocking #commandMeasurementRecord] Extension E-47: the doc lists what to count but not how; the option taken here is a measurement record per run captured from the disposable backend's function execution log, documents and bytes from the `usageStats` of the command's top-level completion record, and the calls per context from a pure test of the use case's executor, because the log holds no record of a component call inside a mutation, with any count the backend does not expose recorded as a gap; the owner has not ruled (E-47, First experiment) +- [non-blocking #commandDocumentReads] Extension E-47, the documents a command reads: the design expected one `PlaceOrder` of N lines to read about N + 6 documents, and the pinned backend counted 3N + 5; the measurement run decides where the other 2N reads come from (E-47, F13) +- [non-blocking #compositionInitialGrants] Extensions E-8, E-13, E-15 and E-37, as the experiment's setup takes them: stock exists only through `ReceiveStock`, a run seeds its grants and makes the order summary writable with admin access before its first command, the production composition names no service issuer, its `auth.config.ts` reads its issuer from environment variables, and it is the Convex app whose project directory is `example/`; these are options taken here and the owner has not ruled (E-8, E-13, E-15, E-37, E-46) +- [non-blocking #requiredAcceptanceScenarios] Extension E-17, the rows the experiment requires: the doc says the experiment passes when every Layer 0, 1 and 2 scenario passes, and its one all-layer row, Sc ALL-1, applies to every installed layer; the option taken here requires the twenty-three rows the doc's table gives Layer 0, 1 or 2 and Sc ALL-1, each at the tier the acceptance contract names for it, so that the native proof of the audit and the diagnostic is part of the experiment; the owner confirmed both (E-17, First experiment, Sc ALL-1) ## Workflow diff --git a/design/specs/application/generation-registry.sdp.md b/design/specs/application/generation-registry.sdp.md index 5ff608e..716682b 100644 --- a/design/specs/application/generation-registry.sdp.md +++ b/design/specs/application/generation-registry.sdp.md @@ -34,12 +34,12 @@ The registry is two parent tables. The `generations` table records every generat ### Open questions -- [non-blocking] Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` table below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5) -- [non-blocking] Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57) -- [non-blocking] Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the restore's proof that the generation is still stranded, and `resumeChain` bumping it is the proof that it is not (E-42, F12) -- [non-blocking] Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, generation 1 starting as `building` like any other, so a read model added to a deployment that has history serves that history from its first switch and no transition claims coverage it did not build; a command that finds no generation to write fails as a technical failure and a query that finds no active generation fails the same way (E-8, D9, D19) -- [non-blocking] Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight on the read model once per batch; the progress row is the one checkpoint of every batch whatever drives it (E-40, F1) -- [non-blocking] Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that `startGeneration` refuses then, with a message naming `fillTenants`, the operator entry of `spec:application.rebuild` that fills the list from the grants, and refuses while that fill runs (E-49, E-8, Law 11) +- [non-blocking #generationRollbackPolicy] Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option taken here is the `generations` table below with seven states, a rollback period of 7 days, one generation being built per read model at a time, and a retired generation that is kept and not written, so that a rollback reopens it as `verifying`, one verify pass repairs what the writes since its retirement changed, and the ordinary switch makes it active again; a rollback is therefore a verify pass and then a switch of one write, never one write by itself (E-8, D9, Sc L2-5) +- [non-blocking #generationTenantReach] Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the batches iterate the tenant list of `spec:command.actor-and-scope`; the registry is operational data of the deployment, so its indexes lead with the read model name and not with `tenantId`, a confirmed deviation from Law 11's index rule of the same kind the obligation module records under E-57, while every table that holds tenant data, the read-model rows among them, leads with the tenant; a rebuild for one tenant is not offered (E-8, D9, D11, Law 11, E-57) +- [non-blocking #restoreGenerationFence] Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the restore's proof that the generation is still stranded, and `resumeChain` bumping it is the proof that it is not (E-42, F12) +- [non-blocking #readModelInstallation] Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, generation 1 starting as `building` like any other, so a read model added to a deployment that has history serves that history from its first switch and no transition claims coverage it did not build; a command that finds no generation to write fails as a technical failure and a query that finds no active generation fails the same way (E-8, D9, D19) +- [non-blocking #rebuildProgressRow] Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run every command in flight on the read model once per batch; the progress row is the one checkpoint of every batch whatever drives it (E-40, F1) +- [non-blocking #tenantListGenerationStart] Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that `startGeneration` refuses then, with a message naming `fillTenants`, the operator entry of `spec:application.rebuild` that fills the list from the grants, and refuses while that fill runs (E-49, E-8, Law 11) ## Contract diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 881f14a..6e940d2 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -31,10 +31,10 @@ A history projection is the form of a read model whose row depends on history ac ### Open questions -- [non-blocking] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) -- [non-blocking] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) -- [non-blocking] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18) -- [non-blocking] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9) +- [non-blocking #historyFoldOrder] Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken here is a fold that gives one row whatever the order across streams and however its events are split between calls, a row no fold deletes, which keeps its subject's ended state, and baselines dropped before `keyOf`, so a view whose meaning needs the order across streams waits for the ordered consumer of D18 (E-9, D2, D9, D18, E-25) +- [non-blocking #historyProjectionCost] The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history bound, for `PlaceOrder` and for `CancelOrder` of an order of the maximum lines, before the view is declared essential anywhere (E-9, E-47, F13) +- [non-blocking #historyFoldPureTest] Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application carries a pure test that folds a sample of one key's events in every interleaving of its streams and every split into calls, and a library helper that runs that test is added with a second history view (E-9, D2, D18) +- [non-blocking #historySubjectErasure] A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, is answered by that policy (D19, D9, E-9) ## Contract diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index 8352efc..d842f79 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -37,12 +37,12 @@ This workflow is the paused path of `spec:application.rebuild`, which holds the ### Open questions -- [non-blocking] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) -- [non-blocking] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) -- [non-blocking] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) -- [non-blocking] Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must instead remain possible during that migration, which context query provides it without constructing a DTO of the wrong meaning? -- [non-blocking] Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one successful abort with both sources reopened? The same atomicity check should cover the switch that reopens them. -- [non-blocking] Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while a command writing only an unrelated source remains allowed? Include a retry of resume after its response is lost so the same saved event page cannot change the fold twice. +- [non-blocking #historyBatchShape] Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative is a batch that takes streams from one `list` page until its event budget is spent, one `history` call per stream, with the byte bound counting one baseline per stream; the first paused rebuild on the native backend measures one batch, and the shape is chosen with that number (E-40, E-9, F13, F19, D9) +- [non-blocking #verifyPassUnderPause] The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, finds nothing over a covered generation, which doubles the pause; the option kept here is the pass, as D9's "Verify coverage, then switch" and Sc L2-6's "writes reopen only after verification" read, and whether a paused generation is `verified` when its backfill ends is the owner's (D9, Sc L2-6) +- [non-blocking #historyBatchWriteThroughput] Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, `spec:facts.f13-transactions-have-limits#design.limitWriteThroughput`, which the first paused rebuild on the native backend and one hosted run show (F13, E-40) +- [non-blocking #historyMigrationBeforePause] Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must instead remain possible during that migration, which context query provides it without constructing a DTO of the wrong meaning? +- [non-blocking #abortSwitchAtomicity] Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one successful abort with both sources reopened? The same atomicity check should cover the switch that reopens them. +- [non-blocking #historyTenantPauseIsolation] Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while a command writing only an unrelated source remains allowed? Include a retry of resume after its response is lost so the same saved event page cannot change the fold twice. ## Workflow diff --git a/design/specs/application/orders-inventory-example.sdp.md b/design/specs/application/orders-inventory-example.sdp.md index 7348db2..eddf19f 100644 --- a/design/specs/application/orders-inventory-example.sdp.md +++ b/design/specs/application/orders-inventory-example.sdp.md @@ -33,7 +33,7 @@ The second lifecycle command is `CancelOrder`. The stock item keeps two totals a ### Open questions -- [non-blocking] Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream budgets of the two stream types, the order of the two context calls and the history-dependent view Sc L2-6 builds are choices the doc leaves open; two of them are decided, that the stock item keeps totals only and `release` takes its quantities from the cancelled order's own lines, and that the order allocation history view stays in the experiment; the owner may substitute the others, and the experiment's terms move with them (E-46, E-2, E-9, First experiment) +- [non-blocking #orderInventoryCommandChoices] Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream budgets of the two stream types, the order of the two context calls and the history-dependent view Sc L2-6 builds are choices the doc leaves open; two of them are decided, that the stock item keeps totals only and `release` takes its quantities from the cancelled order's own lines, and that the order allocation history view stays in the experiment; the owner may substitute the others, and the experiment's terms move with them (E-46, E-2, E-9, First experiment) ## Model diff --git a/design/specs/application/parent-use-cases.sdp.md b/design/specs/application/parent-use-cases.sdp.md index 5d59a72..af6b892 100644 --- a/design/specs/application/parent-use-cases.sdp.md +++ b/design/specs/application/parent-use-cases.sdp.md @@ -53,9 +53,9 @@ The boundary sits at the component API. The use case sees DTOs and stream versio ### Open questions -- [non-blocking] Extension E-41: the doc says a too-large operation is rejected or becomes a separate import command with honest partial progress; it does not say what the import command records. The option taken here: the input bound is the declaration's `bounds.maxItems` of `spec:command.command-declaration` under E-38, checked by the pipeline's step 1 and by no body, the rejection is the outcome boundary's reserved `operationTooLarge`, and this extension owns only the import command, a caller-driven sequence of bounded batch commands that record progress on an `imports` row (E-41, E-38, D10) -- [non-blocking] Extension E-44: the doc says keeping a refused request as a fact is a business policy chosen per command, and the executor signature is pinned by `spec:command.command-declaration`; what neither says is how a use case declares what a context's business failure means to it. The option taken here is a `BusinessFailurePolicy` per context call, carry or reject, applied inside the executor body through the pinned helper `carryOrReject` right after the context call, because the executor is a plain function and the declaration carries no slot for it; `reject` rolls back the events the context recorded as its business failure, which D4 says belong in history, and the doc's per-command choice is read as the use case's because D10 makes the use case the command, so the owner confirms that a context's business failure may be overridden by its caller; the throw shape, the kernel's bare `Rejection` that a context and a use case's own code both throw and the pipeline's rethrow normalizes, is taken here, under E-5 for the boundary's rethrow, and the owner has not ruled on it (E-44, E-5, D4, D7, D10) -- [non-blocking] Extension E-39: the doc fixes no order for a use case's context calls; the option taken here is one fixed order the executor states, the creating context first, with no failure handling of a later call, because the calls before it roll back with the mutation; the owner has not ruled (E-39, D1, D10) +- [non-blocking #importCommandProgress] Extension E-41: the doc says a too-large operation is rejected or becomes a separate import command with honest partial progress; it does not say what the import command records. The option taken here: the input bound is the declaration's `bounds.maxItems` of `spec:command.command-declaration` under E-38, checked by the pipeline's step 1 and by no body, the rejection is the outcome boundary's reserved `operationTooLarge`, and this extension owns only the import command, a caller-driven sequence of bounded batch commands that record progress on an `imports` row (E-41, E-38, D10) +- [non-blocking #contextBusinessFailurePolicy] Extension E-44: the doc says keeping a refused request as a fact is a business policy chosen per command, and the executor signature is pinned by `spec:command.command-declaration`; what neither says is how a use case declares what a context's business failure means to it. The option taken here is a `BusinessFailurePolicy` per context call, carry or reject, applied inside the executor body through the pinned helper `carryOrReject` right after the context call, because the executor is a plain function and the declaration carries no slot for it; `reject` rolls back the events the context recorded as its business failure, which D4 says belong in history, and the doc's per-command choice is read as the use case's because D10 makes the use case the command, so the owner confirms that a context's business failure may be overridden by its caller; the throw shape, the kernel's bare `Rejection` that a context and a use case's own code both throw and the pipeline's rethrow normalizes, is taken here, under E-5 for the boundary's rethrow, and the owner has not ruled on it (E-44, E-5, D4, D7, D10) +- [non-blocking #useCaseContextOrder] Extension E-39: the doc fixes no order for a use case's context calls; the option taken here is one fixed order the executor states, the creating context first, with no failure handling of a later call, because the calls before it roll back with the mutation; the owner has not ruled (E-39, D1, D10) ## Behavior diff --git a/design/specs/application/projection-contract.sdp.md b/design/specs/application/projection-contract.sdp.md index f6db5c3..0bfda2d 100644 --- a/design/specs/application/projection-contract.sdp.md +++ b/design/specs/application/projection-contract.sdp.md @@ -30,11 +30,11 @@ A projection is the named, versioned, deterministic function that turns a contex ### Open questions -- [non-blocking] Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input. The option taken here: a per-entity read model declared as a `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, a list of `Projection` with the latest first, each holding `version`, `keyOf` and `project` alone, rows with `tenantId`, `generation`, `key`, `projectionVersion` and `sourceVersions`, one `applyProjection` helper with a mode per caller that writes each generation by its role, active, building or verifying, with the projection whose version the generation records, for the aggregate form the row and the writer `spec:application.aggregate-projection` pins, and for a history-dependent view a `HistoryProjection` that folds events into the prior row, fed on the live path by the events the operation appended, which the adapter's `streams` entry carries, and on the backfill by the context's `history` pages under the write pause, with `sourceVersions` recording the highest version folded per stream so that an event is never folded twice; a row that derives from more than one source stream type is a history row, its projection bound once per source stream type, and a small cross-context view of current state is D8's parent query over bounded component reads; the owner confirms the three forms and has not ruled on the split of a per-entity read model into `ReadModel` and `Projection`, on the write by generation role or on the row measured against its budget at every write (E-9, E-23, E-24, D8, D9) -- [non-blocking] Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9) -- [non-blocking] The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9) -- [non-blocking] Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole row from one DTO and a backfill enumerates one source; the option taken here is D8's other default, a parent query over bounded component reads, until a view needs such a row, which then needs a form whose `project` takes the DTO of every matching entry of one command and whose backfill reads the other context in the same mutation, online (E-9, D8, E-45) -- [non-blocking] Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by `spec:application.history-projection#design.tableOrderAllocationHistory`; whether a row's `sourceVersions` may omit `tenantId`, equal to the row's on every entry, and the write rule compare three identity fields, is a choice the owner may take with the pinned conventions (E-9, Law 11, F13) +- [non-blocking #projectionRowContract] Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker but not the aggregate row, and for the read models that depend on history across several streams, the ones the write pause exists for, it names no input. The option taken here: a per-entity read model declared as a `ReadModel` with `name`, `table`, `rowBudgetBytes` and its `projections`, a list of `Projection` with the latest first, each holding `version`, `keyOf` and `project` alone, rows with `tenantId`, `generation`, `key`, `projectionVersion` and `sourceVersions`, one `applyProjection` helper with a mode per caller that writes each generation by its role, active, building or verifying, with the projection whose version the generation records, for the aggregate form the row and the writer `spec:application.aggregate-projection` pins, and for a history-dependent view a `HistoryProjection` that folds events into the prior row, fed on the live path by the events the operation appended, which the adapter's `streams` entry carries, and on the backfill by the context's `history` pages under the write pause, with `sourceVersions` recording the highest version folded per stream so that an event is never folded twice; a row that derives from more than one source stream type is a history row, its projection bound once per source stream type, and a small cross-context view of current state is D8's parent query over bounded component reads; the owner confirms the three forms and has not ruled on the split of a per-entity read model into `ReadModel` and `Projection`, on the write by generation role or on the row measured against its budget at every write (E-9, E-23, E-24, D8, D9) +- [non-blocking #projectionGenerationVersions] Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when the read model declares none of that version, so the rows of one generation are one truth of one version; the cost is that an earlier version stays in the code while a generation that records it is written or can be rolled back to, and a projection changed without a version change is still undetected (E-9, D8, D9) +- [non-blocking #backfillVersionOverwrite] The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading (D9, E-9) +- [non-blocking #compositeCurrentStateRow] Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole row from one DTO and a backfill enumerates one source; the option taken here is D8's other default, a parent query over bounded component reads, until a view needs such a row, which then needs a form whose `project` takes the DTO of every matching entry of one command and whose backfill reads the other context in the same mutation, online (E-9, D8, E-45) +- [non-blocking #historySourceVersionTenant] Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by `spec:application.history-projection#design.tableOrderAllocationHistory`; whether a row's `sourceVersions` may omit `tenantId`, equal to the row's on every entry, and the write rule compare three identity fields, is a choice the owner may take with the pinned conventions (E-9, Law 11, F13) ## Contract diff --git a/design/specs/application/read-models.sdp.md b/design/specs/application/read-models.sdp.md index bdebc90..b4520c3 100644 --- a/design/specs/application/read-models.sdp.md +++ b/design/specs/application/read-models.sdp.md @@ -46,12 +46,12 @@ This Spec carries the read-need table as rules, the properties of a projection, ### Open questions -- [non-blocking] Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw `InvalidCursor` at a switch; a parent list therefore pages with `paginator` of `convex-helpers`, as a context list does, and a pinned page is bounded on every run by the row cap and by the byte cap as `spec:context.queries` states it, the helper stopping at the row that reaches it and admitting that row whole, and answers `SplitRequired` beyond them (Probe 5, F13, D8, D9) -- [non-blocking] Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's pair moved into the active generation by `pageInGeneration`, and returns through `paginationResultValidator` with its rows mapped by `readModelView`, and a client pages every list by an explicit cursor pair with no hook; these are options taken here and the owner has not ruled (E-24, S4, Probe 5, D8) -- [non-blocking] Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field `entry` and the codes `unauthenticated` or `forbidden`; the owner confirmed the word, and nothing else of the shape is new (E-6, D7, D11, Law 5) -- [non-blocking] Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) -- [non-blocking] Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 read-model rows written per command, both measured by the first experiment (E-45, D8) -- [non-blocking] Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of current state, because no form of `spec:application.projection-contract` writes one row from the DTOs of two sources, and the history projection for a view that folds the events of several streams; a composite row of current state is a form for the view that needs it (E-9, E-45, D8) +- [non-blocking #parentListGenerationSwitch] Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw `InvalidCursor` at a switch; a parent list therefore pages with `paginator` of `convex-helpers`, as a context list does, and a pinned page is bounded on every run by the row cap and by the byte cap as `spec:context.queries` states it, the helper stopping at the row that reaches it and admitting that row whole, and answers `SplitRequired` beyond them (Probe 5, F13, D8, D9) +- [non-blocking #readModelListBounds] Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's pair moved into the active generation by `pageInGeneration`, and returns through `paginationResultValidator` with its rows mapped by `readModelView`, and a client pages every list by an explicit cursor pair with no hook; these are options taken here and the owner has not ruled (E-24, S4, Probe 5, D8) +- [non-blocking #parentQueryRefusal] Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field `entry` and the codes `unauthenticated` or `forbidden`; the owner confirmed the word, and nothing else of the shape is new (E-6, D7, D11, Law 5) +- [non-blocking #contextQueryCost] Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) +- [non-blocking #parentQueryReadBounds] Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 read-model rows written per command, both measured by the first experiment (E-45, D8) +- [non-blocking #crossContextReadForm] Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of current state, because no form of `spec:application.projection-contract` writes one row from the DTOs of two sources, and the history projection for a view that folds the events of several streams; a composite row of current state is a form for the view that needs it (E-9, E-45, D8) ## Behavior diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 5916539..22ff4d7 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -56,11 +56,11 @@ The registry, the progress row and the gate document are pinned by `spec:applica ### Open questions -- [non-blocking] `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9) -- [non-blocking] Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. The option taken here: a batch is one mutation with one cursor on the progress row and a bound of at most 100 entities, capped by the read model's declared `rowBudgetBytes` so that the parent's point reads and writes stay under 4 MiB, and by the context's byte-derived `list` page bound, which is 16 items at the default 256 KiB stream budget; every batch, the backfill and the verify pass over a context's enumeration and the purge over a parent table, is driven by the platform's own self-scheduled internal mutation, and the rebuild uses the component for nothing, because Probe 6 showed that it walks only the tables of the component it is defined in and drives a context's rows only through a parent internal mutation written by hand against a contract its README does not document; the progress row is the one checkpoint (E-40, E-24, E-9, F17, F13, F1) -- [non-blocking] Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9) -- [non-blocking] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in `spec:application.history-rebuild`; the aggregate form's rebuild is deferred with the form in its own Spec, the aggregate projection, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) -- [non-blocking] Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no tenant and still ends; the option taken here is that `startGeneration` refuses an empty list beside a grant with a message naming `fillTenants`, and `fillTenants`, an operator entry, walks the grants in bounded batches through a progress row of its own and inserts each missing tenant once; a list that holds a tenant whose first grant came after the table and misses an older one is not detected by that refusal, so the operator runs `fillTenants` on such a deployment before its first `startGeneration` (E-49, E-48, E-40, Law 11) +- [non-blocking #rebuildBatchDriver] `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the compiled tier needs a cast for, keeps a status apart from the generation's state, and leaves no error on its row when a batch fails past the read limit, so every batch is driven by the rebuild's own self-scheduled internal mutation and the progress row is the one checkpoint; a hosted deployment and sustained contention are not observed (Probe 6, F1, F17, D9) +- [non-blocking #rebuildBatchBounds] Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. The option taken here: a batch is one mutation with one cursor on the progress row and a bound of at most 100 entities, capped by the read model's declared `rowBudgetBytes` so that the parent's point reads and writes stay under 4 MiB, and by the context's byte-derived `list` page bound, which is 16 items at the default 256 KiB stream budget; every batch, the backfill and the verify pass over a context's enumeration and the purge over a parent table, is driven by the platform's own self-scheduled internal mutation, and the rebuild uses the component for nothing, because Probe 6 showed that it walks only the tables of the component it is defined in and drives a context's rows only through a parent internal mutation written by hand against a contract its README does not document; the progress row is the one checkpoint (E-40, E-24, E-9, F17, F13, F1) +- [non-blocking #rebuildGenerationPauseContract] Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned in the two contracts under this workflow (E-8, E-9, E-38, D9) +- [non-blocking #rebuildReadModelForms] Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in `spec:application.history-rebuild`; the aggregate form's rebuild is deferred with the form in its own Spec, the aggregate projection, and a row made from the current state of more than one source has no form at all, as `spec:application.projection-contract` records; `rollbackGeneration` refuses a generation that needs a write pause, because nothing would hold its sources while live commands fold onto a row that missed the events since its retirement, so such a view returns to earlier rules only through a new generation under the pause (E-8, E-9, D9, D18) +- [non-blocking #tenantListFill] Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no tenant and still ends; the option taken here is that `startGeneration` refuses an empty list beside a grant with a message naming `fillTenants`, and `fillTenants`, an operator entry, walks the grants in bounded batches through a progress row of its own and inserts each missing tenant once; a list that holds a tenant whose first grant came after the table and misses an older one is not detected by that refusal, so the operator runs `fillTenants` on such a deployment before its first `startGeneration` (E-49, E-48, E-40, Law 11) ## Workflow diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index 2087e51..9c61c8d 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -53,11 +53,11 @@ The parts of restore that concern obligations, external dispatch and provider ev ### Open questions -- [non-blocking] Probe 7 observes local CLI replacement restoring the parent, Orders and Inventory documents with IDs and creation times; fresh replacement leaves scheduler tables empty and replacement in place keeps existing schedules; the complete Layer 2 restore drill, hosted dashboard restore, Workpool and Workflow remain open (Probe 7, F12, D19) -- [non-blocking] Extension E-42: the doc says restore runs with matching code and configuration, that domain, journal and read-model invariants hold, and that restore is tested; it does not list the checks or the record, and it does not say what a restore does to a rebuild that was in flight at the backup. The option taken here: four checks, journal, domain, read model and receipt, each a bounded checkpointed batch, the stream check bounded through the `rebuild` query's `maxEvents` argument so a batch folds at most 500 events in all, each folded stream also reading its own stored baseline event, a fifth step that inventories the closed gate entries, the generations in `building`, `verifying` or `verified` and the `imports` rows in `running` that the backup archive restored, a `restoreRuns` row as the record, an accepted branch that resumes every stranded generation the operator did not abort, the `MAINTENANCE_MODE` environment variable as the door, a failed check keeping the whole deployment closed with no override, and the drill before every release with its cadence reconsidered on the first drill's measured check times; the owner confirmed the checks, the door and both policies (E-42, D19, F12) -- [non-blocking] Extension E-42, the stream check's batch size: `limitCheckBatch` states the read of a batch that folds one stream, and each further stream the same batch folds reads its own stored baseline event of at most `budgetBytes + 4,096 + 61` bytes; the batch size that keeps a batch of several folded streams under the 16 MiB read ceiling is not pinned (E-42, F13) -- [non-blocking] Extension E-42, the enumeration of a stream awaiting a baseline: the journal check enumerates streams through `list`, and `list` refuses a row behind a registered step that reads history with the transient refusal `writePaused`, so the check cannot reach such a stream to inventory it as `awaitingBaseline`; that enumeration needs a read that does not refuse it, designed together with the entry of the baseline-migration sweep (E-42, E-25) -- [non-blocking] Before a restore accepts an active history generation, how does its bounded check compare the projected fields and source versions against an independent fold without changing the read model, including when the saved code declares a different projection version from the active generation? What history-specific assertion belongs in the restore example? +- [non-blocking #restoreBackupCoverage] Probe 7 observes local CLI replacement restoring the parent, Orders and Inventory documents with IDs and creation times; fresh replacement leaves scheduler tables empty and replacement in place keeps existing schedules; the complete Layer 2 restore drill, hosted dashboard restore, Workpool and Workflow remain open (Probe 7, F12, D19) +- [non-blocking #restoreInvariantChecks] Extension E-42: the doc says restore runs with matching code and configuration, that domain, journal and read-model invariants hold, and that restore is tested; it does not list the checks or the record, and it does not say what a restore does to a rebuild that was in flight at the backup. The option taken here: four checks, journal, domain, read model and receipt, each a bounded checkpointed batch, the stream check bounded through the `rebuild` query's `maxEvents` argument so a batch folds at most 500 events in all, each folded stream also reading its own stored baseline event, a fifth step that inventories the closed gate entries, the generations in `building`, `verifying` or `verified` and the `imports` rows in `running` that the backup archive restored, a `restoreRuns` row as the record, an accepted branch that resumes every stranded generation the operator did not abort, the `MAINTENANCE_MODE` environment variable as the door, a failed check keeping the whole deployment closed with no override, and the drill before every release with its cadence reconsidered on the first drill's measured check times; the owner confirmed the checks, the door and both policies (E-42, D19, F12) +- [non-blocking #restoreStreamBatchBounds] Extension E-42, the stream check's batch size: `limitCheckBatch` states the read of a batch that folds one stream, and each further stream the same batch folds reads its own stored baseline event of at most `budgetBytes + 4,096 + 61` bytes; the batch size that keeps a batch of several folded streams under the 16 MiB read ceiling is not pinned (E-42, F13) +- [non-blocking #restoreBaselineEnumeration] Extension E-42, the enumeration of a stream awaiting a baseline: the journal check enumerates streams through `list`, and `list` refuses a row behind a registered step that reads history with the transient refusal `writePaused`, so the check cannot reach such a stream to inventory it as `awaitingBaseline`; that enumeration needs a read that does not refuse it, designed together with the entry of the baseline-migration sweep (E-42, E-25) +- [non-blocking #restoreHistoryFoldVerification] Before a restore accepts an active history generation, how does its bounded check compare the projected fields and source versions against an independent fold without changing the read model, including when the saved code declares a different projection version from the active generation? What history-specific assertion belongs in the restore example? ## Workflow diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index efe632e..fa435c0 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -36,9 +36,9 @@ The write pause is the maintenance gate every writer in a scope reads inside its ### Open questions -- [non-blocking] Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1) -- [non-blocking] Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9) -- [non-blocking] Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep any acceptable pause length for the owner's decision rather than deriving a timeout from a batch estimate. +- [non-blocking #writePauseSourceScopes] Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed scopes, each in one `closed` state, with no fence of its own and no drain interval, because optimistic concurrency serializes every writer's gate read against the close and the generation row's fence already fences a rebuild's batches, and a refusal answered with `writePaused`, the transient code the outcome boundary reserves for this contract under its E-35, which this contract confirms; the scope a paused rebuild closes is the paused view's sources, one `source:` entry per context and stream type its bindings name, because a consistent cut must hold every writer of those streams and a use case that writes a source stream without maintaining the view would otherwise pass the gate, which is why the command declaration names what it writes under E-38 and the pipeline proves the list at its step 9; an operator entry closes only a tenant or `all`, the coarser and always safe scopes, and no scope names a read model, because nothing would close it (E-8, E-38, D9, D4, F1) +- [non-blocking #generationGateExemption] Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is reached by no reader; either the exemption goes, or a history batch reads the gate with its source scopes as well and passes them by it (E-8, D9) +- [non-blocking #writePauseOperatingInstructions] Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep any acceptable pause length for the owner's decision rather than deriving a timeout from a batch estimate. ## Contract diff --git a/design/specs/command/actor-and-scope.sdp.md b/design/specs/command/actor-and-scope.sdp.md index 649b494..6665553 100644 --- a/design/specs/command/actor-and-scope.sdp.md +++ b/design/specs/command/actor-and-scope.sdp.md @@ -28,11 +28,11 @@ This contract pins the shapes the parent establishes and passes into components: ### Open questions -- [non-blocking] Extension E-6: the doc names the actor kinds, the envelope's actor field and the worker's two modes; the field names, the namespace union, the grant fields and the `authorize` signature are the design's, and the grant's `permission` string vocabulary is per product; the worker's two modes are one `Authority` shape, `{ actor, scope, mode }` with the literals `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated, where the delegation travels on the actor's own `onBehalfOf` and `delegationRef`; and the doc says a derived command carries a server namespace without naming it, so this design assigns `worker` to every command a reaction issues, which is the namespace Sc L1-7 refuses to a client and the one D6 lists among the receipted callers, and reserves `system` for the platform's own maintenance chains and operator operations that run a receipted command, such as a restore or a migration driver, so a `system` receipt is never a reaction's; the owner confirms both (E-6, E-54, D6, D11, D13, Sc L1-7) -- [non-blocking] Extension E-6: the tenant scope of an operation, of a command and of a query is the `tenantId` argument alone, so none takes a separate scope argument; this is a provisional reading the owner rules (E-6, Law 11, D11) -- [non-blocking] Extension E-6: the doc says a query authorizes before it discloses and does not say how; here a parent query calls `authorizeQuery`, which establishes and authorizes its actor through the same two helpers a command's entry uses and is generic over the parent's data model; the owner has not ruled (E-6, D11, Law 5) -- [non-blocking] Extension E-48, the operator entry: the doc lists operators among the actors and names operator duties without saying how an operator reaches them; the option taken here is that admin access is the authority of an operation over the whole deployment, so every operator entry is an internal function that only admin access reaches, takes the operator as a required string, reads no grant and records that string on what it changes; a stated operator is what admin access chose to state and proves no identity, D11's one trusted deployment is the boundary, and no scope beyond the tenant is added (E-48, D11, D19) -- [non-blocking] Extension E-49, the tenant list: the doc has every record name its tenant and names no list of tenants, while a batch over the whole deployment needs the next tenant; the option taken here is a `tenants` table in the parent with one row per tenant, written by `insertGrant` in the mutation that inserts a tenant's first grant and never deleted, read one tenant at a time in tenant-ID order; the do-nothing option, reading the distinct tenant IDs off the `grants` index, is not taken because revocation deletes grant rows and a tenant whose grants are all revoked still owns records (E-49, D11, Law 11, E-37) +- [non-blocking #actorCallerNamespaceContract] Extension E-6: the doc names the actor kinds, the envelope's actor field and the worker's two modes; the field names, the namespace union, the grant fields and the `authorize` signature are the design's, and the grant's `permission` string vocabulary is per product; the worker's two modes are one `Authority` shape, `{ actor, scope, mode }` with the literals `recheckDelegator` and `serviceAuthority`, stored on the obligation record and never restated, where the delegation travels on the actor's own `onBehalfOf` and `delegationRef`; and the doc says a derived command carries a server namespace without naming it, so this design assigns `worker` to every command a reaction issues, which is the namespace Sc L1-7 refuses to a client and the one D6 lists among the receipted callers, and reserves `system` for the platform's own maintenance chains and operator operations that run a receipted command, such as a restore or a migration driver, so a `system` receipt is never a reaction's; the owner confirms both (E-6, E-54, D6, D11, D13, Sc L1-7) +- [non-blocking #commandQueryTenantScope] Extension E-6: the tenant scope of an operation, of a command and of a query is the `tenantId` argument alone, so none takes a separate scope argument; this is a provisional reading the owner rules (E-6, Law 11, D11) +- [non-blocking #parentQueryAuthorization] Extension E-6: the doc says a query authorizes before it discloses and does not say how; here a parent query calls `authorizeQuery`, which establishes and authorizes its actor through the same two helpers a command's entry uses and is generic over the parent's data model; the owner has not ruled (E-6, D11, Law 5) +- [non-blocking #statedOperatorEntry] Extension E-48, the operator entry: the doc lists operators among the actors and names operator duties without saying how an operator reaches them; the option taken here is that admin access is the authority of an operation over the whole deployment, so every operator entry is an internal function that only admin access reaches, takes the operator as a required string, reads no grant and records that string on what it changes; a stated operator is what admin access chose to state and proves no identity, D11's one trusted deployment is the boundary, and no scope beyond the tenant is added (E-48, D11, D19) +- [non-blocking #tenantListContract] Extension E-49, the tenant list: the doc has every record name its tenant and names no list of tenants, while a batch over the whole deployment needs the next tenant; the option taken here is a `tenants` table in the parent with one row per tenant, written by `insertGrant` in the mutation that inserts a tenant's first grant and never deleted, read one tenant at a time in tenant-ID order; the do-nothing option, reading the distinct tenant IDs off the `grants` index, is not taken because revocation deletes grant rows and a tenant whose grants are all revoked still owns records (E-49, D11, Law 11, E-37) ## Contract diff --git a/design/specs/command/command-declaration.sdp.md b/design/specs/command/command-declaration.sdp.md index e3bce2c..5c3d87f 100644 --- a/design/specs/command/command-declaration.sdp.md +++ b/design/specs/command/command-declaration.sdp.md @@ -35,9 +35,9 @@ The canonical schema is the declaration's `input` validator plus an optional ref ### Open questions -- [non-blocking] Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per command instead of one, and the cheaper alternative the design refuted is one public export per command plus one generic internal dispatcher mutation keyed by command type, as D7's conditional dispatcher already does; it lost because trusted server callers would then reach every command through one untyped `internalMutation`, so a renamed handler or a broken argument contract would pass `tsc` at the caller and fail only at runtime, which is the check Sc L2-4 exists to keep before traffic, and because the receipt fingerprint's contract version would be looked up by string rather than typed; the owner may still prefer the dispatcher form once code generation makes the per-command internal entry free (E-7, D12, D7, Sc L2-4, Decision method rule 5) -- [non-blocking] Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration exists; the conditional dispatcher of `spec:command.outcome-boundary` is the one thing that would need such a map and brings it with it; this is a provisional reading the owner rules (E-7, D12, D18, OQ2) -- [non-blocking] Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` and `writes`, each serving a cited rule of another Spec, and asks whether the owner accepts them as part of the one declaration; `bounds` is the one input bound in the corpus, `maxItems` and `maxBytes`, checked by the pipeline's step 1 and by no executor body, so `spec:application.parent-use-cases` reads it rather than declaring a bound of its own; `writes` is required on every declaration, because an absent list would be an unchecked one, and `readModels` is optional, absent meaning none, which the owner has not ruled; `writes` names the context and stream type pairs the executor may write, from which the pipeline's step 7 derives the source scopes the write pause closes for a consistent cut and which step 9 proves against the `streams` entries the executor returns, because a use case that writes a source stream without maintaining the paused view would otherwise pass the gate; the declaration still imports nothing from the obligation family, so a command's static reactions are not a field here but the `createObligation` calls of its executor, as `spec:obligations.fan-out-and-chains` rules under E-54 (E-38, E-8, E-54, D6, D9, D10, D19, Thesis) +- [non-blocking #commandEntrySignatures] Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per command instead of one, and the cheaper alternative the design refuted is one public export per command plus one generic internal dispatcher mutation keyed by command type, as D7's conditional dispatcher already does; it lost because trusted server callers would then reach every command through one untyped `internalMutation`, so a renamed handler or a broken argument contract would pass `tsc` at the caller and fail only at runtime, which is the check Sc L2-4 exists to keep before traffic, and because the receipt fingerprint's contract version would be looked up by string rather than typed; the owner may still prefer the dispatcher form once code generation makes the per-command internal entry free (E-7, D12, D7, Sc L2-4, Decision method rule 5) +- [non-blocking #commandDeclarationLookup] Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration exists; the conditional dispatcher of `spec:command.outcome-boundary` is the one thing that would need such a map and brings it with it; this is a provisional reading the owner rules (E-7, D12, D18, OQ2) +- [non-blocking #commandDeclarationFields] Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` and `writes`, each serving a cited rule of another Spec, and asks whether the owner accepts them as part of the one declaration; `bounds` is the one input bound in the corpus, `maxItems` and `maxBytes`, checked by the pipeline's step 1 and by no executor body, so `spec:application.parent-use-cases` reads it rather than declaring a bound of its own; `writes` is required on every declaration, because an absent list would be an unchecked one, and `readModels` is optional, absent meaning none, which the owner has not ruled; `writes` names the context and stream type pairs the executor may write, from which the pipeline's step 7 derives the source scopes the write pause closes for a consistent cut and which step 9 proves against the `streams` entries the executor returns, because a use case that writes a source stream without maintaining the paused view would otherwise pass the gate; the declaration still imports nothing from the obligation family, so a command's static reactions are not a field here but the `createObligation` calls of its executor, as `spec:obligations.fan-out-and-chains` rules under E-54 (E-38, E-8, E-54, D6, D9, D10, D19, Thesis) ## Contract diff --git a/design/specs/command/command-pipeline.sdp.md b/design/specs/command/command-pipeline.sdp.md index 2d377c1..4a2a22e 100644 --- a/design/specs/command/command-pipeline.sdp.md +++ b/design/specs/command/command-pipeline.sdp.md @@ -65,13 +65,13 @@ The pipeline is one code path with two registered entries per command. The publi ### Open questions -- [non-blocking] Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member carries the declaration's result and whose replayed member carries `result` null because a receipt stores no result, so the entry's returns validator admits a replay as a value; affected IDs are application IDs, never private document IDs (E-30, D2, D6, D8) -- [non-blocking] Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event without saying how that cause reaches the pipeline; here the pipeline mints the operation ID once per top-level mutation with `crypto.randomUUID()` before the first context call, a duplicate returns the operation ID stored on the receipt, and the internal entry takes an optional `causedBy` argument that step 7 copies onto the `OperationRef` when present, so a reaction that issues a derived command passes `causedBy` of kind `event` naming its publication event and the envelope's `event` variant has exactly one producer, while an entry called without it mints `causedBy` of kind `command` from the declaration's name; the obligation and attempt behind a derived command are found through its receipt, whose request key is the obligation's effect key, and never through the envelope (E-31, E-54, D2, D13, Vocab: operation) -- [non-blocking] Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7) -- [non-blocking] Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of `ConvexHttpClient` needs when it retries, and the internal entry always requires one (E-33, D6, Probe 1) -- [non-blocking] Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a `transactionLimits` option, the design passes none on a context call, and whether a call should reserve room with it for the work after it stays open (Probe 4, F13, S3) -- [non-blocking] Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from its events, and a history read model from the events of every matching entry in one call per command, checks `writes` first, then that each bound read model has a generation to write, then the count of the rows it writes against `limitReadModelWritesPerCommand`, each failure a plain error, and the library helpers that step 9 calls are generic over the application's data model; the owner has not ruled on any of it (E-9, E-7, E-8, E-45, D8, D9) -- [non-blocking] Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists them, as rejection `invalidInput`, and treats a declaration name above `limitIdLength` as a defect, a plain error, because these fields become fields of the receipt row or of every event's envelope; the doc says events stay small and names no number; the owner has not ruled (E-34, D6, D12, D19) +- [non-blocking #commandOutcomeWireShape] Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member carries the declaration's result and whose replayed member carries `result` null because a receipt stores no result, so the entry's returns validator admits a replay as a value; affected IDs are application IDs, never private document IDs (E-30, D2, D6, D8) +- [non-blocking #operationIdentityCause] Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event without saying how that cause reaches the pipeline; here the pipeline mints the operation ID once per top-level mutation with `crypto.randomUUID()` before the first context call, a duplicate returns the operation ID stored on the receipt, and the internal entry takes an optional `causedBy` argument that step 7 copies onto the `OperationRef` when present, so a reaction that issues a derived command passes `causedBy` of kind `event` naming its publication event and the envelope's `event` variant has exactly one producer, while an entry called without it mints `causedBy` of kind `command` from the declaration's name; the obligation and attempt behind a derived command are found through its receipt, whose request key is the obligation's effect key, and never through the envelope (E-31, E-54, D2, D13, Vocab: operation) +- [non-blocking #commandAdmissionPolicy] Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command policy in the declaration, absent by default, evaluated inside the mutation so that a refusal that throws leaves no consumption behind; the flip side is that a consumption the policy writes commits only with the command, so the policy counts committed intent and cannot bound refused or unauthorized traffic, and a product that must bound refused traffic needs the dispatcher form of D7, where the parent survives the body's rejection (E-32, D4, D6, D7) +- [non-blocking #publicRequestKey] Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of `ConvexHttpClient` needs when it retries, and the internal entry always requires one (E-33, D6, Probe 1) +- [non-blocking #contextCallBudgetReservation] Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a `transactionLimits` option, the design passes none on a context call, and whether a call should reserve room with it for the work after it stays open (Probe 4, F13, S3) +- [non-blocking #commandReadModelWrites] Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, never from its events, and a history read model from the events of every matching entry in one call per command, checks `writes` first, then that each bound read model has a generation to write, then the count of the rows it writes against `limitReadModelWritesPerCommand`, each failure a plain error, and the library helpers that step 9 calls are generic over the application's data model; the owner has not ruled on any of it (E-9, E-7, E-8, E-45, D8, D9) +- [non-blocking #commandTextBounds] Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists them, as rejection `invalidInput`, and treats a declaration name above `limitIdLength` as a defect, a plain error, because these fields become fields of the receipt row or of every event's envelope; the doc says events stay small and names no number; the owner has not ruled (E-34, D6, D12, D19) ## Workflow diff --git a/design/specs/command/idempotency-and-receipts.sdp.md b/design/specs/command/idempotency-and-receipts.sdp.md index 49a43b0..73f414b 100644 --- a/design/specs/command/idempotency-and-receipts.sdp.md +++ b/design/specs/command/idempotency-and-receipts.sdp.md @@ -41,11 +41,11 @@ This Spec owns the rules: where receipts are required, how the key and the finge ### Open questions -- [non-blocking] Probe 1 showed on the pinned backend that a closed client leaves its mutation executed once or not at all, that a backend restart leaves it executed once, and that `ConvexHttpClient` does not retry, so a caller's retry is a second execution; whether the public entry requires a request key from callers of the HTTP client, or leaves it optional, is the owner's ruling; the design takes it optional on the public entry and required on the internal entry, a provisional reading the owner rules (Probe 1, D6, E-33) -- [non-blocking] Extension E-33: a public caller may supply a request key to opt into a receipt, and the internal entry always requires one; the doc lists the callers that need receipts and does not say whether a UI caller may opt in (E-33, D6) -- [non-blocking] Extension E-34: the doc says expiry is explicit and names no number; here the default retry window is 7 days per command, expiry is checked lazily at lookup so the core path needs no job, and a bounded per-tenant sweep deletes expired receipts in batches of at most 1,000; the tenant ID and the request key are bounded to 256 bytes of UTF-8, a declaration name above that bound is a defect and a plain error, and a receipt is bounded to 1,000 affected refs; the owner has not ruled (E-34, D6, D19, F13) -- [non-blocking] Extension E-36: the doc says the fingerprint covers business input and its contract version; here it is the SHA-256 digest, computed with the Convex runtime's `crypto.subtle.digest`, over the canonical JSON of the business input with object keys sorted, followed by the contract version; the outside facts the executor captures travel beside the input and are excluded, so a retry that captures a fresher fact is not a conflict, which the decider contract cites; a change to the canonical form is a contract version bump (E-36, D6, D3) -- [non-blocking] Extension E-39: the doc says a client-generated entity ID plus a uniqueness check gives one entity on a UI double submit and does not say what the second submit is told; here the second submit is answered with the rejection `entityExists` naming the existing entity, not with an idempotent success, because no receipt exists on the UI path to replay an outcome from and the client already holds the entity ID it needs to read the result; the owner may prefer an idempotent success, which would need a receipt on every create (E-39, D6, Sc L1-4) +- [non-blocking #httpCallerRequestKey] Probe 1 showed on the pinned backend that a closed client leaves its mutation executed once or not at all, that a backend restart leaves it executed once, and that `ConvexHttpClient` does not retry, so a caller's retry is a second execution; whether the public entry requires a request key from callers of the HTTP client, or leaves it optional, is the owner's ruling; the design takes it optional on the public entry and required on the internal entry, a provisional reading the owner rules (Probe 1, D6, E-33) +- [non-blocking #publicReceiptChoice] Extension E-33: a public caller may supply a request key to opt into a receipt, and the internal entry always requires one; the doc lists the callers that need receipts and does not say whether a UI caller may opt in (E-33, D6) +- [non-blocking #receiptRetentionBounds] Extension E-34: the doc says expiry is explicit and names no number; here the default retry window is 7 days per command, expiry is checked lazily at lookup so the core path needs no job, and a bounded per-tenant sweep deletes expired receipts in batches of at most 1,000; the tenant ID and the request key are bounded to 256 bytes of UTF-8, a declaration name above that bound is a defect and a plain error, and a receipt is bounded to 1,000 affected refs; the owner has not ruled (E-34, D6, D19, F13) +- [non-blocking #businessInputFingerprint] Extension E-36: the doc says the fingerprint covers business input and its contract version; here it is the SHA-256 digest, computed with the Convex runtime's `crypto.subtle.digest`, over the canonical JSON of the business input with object keys sorted, followed by the contract version; the outside facts the executor captures travel beside the input and are excluded, so a retry that captures a fresher fact is not a conflict, which the decider contract cites; a change to the canonical form is a contract version bump (E-36, D6, D3) +- [non-blocking #duplicateSubjectCreation] Extension E-39: the doc says a client-generated entity ID plus a uniqueness check gives one entity on a UI double submit and does not say what the second submit is told; here the second submit is answered with the rejection `entityExists` naming the existing entity, not with an idempotent success, because no receipt exists on the UI path to replay an outcome from and the client already holds the entity ID it needs to read the result; the owner may prefer an idempotent success, which would need a receipt on every create (E-39, D6, Sc L1-4) ## Behavior diff --git a/design/specs/command/outcome-boundary.sdp.md b/design/specs/command/outcome-boundary.sdp.md index 5ee3061..0d428b7 100644 --- a/design/specs/command/outcome-boundary.sdp.md +++ b/design/specs/command/outcome-boundary.sdp.md @@ -35,10 +35,10 @@ The closed code list has two halves. The platform codes below are closed here an ### Open questions -- [non-blocking] Extension E-5: the doc fixes the four outcomes and that a rejection is a structured `ConvexError`, but not the data shape or the code list; the shape and the platform codes below are the design's, and the domain codes are closed per declaration (E-5, D4, D7) -- [non-blocking] Extension E-5: the doc says a query authorizes before it discloses and does not say how a refused query is answered; here a parent query's refusal is the same `RejectionData` a command's is, with the name of the entry that refused in the field `entry` and only the codes `unauthenticated` and `forbidden`, and a use case's own rejection is thrown as the kernel's bare `Rejection`, the way a context throws one, while a context query's transient refusal `writePaused` reaches the caller unchanged, in the transient shape with no `entry`, because it is not a refusal of the caller; the owner confirmed the shared shape, the two codes, the bare use-case rejection and the word entry for the field (E-5, D7, Law 5) -- [non-blocking] Extension E-35: the write pause of D9 refuses writers in its scope while a cross-stream history view rebuilds; the doc does not say how a refused writer is answered; this contract reserves the transient code `writePaused` for Package D so the refusal is retryable and stores nothing, which Package D confirms or replaces (E-35, D9, D4) -- [non-blocking] OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides whether the generic internal dispatcher below exists; until then it is a conditional design and no command uses it (OQ2, D7) +- [non-blocking #rejectionShapeCodes] Extension E-5: the doc fixes the four outcomes and that a rejection is a structured `ConvexError`, but not the data shape or the code list; the shape and the platform codes below are the design's, and the domain codes are closed per declaration (E-5, D4, D7) +- [non-blocking #parentQueryRefusalShape] Extension E-5: the doc says a query authorizes before it discloses and does not say how a refused query is answered; here a parent query's refusal is the same `RejectionData` a command's is, with the name of the entry that refused in the field `entry` and only the codes `unauthenticated` and `forbidden`, and a use case's own rejection is thrown as the kernel's bare `Rejection`, the way a context throws one, while a context query's transient refusal `writePaused` reaches the caller unchanged, in the transient shape with no `entry`, because it is not a refusal of the caller; the owner confirmed the shared shape, the two codes, the bare use-case rejection and the word entry for the field (E-5, D7, Law 5) +- [non-blocking #writePauseTransientRefusal] Extension E-35: the write pause of D9 refuses writers in its scope while a cross-stream history view rebuilds; the doc does not say how a refused writer is answered; this contract reserves the transient code `writePaused` for Package D so the refusal is retryable and stores nothing, which Package D confirms or replaces (E-35, D9, D4) +- [non-blocking #refusedCommandRecord] OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides whether the generic internal dispatcher below exists; until then it is a conditional design and no command uses it (OQ2, D7) ## Contract diff --git a/design/specs/command/receipt-table.sdp.md b/design/specs/command/receipt-table.sdp.md index 8d0455f..2a87c4b 100644 --- a/design/specs/command/receipt-table.sdp.md +++ b/design/specs/command/receipt-table.sdp.md @@ -28,7 +28,7 @@ The `receipts` table lives in the parent, as the doc's ownership table assigns i ### Open questions -- [non-blocking] Extension E-4: the doc fixes what a receipt holds and that expiry is explicit; the concrete fields, the three indexes, the tombstone shape and the defaults are the design's, and the expiry number is a product decision the declaration overrides (E-4, D6) +- [non-blocking #receiptFieldsIndexes] Extension E-4: the doc fixes what a receipt holds and that expiry is explicit; the concrete fields, the three indexes, the tombstone shape and the defaults are the design's, and the expiry number is a product decision the declaration overrides (E-4, D6) ## Contract diff --git a/design/specs/command/tenancy-and-authority.sdp.md b/design/specs/command/tenancy-and-authority.sdp.md index a3c2169..757ec1b 100644 --- a/design/specs/command/tenancy-and-authority.sdp.md +++ b/design/specs/command/tenancy-and-authority.sdp.md @@ -35,9 +35,9 @@ This Spec owns the rules of tenant scope, actor establishment, authorization and ### Open questions -- [non-blocking] Extension E-37: the doc says the parent authenticates and that grants are authoritative data, but not how an identity becomes an actor or how revocation takes effect; here the public entry and a parent query's `authorizeQuery` map `ctx.auth.getUserIdentity()` to a human actor, or a service actor when the issuer is a configured service issuer, grants live in a parent table by default and are revoked by deleting the row, with no cache, so a revoked grant fails the next command (E-37, D11) -- [non-blocking] Extension E-6: the doc names the actor kinds and the worker's two modes but not the types; the actor, scope, namespace, grant and `Authority` shapes are the design's and are pinned once in `spec:command.actor-and-scope`, which also rules that a derived command's namespace is `worker` (E-6, D11) -- [non-blocking] Extension E-37: the design takes grants as written by plain library helpers, `insertGrant` and `revokeGrant`, over which the application registers its own internal mutations, with a tenant's first grant created with admin access through the composition's own internal grant mutation, and later grants the same way or by whatever command the composition registers; the library registers no grant function and promises no recorded bootstrap, first-admin flow or invitation, which are an adopter's to build on the helpers (E-37, D11, Law 5) +- [non-blocking #actorGrantRevocation] Extension E-37: the doc says the parent authenticates and that grants are authoritative data, but not how an identity becomes an actor or how revocation takes effect; here the public entry and a parent query's `authorizeQuery` map `ctx.auth.getUserIdentity()` to a human actor, or a service actor when the issuer is a configured service issuer, grants live in a parent table by default and are revoked by deleting the row, with no cache, so a revoked grant fails the next command (E-37, D11) +- [non-blocking #actorCallerNamespaceShapes] Extension E-6: the doc names the actor kinds and the worker's two modes but not the types; the actor, scope, namespace, grant and `Authority` shapes are the design's and are pinned once in `spec:command.actor-and-scope`, which also rules that a derived command's namespace is `worker` (E-6, D11) +- [non-blocking #grantCreationEntries] Extension E-37: the design takes grants as written by plain library helpers, `insertGrant` and `revokeGrant`, over which the application registers its own internal mutations, with a tenant's first grant created with admin access through the composition's own internal grant mutation, and later grants the same way or by whatever command the composition registers; the library registers no grant function and promises no recorded bootstrap, first-admin flow or invitation, which are an adopter's to build on the helpers (E-37, D11, Law 5) ## Behavior diff --git a/design/specs/constraints/events-stay-small.sdp.md b/design/specs/constraints/events-stay-small.sdp.md index 38f91f5..2715565 100644 --- a/design/specs/constraints/events-stay-small.sdp.md +++ b/design/specs/constraints/events-stay-small.sdp.md @@ -23,7 +23,7 @@ The doc says events stay small and that personal data sits behind references whe ### Open questions -- [non-blocking] Extension E-12: the payload byte bound is the design's number, 16 KiB, chosen with the envelope bound of 4 KiB so that a fold of 500 events of at most 20 KiB each stays under 9.8 MiB, under the 16 MiB read ceiling with headroom; the owner may set another, and the journal's 500-event fold bound moves with it; the reserved `baseline` event of E-25 is exempt from the 16 KiB bound and bounded by its stream type's `budgetBytes` instead, at most 512 KiB, because its payload is the migrated state of its stream, which the fold reads once as its start and never folds, and the owner confirms the exemption with E-25 (E-12, E-2, E-25, D19, F13) +- [non-blocking #eventPayloadBound] Extension E-12: the payload byte bound is the design's number, 16 KiB, chosen with the envelope bound of 4 KiB so that a fold of 500 events of at most 20 KiB each stays under 9.8 MiB, under the 16 MiB read ceiling with headroom; the owner may set another, and the journal's 500-event fold bound moves with it; the reserved `baseline` event of E-25 is exempt from the 16 KiB bound and bounded by its stream type's `budgetBytes` instead, at most 512 KiB, because its payload is the migrated state of its stream, which the fold reads once as its start and never folds, and the owner confirms the exemption with E-25 (E-12, E-2, E-25, D19, F13) ## Constraints diff --git a/design/specs/context/context-component.sdp.md b/design/specs/context/context-component.sdp.md index c7b6e95..d347937 100644 --- a/design/specs/context/context-component.sdp.md +++ b/design/specs/context/context-component.sdp.md @@ -48,9 +48,9 @@ The component's boundary is the component API. Below it sit the kernel, the jour ### Open questions -- [non-blocking] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, with the hosted usage reading as the one measurement still to take, and a measured workload that misses an agreed target or a usage reading above an agreed share reopens it (OQ1, D2) -- [non-blocking] Probe 3: the cost of one component call in latency and function-call quota decides where hot reads land; the latency is an order of magnitude read on a local backend, the quota needs a hosted deployment to read, and isolation itself stays (Probe 3, F4, D2, D8) -- [non-blocking] Extension E-22: the doc says the parent calls the context's sanctioned operations and does not say how they are registered; this Spec registers one Convex mutation per sanctioned operation built by `defineOperation` with args `{ tenantId, actor, operation, input, facts }`, fixes the context ID as a code constant equal to the mount name, sets the per-call bounds in documents and in bytes derived from each stream type's budget, names the query and maintenance surface, and adds `convex-helpers` as the component's one dependency because the built-in `.paginate()` does not work in a component; the alternative of one generic `execute` mutation per context with an untyped command was not taken because D12 wants static exports with one canonical schema; the owner confirms (D10, D12, S4, E-22) +- [non-blocking #contextIsolationMeasurement] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, with the hosted usage reading as the one measurement still to take, and a measured workload that misses an agreed target or a usage reading above an agreed share reopens it (OQ1, D2) +- [non-blocking #contextQueryLatencyQuota] Probe 3: the cost of one component call in latency and function-call quota decides where hot reads land; the latency is an order of magnitude read on a local backend, the quota needs a hosted deployment to read, and isolation itself stays (Probe 3, F4, D2, D8) +- [non-blocking #contextOperationRegistration] Extension E-22: the doc says the parent calls the context's sanctioned operations and does not say how they are registered; this Spec registers one Convex mutation per sanctioned operation built by `defineOperation` with args `{ tenantId, actor, operation, input, facts }`, fixes the context ID as a code constant equal to the mount name, sets the per-call bounds in documents and in bytes derived from each stream type's budget, names the query and maintenance surface, and adds `convex-helpers` as the component's one dependency because the built-in `.paginate()` does not work in a component; the alternative of one generic `execute` mutation per context with an untyped command was not taken because D12 wants static exports with one canonical schema; the owner confirms (D10, D12, S4, E-22) ## Behavior diff --git a/design/specs/context/event-envelope.sdp.md b/design/specs/context/event-envelope.sdp.md index e53b19b..f44fae7 100644 --- a/design/specs/context/event-envelope.sdp.md +++ b/design/specs/context/event-envelope.sdp.md @@ -28,8 +28,8 @@ Every event carries the fifteen fields the doc fixes: a stable application ident ### Open questions -- [non-blocking] Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the event ID as a version 4 UUID from the runtime's `crypto`; the owner confirms (D2, E-26) -- [non-blocking] Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set at 256 bytes of UTF-8, 512 for an actor's ID, so the largest stored event, `limitEventBytes`, is derived and enforced and never assumed; the owner may set other numbers, and the fold bound of `spec:context.journal` moves with them (E-12, D19, F13) +- [non-blocking #eventEnvelopeFields] Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the event ID as a version 4 UUID from the runtime's `crypto`; the owner confirms (D2, E-26) +- [non-blocking #envelopeTextBounds] Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set at 256 bytes of UTF-8, 512 for an actor's ID, so the largest stored event, `limitEventBytes`, is derived and enforced and never assumed; the owner may set other numbers, and the fold bound of `spec:context.journal` moves with them (E-12, D19, F13) ## Contract diff --git a/design/specs/context/journal.sdp.md b/design/specs/context/journal.sdp.md index 39c3766..0637d92 100644 --- a/design/specs/context/journal.sdp.md +++ b/design/specs/context/journal.sdp.md @@ -48,7 +48,7 @@ The journal's boundary is the library API the persistence adapter and the querie ### Open questions -- [non-blocking] Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what a live command does on a stream the migration has not reached; this Spec fixes the representation, an event of the reserved type `baseline` whose payload holds the state and its schema version and is bounded by the stream's `budgetBytes` instead of the payload bound, a `baselineVersion` on the stream row, a `BaselineMigration` registered on the stream type whose `migrate` function computes the migrated state from the saved state, or, for a step that declares `readsHistory`, from the saved state and the events since the last baseline in the sweep only, the rule that `stateSchemaVersion` counts meaning only and lives on the registration, one helper `migrateToSchemaVersion` that writes the baseline chain, called by the adapter on load for a chain that reads no history and by the `writeBaseline` maintenance mutation for every chain, the code-older-than-data error, the `writeBaseline` mutation built by `defineMaintenance` and declared with the component's public `mutation` builder, the parent-side scheduled chain that drives it by cursor, the batch bound derived from `budgetBytes`, the upcasting rule for old event schema versions, the fold bound of 500 events with the refusals `rebuildStream` returns above it and for a stream awaiting its baseline, the retirement rule for a migration, and the payload byte check in `append`; the option of refusing commands on unmigrated streams with a transient code until the sweep arrives was not taken for a state-only migration, because it turns a deploy into a partial write pause the doc reserves for history-dependent views, and is taken for a history-reading migration, the exception, where it holds only the streams the sweep has not reached and keeps D3 whole on the command path, which the owner confirmed; a consequence the owner should weigh is that every baseline bumps its stream's version, so a reviewed version held across the sweep is answered `staleVersion` and re-reviewed rather than silently accepted, because Sc L1-10 forbids reinterpreting a reviewed version against fresh state and the baseline is a real event of the stream, while a live stream migrated on load never trips it because its expected-version check runs before the chain; and the driver reads the write pause's gate before every batch and reschedules itself when refused, so a sweep never changes a source under a paused rebuild's cut; the owner confirms (D5, D9, S4, Sc L1-10, E-2, E-8, E-12, E-25) +- [non-blocking #baselineMigrationContract] Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what a live command does on a stream the migration has not reached; this Spec fixes the representation, an event of the reserved type `baseline` whose payload holds the state and its schema version and is bounded by the stream's `budgetBytes` instead of the payload bound, a `baselineVersion` on the stream row, a `BaselineMigration` registered on the stream type whose `migrate` function computes the migrated state from the saved state, or, for a step that declares `readsHistory`, from the saved state and the events since the last baseline in the sweep only, the rule that `stateSchemaVersion` counts meaning only and lives on the registration, one helper `migrateToSchemaVersion` that writes the baseline chain, called by the adapter on load for a chain that reads no history and by the `writeBaseline` maintenance mutation for every chain, the code-older-than-data error, the `writeBaseline` mutation built by `defineMaintenance` and declared with the component's public `mutation` builder, the parent-side scheduled chain that drives it by cursor, the batch bound derived from `budgetBytes`, the upcasting rule for old event schema versions, the fold bound of 500 events with the refusals `rebuildStream` returns above it and for a stream awaiting its baseline, the retirement rule for a migration, and the payload byte check in `append`; the option of refusing commands on unmigrated streams with a transient code until the sweep arrives was not taken for a state-only migration, because it turns a deploy into a partial write pause the doc reserves for history-dependent views, and is taken for a history-reading migration, the exception, where it holds only the streams the sweep has not reached and keeps D3 whole on the command path, which the owner confirmed; a consequence the owner should weigh is that every baseline bumps its stream's version, so a reviewed version held across the sweep is answered `staleVersion` and re-reviewed rather than silently accepted, because Sc L1-10 forbids reinterpreting a reviewed version against fresh state and the baseline is a real event of the stream, while a live stream migrated on load never trips it because its expected-version check runs before the chain; and the driver reads the write pause's gate before every batch and reschedules itself when refused, so a sweep never changes a source under a paused rebuild's cut; the owner confirms (D5, D9, S4, Sc L1-10, E-2, E-8, E-12, E-25) ## Behavior diff --git a/design/specs/context/persistence-adapter.sdp.md b/design/specs/context/persistence-adapter.sdp.md index 3ead6ea..7d9dc9c 100644 --- a/design/specs/context/persistence-adapter.sdp.md +++ b/design/specs/context/persistence-adapter.sdp.md @@ -43,7 +43,7 @@ An operation is a list-shaped call over one or more streams of the stream types ### Open questions -- [non-blocking] Extension E-23: the doc gives the sequence and the one-authority rule; this Spec fixes the request and result types, the operation runner with `plan` and `combine`, the aggregation of per-stream outcomes, the per-stream `dto` and `created` flag that the operation returns beside the kernel's outcome so the parent's projections and the backfill take one DTO shape, the semantics of a caller-named expected version including expected version 0 as the create's uniqueness check, the byte-derived bounds on streams and writes per call and the bound on the value a call returns, the on-load baseline migration of step 3a whose rules `spec:context.journal` carries under E-25, and the internal guards that turn a defect into a technical failure; this is a provisional reading the owner has not ruled (D3, D6, E-23, E-25) +- [non-blocking #contextOperationOutcome] Extension E-23: the doc gives the sequence and the one-authority rule; this Spec fixes the request and result types, the operation runner with `plan` and `combine`, the aggregation of per-stream outcomes, the per-stream `dto` and `created` flag that the operation returns beside the kernel's outcome so the parent's projections and the backfill take one DTO shape, the semantics of a caller-named expected version including expected version 0 as the create's uniqueness check, the byte-derived bounds on streams and writes per call and the bound on the value a call returns, the on-load baseline migration of step 3a whose rules `spec:context.journal` carries under E-25, and the internal guards that turn a defect into a technical failure; this is a provisional reading the owner has not ruled (D3, D6, E-23, E-25) ## Contract diff --git a/design/specs/context/queries.sdp.md b/design/specs/context/queries.sdp.md index f5c718d..ae5460a 100644 --- a/design/specs/context/queries.sdp.md +++ b/design/specs/context/queries.sdp.md @@ -38,9 +38,9 @@ A context exposes queries that return DTOs. The parent authenticates and authori ### Open questions -- [non-blocking] Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` with its `splitCursor`, and that the `usePaginatedQuery` hook of `convex-helpers/react` then shows 40 of 45 rows; this design uses no hook across the boundary, and the examples are rerun when either pin moves (Probe 5, F15, S4, D8, E-24) -- [non-blocking] Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on every DTO, pagination through `paginator`, the item cap with a row cap of twice the item cap and a byte cap passed on every run, the relay of `pageStatus` and `splitCursor` unchanged, paging by an explicit cursor pair with no client hook, the parent query's one `authorizeQuery` call and its refusal as a rejection, the `maxEvents` argument of the `rebuild` query and its `budgetExhausted` refusal for a batching caller, and the fold refusal of the `rebuild` query; this is a provisional reading the owner has not ruled (D8, S4, E-24, E-42) -- [non-blocking] A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed the word (D7, E-24) +- [non-blocking #contextPaginationSplit] Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` with its `splitCursor`, and that the `usePaginatedQuery` hook of `convex-helpers/react` then shows 40 of 45 rows; this design uses no hook across the boundary, and the examples are rerun when either pin moves (Probe 5, F15, S4, D8, E-24) +- [non-blocking #contextQueryContract] Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on every DTO, pagination through `paginator`, the item cap with a row cap of twice the item cap and a byte cap passed on every run, the relay of `pageStatus` and `splitCursor` unchanged, paging by an explicit cursor pair with no client hook, the parent query's one `authorizeQuery` call and its refusal as a rejection, the `maxEvents` argument of the `rebuild` query and its `budgetExhausted` refusal for a batching caller, and the fold refusal of the `rebuild` query; this is a provisional reading the owner has not ruled (D8, S4, E-24, E-42) +- [non-blocking #queryRefusalEntry] A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed the word (D7, E-24) ## Contract diff --git a/design/specs/context/tables.sdp.md b/design/specs/context/tables.sdp.md index e3137e5..d9395c4 100644 --- a/design/specs/context/tables.sdp.md +++ b/design/specs/context/tables.sdp.md @@ -28,7 +28,7 @@ Each context component owns a `streams` table and an `events` table, and a conte ### Open questions -- [non-blocking] Extension E-3: the doc names three indexes and the fields of the envelope; this Spec fixes the concrete tables, the operation index, the `streamParts` table for the derived mapping, the deleted-subject marker as `deletedAt` on the stream row and the size budgets; the owner confirms (D2, E-3) +- [non-blocking #contextJournalTables] Extension E-3: the doc names three indexes and the fields of the envelope; this Spec fixes the concrete tables, the operation index, the `streamParts` table for the derived mapping, the deleted-subject marker as `deletedAt` on the stream row and the size budgets; the owner confirms (D2, E-3) ## Contract diff --git a/design/specs/decisions/d02-context-owns-state-and-journal.sdp.md b/design/specs/decisions/d02-context-owns-state-and-journal.sdp.md index 1b7f273..872509c 100644 --- a/design/specs/decisions/d02-context-owns-state-and-journal.sdp.md +++ b/design/specs/decisions/d02-context-owns-state-and-journal.sdp.md @@ -27,8 +27,8 @@ Each context is a component that owns its current state, its event journal and i ### Open questions -- [non-blocking] Probe 3: the latency of one component call is measured and keeps every context a component; its function-call quota is a hosted usage reading, and isolation itself stays (Probe 3, D2, OQ1) -- [non-blocking] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, D2) +- [non-blocking #contextCallLatencyQuota] Probe 3: the latency of one component call is measured and keeps every context a component; its function-call quota is a hosted usage reading, and isolation itself stays (Probe 3, D2, OQ1) +- [non-blocking #contextIsolationChoice] OQ1: a trivial context with no invariants of its own stays a component; the owner answered OQ1 on the first experiment's local measurement, and a measured workload that misses an agreed target, or a hosted usage reading above an agreed share, reopens it (OQ1, D2) ## Decision diff --git a/design/specs/decisions/d03-events-only-source-of-next-state.sdp.md b/design/specs/decisions/d03-events-only-source-of-next-state.sdp.md index 8dec1ef..80d4735 100644 --- a/design/specs/decisions/d03-events-only-source-of-next-state.sdp.md +++ b/design/specs/decisions/d03-events-only-source-of-next-state.sdp.md @@ -23,8 +23,8 @@ Provenance: carried from v0.1; the two gaps at the end are new. Feature · Trace ### Open questions -- [non-blocking] Gap, initial state: the v0.1 interface has none; add `initial()` or let `evolve` accept an empty state so a rebuild from the creation event has a defined start; ruled provisionally as E-1 in the kernel's initial-state decision (D3, E-1) -- [non-blocking] Gap, state across several documents, its size budget: one document per stream stays the default while it fits the size budget, and where it cannot, the document writes are derived from the folded state in one place per context, as the kernel's state-document mapping decision states; the size budget there is a provisional number of E-2 (D3, E-2, OQ3) +- [non-blocking #initialStateChoice] Gap, initial state: the v0.1 interface has none; add `initial()` or let `evolve` accept an empty state so a rebuild from the creation event has a defined start; ruled provisionally as E-1 in the kernel's initial-state decision (D3, E-1) +- [non-blocking #streamStateSizeBudget] Gap, state across several documents, its size budget: one document per stream stays the default while it fits the size budget, and where it cannot, the document writes are derived from the folded state in one place per context, as the kernel's state-document mapping decision states; the size budget there is a provisional number of E-2 (D3, E-2, OQ3) ## Decision diff --git a/design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md b/design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md index d07168b..6448c76 100644 --- a/design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md +++ b/design/specs/decisions/d06-idempotency-client-and-receipts.sdp.md @@ -30,7 +30,7 @@ The Convex React client retries a mutation until it is confirmed, and the backen ### Open questions -- [non-blocking] Probe 1 ran on 2026-10-01: the guarantee holds across a backend restart, a closed client leaves its mutation executed once or not at all, and the HTTP client does not retry; `ConvexHttpClient` is a Convex client the guarantee does not reach, so whether its callers join the callers that need receipts is the owner's ruling (Probe 1, D6) +- [non-blocking #httpCallerReceipts] Probe 1 ran on 2026-10-01: the guarantee holds across a backend restart, a closed client leaves its mutation executed once or not at all, and the HTTP client does not retry; `ConvexHttpClient` is a Convex client the guarantee does not reach, so whether its callers join the callers that need receipts is the owner's ruling (Probe 1, D6) ## Decision diff --git a/design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md b/design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md index d95fe78..9cf5a48 100644 --- a/design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md +++ b/design/specs/decisions/d07-rejections-thrown-not-stored.sdp.md @@ -28,7 +28,7 @@ A rejected command throws a structured `ConvexError`. The whole mutation rolls b ### Open questions -- [non-blocking] OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides where the nested mutation is required and whether the generic internal dispatcher exists (OQ2, D7) +- [non-blocking #refusedCommandHistory] OQ2: whether the product needs a record of refused commands anywhere, for security audit or agent proposals, decides where the nested mutation is required and whether the generic internal dispatcher exists (OQ2, D7) ## Decision diff --git a/design/specs/decisions/d08-read-models-in-command.sdp.md b/design/specs/decisions/d08-read-models-in-command.sdp.md index b35cc76..67f761f 100644 --- a/design/specs/decisions/d08-read-models-in-command.sdp.md +++ b/design/specs/decisions/d08-read-models-in-command.sdp.md @@ -27,7 +27,7 @@ The core path runs zero projection jobs and the simplest read that works wins. O ### Open questions -- [non-blocking] Probe 5 ran on 2026-10-01: a parent query over component queries stays reactive, and pagination crosses the boundary with pages pinned by their end cursors; the client hook lost rows after a capped page split, which slice S2 settles before it builds a list (Probe 5, F15, D8) +- [non-blocking #parentQueryPaginationSplit] Probe 5 ran on 2026-10-01: a parent query over component queries stays reactive, and pagination crosses the boundary with pages pinned by their end cursors; the client hook lost rows after a capped page split, which slice S2 settles before it builds a list (Probe 5, F15, D8) ## Decision diff --git a/design/specs/decisions/d09-rebuild-online-by-default.sdp.md b/design/specs/decisions/d09-rebuild-online-by-default.sdp.md index 72b492d..145a214 100644 --- a/design/specs/decisions/d09-rebuild-online-by-default.sdp.md +++ b/design/specs/decisions/d09-rebuild-online-by-default.sdp.md @@ -27,7 +27,7 @@ Because read models update inside commands, rebuilding a per-entity or current-s ### Open questions -- [non-blocking] Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) +- [non-blocking #rebuildContentionCoverage] Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) ## Decision diff --git a/design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md b/design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md index 5387f22..6ef96da 100644 --- a/design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md +++ b/design/specs/decisions/d13-deferred-work-is-an-obligation.sdp.md @@ -32,7 +32,7 @@ An obligation records one promise. It commits in the same transaction as the bus ### Open questions -- [non-blocking] Probe 7 observes the local scheduled reaction, states, scan boundary and both CLI replacement modes; the owner confirmed D13 on these observations; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain unprobed (Probe 7, D13, F12, F16) +- [non-blocking #obligationSchedulerCoverage] Probe 7 observes the local scheduled reaction, states, scan boundary and both CLI replacement modes; the owner confirmed D13 on these observations; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain unprobed (Probe 7, D13, F12, F16) ## Decision diff --git a/design/specs/decisions/d19-operations-travel-with-capability.sdp.md b/design/specs/decisions/d19-operations-travel-with-capability.sdp.md index a4646e8..8e1ecca 100644 --- a/design/specs/decisions/d19-operations-travel-with-capability.sdp.md +++ b/design/specs/decisions/d19-operations-travel-with-capability.sdp.md @@ -28,7 +28,7 @@ Each installed capability carries its own operations: logging that never cancels ### Open questions -- [non-blocking] Probe 7 pending: what a restore leaves of Workpool and Workflow state decides how much of the restore procedure the obligation module must rebuild (Probe 7, F12, D19) +- [non-blocking #restoreObligationCoverage] Probe 7 pending: what a restore leaves of Workpool and Workflow state decides how much of the restore procedure the obligation module must rebuild (Probe 7, F12, D19) ## Decision diff --git a/design/specs/effects/claim-call-settle.sdp.md b/design/specs/effects/claim-call-settle.sdp.md index 9b4c6d9..3920419 100644 --- a/design/specs/effects/claim-call-settle.sdp.md +++ b/design/specs/effects/claim-call-settle.sdp.md @@ -39,8 +39,8 @@ The action repeats exactly one thing when it throws: its settle call, within a s ### Open questions -- [non-blocking] Extension E-11: the doc gives the three steps and the three policies but no signatures; this Spec pins them and adds a fourth policy value `none`, which is the declared absence of a safe policy the doc describes (D14, E-11) -- [non-blocking] Extension E-58: the doc gives no lease duration, key derivation, late evidence bound, reconcile shape or handling of a settle call that throws; this design sets the lease to the handler runtime's action timeout plus 5 minutes, derives the key from tenant and effect key, keeps ten late reports, defines a reconcile as a provider query that returns the same report union, and lets the action repeat a thrown settle call three times, with a duplicate rule in the settle, before leaving the attempt to lease expiry (D14, D15, F13, E-58) +- [non-blocking #effectAttemptPolicies] Extension E-11: the doc gives the three steps and the three policies but no signatures; this Spec pins them and adds a fourth policy value `none`, which is the declared absence of a safe policy the doc describes (D14, E-11) +- [non-blocking #effectAttemptLeaseEvidence] Extension E-58: the doc gives no lease duration, key derivation, late evidence bound, reconcile shape or handling of a settle call that throws; this design sets the lease to the handler runtime's action timeout plus 5 minutes, derives the key from tenant and effect key, keeps ten late reports, defines a reconcile as a provider query that returns the same report union, and lets the action repeat a thrown settle call three times, with a duplicate rule in the settle, before leaving the attempt to lease expiry (D14, D15, F13, E-58) ## Contract diff --git a/design/specs/effects/external-effects.sdp.md b/design/specs/effects/external-effects.sdp.md index df66df7..1f1856d 100644 --- a/design/specs/effects/external-effects.sdp.md +++ b/design/specs/effects/external-effects.sdp.md @@ -39,9 +39,9 @@ An external effect is an obligation whose attempt must leave the transaction to ### Open questions -- [non-blocking] Extension E-58: the doc does not give the lease duration, the provider key derivation, the late evidence bound, the shape of a reconcile, or what the action does when its settle call throws; `spec:effects.claim-call-settle` pins them (D14, E-58) -- [non-blocking] Extension E-51: a declined provider report settles the obligation as cancelled with `businessRejection` evidence, by the same reading as the local wrapper (D14, D4, E-51) -- [non-blocking] Decision method rule 4: the doc writes Layer 3 from what the first experiment shows, and this Spec and `spec:effects.claim-call-settle` are written before it runs; the lease durations, the settle repeats and the late-evidence bound of E-58 and the backoff shared under E-51 are provisional defaults until the experiment's measurements and Probe 7 confirm or replace them, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D14, D15, E-51, E-58) +- [non-blocking #effectAttemptRecoveryContract] Extension E-58: the doc does not give the lease duration, the provider key derivation, the late evidence bound, the shape of a reconcile, or what the action does when its settle call throws; `spec:effects.claim-call-settle` pins them (D14, E-58) +- [non-blocking #providerBusinessRejection] Extension E-51: a declined provider report settles the obligation as cancelled with `businessRejection` evidence, by the same reading as the local wrapper (D14, D4, E-51) +- [non-blocking #effectAttemptDefaultBounds] Decision method rule 4: the doc writes Layer 3 from what the first experiment shows, and this Spec and `spec:effects.claim-call-settle` are written before it runs; the lease durations, the settle repeats and the late-evidence bound of E-58 and the backoff shared under E-51 are provisional defaults until the experiment's measurements and Probe 7 confirm or replace them, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D14, D15, E-51, E-58) ## Behavior diff --git a/design/specs/facts/f11-components-have-no-ctx-auth.sdp.md b/design/specs/facts/f11-components-have-no-ctx-auth.sdp.md index 9281795..29c3ba8 100644 --- a/design/specs/facts/f11-components-have-no-ctx-auth.sdp.md +++ b/design/specs/facts/f11-components-have-no-ctx-auth.sdp.md @@ -18,7 +18,7 @@ Code inside a component cannot read data that is not explicitly provided to it, ### Open questions -- [non-blocking] Observed against the documentation on 2026-10-01: the components page says `ctx.auth` is not available within a component; on the pinned native backend, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0, `ctx.auth.getUserIdentity()` inside a component query returned the caller's identity, and `convex-test` 0.0.60 returns null for the same call; the design does not depend on which holds, because D11 passes the actor explicitly and no component function reads `ctx.auth`; whether this fact's wording and status follow the documentation or the backend is the owner's ruling; the design takes the provisional reading that the documentation's sentence stays the fact and that the Specs of the kernel, context and command families state no component function reads `ctx.auth` or `process.env` as the design's rule, which a lint check over `src/context` and every component directory of the fixture composition enforces (F11, D11) +- [non-blocking #contextActorIdentity] Observed against the documentation on 2026-10-01: the components page says `ctx.auth` is not available within a component; on the pinned native backend, release `precompiled-2026-09-28-5c7cb5b` with `convex` 1.46.0, `ctx.auth.getUserIdentity()` inside a component query returned the caller's identity, and `convex-test` 0.0.60 returns null for the same call; the design does not depend on which holds, because D11 passes the actor explicitly and no component function reads `ctx.auth`; whether this fact's wording and status follow the documentation or the backend is the owner's ruling; the design takes the provisional reading that the documentation's sentence stays the fact and that the Specs of the kernel, context and command families state no component function reads `ctx.auth` or `process.env` as the design's rule, which a lint check over `src/context` and every component directory of the fixture composition enforces (F11, D11) ## Constraints diff --git a/design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md b/design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md index ff517c9..453f6f8 100644 --- a/design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md +++ b/design/specs/facts/f12-backups-exclude-pending-scheduled-functions.sdp.md @@ -18,7 +18,7 @@ The backup page excludes scheduled functions, code, configuration and environmen ### Open questions -- [non-blocking] Hosted dashboard restore, file storage, Workpool and Workflow are not run; local CLI import does not settle those paths. CLI replacement in place on a hosted deployment is the hosted example `spec:facts.f12-backups-exclude-pending-scheduled-functions.probe-7-hosted-in-place-import`; dashboard restore has no example. (F12, Probe 7, E-59) +- [non-blocking #hostedRestoreCoverage] Hosted dashboard restore, file storage, Workpool and Workflow are not run; local CLI import does not settle those paths. CLI replacement in place on a hosted deployment is the hosted example `spec:facts.f12-backups-exclude-pending-scheduled-functions.probe-7-hosted-in-place-import`; dashboard restore has no example. (F12, Probe 7, E-59) ## Constraints diff --git a/design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md b/design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md index 7c2ee0f..b5e0b6a 100644 --- a/design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md +++ b/design/specs/facts/f16-scheduled-functions-table-shows-failed-runs.sdp.md @@ -18,7 +18,7 @@ The scheduled-functions page documents five states and a seven-day completion-re ### Open questions -- [non-blocking] Seven-day retention and expiry, hosted dashboard restore, Workpool and Workflow are not run; the short native retention observation does not establish the documented window. The hosted example `spec:facts.f16-scheduled-functions-table-shows-failed-runs.probe-7-hosted-retention` records the ages at which planted schedules are read or missing, so that runs bracket the window a hosted deployment keeps. (F16, Probe 7, F12, E-59) +- [non-blocking #scheduledFunctionRetentionCoverage] Seven-day retention and expiry, hosted dashboard restore, Workpool and Workflow are not run; the short native retention observation does not establish the documented window. The hosted example `spec:facts.f16-scheduled-functions-table-shows-failed-runs.probe-7-hosted-retention` records the ages at which planted schedules are read or missing, so that runs bracket the window a hosted deployment keeps. (F16, Probe 7, F12, E-59) ## Constraints diff --git a/design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md b/design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md index fa58786..264e66a 100644 --- a/design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md +++ b/design/specs/facts/f17-migrations-fits-generation-backfill.sdp.md @@ -28,7 +28,7 @@ So the component does not fit a generation backfill as the platform needs one: i ### Open questions -- [non-blocking] Hosted quotas, sustained contention, automatic stall detection, backup replacement, old encrypted cursors, fence advancement, parallel callbacks and a rebuild across changing tenants are not run by these examples; the native backend evidence proves only the named boundaries and does not settle those behaviors. (F17, Probe 6) +- [non-blocking #rebuildBackendCoverage] Hosted quotas, sustained contention, automatic stall detection, backup replacement, old encrypted cursors, fence advancement, parallel callbacks and a rebuild across changing tenants are not run by these examples; the native backend evidence proves only the named boundaries and does not settle those behaviors. (F17, Probe 6) ## Constraints diff --git a/design/specs/facts/f18-commit-timestamps.sdp.md b/design/specs/facts/f18-commit-timestamps.sdp.md index 6f786be..cdbfbcb 100644 --- a/design/specs/facts/f18-commit-timestamps.sdp.md +++ b/design/specs/facts/f18-commit-timestamps.sdp.md @@ -18,7 +18,7 @@ The pinned package declares `db.vars.commitTs`, a placeholder that a mutation wr ### Open questions -- [non-blocking] The documented upper bound, `ctx.meta.getSnapshotTs()`, is absent from the pinned package's public declarations; ordering under overlapping transactions and behavior on a hosted deployment are outside the native example; a platform consumer adopts the bound only through a public declaration of a pinned package (F18, Probe 8) +- [non-blocking #commitTimestampBound] The documented upper bound, `ctx.meta.getSnapshotTs()`, is absent from the pinned package's public declarations; ordering under overlapping transactions and behavior on a hosted deployment are outside the native example; a platform consumer adopts the bound only through a public declaration of a pinned package (F18, Probe 8) ## Constraints diff --git a/design/specs/facts/f19-nested-calls-share-time-budgets.sdp.md b/design/specs/facts/f19-nested-calls-share-time-budgets.sdp.md index aad8f87..486bcd7 100644 --- a/design/specs/facts/f19-nested-calls-share-time-budgets.sdp.md +++ b/design/specs/facts/f19-nested-calls-share-time-budgets.sdp.md @@ -18,7 +18,7 @@ A nested or component call runs through an asynchronous system call of the pinne ### Open questions -- [non-blocking] The public package declares no duration for the system-operation budget. The local refusal near fifteen seconds is a local backend's observation, not a hosted limit. The examples exercise mutations; query-only call trees and how execution time is counted across child functions that compute are not measured (F19, Probe 9, Probe 11) +- [non-blocking #nestedCallTimeBudget] The public package declares no duration for the system-operation budget. The local refusal near fifteen seconds is a local backend's observation, not a hosted limit. The examples exercise mutations; query-only call trees and how execution time is counted across child functions that compute are not measured (F19, Probe 9, Probe 11) ## Constraints diff --git a/design/specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md b/design/specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md index eadc3d5..9377506 100644 --- a/design/specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md +++ b/design/specs/facts/f20-pagination-checks-bytes-after-reading.sdp.md @@ -18,7 +18,7 @@ F20 · Status: probed · Doc status: not in the doc's ledger · Decisions: D8, D ### Open questions -- [non-blocking] The bound applies to a plain index stream. Filtered, joined or mapped streams may charge reads whose rows are not retained, and the examples do not establish an overshoot bound for those compositions. A hosted deployment is not measured (F20, Probe 10) +- [non-blocking #paginationReadOvershoot] The bound applies to a plain index stream. Filtered, joined or mapped streams may charge reads whose rows are not retained, and the examples do not establish an overshoot bound for those compositions. A hosted deployment is not measured (F20, Probe 10) ## Constraints diff --git a/design/specs/facts/probe-plan.sdp.md b/design/specs/facts/probe-plan.sdp.md index 704be61..a8cc7a0 100644 --- a/design/specs/facts/probe-plan.sdp.md +++ b/design/specs/facts/probe-plan.sdp.md @@ -41,12 +41,12 @@ The probes are not the first experiment. The experiment builds Layers 0 to 2 and ### Open questions -- [non-blocking] Probe 1 ran on 2026-10-01: a closed client leaves its mutation executed once or not at all, a backend restart leaves it executed once, and the HTTP client does not retry; whether callers of `ConvexHttpClient` must supply a request key is D6's question for the owner (Probe 1, D6) -- [non-blocking] Probe 3 ran on 2026-10-01 for latency on a local backend; a local backend has no function-call quota, so that half is the hosted example `spec:facts.f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls`, which only a hosted deployment can run (Probe 3, F4, D2, D8, E-59) -- [non-blocking] Probe 5 ran on 2026-10-01: a parent query over a component query stays reactive, pages pinned by their end cursors stay contiguous, and a capped page crosses the boundary as `SplitRequired`; the `convex-helpers/react` hook then lost rows, and slice S2 decides how a context list is capped before it builds one (Probe 5, F15, S4, D8) -- [non-blocking] Probe 6 records native backend evidence on the pins named by F17: a row race, cancel and resume, thrown-batch rollback, restart, table scope and a parent batch returning a context cursor to the migrations driver; hosted quotas and sustained contention are not run. (Probe 6, F17, D9) -- [non-blocking] Probe 7 observes all five scheduler states, local CLI replacement into a fresh backend and in place, stored scheduler IDs, kept reactions, scheduled-argument limits and failed-function scan cost; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open before the decisions resting on those observations. (Probe 7, F12, F13, F16, D13, D19) -- [non-blocking] Extension E-16: the doc says each probe is one small test on a native backend and that a probed fact is one a native backend test showed, and does not say how a test that settles an unknown states what it expects or what follows when the backend answers otherwise; the option taken here: a probe is written as example Specs that verify its fact, each bound to its native test; an example's bound values are the expectation written before the first run; a first run that shows another value is a finding recorded on the fact, and the example is then bound to what that release does and says so; an example fails when its run did not reach the boundary it is about; a later run on a new release that shows another value is again a finding, and the test is not repaired to keep the old value; a size is recorded and not asserted, while a limit the backend enforces is bound as observed; and what a local backend cannot answer is named on the example and stays open on the fact; the owner confirms (E-16, Probes, Acceptance scenarios) +- [non-blocking #httpClientRequestKey] Probe 1 ran on 2026-10-01: a closed client leaves its mutation executed once or not at all, a backend restart leaves it executed once, and the HTTP client does not retry; whether callers of `ConvexHttpClient` must supply a request key is D6's question for the owner (Probe 1, D6) +- [non-blocking #hostedContextCallQuota] Probe 3 ran on 2026-10-01 for latency on a local backend; a local backend has no function-call quota, so that half is the hosted example `spec:facts.f04-nested-calls-cost-more-than-helpers.probe-3-hosted-function-calls`, which only a hosted deployment can run (Probe 3, F4, D2, D8, E-59) +- [non-blocking #contextListSplit] Probe 5 ran on 2026-10-01: a parent query over a component query stays reactive, pages pinned by their end cursors stay contiguous, and a capped page crosses the boundary as `SplitRequired`; the `convex-helpers/react` hook then lost rows, and slice S2 decides how a context list is capped before it builds one (Probe 5, F15, S4, D8) +- [non-blocking #rebuildNativeCoverage] Probe 6 records native backend evidence on the pins named by F17: a row race, cancel and resume, thrown-batch rollback, restart, table scope and a parent batch returning a context cursor to the migrations driver; hosted quotas and sustained contention are not run. (Probe 6, F17, D9) +- [non-blocking #schedulerRestoreCoverage] Probe 7 observes all five scheduler states, local CLI replacement into a fresh backend and in place, stored scheduler IDs, kept reactions, scheduled-argument limits and failed-function scan cost; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open before the decisions resting on those observations. (Probe 7, F12, F13, F16, D13, D19) +- [non-blocking #probeExpectationContract] Extension E-16: the doc says each probe is one small test on a native backend and that a probed fact is one a native backend test showed, and does not say how a test that settles an unknown states what it expects or what follows when the backend answers otherwise; the option taken here: a probe is written as example Specs that verify its fact, each bound to its native test; an example's bound values are the expectation written before the first run; a first run that shows another value is a finding recorded on the fact, and the example is then bound to what that release does and says so; an example fails when its run did not reach the boundary it is about; a later run on a new release that shows another value is again a finding, and the test is not repaired to keep the old value; a size is recorded and not asserted, while a limit the backend enforces is bound as observed; and what a local backend cannot answer is named on the example and stays open on the fact; the owner confirms (E-16, Probes, Acceptance scenarios) ## Workflow diff --git a/design/specs/kernel/decider-contract.sdp.md b/design/specs/kernel/decider-contract.sdp.md index 8f9dccd..ad6c164 100644 --- a/design/specs/kernel/decider-contract.sdp.md +++ b/design/specs/kernel/decider-contract.sdp.md @@ -28,7 +28,7 @@ The generic parameters are the state `S`, the command `C`, the domain event `E` ### Open questions -- [non-blocking] Extension E-20: the concrete generic parameters, the fields of `DecisionContext`, the `DomainEvent` shape, the at-least-one-event rule and the helper shapes are this design's; the owner confirms them before code names them (D3, E-20) +- [non-blocking #deciderEventContract] Extension E-20: the concrete generic parameters, the fields of `DecisionContext`, the `DomainEvent` shape, the at-least-one-event rule and the helper shapes are this design's; the owner confirms them before code names them (D3, E-20) ## Contract diff --git a/design/specs/kernel/domain-kernel.sdp.md b/design/specs/kernel/domain-kernel.sdp.md index b6b7a59..7d2b936 100644 --- a/design/specs/kernel/domain-kernel.sdp.md +++ b/design/specs/kernel/domain-kernel.sdp.md @@ -34,8 +34,8 @@ Its boundary is the decider contract. Above it sits the context component of Lay ### Open questions -- [non-blocking] Extension E-20: the doc gives `decide(state, command, context)`, `fold(evolve, state, newEvents)` and the purity rule, and nothing about the concrete generic parameters, the fields of the decision context, the shape of a domain event, or the state-machine and invariant helpers; the decider contract fixes them and the owner confirms them before code names them (D3, E-20) -- [non-blocking] Extension E-1: the doc leaves open whether the interface gains `initial()` or `evolve` accepts an empty state; the initial-state decision rules for `initial()` provisionally (D3, E-1) +- [non-blocking #deciderStateContract] Extension E-20: the doc gives `decide(state, command, context)`, `fold(evolve, state, newEvents)` and the purity rule, and nothing about the concrete generic parameters, the fields of the decision context, the shape of a domain event, or the state-machine and invariant helpers; the decider contract fixes them and the owner confirms them before code names them (D3, E-20) +- [non-blocking #initialStateChoice] Extension E-1: the doc leaves open whether the interface gains `initial()` or `evolve` accepts an empty state; the initial-state decision rules for `initial()` provisionally (D3, E-1) ## Behavior diff --git a/design/specs/kernel/initial-state.sdp.md b/design/specs/kernel/initial-state.sdp.md index d37f433..04faa39 100644 --- a/design/specs/kernel/initial-state.sdp.md +++ b/design/specs/kernel/initial-state.sdp.md @@ -21,7 +21,7 @@ The v0.1 interface had no initial state, so a rebuild from the creation event ha ### Open questions -- [non-blocking] Extension E-1: the doc offers `initial()` or an `evolve` that accepts an empty state and rules on neither; this Spec takes `initial()` provisionally and the owner confirms or reverses it (D3, E-1) +- [non-blocking #initialStateChoice] Extension E-1: the doc offers `initial()` or an `evolve` that accepts an empty state and rules on neither; this Spec takes `initial()` provisionally and the owner confirms or reverses it (D3, E-1) ## Decision diff --git a/design/specs/kernel/outcome-model.sdp.md b/design/specs/kernel/outcome-model.sdp.md index eaea3ac..284c89a 100644 --- a/design/specs/kernel/outcome-model.sdp.md +++ b/design/specs/kernel/outcome-model.sdp.md @@ -32,7 +32,7 @@ The kernel defines the shapes and does not define wire codes. The closed error-c ### Open questions -- [non-blocking] Extension E-21: the doc names the four outcomes and their commit behavior but not their TypeScript shape; this Spec fixes `Outcome`, `Rejection`, `CommittedOutcome`, `AffectedRef`, the rule that a committed outcome carries at least one event, and the three rejection codes the adapter reserves, `staleVersion`, `operationTooLarge` and `entityExists`, the last being the adapter's answer to a create planned at expected version 0 whose stream already exists, which is the uniqueness check D6 names for a client-generated entity ID; the owner confirms the shapes or renames the reserved codes before code names them (D4, D6, E-21) +- [non-blocking #outcomeRejectionContract] Extension E-21: the doc names the four outcomes and their commit behavior but not their TypeScript shape; this Spec fixes `Outcome`, `Rejection`, `CommittedOutcome`, `AffectedRef`, the rule that a committed outcome carries at least one event, and the three rejection codes the adapter reserves, `staleVersion`, `operationTooLarge` and `entityExists`, the last being the adapter's answer to a create planned at expected version 0 whose stream already exists, which is the uniqueness check D6 names for a client-generated entity ID; the owner confirms the shapes or renames the reserved codes before code names them (D4, D6, E-21) ## Rule diff --git a/design/specs/kernel/state-document-mapping.sdp.md b/design/specs/kernel/state-document-mapping.sdp.md index 2c998ff..df66956 100644 --- a/design/specs/kernel/state-document-mapping.sdp.md +++ b/design/specs/kernel/state-document-mapping.sdp.md @@ -24,7 +24,7 @@ Folding is simple when a stream's state is one document. When state spans severa ### Open questions -- [non-blocking] Extension E-2: the doc prefers one document per stream within a size budget and names no budget; this Spec sets `budgetBytes` as one number per stream type meaning the whole stream, the single document or the head and every part together, at most 256 KiB for the single mapping and at most 512 KiB over at most 32 parts for the derived mapping, provisionally, lets a stream type declare a smaller `budgetBytes` on its mapping, caps the derived budget at half the document ceiling because a baseline event holds the whole migrated state in one document, and derives every bound on streams per call, list page, backfill batch and baseline batch from that budget so that the 16 MiB read ceiling binds in bytes and not only in documents; the owner confirms the numbers (D3, D5, OQ3, F13, E-2, E-25) +- [non-blocking #streamStateBudget] Extension E-2: the doc prefers one document per stream within a size budget and names no budget; this Spec sets `budgetBytes` as one number per stream type meaning the whole stream, the single document or the head and every part together, at most 256 KiB for the single mapping and at most 512 KiB over at most 32 parts for the derived mapping, provisionally, lets a stream type declare a smaller `budgetBytes` on its mapping, caps the derived budget at half the document ceiling because a baseline event holds the whole migrated state in one document, and derives every bound on streams per call, list page, backfill batch and baseline batch from that budget so that the 16 MiB read ceiling binds in bytes and not only in documents; the owner confirms the numbers (D3, D5, OQ3, F13, E-2, E-25) ## Decision diff --git a/design/specs/obligations/do-nothing-check.sdp.md b/design/specs/obligations/do-nothing-check.sdp.md index 41fc9b9..1913b3c 100644 --- a/design/specs/obligations/do-nothing-check.sdp.md +++ b/design/specs/obligations/do-nothing-check.sdp.md @@ -30,7 +30,7 @@ Before the obligation module is built, the do-nothing option is checked against ### Open questions -- [non-blocking] Probe 7 observes a plain scheduled local reaction and all five states on the pinned native backend; a failed-function scan counts zero documents and bytes but exhausts the 4096-read allowance at 4092 total rows; fresh CLI replacement leaves no scheduler intent, while replacement in place preserves later intent outside restored data; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open, and the owner confirmed D13 on these observations (Probe 7, F12, F16, F13) +- [non-blocking #schedulerObligationEvidence] Probe 7 observes a plain scheduled local reaction and all five states on the pinned native backend; a failed-function scan counts zero documents and bytes but exhausts the 4096-read allowance at 4092 total rows; fresh CLI replacement leaves no scheduler intent, while replacement in place preserves later intent outside restored data; seven-day expiry, hosted dashboard restore, Workpool and Workflow remain open, and the owner confirmed D13 on these observations (Probe 7, F12, F16, F13) ## Decision diff --git a/design/specs/obligations/fan-out-and-chains.sdp.md b/design/specs/obligations/fan-out-and-chains.sdp.md index b99266b..980f3b3 100644 --- a/design/specs/obligations/fan-out-and-chains.sdp.md +++ b/design/specs/obligations/fan-out-and-chains.sdp.md @@ -29,7 +29,7 @@ A command with a small static set of reactions creates their obligations in its ### Open questions -- [non-blocking] Extension E-54: the doc bounds neither static fan-out, nor the dynamic fan-out batch, nor the chain depth, and it says where a static subscription's obligations are created without saying where the subscription is declared; this design allows 16 obligations per publishing transaction, 500 derived obligations per fan-out attempt with one child fan-out obligation per further page, and a causation depth of 8, and it reads the static subscription as the `createObligation` calls in the command's executor body, reviewed at build time and counted at creation, rather than a reactions field on the command declaration, because D12 lists no such field and the declaration is Layer 1 machinery that imports nothing from this family; the namespace a derived command carries, `worker`, is E-6's ruling on `spec:command.actor-and-scope`, and the path by which its causation reaches the pipeline, the internal entry's `causedBy` argument, is E-31's on `spec:command.command-pipeline`; the owner confirms the numbers and the reading (D12, D13, F13, Thesis, E-6, E-31, E-54) +- [non-blocking #obligationFanOutBounds] Extension E-54: the doc bounds neither static fan-out, nor the dynamic fan-out batch, nor the chain depth, and it says where a static subscription's obligations are created without saying where the subscription is declared; this design allows 16 obligations per publishing transaction, 500 derived obligations per fan-out attempt with one child fan-out obligation per further page, and a causation depth of 8, and it reads the static subscription as the `createObligation` calls in the command's executor body, reviewed at build time and counted at creation, rather than a reactions field on the command declaration, because D12 lists no such field and the declaration is Layer 1 machinery that imports nothing from this family; the namespace a derived command carries, `worker`, is E-6's ruling on `spec:command.actor-and-scope`, and the path by which its causation reaches the pipeline, the internal entry's `causedBy` argument, is E-31's on `spec:command.command-pipeline`; the owner confirms the numbers and the reading (D12, D13, F13, Thesis, E-6, E-31, E-54) ## Rule diff --git a/design/specs/obligations/lifecycle-transitions.sdp.md b/design/specs/obligations/lifecycle-transitions.sdp.md index f8c9ddc..1720df8 100644 --- a/design/specs/obligations/lifecycle-transitions.sdp.md +++ b/design/specs/obligations/lifecycle-transitions.sdp.md @@ -22,8 +22,8 @@ D13 gives six states and their meaning. It does not list which transitions exist ### Open questions -- [non-blocking] Extension E-10: the doc names the six states but not the allowed transitions or their causes; this Spec lists them and refuses every other transition (D13, E-10) -- [non-blocking] Extension E-51: the doc says a known business rejection settles the business result but not which state it settles to; this design reads a body's business failure, which commits like a success, as succeeded with evidence naming its event, and a thrown rejection, which commits nothing, as cancelled with the settled result as `businessRejection` evidence, because cancelled means the effect will not happen and no call is in flight; the owner may prefer a seventh state (D13, D4, E-51) +- [non-blocking #obligationStateTransitions] Extension E-10: the doc names the six states but not the allowed transitions or their causes; this Spec lists them and refuses every other transition (D13, E-10) +- [non-blocking #obligationBusinessRejection] Extension E-51: the doc says a known business rejection settles the business result but not which state it settles to; this design reads a body's business failure, which commits like a success, as succeeded with evidence naming its event, and a thrown rejection, which commits nothing, as cancelled with the settled result as `businessRejection` evidence, because cancelled means the effect will not happen and no call is in flight; the owner may prefer a seventh state (D13, D4, E-51) ## Rule diff --git a/design/specs/obligations/local-reaction-wrapper.sdp.md b/design/specs/obligations/local-reaction-wrapper.sdp.md index e727d4f..7205ca5 100644 --- a/design/specs/obligations/local-reaction-wrapper.sdp.md +++ b/design/specs/obligations/local-reaction-wrapper.sdp.md @@ -34,7 +34,7 @@ The wrapper is the scheduled mutation that carries out one attempt of a local re ### Open questions -- [non-blocking] Extension E-51: the doc does not give the backoff schedule, the default attempt budget, the default deadline or what a maintenance refusal does to the attempt count; this design uses exponential backoff from 1 second with base 2 capped at 1 hour, 8 attempts by default and no deadline by default, all per handler in the registry, and treats a transient `writePaused` or `capacity` refusal as a delay of the same attempt after `retryAfterMs` or 60 seconds; every number is a provisional default until the first experiment (D13, E-51, Decision method rule 4) +- [non-blocking #obligationAttemptBackoff] Extension E-51: the doc does not give the backoff schedule, the default attempt budget, the default deadline or what a maintenance refusal does to the attempt count; this design uses exponential backoff from 1 second with base 2 capped at 1 hour, 8 attempts by default and no deadline by default, all per handler in the registry, and treats a transient `writePaused` or `capacity` refusal as a delay of the same attempt after `retryAfterMs` or 60 seconds; every number is a provisional default until the first experiment (D13, E-51, Decision method rule 4) ## Contract diff --git a/design/specs/obligations/obligation-module.sdp.md b/design/specs/obligations/obligation-module.sdp.md index 5e08552..90de3a3 100644 --- a/design/specs/obligations/obligation-module.sdp.md +++ b/design/specs/obligations/obligation-module.sdp.md @@ -50,10 +50,10 @@ The module lives in the parent as a shared library and two parent tables, becaus ### Open questions -- [non-blocking] Probe 7 observes local scheduler states, short retention, both CLI replacement modes, scheduler-ID validation and the failed-function scan boundary; a stored `v.id("_scheduled_functions")` can validate after fresh replacement while resolving to no row, so it is a typed reference and not proof of a live dispatch; seven-day expiry, hosted restore, Workpool and Workflow remain open, and the owner confirmed the do-nothing check's rejection on these observations (Probe 7, D13, F12, F16) -- [non-blocking] Extension E-50: the doc does not say where the module lives; this design places it in the parent as a library plus the `obligations` and `obligationRepairs` tables with a static handler registry keyed by handler key and version, because the wrapper runs parent-side bodies as nested mutations and the record reuses the parent's actor and scope types; the alternative, a Convex component driven by function handles like Workpool, is not pre-empted (D13, D11, E-50) -- [non-blocking] OQ1 dependency: OQ1 is answered with a component for every context, so a local reaction's body runs as a nested mutation; if a measured workload reopens it, only the bodies change shape (OQ1, Probe 3) -- [non-blocking] Decision method rule 4: the doc says Layers 0 to 2 get full detail, the first experiment runs, and Layer 3 is written from what it showed; this module and its children are written now, at the depth D13 to D15 give, with numeric defaults the doc does not give, the backoff and attempt budget of E-51, the sweeper's cadence and bounds of E-52, the fan-out bounds of E-54, the retention horizons of E-55, the lease and settle repeats of E-58 and the index set of E-57; every such number is a provisional default until the experiment's measurements and Probe 7 confirm or replace it, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D13, Probe 7, E-51, E-52, E-54, E-55, E-57, E-58) +- [non-blocking #obligationDispatchEvidence] Probe 7 observes local scheduler states, short retention, both CLI replacement modes, scheduler-ID validation and the failed-function scan boundary; a stored `v.id("_scheduled_functions")` can validate after fresh replacement while resolving to no row, so it is a typed reference and not proof of a live dispatch; seven-day expiry, hosted restore, Workpool and Workflow remain open, and the owner confirmed the do-nothing check's rejection on these observations (Probe 7, D13, F12, F16) +- [non-blocking #parentObligationPlacement] Extension E-50: the doc does not say where the module lives; this design places it in the parent as a library plus the `obligations` and `obligationRepairs` tables with a static handler registry keyed by handler key and version, because the wrapper runs parent-side bodies as nested mutations and the record reuses the parent's actor and scope types; the alternative, a Convex component driven by function handles like Workpool, is not pre-empted (D13, D11, E-50) +- [non-blocking #contextReactionIsolation] OQ1 dependency: OQ1 is answered with a component for every context, so a local reaction's body runs as a nested mutation; if a measured workload reopens it, only the bodies change shape (OQ1, Probe 3) +- [non-blocking #obligationDefaultBounds] Decision method rule 4: the doc says Layers 0 to 2 get full detail, the first experiment runs, and Layer 3 is written from what it showed; this module and its children are written now, at the depth D13 to D15 give, with numeric defaults the doc does not give, the backoff and attempt budget of E-51, the sweeper's cadence and bounds of E-52, the fan-out bounds of E-54, the retention horizons of E-55, the lease and settle repeats of E-58 and the index set of E-57; every such number is a provisional default until the experiment's measurements and Probe 7 confirm or replace it, and the owner confirms that writing the structure now does not pre-empt the experiment (Decision method rule 4, D13, Probe 7, E-51, E-52, E-54, E-55, E-57, E-58) ## Behavior diff --git a/design/specs/obligations/operator-operations.sdp.md b/design/specs/obligations/operator-operations.sdp.md index 4de0a95..bdcda88 100644 --- a/design/specs/obligations/operator-operations.sdp.md +++ b/design/specs/obligations/operator-operations.sdp.md @@ -30,7 +30,7 @@ The module ships five scoped operations: inspect, retry, reconcile, cancel and a ### Open questions -- [non-blocking] Extension E-53: the doc names the five operations and the repair record's fields but not their signatures or their transaction shape; this design makes them authorized parent mutations and queries that write the repair in the same transaction, refuses cancel and reconcile while a lease is live, and lets reconcile either mint a reconcile attempt that the claim mutation of `spec:effects.claim-call-settle` dispatches, or accept supplied provider evidence from needs attention (D13, D14, E-53) +- [non-blocking #operatorObligationRepair] Extension E-53: the doc names the five operations and the repair record's fields but not their signatures or their transaction shape; this design makes them authorized parent mutations and queries that write the repair in the same transaction, refuses cancel and reconcile while a lease is live, and lets reconcile either mint a reconcile attempt that the claim mutation of `spec:effects.claim-call-settle` dispatches, or accept supplied provider evidence from needs attention (D13, D14, E-53) ## Contract diff --git a/design/specs/obligations/record-contract.sdp.md b/design/specs/obligations/record-contract.sdp.md index f040a76..3181a57 100644 --- a/design/specs/obligations/record-contract.sdp.md +++ b/design/specs/obligations/record-contract.sdp.md @@ -25,8 +25,8 @@ The `obligations` table is the one record of promised deferred work, and `obliga ### Open questions -- [non-blocking] Extension E-10: the doc lists the fields and the six states but not the concrete table, the index set, the payload bound or the evidence shapes; this Spec pins them, with the inline payload bounded at 64 KiB and completion evidence as a closed union; the doc names four meanings of needs attention, exhausted, uncertain, authority revoked and unsupported version, and this design adds two reasons the doc describes without naming, `recoveryFailing` for the sweeper's escalation when recovery itself keeps failing and `chainBound` for a reaction refused at the chain's depth bound, which the owner confirms (D13, E-10, E-52, E-54) -- [non-blocking] Extension E-57: the sweeper and the retention batch are deployment-wide, so `by_status_next_attempt`, `by_status_lease_expiry` and `by_status_settled_at` lead with `status` rather than `tenantId`; every index a tenant-scoped query reads still leads with `tenantId`, and tenant fairness in the sweeper's scan order stays a policy to add when one tenant can starve another (D13, Law 11, E-57) +- [non-blocking #obligationCompletionEvidence] Extension E-10: the doc lists the fields and the six states but not the concrete table, the index set, the payload bound or the evidence shapes; this Spec pins them, with the inline payload bounded at 64 KiB and completion evidence as a closed union; the doc names four meanings of needs attention, exhausted, uncertain, authority revoked and unsupported version, and this design adds two reasons the doc describes without naming, `recoveryFailing` for the sweeper's escalation when recovery itself keeps failing and `chainBound` for a reaction refused at the chain's depth bound, which the owner confirms (D13, E-10, E-52, E-54) +- [non-blocking #obligationTenantIndexes] Extension E-57: the sweeper and the retention batch are deployment-wide, so `by_status_next_attempt`, `by_status_lease_expiry` and `by_status_settled_at` lead with `status` rather than `tenantId`; every index a tenant-scoped query reads still leads with `tenantId`, and tenant fairness in the sweeper's scan order stays a policy to add when one tenant can starve another (D13, Law 11, E-57) ## Contract diff --git a/design/specs/obligations/retention-and-restore.sdp.md b/design/specs/obligations/retention-and-restore.sdp.md index c2bd259..ccc4de0 100644 --- a/design/specs/obligations/retention-and-restore.sdp.md +++ b/design/specs/obligations/retention-and-restore.sdp.md @@ -31,9 +31,9 @@ Retention and restore are the two operations that make the obligation table earn ### Open questions -- [non-blocking] Extension E-55: the doc gives no retention horizon, compaction rule or batch bound; this design keeps a completed obligation for the longest repetition policy validity in the module and never less than 30 days, compacts `lastError.message` and `lateEvidence` after 7 days into a count, and deletes at most 500 rows per retention run (D19, F13, E-55) -- [non-blocking] Extension E-56: the doc says restore starts with dispatch off but not how the switch works; this design reads a deployment environment variable in the parent's claim mutation only, where a call-mode claim defers its attempt without counting it and a reconcile-mode claim proceeds, sets it before the restore, adds a cursor-driven `rebuildSchedules` operation for a backlog larger than the sweeper's batch, and orders the two switches: `OBLIGATIONS_DISPATCH` goes off before the backup archive is restored and on last, and `rebuildSchedules` refuses to run while `MAINTENANCE_MODE` is `restore`, so it runs only after `spec:application.restore` has accepted the run and reopened writers (D19, F12, E-42, E-56) -- [non-blocking] Probe 7 pending: what a restore leaves of Workpool and Workflow state decides whether the rebuild covers only the module's own dispatches or also passed-ownership work (Probe 7, F12, D19) +- [non-blocking #obligationRetentionBounds] Extension E-55: the doc gives no retention horizon, compaction rule or batch bound; this design keeps a completed obligation for the longest repetition policy validity in the module and never less than 30 days, compacts `lastError.message` and `lateEvidence` after 7 days into a count, and deletes at most 500 rows per retention run (D19, F13, E-55) +- [non-blocking #restoreDispatchSwitch] Extension E-56: the doc says restore starts with dispatch off but not how the switch works; this design reads a deployment environment variable in the parent's claim mutation only, where a call-mode claim defers its attempt without counting it and a reconcile-mode claim proceeds, sets it before the restore, adds a cursor-driven `rebuildSchedules` operation for a backlog larger than the sweeper's batch, and orders the two switches: `OBLIGATIONS_DISPATCH` goes off before the backup archive is restored and on last, and `rebuildSchedules` refuses to run while `MAINTENANCE_MODE` is `restore`, so it runs only after `spec:application.restore` has accepted the run and reopened writers (D19, F12, E-42, E-56) +- [non-blocking #restoreDeferredWorkCoverage] Probe 7 pending: what a restore leaves of Workpool and Workflow state decides whether the rebuild covers only the module's own dispatches or also passed-ownership work (Probe 7, F12, D19) ## Rule diff --git a/design/specs/obligations/sweeper.sdp.md b/design/specs/obligations/sweeper.sdp.md index 70cb0a0..b385a96 100644 --- a/design/specs/obligations/sweeper.sdp.md +++ b/design/specs/obligations/sweeper.sdp.md @@ -34,9 +34,9 @@ One run costs one nested mutation per recovered candidate and per expired lease, ### Open questions -- [non-blocking] Extension E-52: the doc says the sweeper is batched and bounded but gives no cadence, batch bound, grace period, rearm bound or time guard; this design runs every 60 seconds, examines at most 100 candidates and 100 expired leases per scan, stops a run after 500 ms of elapsed time by `performance.now()`, waits a grace of 120 seconds past the next attempt time, allows 5 rearms, and isolates each candidate in a nested mutation; the numbers are tested against the pinned Convex version (D13, D19, E-52) -- [non-blocking] Probe 3 pending: the candidate bound of 100 is provisional; it assumes a nested `ctx.runMutation` costs a few milliseconds, which F4 records as unknown, so the bound is reset from the probe's measured cost so that a full scan of 200 nested calls fits inside the elapsed guard, and until then the guard rather than the count is what keeps a run under the mutation timeout (Probe 3, F4, F13, E-52) -- [non-blocking] Extension E-57: the sweeper scans deployment-wide by status; tenant fairness in its order is a policy to add when one tenant can starve another (D13, E-57) +- [non-blocking #obligationSweepBounds] Extension E-52: the doc says the sweeper is batched and bounded but gives no cadence, batch bound, grace period, rearm bound or time guard; this design runs every 60 seconds, examines at most 100 candidates and 100 expired leases per scan, stops a run after 500 ms of elapsed time by `performance.now()`, waits a grace of 120 seconds past the next attempt time, allows 5 rearms, and isolates each candidate in a nested mutation; the numbers are tested against the pinned Convex version (D13, D19, E-52) +- [non-blocking #sweepContextCallCost] Probe 3 pending: the candidate bound of 100 is provisional; it assumes a nested `ctx.runMutation` costs a few milliseconds, which F4 records as unknown, so the bound is reset from the probe's measured cost so that a full scan of 200 nested calls fits inside the elapsed guard, and until then the guard rather than the count is what keeps a run under the mutation timeout (Probe 3, F4, F13, E-52) +- [non-blocking #tenantSweepFairness] Extension E-57: the sweeper scans deployment-wide by status; tenant fairness in its order is a policy to add when one tenant can starve another (D13, E-57) ## Contract diff --git a/design/specs/operations/baseline-operations.sdp.md b/design/specs/operations/baseline-operations.sdp.md index 8989343..0130af6 100644 --- a/design/specs/operations/baseline-operations.sdp.md +++ b/design/specs/operations/baseline-operations.sdp.md @@ -43,8 +43,8 @@ Security, bounded resource use, useful errors and tests start in Layer 1, so non ### Open questions -- [non-blocking] Extension E-43: the doc says audit is written inside the transaction and fails closed, that diagnostics hold no raw prompts, credentials or unbounded payloads, and that personal data sits behind references; it does not give the audit record, the diagnostic record or the reference. The option taken here: an `auditRecords` table with indexes by operation, subject and request key, whose every field has a stated source in the command, an `operatorAudit` table for the gate changes an operator entry makes, which name no tenant when the scope is the whole deployment, a bounded diagnostic line for every execution of a command entry's handler, whatever it ends in, written through a sink the declaration may name by a function that never throws, with no duration, because the backend records the time of each execution, and a `personalData` table that events point at by reference. The do-nothing option is Convex's own audit logging, which the pinned `convex` package declares as `audit(body)`; it is not taken as the record, because an entry in a log outside the database is not read by the operator's queries by operation, subject and request key, and whether such an entry proves a commit is not shown by the pinned package; a deployment may add it beside the tables as an export (E-43, D19) -- [non-blocking] The retention and deletion policy's content is the owner's: which historical claims survive deletion and how long receipts, audit records and diagnostics are kept; the design gives the hooks and states no periods (D19) +- [non-blocking #commandAuditDiagnostics] Extension E-43: the doc says audit is written inside the transaction and fails closed, that diagnostics hold no raw prompts, credentials or unbounded payloads, and that personal data sits behind references; it does not give the audit record, the diagnostic record or the reference. The option taken here: an `auditRecords` table with indexes by operation, subject and request key, whose every field has a stated source in the command, an `operatorAudit` table for the gate changes an operator entry makes, which name no tenant when the scope is the whole deployment, a bounded diagnostic line for every execution of a command entry's handler, whatever it ends in, written through a sink the declaration may name by a function that never throws, with no duration, because the backend records the time of each execution, and a `personalData` table that events point at by reference. The do-nothing option is Convex's own audit logging, which the pinned `convex` package declares as `audit(body)`; it is not taken as the record, because an entry in a log outside the database is not read by the operator's queries by operation, subject and request key, and whether such an entry proves a commit is not shown by the pinned package; a deployment may add it beside the tables as an export (E-43, D19) +- [non-blocking #historicalClaimRetention] The retention and deletion policy's content is the owner's: which historical claims survive deletion and how long receipts, audit records and diagnostics are kept; the design gives the hooks and states no periods (D19) ## Rule diff --git a/design/specs/platform/acceptance-contract.sdp.md b/design/specs/platform/acceptance-contract.sdp.md index 53ac1ce..289709e 100644 --- a/design/specs/platform/acceptance-contract.sdp.md +++ b/design/specs/platform/acceptance-contract.sdp.md @@ -21,8 +21,8 @@ The doc's acceptance table is the contract. It lists forty-three scenario rows b ### Open questions -- [non-blocking] Extension E-14: the doc's four tiers, domain, simulator, native and end to end, name no compile-time check, while Sc L2-4's pass condition is a build, type or registration check that fails before any traffic; the option taken here is the compiled tier, a compile with no backend of a typed caller that states the change, which asserts that `tsc` refuses it, run with every type check and recorded like any run, and this corpus reads the doc's end to end tier as the native backend tier on the production composition; the alternative, folding it into the native backend tier as a compile step that precedes the native run, was not taken because a native run needs a backend and the check needs none; the owner confirms (E-14, Sc L2-4, Acceptance scenarios) -- [non-blocking] Extension E-17: the doc says that a link between source and test is not a passing run and that the first experiment passes when every Layer 0, 1 and 2 scenario passes, and it does not say how a pass of the whole is established from runs; the option taken here is the acceptance check: the required scenarios are generated from the graph, one per example of a required row with its tier, composition and verifiers, and read against one run's record, so that a scenario with no verifier, with no result or with a result other than passed keeps the whole from passing; the alternative, a list of scenarios and verifiers kept by hand beside the tests, was not taken because the graph already holds each example's row, tier, composition and verifiers; the owner confirms (E-17, Acceptance scenarios, First experiment) +- [non-blocking #compiledAcceptanceTier] Extension E-14: the doc's four tiers, domain, simulator, native and end to end, name no compile-time check, while Sc L2-4's pass condition is a build, type or registration check that fails before any traffic; the option taken here is the compiled tier, a compile with no backend of a typed caller that states the change, which asserts that `tsc` refuses it, run with every type check and recorded like any run, and this corpus reads the doc's end to end tier as the native backend tier on the production composition; the alternative, folding it into the native backend tier as a compile step that precedes the native run, was not taken because a native run needs a backend and the check needs none; the owner confirms (E-14, Sc L2-4, Acceptance scenarios) +- [non-blocking #scenarioAcceptanceCheck] Extension E-17: the doc says that a link between source and test is not a passing run and that the first experiment passes when every Layer 0, 1 and 2 scenario passes, and it does not say how a pass of the whole is established from runs; the option taken here is the acceptance check: the required scenarios are generated from the graph, one per example of a required row with its tier, composition and verifiers, and read against one run's record, so that a scenario with no verifier, with no result or with a result other than passed keeps the whole from passing; the alternative, a list of scenarios and verifiers kept by hand beside the tests, was not taken because the graph already holds each example's row, tier, composition and verifiers; the owner confirms (E-17, Acceptance scenarios, First experiment) ## Rule diff --git a/design/specs/platform/native-harness.sdp.md b/design/specs/platform/native-harness.sdp.md index 666dc86..acc0b58 100644 --- a/design/specs/platform/native-harness.sdp.md +++ b/design/specs/platform/native-harness.sdp.md @@ -21,10 +21,10 @@ The doc says that native tests prove component and nested-mutation behavior, sch ### Open questions -- [non-blocking] Extension E-13: the doc says native acceptance runs with production authority and a disposable backend per test and does not say how a test obtains a signed identity, which a production issuer cannot mint for a throwaway backend; the option taken here is a fixture issuer: a composition that runs natively reads its issuer, application ID and key set from the deployment's environment variables, the harness sets the key set to a data URI whose private key it holds, and each caller under test is an ordinary client carrying a token the harness signs; the option first taken, the backend's admin key acting as an identity, was dropped because such a caller passes Convex's visibility check for internal functions, which `spec:platform.native-harness.admin-key-acting-as-identity-reaches-internal-function` shows; this reading reaches into production, because running the production composition natively with no changed file means the example application's `auth.config.ts` is a `customJwt` provider whose trust root is whatever the deployment's environment names, and a provider that fetches its keys from an issuer's own endpoint cannot be run on a disposable backend this way; the owner rules on both halves, the test identity and the production provider (E-13, S13, Sc L2-9, D11) -- [non-blocking] Extension E-15: the doc does not say what the fixture app contains, how a fault enters a run, what a test may observe, or what a test controls on a backend that offers no clock and no scheduler switch; the option taken here is the rules below; two of them read the doc for the owner: the production-configuration run of Sc L2-9 is taken as the scenarios routed to the production composition, where the corpus earlier asked for the full Layer 0 to 2 suite on a release build, and evidence records that back a pass claim are kept in the repository; whether the durations Layer 3 pins become configuration, so that a test can outwait them, is left to Layer 3; and because the Convex CLI reads `convex.json` and `package.json` from its working directory, a composition is a name, a project directory and a functions directory, the production composition's project directory is `example/` with a `package.json` that links to the repository's one, and both compositions' generated files are committed; the owner has not ruled on the layout (E-15, Acceptance scenarios, Sc L2-9) -- [non-blocking] Extension E-15: the design takes the fixture action `nonUiCaller:send`, which any authenticated client of the fixture composition may call to run any fixture command's internal entry under any namespace and actor kind, as the fixture's stand-in for trusted server code, kept out of the production composition; it is a provisional reading the owner rules, because within the fixture composition it lets a client do what `spec:command.tenancy-and-authority` refuses a client (E-15, D11, Sc L1-7) -- [non-blocking] Extension E-59: the doc's native tier is a test on a real backend, S13 names a local one, and Sc L2-9 is read as the local observation; the doc does not say whether a native test runs on a hosted deployment, where alone Probe 3 can read function-call quota and where F12 and F16 keep parts that only documentation states; the option taken here: the same harness, run record and compositions run natively on one hosted development deployment in a Convex team and project of their own, selected by process variables under a test configuration of its own, one run at a time, from a workflow whose failure fails no other check, with one development deploy key limited to the actions `deployKeyActions` lists; the alternatives were each developer's own deployment, which still needs one more key for the continuous integration, a preview deployment per run, which on the Free and Starter plans expires by default five days after it is created, before F16's seven-day window, and a fresh development deployment per run, which needs a project key, a credential the docs give total control over a project; the team, the project, the plan and the key are the owner's to provide (E-59, Sc L2-9, F4, F12, F16, Probe 3, Probe 7) +- [non-blocking #nativeCallerIdentity] Extension E-13: the doc says native acceptance runs with production authority and a disposable backend per test and does not say how a test obtains a signed identity, which a production issuer cannot mint for a throwaway backend; the option taken here is a fixture issuer: a composition that runs natively reads its issuer, application ID and key set from the deployment's environment variables, the harness sets the key set to a data URI whose private key it holds, and each caller under test is an ordinary client carrying a token the harness signs; the option first taken, the backend's admin key acting as an identity, was dropped because such a caller passes Convex's visibility check for internal functions, which `spec:platform.native-harness.admin-key-acting-as-identity-reaches-internal-function` shows; this reading reaches into production, because running the production composition natively with no changed file means the example application's `auth.config.ts` is a `customJwt` provider whose trust root is whatever the deployment's environment names, and a provider that fetches its keys from an issuer's own endpoint cannot be run on a disposable backend this way; the owner rules on both halves, the test identity and the production provider (E-13, S13, Sc L2-9, D11) +- [non-blocking #fixtureCompositionContract] Extension E-15: the doc does not say what the fixture app contains, how a fault enters a run, what a test may observe, or what a test controls on a backend that offers no clock and no scheduler switch; the option taken here is the rules below; two of them read the doc for the owner: the production-configuration run of Sc L2-9 is taken as the scenarios routed to the production composition, where the corpus earlier asked for the full Layer 0 to 2 suite on a release build, and evidence records that back a pass claim are kept in the repository; whether the durations Layer 3 pins become configuration, so that a test can outwait them, is left to Layer 3; and because the Convex CLI reads `convex.json` and `package.json` from its working directory, a composition is a name, a project directory and a functions directory, the production composition's project directory is `example/` with a `package.json` that links to the repository's one, and both compositions' generated files are committed; the owner has not ruled on the layout (E-15, Acceptance scenarios, Sc L2-9) +- [non-blocking #fixtureCallerNamespace] Extension E-15: the design takes the fixture action `nonUiCaller:send`, which any authenticated client of the fixture composition may call to run any fixture command's internal entry under any namespace and actor kind, as the fixture's stand-in for trusted server code, kept out of the production composition; it is a provisional reading the owner rules, because within the fixture composition it lets a client do what `spec:command.tenancy-and-authority` refuses a client (E-15, D11, Sc L1-7) +- [non-blocking #hostedNativeTarget] Extension E-59: the doc's native tier is a test on a real backend, S13 names a local one, and Sc L2-9 is read as the local observation; the doc does not say whether a native test runs on a hosted deployment, where alone Probe 3 can read function-call quota and where F12 and F16 keep parts that only documentation states; the option taken here: the same harness, run record and compositions run natively on one hosted development deployment in a Convex team and project of their own, selected by process variables under a test configuration of its own, one run at a time, from a workflow whose failure fails no other check, with one development deploy key limited to the actions `deployKeyActions` lists; the alternatives were each developer's own deployment, which still needs one more key for the continuous integration, a preview deployment per run, which on the Free and Starter plans expires by default five days after it is created, before F16's seven-day window, and a fresh development deployment per run, which needs a project key, a credential the docs give total control over a project; the team, the project, the plan and the key are the owner's to provide (E-59, Sc L2-9, F4, F12, F16, Probe 3, Probe 7) ## Rule diff --git a/design/specs/platform/transactional-domain-platform.sdp.md b/design/specs/platform/transactional-domain-platform.sdp.md index 825c253..d1eba31 100644 --- a/design/specs/platform/transactional-domain-platform.sdp.md +++ b/design/specs/platform/transactional-domain-platform.sdp.md @@ -41,7 +41,7 @@ Citations in this corpus use the tokens the plan fixes: D for a decision, Law fo ### Open questions -- [non-blocking] OQ5 asks whether the decisions move into SDP carriers; this corpus is that move, with ledger facts as constraint Specs, decisions as decision Specs that list the do-nothing option first, and scenarios as example Specs under the component that provides the capability, which is the form the doc's behavior rules with examples take here; the owner confirmed the mapping (OQ5) +- [non-blocking #decisionSpecMapping] OQ5 asks whether the decisions move into SDP carriers; this corpus is that move, with ledger facts as constraint Specs, decisions as decision Specs that list the do-nothing option first, and scenarios as example Specs under the component that provides the capability, which is the form the doc's behavior rules with examples take here; the owner confirmed the mapping (OQ5) ## Behavior diff --git a/design/specs/platform/vocabulary.sdp.md b/design/specs/platform/vocabulary.sdp.md index 939306d..dd124c5 100644 --- a/design/specs/platform/vocabulary.sdp.md +++ b/design/specs/platform/vocabulary.sdp.md @@ -22,8 +22,8 @@ The two clashes are answered: a row that proves an effect happened is completion ### Open questions -- [non-blocking] OQ6, receipt: this design uses receipt for the stored outcome of a command for idempotency, while today's glossary uses receipt for a row that proves an effect happened; the owner answered OQ6 with receipt for the stored outcome of a command and completion evidence for the row that proves an effect happened (OQ6, Vocabulary) -- [non-blocking] OQ6, generation: this design uses generation for a numbered build of a read model, while today's glossary uses it for the attempt number of watched work; the owner answered OQ6 with generation for a numbered build of a read model and attempt for one try at an obligation (OQ6, Vocabulary) +- [non-blocking #receiptCompletionEvidence] OQ6, receipt: this design uses receipt for the stored outcome of a command for idempotency, while today's glossary uses receipt for a row that proves an effect happened; the owner answered OQ6 with receipt for the stored outcome of a command and completion evidence for the row that proves an effect happened (OQ6, Vocabulary) +- [non-blocking #generationObligationAttempt] OQ6, generation: this design uses generation for a numbered build of a read model, while today's glossary uses it for the attempt number of watched work; the owner answered OQ6 with generation for a numbered build of a read model and attempt for one try at an obligation (OQ6, Vocabulary) ## Model diff --git a/design/specs/processes/approvals.sdp.md b/design/specs/processes/approvals.sdp.md index 79d784c..7fa6c09 100644 --- a/design/specs/processes/approvals.sdp.md +++ b/design/specs/processes/approvals.sdp.md @@ -19,7 +19,7 @@ An approval is a record that an authorized person approved one exact proposal: o ### Open questions -- [blocking] The approvals table, its indexes and the approval command's declaration are deferred to the build on the process trigger; the rules here are the promise the build must keep (D16, Decision method rule 4) +- [blocking #approvalCommandDeclaration] The approvals table, its indexes and the approval command's declaration are deferred to the build on the process trigger; the rules here are the promise the build must keep (D16, Decision method rule 4) ## Rule diff --git a/design/specs/processes/start-checkout-example.sdp.md b/design/specs/processes/start-checkout-example.sdp.md index db92ef0..2dea528 100644 --- a/design/specs/processes/start-checkout-example.sdp.md +++ b/design/specs/processes/start-checkout-example.sdp.md @@ -23,8 +23,8 @@ Layer 4 · Detail: deferred until the operation spans time, external systems or ### Open questions -- [blocking] The trigger has not fired; the workflow definition, the process record, the reservation's business expiry and the payment obligation's handler are deferred to the build until the operation spans time, external systems or human decisions (D16, Decision method rule 4) -- [non-blocking] Which of the three late-payment policies applies is a product decision the build records per deployment: reallocate, ask a person, or refund as a separately tracked operation (D16) +- [blocking #checkoutProcessDefinition] The trigger has not fired; the workflow definition, the process record, the reservation's business expiry and the payment obligation's handler are deferred to the build until the operation spans time, external systems or human decisions (D16, Decision method rule 4) +- [non-blocking #latePaymentPolicy] Which of the three late-payment policies applies is a product decision the build records per deployment: reallocate, ask a person, or refund as a separately tracked operation (D16) ## Workflow diff --git a/design/specs/processes/workflow-processes.sdp.md b/design/specs/processes/workflow-processes.sdp.md index e83a5fd..4cee26a 100644 --- a/design/specs/processes/workflow-processes.sdp.md +++ b/design/specs/processes/workflow-processes.sdp.md @@ -34,8 +34,8 @@ A process is a business operation that spans time, external systems or human dec ### Open questions -- [blocking] The trigger has not fired; the process record's table, the step signatures, the wait mechanism for an obligation's result and the deploy procedure are deferred to the build (D16, Decision method rule 4) -- [non-blocking] Whether an old run is kept, migrated or blocked on a given deploy is a per-release choice the build records; the README's determinism rule means keeping requires the old definition to stay registered under its version (D16, S11) +- [blocking #processObligationWait] The trigger has not fired; the process record's table, the step signatures, the wait mechanism for an obligation's result and the deploy procedure are deferred to the build (D16, Decision method rule 4) +- [non-blocking #processDefinitionRetention] Whether an old run is kept, migrated or blocked on a given deploy is a per-release choice the build records; the README's determinism rule means keeping requires the old definition to stay registered under its version (D16, S11) ## Behavior diff --git a/design/tools/check.py b/design/tools/check.py index 601413b..2c67071 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -25,7 +25,7 @@ sys.dont_write_bytecode = True -from decisions import question_source_errors +from decisions import graph_recipe, question_resolutions, question_source_errors DESIGN = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) ROOT = os.path.dirname(DESIGN) @@ -47,7 +47,7 @@ # An entry address, spec:#design. or #ui., as the Protocol's checked-mentions record rules it. # A token runs from `spec:` to a separator, loses trailing punctuation, and is checked whole, so a malformed # key is refused rather than read as its valid prefix. Historical positional citations in prose -# are kept as written; question sources are checked separately by text. +# are kept as written; question sources are checked separately through the Protocol. MENTION_TOKEN = re.compile(r"spec:[^\s`'\"()\[\]{}<>|,;]+") ADDRESS = re.compile(r"^(spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)*)#(design|ui)\.([a-z][A-Za-z0-9]*)$") # Where an address outside the Specs lives: the code, the tests, the register, the ledger and the work documents. @@ -150,9 +150,19 @@ def run(args): # 2. Read the Specs. kinds = collections.Counter() readiness = collections.Counter() -questions = {} +question_graph = graph_recipe(20) +questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in question_graph["specs"]} +if question_graph["malformed"]: + fail("open-question recipe reports malformed questions") +for spec in question_graph["specs"]: + for question in spec["questions"]: + if not question.get("key"): + fail(f"{spec['id']} carries an open question without a key") +for spec in question_graph["specs"]: + if spec["totals"]["blocking"] and spec["statedReadiness"] != "scoped": + fail(f"{spec['id']} carries a blocking question and states {spec['statedReadiness']}") spec_files = {} -n_blocking = 0 +n_blocking = question_graph["totals"]["blocking"] cited_extensions = set() edge_gaps = [] for path in sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)): @@ -182,11 +192,6 @@ def run(args): if section in TYPED_SECTIONS and line.startswith("- "): cited_laws |= {int(x) for x in re.findall(r"\bLaw (\d+)", line)} cited_facts |= {int(x) for x in re.findall(r"\bF(\d+)\b", line)} - if section == "Open" and line.startswith("- ["): - questions.setdefault(sid, []).append(re.sub(r"^- \[[^]]+\] ", "", line)) - n_blocking += int(line.startswith("- [blocking]")) - if line.startswith("- [blocking]") and stated != "scoped": - fail(f"{sid} carries a blocking question and states {stated}") family = sid.split(":")[1].split(".")[0] exempt = kind in ("decision", "example") or family in ("laws", "facts") or sid == "spec:platform.vocabulary" missing_laws, missing_facts = cited_laws - linked_laws, cited_facts - linked_facts @@ -195,10 +200,11 @@ def run(args): for gap in edge_gaps: fail("cited without a constrainedBy edge (rubric 16): " + gap) -# 2a. The decision register's question sources resolve by authored text. +# 2a. Open question sources resolve by address through the Protocol; closed ones keep their text. register = json.load(open(os.path.join(DESIGN, "decisions/register.json"), encoding="utf-8")) +resolutions = question_resolutions(register["decisions"]) for row in register["decisions"]: - for error in question_source_errors(row, questions, spec_files): + for error in question_source_errors(row, questions, spec_files, resolutions): fail(row["id"] + ": " + error) # 3. README.md against the Specs. diff --git a/design/tools/decisions.py b/design/tools/decisions.py index 8b17bb0..50faf60 100644 --- a/design/tools/decisions.py +++ b/design/tools/decisions.py @@ -13,6 +13,7 @@ import os from pathlib import Path import re +import subprocess import sys import tempfile @@ -55,35 +56,65 @@ def normalize_question(text): return " ".join(text.split()) -def question_source_errors(row, questions, files): - """Check I3 sources against authored open questions, by text only.""" +def graph_recipe(number, root=ROOT, addresses=None): + """Run a body from the pinned Protocol's shipped catalog.""" + catalog = (ROOT / "node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md").read_text() + body = re.search(rf"## {number}\..*?```js\n(.*?)```", catalog, re.S).group(1) + if addresses is not None: + body = re.sub(r"const addresses = \[.*?\];", lambda _: "const addresses = " + json.dumps(addresses) + ";", body, count=1, flags=re.S) + result = subprocess.run(["npx", "sdp", "q", body, "--root", str(root), "--json"], + cwd=ROOT, capture_output=True, text=True) + if result.returncode: + raise ValueError(f"recipe {number} failed: {result.stderr or result.stdout}") + return json.loads(result.stdout) + + +def question_resolutions(rows, root=ROOT): + addresses = [source.get("address") for row in rows for source in row["sources"] + if source.get("kind") == "specQuestion" and source.get("open") is not False] + return {result["address"]: result for result in graph_recipe(25, root, addresses)["rows"] + if isinstance(result["address"], str)} + + +def question_source_errors(row, questions, files, resolutions=None): + """Resolve open sources through the Protocol; keep closed sources' text rule.""" errors = [] - required = {"kind", "spec", "question", "file"} + resolutions = resolutions or {} for source in row["sources"]: if source.get("kind") != "specQuestion": continue closed = source.get("open") is False - if set(source) != required | ({"open"} if closed else set()): - errors.append("specQuestion requires kind, spec, question and file, with only open: false optional") - spec = source.get("spec") - question = source.get("question") - if not present(spec) or spec not in files: - errors.append("specQuestion names no Spec: " + repr(spec)) - continue - if source.get("file") != files[spec]: - errors.append("specQuestion file does not name its Spec: " + spec) - if not present(question): - errors.append("specQuestion requires non-empty question text") - continue - matches = sum(normalize_question(question_opening(text)) == normalize_question(question) - for text in questions.get(spec, [])) + required = {"kind", "spec", "question", "file", "open"} if closed else {"kind", "address", "file"} + if set(source) != required: + errors.append("closed specQuestion requires kind, spec, question, file and open: false" if closed + else "open specQuestion requires kind, address and file") if closed: + spec = source.get("spec") + question = source.get("question") + if not present(spec) or spec not in files: + errors.append("specQuestion names no Spec: " + repr(spec)) + continue + if source.get("file") != files[spec]: + errors.append("specQuestion file does not name its Spec: " + spec) + if not present(question): + errors.append("specQuestion requires non-empty question text") + continue + matches = sum(normalize_question(question_opening(text)) == normalize_question(question) + for text in questions.get(spec, [])) if row["status"] not in ("decided", "folded"): errors.append("open: false requires a decided or folded row") if matches: errors.append("open: false question resolves again: " + spec) - elif matches != 1: - errors.append(f"specQuestion resolves to {matches} open questions: {spec}: {question}") + else: + address = source.get("address") + resolved = resolutions.get(address) if isinstance(address, str) else None + if not resolved or not resolved["resolves"] or resolved["section"] != "question": + reason = resolved["reason"] if resolved else "missing address" + errors.append(f"specQuestion address does not resolve to an open question: {address!r} ({reason})") + continue + spec = resolved["id"] + if source.get("file") != files.get(spec): + errors.append("specQuestion file does not name its Spec: " + spec) return errors @@ -300,7 +331,7 @@ def matches(row): if args.cites and args.cites not in row["cites"]: return False if args.spec: - refs = [source["spec"] if source["kind"] == "specQuestion" else source["ref"] + refs = [source.get("address", source.get("spec", "")) if source["kind"] == "specQuestion" else source["ref"] for source in row["sources"] if source["kind"] in ("specQuestion", "specLine")] if not any(ref == args.spec or ref.split("#")[0] == args.spec for ref in refs): return False diff --git a/design/tools/test_decisions.py b/design/tools/test_decisions.py index 5562e86..f249264 100644 --- a/design/tools/test_decisions.py +++ b/design/tools/test_decisions.py @@ -39,7 +39,7 @@ def lean(): def row(identifier, **changes): result = { "id": identifier, "title": "Keep a bounded context call", - "sources": [{"kind": "specQuestion", "spec": "spec:context.tables", "question": "Keep a bounded context call.", "file": "design/specs/context/tables.sdp.md"}], + "sources": [{"kind": "specQuestion", "address": "spec:context.tables#question.boundedCall", "file": "design/specs/context/tables.sdp.md"}], "families": ["context"], "cites": ["E-32", "F13"], "provisionalReading": "One bounded call", "blocks": None, "advisor": "convex", "status": "unsorted", "foldedInto": [], "class": None, "reason": None, "lean": None, @@ -343,41 +343,54 @@ class QuestionSourceTests(unittest.TestCase): def setUp(self): self.row = row("OD-001") self.spec = "spec:context.tables" + self.address = self.row["sources"][0]["address"] self.files = {self.spec: "design/specs/context/tables.sdp.md"} self.questions = {self.spec: ["Keep a bounded context call. Another sentence."]} + self.resolutions = {self.address: {"address": self.address, "resolves": True, + "id": self.spec, "section": "question", "key": "boundedCall", "reason": None}} def errors(self): - return tool.question_source_errors(self.row, self.questions, self.files) + return tool.question_source_errors(self.row, self.questions, self.files, self.resolutions) - def test_opening_is_verbatim_and_matching_normalizes_only_whitespace(self): - self.assertEqual(tool.question_opening("Keep `spec:context.tables` at 1.5 bytes. Why?"), - "Keep `spec:context.tables` at 1.5 bytes.") - self.row["sources"][0]["question"] = "Keep a bounded\n context call." + def close_source(self): + self.row["sources"] = [{"kind": "specQuestion", "spec": self.spec, + "question": "Keep a bounded context call.", + "file": self.files[self.spec], "open": False}] + + def test_address_survives_question_text_changes(self): + self.questions[self.spec] = ["A different sentence."] self.assertEqual(self.errors(), []) - self.row["sources"][0]["question"] = "keep a bounded context call." - self.assertTrue(self.errors()) - def test_missing_ambiguous_wrong_file_and_old_shape_are_refused(self): - for mutation in ("missing", "ambiguous", "file", "spec", "old", "line", "openTrue"): + def test_missing_wrong_section_wrong_file_and_old_shape_are_refused(self): + for mutation in ("missing", "section", "file", "old", "line", "openTrue", "notString"): with self.subTest(mutation=mutation): saved_row = copy.deepcopy(self.row) - saved_questions = copy.deepcopy(self.questions) + saved_resolutions = copy.deepcopy(self.resolutions) source = self.row["sources"][0] - if mutation == "missing": self.questions[self.spec] = [] - elif mutation == "ambiguous": self.questions[self.spec] *= 2 + if mutation == "missing": self.resolutions[self.address].update(resolves=False, reason="entry") + elif mutation == "section": self.resolutions[self.address]["section"] = "design" elif mutation == "file": source["file"] = "another.sdp.md" - elif mutation == "spec": source["spec"] = "spec:missing" elif mutation == "old": - source.pop("spec") - source.pop("question") - source.update(ref="spec:context.tables#1", line=1) + source.pop("address") + source.update(spec=self.spec, question="Keep a bounded context call.") elif mutation == "line": source["line"] = 1 elif mutation == "openTrue": source["open"] = True + elif mutation == "notString": source["address"] = [] self.assertTrue(self.errors()) - self.row, self.questions = saved_row, saved_questions + self.row, self.resolutions = saved_row, saved_resolutions + + def test_closed_opening_matching_normalizes_only_whitespace(self): + self.close_source() + self.row["status"] = "decided" + self.assertEqual(tool.question_opening("Keep `spec:context.tables` at 1.5 bytes. Why?"), + "Keep `spec:context.tables` at 1.5 bytes.") + self.row["sources"][0]["question"] = "Keep a bounded\n context call." + self.assertIn("open: false question resolves again", " ".join(self.errors())) + self.row["sources"][0]["question"] = "keep a bounded context call." + self.assertEqual(self.errors(), []) def test_removed_question_requires_closed_status_and_refuses_return(self): - self.row["sources"][0]["open"] = False + self.close_source() self.questions[self.spec] = [] for status in tool.STATUSES: self.row["status"] = status @@ -386,6 +399,47 @@ def test_removed_question_requires_closed_status_and_refuses_return(self): self.questions[self.spec] = ["Keep a bounded context call. Returned text."] self.assertIn("open: false question resolves again", " ".join(self.errors())) + def test_protocol_removed_key_fails_and_closed_source_keeps_passing(self): + with tempfile.TemporaryDirectory() as temporary: + root = Path(temporary) + path = root / self.files[self.spec] + path.parent.mkdir(parents=True) + carrier = """--- +id: spec:context.tables +kind: rule +altitude: story +readiness: scoped +relations: {} +--- +# Bounded call + +## Intent +- outcome: Keep a bounded call. + +### Open questions +- [non-blocking #boundedCall] Keep a bounded context call. Another sentence. + +## Rule +- Keep the call bounded. + +## Verification — reviewed +- Review the bound. +""" + path.write_text(carrier) + self.resolutions = tool.question_resolutions([self.row], root) + self.assertEqual(self.errors(), []) + path.write_text(carrier.replace(" #boundedCall", "")) + self.resolutions = tool.question_resolutions([self.row], root) + self.assertIn("does not resolve", " ".join(self.errors())) + path.write_text(carrier.replace("- [non-blocking #boundedCall] Keep a bounded context call. Another sentence.\n", "")) + graph = tool.graph_recipe(20, root) + self.questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in graph["specs"]} + self.close_source() + self.row["status"] = "decided" + before = copy.deepcopy(self.row["sources"]) + self.assertEqual(self.errors(), []) + self.assertEqual(self.row["sources"], before) + class RealRegisterTests(unittest.TestCase): def test_real_register_has_unique_ids_and_resolving_question_sources(self): @@ -393,12 +447,8 @@ def test_real_register_has_unique_ids_and_resolving_question_sources(self): rows = register["decisions"] ids = [r["id"] for r in rows] self.assertEqual(len(set(ids)), len(ids)) - recipes = (ROOT / "node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md").read_text() - body = re.search(r"## 20\..*?```js\n(.*?)```", recipes, re.S).group(1) - result = subprocess.run(["npx", "sdp", "q", body, "--root", ".", "--json"], - cwd=ROOT, capture_output=True, text=True) - self.assertEqual(result.returncode, 0, result.stderr) - graph = json.loads(result.stdout) + graph = tool.graph_recipe(20) + resolutions = tool.question_resolutions(rows) self.assertEqual(graph["malformed"], []) questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in graph["specs"]} files = {} @@ -408,7 +458,7 @@ def test_real_register_has_unique_ids_and_resolving_question_sources(self): for decision in rows: with self.subTest(row=decision["id"]): self.assertEqual(tool.row_errors(decision, register["units"], ROOT, set(ids)), []) - self.assertEqual(tool.question_source_errors(decision, questions, files), []) + self.assertEqual(tool.question_source_errors(decision, questions, files, resolutions), []) if __name__ == "__main__": diff --git a/package-lock.json b/package-lock.json index b93f387..d0981bd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -801,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", - "integrity": "sha512-kca7vIg/z6L5f6KPcbF+lC4em1VJvoXOTGuCddxbIFh2TAATifN2KQ9r/tfCfaPR1UcodR4er7sjDc/0En9xoA==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", + "integrity": "sha512-D97EZ3ynVLM5VXF3U4FqwICikv++W6qxSIaWM25seo5L9srgDix8bDGXv087xz6+xFOgGqLt8eTid2uAGCc7Cg==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 46999a5..e0338a1 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8ce20d2b5ebb2057a6a708bd378f23afd7675cf5 GIT binary patch literal 433257 zcmV(!K;^$5iwFP!00002|Lnd0dK^8|Ywvd6Z0{a!|HHTV=h?Gozx(ZPli2rX&tClQ`EP!g{KIel>37ebKmXnDolZ1Z~```a2|2#>S{j+(U4z9A~T|USrRko=9AG5N` zi%IgL|E!z*TRNGgzbA zX9N7)m9DVvFt4U%em=wRNm?aC95Ndw=eNmWHsDU4L;qzlySz&NB`Gf8M-KIh!EBsO zrXgHKSp#fPT;G=Y<<&GPZYEio07%dkQ$Hhc?l8VVqKE2|8c)))0wkQdX>sfhS0L3`0+66aj)RJCWG?gl8 z=N)cZ++<}Jmal|WLLl-9|J_ZdMKVZX(XpQN!bOCEG8v~6V4b*lIBqo?TnS*^BH*NxGD9mF>{k6H9;@!93Y|Psjl*C?CB!E0Bl}o1Z|u z?gj9|8o)A@S!H^JF3+Idp! zUWG%^a^YUMxylDuiW$ISP2miHompm|b6QHIVnB`TlOzKS7p3_HUC1))-6WmiDVJ41 zDTMtL1}jFiDWF+?nNMJp`kL4IvEfq}-uCY%A^HS+NX@c#)V-V4@m)ro?s=5VqkFfCwL`vvQ9a&Zss&1=kHm)=ahckDU;Sn;RGg4~s^5eF8Fw(N=#-}s$HXs1jQp86o;#YdF9r$zTn#KtCfKc2EGm`M5@bS8YFLL@)ZuPbgO5uy5@2 zjbxP^&iHT@T8%0*YMW`UoWUuXC?}TPQ`6Hn%?#<$_#$xAlQ8_2FS>3r@82VIH1wCpatx)Yoy~E zr*rK5dUg(N0gFJW*P|2&-F^X>`KYbviwG84Z_{GF<;5f{*G7yS=fqohfqtVFXg@`! z`@g~Jw4qscJ;eO;cLm(Rg z`{jQFM=8oFFO1~_A}EVgNNmQ;3{k*qWJXP|uSckE786)>!ZPwM0c|i!bHF#(Rg(iO zQYRX_mTyjA_f}O}=CnI6O5i?5qsek}_UVn^t~#Iw7n4j*L|}g)kyxponuQI_gjmCs z(-y#IA4De1S2)N=R21jQC173-$?fMzG#kn=p zGV3uWNfo+bQOu`ABQhCfRCbC{G~6DOBhN@xd^+G3#nm&kl2%4w8^T9Jd=|UV8|sNe zW(B|PCkL6f4E1T~aeC`GTgZig59UU;@%YgKDUX%}#YPxx2276V2qhZ$Z(&blUv1_i zyn&N-ohn2KailfQGG672Vgx!7pYMiutv|7PRflIf14_F@co96-H(*(Fm?APQE&5vR z5dW!7G^O())Fd|O7&T*_t1;Pd<3wrHqfmcmqfUt=1nNURK{{dWu~Ne$i?bw+eWL1q zNyx~!AAjV58oA7-u)(@UZdNKhX$JsNI5{=29ncX(7k8LD9lJu^U1W>H4CSV-5+;a5 zr*6B++}H#WfhT0CzU0Q-)AT{W4GR)z;grE?B071;l~Z?c83{g|sE@Q^2bq>#e^LB! zsav~yM>}t}Td?`QObOq(?PLrTxz#v&cPSPS*(o*5(t4?`jOv-f8m2?iF&)umQM4jc zO3}`%x)G*EoPj4oQ|PXOSJh1%!%@5vu|XfBEUi$T(pGwD;&v+tMlk5Q0W&o)I$S#p zc~n&`gkeK7bC1aMzV;1JNq*t@3?7-6?gXs&UzFWCmQy3^DJz%g1`#Y>1UrQU2+#m| zv7p0p*uzQQ+O?UWeGU|66fCk7l+dFq*20i~)zPfhn}i2erLB<N}buRWAl~!O$u@q088>U?KFJNS{LU#&DQThO@B|TRn;~jD__- zvz#GMBLo{G2B0CjnaElNIupwQMoiPaMHEF&t01wJjP)!41cooQ6xfN(LxYSa zxg4cdPs)u*@XoXsxiaEz)Ll_=5rL-bw#@}8i?#9x)toq4^37n!8En4;k1{&n3{!)+Xg2dW4 zZbK4jBz+t)G~}?Tcdo6^_fgG6%px!q!EhHWx(?0lBe&lzrr5~d-q87S zUa(Sz+xC*wJ3K}Rv}y*&L6r?Nz6io?pq4}iV(Eenq<}@M5?z8$M}&VXJA^c{>`OLK zES?yzMM#-lrX}Aig}R5_1^f*BYl25QEh!xQ#Tc)r5gNcU z$Q=Wipe%(|I?z&Ev(K8{WY$eigUAuUnEK~_vXxh)I^m`5Me;MqpMaNJy9q3)=eMlD zlID#nmSY37iln?aD_GYpnC$(^f!an`(P$8=sJb?qFTKU>pj``CerxkE**R<_uQv~O z4h?dD-Z}dH-iM>)=gotI&E2D&?Zag6Kwr!6y-hZE|CIb;XLk$4ot$rgzo2!rax=+^ zuMCx$)a@X$lct7G-GY)!s3L`^tg~1^=F!g4yX`JueYdx>`}SaG_owam+q*~IKw+?hO!&;$FF0gWCab4ypp3{UcfV!{>(VyeE%3jLW#;O9D2&Ze^{_j5gHYmkL@AC9KAJOIc4xYRTh(D7l!NGmNrx6)D0Y=cY zm8r$tWB~z9waH+TU5;{)z6M#RYj3-|o+;N_ewNaEn*{~5>5uYr66grHOSDJWdkZt< z6g?0sx*d=259XfU@qtDevt*;31{R9|Ep0kZFMS(6wl*#S&N-mE&hTzs-9E#H0>PHA z5>S9)n=W3+NvDQGqs65VCv3A&azgBYWAWMEH<^O0DgNN!m}wu6!{U$ww|aKDItl~>+%4=5PFFK$p1 zVpY;2jPR*CcJm{TmdQxnhFFtcpBk%1*J<(>c{UnW2^Ly48uE)p}Z&0%b= zR?jo%vO+hc29gRJwg5OXTq6%|;aTC|e2Vi6f(e9|+xvLIoVjN01Tl@g?SSBgW?w zQA3F}T8gqFj?(&zbF!ADp2^M-aym8SzRcxR{GfXPGBsI6LT{2i#OLgZwo-cdGT@;L zgR0OZfq$j=Z3J&Z+hLY@AQ&Piu?A=crZ%~p0l|St0LQ{4^z0LBiIdl>`n>v2{^9@p z^LPHwwfO%d{jK3i`lUbkbM=e)|3ClDZ+`RapPq&O|1X~X_SygO|NkZaX(8W5)-#y4 zHlBP=%jEPFPXECOshtkO;H68N!>_2^(c0Tw#}#hsiH*Ap~XCv!O0=4O06h_IWAKq$K6u*gSS zmt+A84al@@vZViy|3MD7=mm~HU%q^qvzGw2Y#yY+aJIL30&x)gYaNSPhl(uykkxB3Qt_yqNq*t!f}q_bAYI)?IDv(NI`AJ z4-VVGxni}xYe~pWlKB%96{oWj4G{|4)8Y-i8ThwDMEAHD5)5h;+78~kc{gbRfmH8{ z;cS$(5b)3GXy%r&i$+!$@5$O)Qk4VYjMIt+qaQ+ExVU!!gdw-KSJ-)tWmG{sBtz~A0II{4G+=GNB1_Tk~_;Wj;TvF+le*zTv_Zy$gR zaEfxk>ARin(}V5JL)EgW9NWI%{P)xMplWRHY@Kdz{j_~}y1#vJy0x?U)4}F@)4{?@ zVK2Kdzoos@Dp4d9i7S74^r!vpu(B?)Ere8<*t`Z_3DyU(`>H5+hNhPJO=aZDn+>;z zm)Q}%5wMlQ0<3*rfOvQ~DyDzLeP-(hpQ+|79}Ryh)9b4p+)B2l{~2qdN9-m+WGcBY zez}{0{>F92*9Cfk)GG!BrZ$M^TiFQIrtQ;mFI{OKWgp#+T z!p$aLO6|T7mDq~>Qe2iNitSOZIB4xkPXjPb)RgF8pZivZM|J!BK3OqtF3pCp%maI z?R~Vh6sG(Rbph4}A??G&a!gaz|BCh4i?+Uy;dfUT!9FB0UGITd8MUdl=_(cW6TO`J zBkaoy%VOfC-0mQ&iV?mTILay^y|8g(73=}lcDRiXPgeMU}qc^pE64q z`Ww~ZJ?Ga^->^;r6gR4!AO2UYhZ?jg#lOur*M@)b_p-`#0sXWkxPX;cNME`n^6LHW zZ{=87y-gLbF1=rvQZxWDNF`}~su}&{5?Bwz9p9v7nP&=^dYNtGXerjJR?6+rtn?@zT5zoss6^%bx7tE&Q6TiCQ;Q$D&{htup@p9=n0tXB=LvT-Vw zQHyl_k!of5k}v-+|3vk_Qa!a@E7_jBg7x*pzxIfHbs2v#<+$l|DgLH1n8D$v4D?C` zwE9MMjE{<4C-()*r*=a-==3+N^O;$mKW*=$u5}37+5l9+bi{oir>??Q(MqZp!1y8F ze9<%Yps`n`+7#v6bexas4O{`$M#iNp$?qqq%8p6*>^n75>#)8WsT5IYm5tU=itVv5 zj!LO90x0RW&82J=5Pg{q1pR)W%TSpH1={Jj!^&v5@AiJ)K6tZvxa~C3)BVk(qwRxT z0Cep?kJH|No#4No_5P)I@~iLGW~_!oo!^5N@e_Jr_zgCD|H0Ky+@HFoug%&~p>Yf8 zuobKIhwVQ_pmHNM^=@=!Xms4-=Vh&K(wgP?@4tW=LI#zS4To1e)28L^=5UC%bcyHC zCX<1O;rKZHsu*YOwmg)1AzPV$kQIkJ!nHtP;|2i&7A^P)WO_}oS{=m$7VqYFh74U- zE+ZLAj6QLbOtPDVwB`2M&V=YT+1W~3-`!D*d22oS?v7i{&j={n^Ld$0hNf$8;`GI< zYqsBhI=wQmT*KeojPxHs!sVFW0lcK5eg%^HwB73S^$?n-Obv@d`Y9Nszx$(Xayh*s zJU;7KE0~9aRyMw#(zB2&)2wBUNlS)#8l&kx@-17fY1CY>8yh!*DNSOg5At;b`5~i+ zYYu-1v@Ij+T*C%x01a&Rn?SsP!iVq(0NzB?g%Q6gg`eVD$#?G)drRbC3vkJB zdh3GbJoDZ7`L|pD*lNNY`jmiz0HY$17Z>>#HwKf=u$Yn^07%Dm48Qj-Ed3Z7GaF5{ z0hoHvlUK>-0+#1lvTpmR@FKANtZVC9N_-mU0d`Y2QJ#lWdLVM1B|k{BANxOi%5Hz; zn@#y94_>>;EGO3k%aA-QKW$`%LYv-%?96|iJnyUqDq4LFxFd{_(i^~fkCM&9H#<8E zsCXa6*5R(9jT#|4`hB|Kl;KIZMhzglE#QGVNULlCh&#i>D^R>O8$)>Lr_W9rs59p` z&}|g= z>pR_$isyiW+E?2t3!`?kipNEbsz4+LKB>s9(h>zJ%|oWJ$X>V1yxxmDm$;99BlD39 zFowsvo!9zP%ZNm9W~!(S1~ON@;qkMRTf&A+JQp7v^u1_IayoGm`F6!%0mWy=|{K5*>`tbYS(eTZa!h{ zIW7FMO8;nn$r$r9Z<)+pjb5kbU9o)G*^m%FG*^-7Y67M?^b)iy!s53=8f;<#$E*^b zgk*_Uwg^==cY{sBZuAAwJvxgkZDH3To!tjmrR@3LY8%SEdc=ldXTE*&Ufpq1>Cm@V zFfCS|t-_d>?qR9$+Opy59<7lF5jb!Bb%-+}j}8{_1I?E9rHqFGfj%9F97%SOW=w;k z%zB!;AfOETd;GdOls@m|E_x9-&-n_VCr?nRdj^?qS+lZQ0c=@Q?)j^@si75|%w;xN zvlpJ$;eswAPA5=)Dq@z9VY_8SAk&G7ceYlc>D=_NvjzGRUGm4wQm4vlbgIloyC2@a z4qEhHwO_4&9RB)a|JBFgum1Y64}W*4fg{dAI(ZH7XFrw2?7C{B|FM=)F6lGcb54-q zp|4IZLh3X8a6?ZJ*aDdRK<>*TOc>6Jj2Ay2Q=Jo%=UR8x1t^jJehrexhKiw?PtZn# zzvfTmTSf0;$xDjba4~{3n3WY#U2ddQSC&uy=d75bf^d~IjA2bTR?h9~w>EC>n z=}G_5`B}xsK9qS$)sDH*$%b-XQgr|e-?zSZog@m-r}C$1I#03@dfwK00I>_5o=kn+ z8_$km*sx#E%Pjr0yxY6RZXJpicWqF^h;xfOw=`jTdP_~8^A!n=1`Tx5ItI2Uv+)Ov z^jn`j$(%?DXso3=d$TD<4j`;m(!go7D4{xBtS~DQC>(zzhekIvy_;~twrMot#Ue{` zZ3VHuAqarU)~%_*5x5LZGgM5|(m^P%a+N?(S%jnrR^6FE50ECv7FsQLPShB$LXYD( z6cNadu#{0Yvq=L4a2wlx8T$wr-(MRTpJ+0OPZ^~Xj%udfcz`uPH-FODy;jcZWPfl~ zwacq2zS*H5zSVi2uw%|a10^qA{T-dFCzti_=S4BfQs=m9gjaHC03i)seOq1f_+7VO zO%HPvY4xVzu-q@h-7EDi#9Xaz|5<797CPg?*U#d@$DP$cS-2HLfK27(AknC1^mRMR zT$^5ffsJjjX2ccy-KAx;t^EGI1w>cj`m)l-Y^^w0q`!H{RD=_Sq)NhNn@%uIu5^9^ z>ZzblzZB6%?8#guv?n`LFnUw#2F9q#1FcK@n2ER(?3Sl>A>5hy7aw=#x{DEYdP-`< z>1iF!XpdP}_eU+`yiei>BL)8SSG6|1rf$#EGF#eXV2HGQMI$P(dF#`%5^`wR4ELU( zV|ZxPL^2d=!yQg$TImu$xbAr8ODp_QAAzj71~ce?W*ZB2OKWoxT?3F+a-*<4j#h4Z zYf#KlDYPRlSI`ISht$VrJ=e9>(((JQe152!9`vojCInUtv}lcZE6Xvd^8cb(Y3PMR zFAqU{sKguRA#-|=79XI*=TPLkR?~h-EsqIzNEG<^J*GYTvYx-Um=Qv2CE-bprx5{< z%>pDBaIKD$DD;&ER`W$U3 zg})P757{Gd+d~ot+nO_W(AM98Ym0>y)=Pn~(n7humn~HANTar;t-`kUtK?r#Pxn6@ zY@ePczgid8yr8@qaPWrRVmQRtMRjC}TEzc{NA{{*yw$Cx1l{C$rIrFuYlo>1{u+=)b1F zS5k95CX%KVQ?}PaL9nRD{zX0lSzcdQ3c!3{q_rsAEO>HguMUh;JsYLvEwU22z9ru+ zN1qsAUwQsN*FH}`SB-*<(Vy0C+H>BlF+0I=7Sjx(@|xmFM2&9$EnhpI2tFfhu} zI*P&59)ar-nW5`u(GBoAZ;(W=YyZLzTK^%tZR3BvUG{H>d%Jz!Dfxwz*KQy|V1psi z%=qRi9}NjC%)&DrTp3>q&!z-*4p-pUwql*-g~l~?X)t$J2jazmsM!d~oS;JpJTM)B z4zmF;06N#HMnDY?HboNp5`i1}OONME*pOZ&^H5PYo%ke`?Vh0hl-=SkGP}n1h+Z4A zww;a!4;%C=5cmnL&+j)HJ;8?Iu#=$EsF1U`Pr4saOV!YYUj@gG+>m&caAx%4d=)r? zErOO4qfTnh{7{w5JCS{rtfc2jz&yP=>JTEbwKtfYt%=^*EL6(m(HsUg;<%jTt75x( zpn68~MW~y}49x2+3wV1%$->AI6j-LAQ*;c=l~rDs?F^$wST?-O*b8eX#IRBn^AKTtVx`jnTWhQB1;<;aS{S5Gh3&%ij2;{nj6jjb&0WSF#OT$+npi7 z#3L87_hc4!;-#e9xt|$VoA_UsO>yn_I zh%;Q&MU{=9vYfqkCm71Bi|_PT-*paiH$Q5C3eA zQfsZ)I4QDv+_RxqoU%z-8Sxz-2yWLBdIov7KDID<8qw7?v37%6zH_Rkk;TWV6;}n7 z0{b(n0?*EHJ8aHtLSq`iS^afKwWrI(>3wgizK#{{NUMO`0;XB$i2fbcMA#@TiQ%i+8dZ+hlZIlRd zuLeiOJ#1Sz4~nFV6YSHhv~cs(&Xbsdk%AmUaOIVglDhP{6W+8_=|sW~u-?3H@WQsT zK*)&?8B|&{?mRBy@ni{Irdzd172bKD_Al(8(s#Y~Q6Y7wg{tW>F^j5hFokYX8EAe=(S({D%oV6n6ix01q@v&Q4q0dC5-iZs~?CFX+l{>L|m=^kXEXLFlYM|`Zo@4bdK#H;6SVy}HUl^>gW2x!cuMCQA~ic^mRfD?LzqQqLZ&?1^R;T}cg&L>kT$g9MuvjX54 zlVa05BM}ok;Hb1mt$PB6!W{2BA}LGzB6B$5@K&X`gW=({=BHA$uHLq^C=(g;kDd}2 zAWiCcXoFfFx!GLr=#^XvIWcO^Z_&(!UQzfukx&NMx;05}1_eP%v0teM$N?2n4l*@l zk-y@g!kpF>gUj076KrUhVl?cWv$b4hfTf>*zxQsN!|rDCgf}gx`2~W9?|Mh0UQzZW z+lY*SP^IJ?g<;yMOO6&oA?l60)r|?Ij0_KBG!OIY3J9Z`g7|Nwkeif)#&Wg}32FQ* z+&v?Z5O_uMawECqOl#FNy{(cnFVw@?_mw14Y`@>?J^!sCaYWA>(+xg$^LHO2&yLa~ z|8TQL?>#y;fyxq0WSE&4-z-91Vmw}YR|Kr;g7W2B7N-drejb?02uf9_X0#I74hf#B zW#SedeAwOHK5!xE@VfI~M>*{F-Z1;TWfywzp1yzrDFd{ot!Xye#6EWN>!cI!MzW&#K`yOLrg7l8>_&&z}D_ z0X2x*%=>uQZmC4(gkG_BWkVJmm`Ew-9tNMh?O`++%-9Ef1|JCW;**@u5t!-u`Oell zc3x&2CF&eAAn`Ganb0Y}2t6AhCVHN6LcpA99}}SbS)Ne{=|CirVu4W#drH@Yk$ywyC?nU^V>M?HW!fPiE z&9Ka=%rhRm_(iVpf_u&vD_(TE<3}tIdlw|HF1hl1v5GOu8v7o@7Uh|V>gG|xjG!nF zO-v=h?19g?-B8~CTxC_?4-1X&m`?~_57(bN?^9t%C4p(IiDkCpbU{Td>nJCE@2bmy z*l@!uE8T^okYv5;5!O7s<$duDu6eV-dcMTU_hQwX-WSWSdhc<~yOK5V+g$A$!>b5u zFU3vEzsmJYV|0IHsy7(&jJH?J7ep>cT~&24^%OM&)T!+dx=}cWp+(+SUQs=+XILJM z{MnDG7~NXSGg^Sw9UQl2a`SnMvI!UkFl9{!PGtPgHs=DMxFvQv^CZ1Mv9wmj%pGb- z?g*5D0*xwZx0KPdWsXism{HohS(AfeQYGzle4bybXZ3WD@s$g|&g;#V8i1fkVfQZItFt*`6yHFfLR z3GbvceFb(`w~$wh+$*H9ci`kh3ZcQq(ii%S@m%MnyyiSFJ;%J}rAe}G8#e?&QPAKT z@8f%w7(gn7RseMnO-roeDOtr$t79AZN{sQnMd9!XBjSwd4PE!Pb7gHtSe1 zkRDt~5K9}O>qlVE!8-=DKfQs~ip>neRFLFUpFhX9u!GQFHf%L<=s}`VZ*ucKxD`jPzQFbxya;mr*_S8yZHP@di z;Ff`(S#UspR?(o7F*Kxff-K9ssCHibhR=QgX^bZ_&PTUwU!k}wlL6ZX@dlNGbYh{{ zout4F#kJTdfze0J{l*h^q?lgG5ILG7sSy9H#hoBK2OUimnL*qqx=JXDt0wl$4LuXi zDb2}hw^8S}hfY9W^*YLGnGQtnI?8oQmqY%|y%Kd*J(Q;Xdfi0prurc{)?y8ZMSs-g zS9X9nc2AK`jG}x?u6;EJK&3e_O4-LqYYi)C48daIrH^_J)iw9AfqTPTJ=o{5D;c}% z`ceX@BL8(9L5hC9>ZiOLPt0GMDRI`e)rb)Zk z7x~>tt25p!jRu=Zp`6$y$Zmrx0U2CqA6S>r!0sX!;lzK-0#qS&^+E)C76XwtdZeJn z;Hp-wRwuN+Y=oE>5^H);5fam?0>L%&VrJj{Q;uRrh*`5>+EPF||#L zM1p#UhCiN-v;2jXl zR-HM&n8~>2ytA^sm>qT&Q%V=J&tv==y7Tw_i)unyF!}k{@}>sbSWX!WY{0A0#4;*i zmb2`sX|q4B5=HKz)478Z-#iB*k$;US1_i|%ed$PDC%W6^+Din4k7gN)Rtp}~-bro} zT0C+k~Wz*2tZz4hB#yCSao$K z9t^b0?~)G_Ne-P2_h!>U0SCgIH!nyep(D$@wQ&~qCpK60g;0J*-ctai>6I@VglW*7 zQ(ERJ(9Sg+R#0)$3$9AK#Fajtp^fX~8J}11`FrwC!uZDVanT*gc_yO7jpRYjP7~yJ z1kBE1;yzj*5QKup=xo5aGlv-%KCfa!p0V@O#Af+EXLmXF<4G_GsOFOt>{&n%*OG)> zQP53>JxFW#J(G;L!j+lk<_4=T&l+_ad3o-X$uMTZ?Wjn}i9sG1$&NZ<{Y%?v*h^@G z+{Vc7P0Ru7O`89iZ;%ggmi!e6&-TSZl)k$Q%*27wYK~JUi08@ttmEAF{eJ7@yb8sh z8FyD^mq?KmX-zTZ_D|?EvGy~O2pg+pVQV+TEp z1t&wSonf|?@kvPe@b;NyJmh=kRyWRb6eMCEZA8F)mHpMc4B{?K)~O{c!J&F{WxPH55GN-B@F{tJjm`v#%9XD{V3AH{4pDx$uL>no~UVHnWQ< z5Ki!J*Myo3357@{k(+=Bsse#}Zepj^D%LLm+$5z8&n}+C+}<`U7?5g!eg&)JCvotX z>4coO*;r_vf@yvmvbp1v=xQ4+E4J3^$*h)wBmQqFL5LeQ)%0Zun!E@RN^*$bDm&Q$ zS8>VeH4wUi1&eX*WOLr}T}1AlDgMZr8xmVEPnc@vkA;8D-=a%kjydCrK}C#!k9e*2 z>jeMnd$Lp*Ru33GXLd0c0(ZXu%PsqP>Z!`(^jq@lj22A&0^hSk+tWkeTt^Izp1d11 z|C~OWOxnS8D0qNWIDU3gyU3tm9)oNG=UDMjFl61Nm+-E@RwKd9R&o~u7~VNt1XFKu z%*z#Ag}=$wf{lT8@6cAhl`9fSdFjJsgPHoJyV12dx&k{6nA%-FU8>i&`*I(zo;SxX zuKcJ=azllNOlY5up`Qm_wBOf{*8pEzfqVGk+PD?~^eS$?U*)?Sjp(!5b9uSJeJ%He z3~-~R9*6Z?G}!8;pH<9ni=nKIxXA3kz;?ULa{Dk-|F<*q>pA;gzN@+Rex2Dr=H0u@ zrmHQw3&L@!Ese3#V_TcaFN{iolpxKbL>KR>QeAb0EERNKa4@!E#G*LhCZ6BN2ZZ5Z zc^}PuupxzV9E6#uL!Z6#7DR z&EeRBk^AmlN6k6Qw(?^nJ&k%;n#$jb-j`gbIda#FVK39P7gUrzKj>P`Oxe3ovrmq1 zpqokMeDG=9nnURPTWyr3Q41Bvs(GAJR2KN?g4|Id{S1U;8x1blSvC4(e^qxA#64Qd zV=D8H_jr85NT9hem|AU%uCP19do5EUQkkx$RhCm(9vFKHw zRtn>Ba--=8((zI7yohdPg3a&NTJa8E@>tlhR@7?U@?X}0EPvXOX?8_w>a8siBsL>gjn z+sjPRt#JP?CEuodOA}*eL+2;?%Pcd5`IQ0MqNk`IWy|Bs>X5Lpw)_f)mjz(*K@zJv z53@ZyRBvpaOW5hcd0j_k(m+z6`^pIT_qUO)@|SRBGK9x(Y!X_h#B^qjqnzjeWRb>)y$^)5+(pQj5vss zs;_bbgXik^ieSIG__?y=8MVbK9@dEWbux;sdaCfkG+1Bf8xOuWF*Ld!673I%1czJO zAMbg)V%TH+R%Mz`M_E%VDnzsA;y#F*#0>Qd6cB4iTJ

WD9-6?LI+*WpuTYeVI1Z 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

N|B` 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ưSRrmV_Ky8fvjTECCdhz?o>_|Kk~G0-C_s+ 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�zvT1X2LXE+lM5%$6fsU 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

N2jmePt16a~zNzl-|UY(tm-vE-D)0$zYl^NNu+K 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

8kK$#`1cx@Jj_~701yfAq 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 literal 0 HcmV?d00001 diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz deleted file mode 100644 index ac9896503e15b5c8b3db31c1cbcc908ce585ba97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 408437 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

ny%EcV^?R~*Q~f$uX? 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 From 0c7b7aacc289564a75119163c2c521955b31d6d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 05:39:47 +0200 Subject: [PATCH 33/60] build: the Pack page and the corpus check read the Protocol's round-2 data The page takes member order from the reader's Pack context, the next rung's unmet clauses and typed-dependency targets from SpecContext.nextRungFailures, and joins a register row to a question by address. The Pack-file read, the readinessFloors walk and the below-defined recomputation are gone. The page gains what the two passes said it lacked: each open question's key and address, a link to the pinned module, and the register rows whose sources lie in the members, with their status and ruling; OD-162 cites the three member lines its ruling changed, so it is among them. check.py resolves the 489 entry addresses written outside the Specs through recipe 25 and fails on any dependsOn cycle recipe 26 reports; tests derive a sample corpus and show a broken address and a planted cycle failing. The feedback file's dated section tells the Protocol's maintainers what the round changed here, what the passes found the page lacked, what the adoption deleted and what still needs the Protocol. Co-Authored-By: Claude Opus 5.5 --- design/decisions/register.json | 18 + design/pages/history-view.md | 143 +++++--- design/tools/check.py | 466 +++++++++++++----------- design/tools/test_decisions.py | 85 ++++- docs/feedback/sdp-feedback-01.md | 41 +++ scripts/pack-page.mjs | 333 +++++++++++------- tests/pure/pack-page.test.ts | 585 +++++++++++++++++++++++-------- 7 files changed, 1117 insertions(+), 554 deletions(-) diff --git a/design/decisions/register.json b/design/decisions/register.json index 8e341e1..22cb008 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6432,6 +6432,24 @@ "ref": "O1", "file": "design/STATE.md", "line": 331 + }, + { + "kind": "specLine", + "ref": "application.generation-registry#outcome", + "file": "design/specs/application/generation-registry.sdp.md", + "line": 29 + }, + { + "kind": "specLine", + "ref": "command.command-declaration#typeReadModelBinding", + "file": "design/specs/command/command-declaration.sdp.md", + "line": 70 + }, + { + "kind": "specLine", + "ref": "command.command-pipeline#readModelWrites", + "file": "design/specs/command/command-pipeline.sdp.md", + "line": 126 } ], "families": [ diff --git a/design/pages/history-view.md b/design/pages/history-view.md index d1d81ab..4bbad6b 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,18 +4,19 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it -Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them. +Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, the register rows whose sources lie in the members with their status and rulings, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them. - The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready. - A register row blocks the first unit of work that needs its decision, a build slice such as S5 named in `design/STATE.md`. That is apart from a question marked blocking, which holds its Spec at scoped, and apart from the floor. - The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. - The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. +- An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries. - An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it. -- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. +- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [`generated/pinned/history-view.ts`](../../generated/pinned/history-view.ts), which `npm run sdp:build` emits and git does not keep. ## Members @@ -154,103 +155,129 @@ No target outside the Pack holds a member below its next rung. ## Open questions -53 open questions on 14 members, none blocking. 47 join a register row by their opening text; 6 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest. +53 open questions on 14 members, none blocking. 47 join a register row by their address; 6 join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its address, which ends in its key, and its opening, at most its first sentence, and links to its line in the Spec for the rest. **[History projection](#1-history-projection)**, `spec:application.history-projection` -- No register row. [question 1](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … -- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … -- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [question 3](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … -- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [question 4](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … -- **OD-174** class owner, status decided, advisor operator, blocks the unit S5. Its source names a question this Spec no longer holds: Extension E-9, the history form's one version: a `HistoryProjection` declares one version, so a deploy that changes it leaves the active generation, which records the earlier version, unwritable, and every command whose … +- No register row. [`spec:application.history-projection#question.historyFoldOrder`](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … +- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-projection#question.historyProjectionCost`](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … +- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historyFoldPureTest`](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … +- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historySubjectErasure`](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … **[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` -- **OD-075** class delegated, status decided, advisor domain, blocks the unit S4. [question 1](../specs/application/projection-contract.sdp.md?plain=1#L33), [non-blocking]: Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker … -- **OD-014** class delegated, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/projection-contract.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model … -- **OD-020** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/application/projection-contract.sdp.md?plain=1#L35), [non-blocking]: The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading … -- No register row. [question 4](../specs/application/projection-contract.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole … -- **OD-159** class none, status unsorted, advisor convex, blocks the unit S5. [question 5](../specs/application/projection-contract.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by … +- **OD-075** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.projection-contract#question.projectionRowContract`](../specs/application/projection-contract.sdp.md?plain=1#L33), [non-blocking]: Extension E-9: the doc says a projection is named, versioned and deterministic and that live update and rebuild share its logic; it does not give the signature or the row shape, for counts and sums it names the marker … +- **OD-014** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.projection-contract#question.projectionGenerationVersions`](../specs/application/projection-contract.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, two projection versions: the doc says live update and rebuild share one projection and does not say how a command writes two generations built by two versions; the option taken here is that a read model … +- **OD-020** class delegated, status sorted, advisor domain, blocks no unit. [`spec:application.projection-contract#question.backfillVersionOverwrite`](../specs/application/projection-contract.sdp.md?plain=1#L35), [non-blocking]: The rule that a row with a newer version is never overwritten is read as the backfill path's rule only, so a live write to the active generation always lands, as `step3` has it; the owner has not confirmed that reading … +- No register row. [`spec:application.projection-contract#question.compositeCurrentStateRow`](../specs/application/projection-contract.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, a composite row of current state: D8 lets a small cross-context view be a read model updated in the command, and no form here writes one row from the DTOs of two sources, because `project` builds a whole … +- **OD-159** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.projection-contract#question.historySourceVersionTenant`](../specs/application/projection-contract.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the cost of `sourceVersions`: a history row's entries repeat the row's tenant ID once per source stream, about three quarters of the largest order allocation history row by … **[Read models](#3-read-models)**, `spec:application.read-models` -- **OD-076** class delegated, status sorted, advisor convex, blocks no unit. [question 1](../specs/application/read-models.sdp.md?plain=1#L49), [non-blocking]: Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw … -- **OD-077** class delegated, status sorted, advisor convex, blocks no unit. [question 2](../specs/application/read-models.sdp.md?plain=1#L50), [non-blocking]: Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's … -- **OD-017** class owner, status decided, advisor domain, blocks no unit. [question 3](../specs/application/read-models.sdp.md?plain=1#L51), [non-blocking]: Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field … -- **OD-078** class owner, status waiting, advisor domain, blocks no unit. [question 4](../specs/application/read-models.sdp.md?plain=1#L52), [non-blocking]: Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) -- **OD-079** class delegated, status waiting, advisor domain, blocks no unit. [question 5](../specs/application/read-models.sdp.md?plain=1#L53), [non-blocking]: Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 … -- No register row. [question 6](../specs/application/read-models.sdp.md?plain=1#L54), [non-blocking]: Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of … +- **OD-076** class delegated, status sorted, advisor convex, blocks no unit. [`spec:application.read-models#question.parentListGenerationSwitch`](../specs/application/read-models.sdp.md?plain=1#L49), [non-blocking]: Probe 5 showed that the built-in `.paginate` treats `maximumRowsRead` as advice once a page has an end cursor and that a cursor it issued is refused by any other query, so a subscription over the active generation threw … +- **OD-077** class delegated, status sorted, advisor convex, blocks no unit. [`spec:application.read-models#question.readModelListBounds`](../specs/application/read-models.sdp.md?plain=1#L50), [non-blocking]: Extension E-24, as it reaches read models: a list over a parent read-model table calls `paginator` of `convex-helpers` with the options of `boundedPage`, a row cap of twice the item cap, with each cursor of the client's … +- **OD-017** class owner, status decided, advisor domain, blocks no unit. [`spec:application.read-models#question.parentQueryRefusal`](../specs/application/read-models.sdp.md?plain=1#L51), [non-blocking]: Extension E-6, as it reaches queries: a parent query establishes and authorizes its actor through `authorizeQuery`, and its refusal is the command's rejection shape, `RejectionData` with the query's name in the field … +- **OD-078** class owner, status waiting, advisor domain, blocks no unit. [`spec:application.read-models#question.contextQueryCost`](../specs/application/read-models.sdp.md?plain=1#L52), [non-blocking]: Probe 3 pending: the cost of one component call in latency and function-call quota decides whether one entity's detail stays a component query or hot reads move, which is OQ1 (Probe 3, F4, OQ1) +- **OD-079** class delegated, status waiting, advisor domain, blocks no unit. [`spec:application.read-models#question.parentQueryReadBounds`](../specs/application/read-models.sdp.md?plain=1#L53), [non-blocking]: Extension E-45: the doc says a small cross-context view is a parent query over bounded component reads and does not give the bound; the option taken here is at most 8 component reads per parent query and at most 4 … +- No register row. [`spec:application.read-models#question.crossContextReadForm`](../specs/application/read-models.sdp.md?plain=1#L54), [non-blocking]: Extension E-9, as it reaches read models: D8 lets a small cross-context view be a parent query over bounded component reads or a read model updated in the command; the option taken here is the parent query for a view of … **[Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause)**, `spec:application.rebuild` -- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [question 1](../specs/application/rebuild.sdp.md?plain=1#L59), [non-blocking]: `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the … -- **OD-080** class delegated, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/rebuild.sdp.md?plain=1#L60), [non-blocking]: Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. -- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [question 3](../specs/application/rebuild.sdp.md?plain=1#L61), [non-blocking]: Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned … -- No register row. [question 4](../specs/application/rebuild.sdp.md?plain=1#L62), [non-blocking]: Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in … -- No register row. [question 5](../specs/application/rebuild.sdp.md?plain=1#L63), [non-blocking]: Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no … +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [`spec:application.rebuild#question.rebuildBatchDriver`](../specs/application/rebuild.sdp.md?plain=1#L59), [non-blocking]: `@convex-dev/migrations` walks only the tables of the component it is defined in, reaches a context's rows only through a parent internal mutation written by hand against a contract its README does not document and the … +- **OD-080** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.rebuild#question.rebuildBatchBounds`](../specs/application/rebuild.sdp.md?plain=1#L60), [non-blocking]: Extension E-40: the doc binds resumable batching to `@convex-dev/migrations` and gives no batch size; the component iterates a parent table while the sources of a read model live in a context component. +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [`spec:application.rebuild#question.rebuildGenerationPauseContract`](../specs/application/rebuild.sdp.md?plain=1#L61), [non-blocking]: Extension E-8: the registry states, the rollback period, what a rollback does, the gate document, the scope a paused rebuild closes and the reach of a generation are design choices the doc does not make; they are pinned … +- No register row. [`spec:application.rebuild#question.rebuildReadModelForms`](../specs/application/rebuild.sdp.md?plain=1#L62), [non-blocking]: Extension E-8, what this workflow does not offer: the online path is pinned for a per-entity read model with one source stream type and the paused path for a history view, a `HistoryRebuildTarget` with its sources, in … +- No register row. [`spec:application.rebuild#question.tenantListFill`](../specs/application/rebuild.sdp.md?plain=1#L63), [non-blocking]: Extension E-49, a deployment whose grants predate the tenant list: the tenant list is written by `insertGrant`, so on such a deployment it holds no row while `grants` holds many, and a pass over an empty list visits no … **[Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause)**, `spec:application.history-rebuild` -- **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [question 1](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … -- **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [question 2](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … -- **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [question 3](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … -- **OD-167** class none, status unsorted, advisor operator, blocks the unit S5. [question 4](../specs/application/history-rebuild.sdp.md?plain=1#L43), [non-blocking]: Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must … -- **OD-168** class none, status unsorted, advisor operator, blocks the unit S5. [question 5](../specs/application/history-rebuild.sdp.md?plain=1#L44), [non-blocking]: Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one … -- **OD-169** class none, status unsorted, advisor operator, blocks the unit S5. [question 6](../specs/application/history-rebuild.sdp.md?plain=1#L45), [non-blocking]: Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while … +- **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchShape`](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … +- **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.verifyPassUnderPause`](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … +- **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchWriteThroughput`](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … +- **OD-167** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyMigrationBeforePause`](../specs/application/history-rebuild.sdp.md?plain=1#L43), [non-blocking]: Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must … +- **OD-168** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.abortSwitchAtomicity`](../specs/application/history-rebuild.sdp.md?plain=1#L44), [non-blocking]: Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one … +- **OD-169** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyTenantPauseIsolation`](../specs/application/history-rebuild.sdp.md?plain=1#L45), [non-blocking]: Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while … **[Write pause](#8-write-pause)**, `spec:application.write-pause` -- **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [question 1](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … -- **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [question 2](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … -- **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [question 3](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep … +- **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [`spec:application.write-pause#question.writePauseSourceScopes`](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … +- **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.write-pause#question.generationGateExemption`](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … +- **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.write-pause#question.writePauseOperatingInstructions`](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep … **[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` -- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [question 1](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … -- **OD-069** class owner, status decided, advisor domain, blocks the unit S4. [question 2](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … -- **OD-070** class delegated, status sorted, advisor operator, blocks no unit. [question 3](../specs/application/generation-registry.sdp.md?plain=1#L39), [non-blocking]: Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the … -- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4. [question 4](../specs/application/generation-registry.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, … -- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4. [question 5](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … -- No register row. [question 6](../specs/application/generation-registry.sdp.md?plain=1#L42), [non-blocking]: Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that … +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.generationRollbackPolicy`](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … +- **OD-069** class owner, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.generationTenantReach`](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … +- **OD-070** class delegated, status sorted, advisor operator, blocks no unit. [`spec:application.generation-registry#question.restoreGenerationFence`](../specs/application/generation-registry.sdp.md?plain=1#L39), [non-blocking]: Extension E-42, as it touches the registry: a restore brings back a generation row and its progress row at their checkpoint and drops the scheduled batch that was driving them, so the row's fence at inventory time is the … +- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.readModelInstallation`](../specs/application/generation-registry.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the first generation: the doc says how a generation is rebuilt and not how a read model's first generation comes to exist; the option taken here is that a read model is installed through its first rebuild, … +- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.rebuildProgressRow`](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … +- No register row. [`spec:application.generation-registry#question.tenantListGenerationStart`](../specs/application/generation-registry.sdp.md?plain=1#L42), [non-blocking]: Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that … **[Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain)**, `spec:application.orders-inventory-example` -- **OD-019** class delegated, status sorted, advisor convex, blocks no unit. [question 1](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … +- **OD-019** class delegated, status sorted, advisor convex, blocks no unit. [`spec:application.orders-inventory-example#question.orderInventoryCommandChoices`](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … **[Command declaration and bindings](#11-command-declaration-and-bindings)**, `spec:command.command-declaration` -- **OD-087** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … -- **OD-015** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … -- **OD-088** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … +- **OD-087** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandEntrySignatures`](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … +- **OD-015** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandDeclarationLookup`](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … +- **OD-088** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandDeclarationFields`](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … **[The command pipeline](#12-the-command-pipeline)**, `spec:command.command-pipeline` -- **OD-089** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … -- **OD-090** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … -- **OD-091** class delegated, status sorted, advisor domain, blocks no unit. [question 3](../specs/command/command-pipeline.sdp.md?plain=1#L70), [non-blocking]: Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command … -- **OD-028** class owner, status sorted, advisor domain, blocks no unit. [question 4](../specs/command/command-pipeline.sdp.md?plain=1#L71), [non-blocking]: Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of … -- **OD-092** class delegated, status sorted, advisor convex, blocks no unit. [question 5](../specs/command/command-pipeline.sdp.md?plain=1#L72), [non-blocking]: Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a … -- **OD-093** class delegated, status sorted, advisor domain, blocks no unit. [question 6](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … -- **OD-094** class delegated, status sorted, advisor domain, blocks no unit. [question 7](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … +- **OD-089** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandOutcomeWireShape`](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … +- **OD-090** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.operationIdentityCause`](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … +- **OD-091** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandAdmissionPolicy`](../specs/command/command-pipeline.sdp.md?plain=1#L70), [non-blocking]: Extension E-32: the doc places rate admission for new intent after the duplicate check and makes a rate or capacity refusal a retryable error, but names no admission mechanism; here admission is an optional per-command … +- **OD-028** class owner, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.publicRequestKey`](../specs/command/command-pipeline.sdp.md?plain=1#L71), [non-blocking]: Extension E-33: the doc lists the callers that need receipts and leaves UI commands to the client guarantee; here a public caller may still supply a request key to opt into a receipt, which Probe 1 showed a caller of … +- **OD-092** class delegated, status sorted, advisor convex, blocks no unit. [`spec:command.command-pipeline#question.contextCallBudgetReservation`](../specs/command/command-pipeline.sdp.md?plain=1#L72), [non-blocking]: Probe 4 showed on the pinned backend that the transaction limits are one budget across the parent and its component sub-transactions, so the per-command bounds are checked against one budget; `ctx.runMutation` accepts a … +- **OD-093** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandReadModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … +- **OD-094** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandTextBounds`](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … **[The event envelope](#13-the-event-envelope)**, `spec:context.event-envelope` -- **OD-104** class delegated, status sorted, advisor domain, blocks no unit. [question 1](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … -- **OD-105** class delegated, status sorted, advisor domain, blocks no unit. [question 2](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … +- **OD-104** class delegated, status sorted, advisor domain, blocks no unit. [`spec:context.event-envelope#question.eventEnvelopeFields`](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … +- **OD-105** class delegated, status sorted, advisor domain, blocks no unit. [`spec:context.event-envelope#question.envelopeTextBounds`](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … **[The journal](#14-the-journal)**, `spec:context.journal` -- **OD-106** class delegated, status sorted, advisor domain, blocks the unit S5. [question 1](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … +- **OD-106** class delegated, status sorted, advisor domain, blocks the unit S5. [`spec:context.journal#question.baselineMigrationContract`](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … **[The context queries](#15-the-context-queries)**, `spec:context.queries` -- **OD-108** class none, status folded, advisor convex, blocks no unit. [question 1](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … -- **OD-109** class delegated, status sorted, advisor convex, blocks no unit. [question 2](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … -- **OD-110** class owner, status decided, advisor convex, blocks no unit. [question 3](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … +- **OD-108** class none, status folded, advisor convex, blocks no unit. [`spec:context.queries#question.contextPaginationSplit`](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … +- **OD-109** class delegated, status sorted, advisor convex, blocks no unit. [`spec:context.queries#question.contextQueryContract`](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … +- **OD-110** class owner, status decided, advisor convex, blocks no unit. [`spec:context.queries#question.queryRefusalEntry`](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … **[Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views)**, `spec:decisions.d09-rebuild-online-by-default` -- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [question 1](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [`spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage`](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) + +## Register rows whose sources lie in the members + +22 register rows have a source in a member's file: every decided row, and every row not decided whose sources cite no open question; a row not decided that cites one is under the open questions above. 20 are decided and 2 are not. Each row gives its status and its sources in the members; a decided row gives the first sentence of its ruling, and a row not decided gives its title. A source other than a question links to the line where it stood when the row was loaded. `python3 design/tools/decisions.py --id ` prints a row in full. + +- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.readModelInstallation`](../specs/application/generation-registry.sdp.md?plain=1#L40) on [Generation registry](#9-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: Install every read model through its first rebuild: generation 1 starts as `building` through `startGeneration`, its backfill covers whatever subjects exist, and the switch makes it active; no transition leads from … +- **OD-014** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.projection-contract#question.projectionGenerationVersions`](../specs/application/projection-contract.sdp.md?plain=1#L34) on [Projection contract](#2-projection-contract). Decided by advisor:domain on 2026-10-03. Ruling: A read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when no … +- **OD-017** class owner, status decided, advisor domain, blocks no unit, from [`spec:application.read-models#question.parentQueryRefusal`](../specs/application/read-models.sdp.md?plain=1#L51) on [Read models](#3-read-models). Decided by owner on 2026-10-03. Ruling: The shared RejectionData with the codes unauthenticated and forbidden for a query stays, a use case's own rejection stays bare, and the field is renamed entry, the name of the entry that refused; the code follows in the … +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4, from [`spec:application.rebuild#question.rebuildBatchDriver`](../specs/application/rebuild.sdp.md?plain=1#L59) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) and [`spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage`](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30) on [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Decided by advisor:convex on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as the rebuild Specs build it, every batch its own self-scheduled internal mutation, … +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationRollbackPolicy`](../specs/application/generation-registry.sdp.md?plain=1#L37) on [Generation registry](#9-generation-registry) and [`spec:application.rebuild#question.rebuildGenerationPauseContract`](../specs/application/rebuild.sdp.md?plain=1#L61) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by owner on 2026-10-02. Ruling: A retired generation is not written. +- **OD-069** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationTenantReach`](../specs/application/generation-registry.sdp.md?plain=1#L38) on [Generation registry](#9-generation-registry). Decided by owner on 2026-10-02. Ruling: One generation per read model spans every tenant. +- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.rebuildProgressRow`](../specs/application/generation-registry.sdp.md?plain=1#L41) on [Generation registry](#9-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, the generation row patched by a batch only at a pass end and the progress row … +- **OD-075** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.projection-contract#question.projectionRowContract`](../specs/application/projection-contract.sdp.md?plain=1#L33) on [Projection contract](#2-projection-contract). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, a ReadModel with its projections, the latest first, and applyProjection writing … +- **OD-080** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.rebuild#question.rebuildBatchBounds`](../specs/application/rebuild.sdp.md?plain=1#L60) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, the batch size the read model's by batchSizeFor and a field of the progress row, … +- **OD-110** class owner, status decided, advisor convex, blocks no unit, from [`spec:context.queries#question.queryRefusalEntry`](../specs/context/queries.sdp.md?plain=1#L43) on [The context queries](#15-the-context-queries). Decided by owner on 2026-10-03. Ruling: The field is entry on the wire, one validator and one word; the rename of the code follows in the language lane. +- **OD-147** class delegated, status sorted, advisor domain, blocks no unit, from [`spec:command.command-pipeline#limitCallText`](../specs/command/command-pipeline.sdp.md?plain=1#L131) on [The command pipeline](#12-the-command-pipeline). No ruling. Its title: The actor ID bound of 512 bytes and the rejection details bound of 16,384 bytes +- **OD-148** class owner, status decided, advisor operator, blocks the unit S4, from [`rebuild#73`](../specs/application/rebuild.sdp.md?plain=1#L73) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by owner on 2026-10-02. Ruling: Admin access is the authority of an operation over the whole deployment. +- **OD-149** class delegated, status decided, advisor operator, blocks the unit S4, from [`rebuild#104`](../specs/application/rebuild.sdp.md?plain=1#L104) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by advisor:operator on 2026-10-03. Ruling: By the lean of the domain lens on this operator row, under the owner's one-advisor word, its facts checked with the corrections in checkedBy, none of which touches its do: the Specs as written; a tenant whose row enters … +- **OD-150** class owner, status decided, advisor operator, blocks the unit S4, from [`write-pause#1`](../specs/application/write-pause.sdp.md?plain=1#L1) on [Write pause](#8-write-pause). Decided by owner on 2026-10-02. Ruling: The write-pause Spec states no acceptable length. +- **OD-151** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#e46-release`](../specs/application/orders-inventory-example.sdp.md?plain=1#L27) on [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: Stock state keeps totals only. +- **OD-152** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#history-view`](../specs/application/orders-inventory-example.sdp.md?plain=1#L52) on [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: The order allocation history view stays in the first experiment, because Sc L2-6 is a row of the doc and the experiment passes on every Layer 0 to 2 row. +- **OD-162** class owner, status decided, advisor domain, blocks no unit, from [`application.generation-registry#outcome`](../specs/application/generation-registry.sdp.md?plain=1#L29) on [Generation registry](#9-generation-registry), [`command.command-declaration#typeReadModelBinding`](../specs/command/command-declaration.sdp.md?plain=1#L70) on [Command declaration and bindings](#11-command-declaration-and-bindings) and [`command.command-pipeline#readModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L126) on [The command pipeline](#12-the-command-pipeline). Decided by owner on 2026-10-04. Ruling: The three Specs pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers, so their floor no longer waits on a scoped Spec. +- **OD-171** class owner, status sorted, advisor domain, blocks no unit, from [`application.projection-contract#source-versions`](../specs/application/projection-contract.sdp.md?plain=1#L47) on [Projection contract](#2-projection-contract). No ruling. Its title: The terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events +- **OD-172** class delegated, status decided, advisor domain, blocks the unit S5, from [`application.history-projection#declarations-bind`](../specs/application/history-projection.sdp.md?plain=1#L49) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule that every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry … +- **OD-173** class delegated, status decided, advisor domain, blocks the unit S5, from [`application.history-projection#event-schema-versions`](../specs/application/history-projection.sdp.md?plain=1#L46) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. +- **OD-174** class owner, status decided, advisor operator, blocks the unit S5, from a question on [History projection](#1-history-projection) that the Spec no longer holds. Decided by owner on 2026-10-04. Ruling: Keep one history projection version and require an operator-controlled handoff from an all-scope pause to the generation's source scopes before exposing a changed version or a new binding to commands. +- **OD-175** class delegated, status decided, advisor operator, blocks the unit S5, from [`application.history-rebuild#historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L73) on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause). Decided by advisor:operator on 2026-10-04. Ruling: Compare each history generation's declared source order with the gate entries naming it, and its declared projection version with the generation row, before backfill, verify, their resume and switch; retain the pause on … ## Each member diff --git a/design/tools/check.py b/design/tools/check.py index 2c67071..5225e93 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -12,7 +12,9 @@ The Protocol's CLI is the pinned dependency in the repository's package.json; run `npm ci` once. What `sdp validate` checks is the Protocol's. What this script adds is this project's policy: citations carry edges, extensions are registered, nobody but the owner states `ready`, a prose -mention with no relation is listed with its reason, and an entry address outside the Specs resolves. +mention with no relation is listed with its reason, an entry address outside the Specs resolves +through the Protocol's address recipe, and no Specs rest on each other through `dependsOn`, as the +Protocol's cycle recipe reports. """ import collections import glob @@ -31,7 +33,8 @@ ROOT = os.path.dirname(DESIGN) PACKAGE = os.path.join(ROOT, "node_modules", "@libar-dev", "software-delivery-protocol") SDP = os.environ.get("SDP", os.path.join(PACKAGE, "dist", "cli", "sdp.js")) -PINNED = json.load(open(os.path.join(ROOT, "package.json"), encoding="utf-8"))["devDependencies"]["@libar-dev/software-delivery-protocol"] +with open(os.path.join(ROOT, "package.json"), encoding="utf-8") as package: + PINNED = json.load(package)["devDependencies"]["@libar-dev/software-delivery-protocol"] READINESS_DIVERGENCE = ( 'const rungs = ["idea", "scoped", "defined", "ready"];' " const rank = (r) => (r === undefined ? -1 : rungs.indexOf(r));" @@ -39,17 +42,22 @@ ) GRAPH_FACTS = ( 'return { mentions: report.findings.filter((f) => f.validatorId === "conformance/prose-mentions")' - ".map((f) => [f.subjectId, f.relatedId, f.path])," - " keys: Object.fromEntries(g.specs().map((s) => { const sections = g.specContext(s.id)?.sections ?? {};" - " return [s.id, { design: Object.keys(sections.design ?? {}), ui: Object.keys(sections.ui ?? {}) }]; })) }" + ".map((f) => [f.subjectId, f.relatedId, f.path]) }" ) PROSE_MENTIONS = os.path.join(DESIGN, "tools", "prose-mentions.json") -# An entry address, spec:#design. or #ui., as the Protocol's checked-mentions record rules it. -# A token runs from `spec:` to a separator, loses trailing punctuation, and is checked whole, so a malformed -# key is refused rather than read as its valid prefix. Historical positional citations in prose -# are kept as written; question sources are checked separately through the Protocol. +# An entry address, spec:#design., #ui. or #question.. A token runs from `spec:` to a +# separator, loses trailing punctuation, and goes whole to the Protocol's address recipe (recipe 25), so a +# malformed key is refused rather than read as its valid prefix. The recipe holds the grammar and the +# lookup; finding the tokens and saying where each stands is this script's. Historical positional +# citations in prose, spec:#, are kept as written and not sent. MENTION_TOKEN = re.compile(r"spec:[^\s`'\"()\[\]{}<>|,;]+") -ADDRESS = re.compile(r"^(spec:[a-z][a-z0-9-]*(?:\.[A-Za-z0-9][A-Za-z0-9-]*)*)#(design|ui)\.([a-z][A-Za-z0-9]*)$") +ADDRESS_SECTION = re.compile(r"#(design|ui|question)\b") +# The recipe's reasons for an address that does not resolve, as this script words them. +ADDRESS_REASONS = { + "malformed": "is outside the address grammar", + "spec": "names no Spec", + "entry": "names no entry of its Spec", +} # Where an address outside the Specs lives: the code, the tests, the register, the ledger and the work documents. # The Protocol checks an address inside a Spec's prose; nothing checks these unless this script does. ADDRESS_SOURCES = ("src", "fixture", "example", "harness", "tests", "scripts") @@ -68,211 +76,241 @@ def run(args): return subprocess.run(["node", SDP] + args, capture_output=True, text=True, cwd=ROOT) -if "--slice" in sys.argv: - wanted = sys.argv[sys.argv.index("--slice") + 1] - for item in json.load(open(os.path.join(DESIGN, "reviews", "consensus-ledger.json"), encoding="utf-8"))["ledger"]: - if item.get("slice") == wanted and item["status"] in ("open", "partially-fixed", "owner"): - print(f"{item['id']} | {item['severity']} | {item['status']} | caught by: {item.get('detector', '?')} | {', '.join(item['files'])}") - sys.exit(0) - - -# 1. The graph: validate and readiness divergence. -out = run(["validate", "."]) -text = out.stdout + out.stderr -graph = re.search(r"(\d+) specs · (\d+) packs · (\d+) anchors → (\d+) nodes · (\d+) edges", text) -verdict = re.search(r"validate: (\d+) errors · (\d+) warnings", text) -if not graph or not verdict: - fail("validate printed no summary line; run `npm ci` at the repository root, then check " + SDP) - print("\n".join(failures)) - sys.exit(1) -n_specs, n_packs, n_anchors, n_nodes, n_edges = (int(x) for x in graph.groups()) -n_errors, n_warnings = (int(x) for x in verdict.groups()) -warnings = [l for l in text.splitlines() if "[warning]" in l and "conformance/prose-mentions" not in l] -if n_errors: - fail(f"validate: {n_errors} errors") - -out = run(["q", GRAPH_FACTS, "--root", ".", "--json"]) -try: - facts = json.loads(out.stdout) -except ValueError: - facts = None - fail("the graph facts query did not return JSON") - -# 1a. A prose mention with no declared relation is lawful when no typed relation fits; the pair is listed -# with its reason. A new pair fails until it gets a relation or a line, and a listed pair that stopped warning goes. -listed = {(p["from"], p["to"]): p["reason"] for p in json.load(open(PROSE_MENTIONS, encoding="utf-8"))["pairs"]} -warned = {(m[0], m[1]): m[2] for m in facts["mentions"]} if facts else {} -for (source, target), path in sorted(warned.items()): - if (source, target) not in listed: - fail(f"{source} mentions {target} at {path} with no relation: declare the relation that fits, or list the pair with its reason in design/tools/prose-mentions.json") -for source, target in sorted(set(listed) - set(warned)): - fail(f"{source} → {target} is listed in design/tools/prose-mentions.json and no longer warns; remove the line") -for (source, target), reason in sorted(listed.items()): - if not reason.strip(): - fail(f"{source} → {target} is listed in design/tools/prose-mentions.json with no reason") -if n_warnings != len(warned): - fail(f"validate: {n_warnings - len(warned)} warnings other than prose mentions, first: {(warnings or ['not printed'])[0][:200]}") - -# 1b. Entry addresses outside the Specs resolve: the Spec exists and its Design or UI section holds the key. -addresses = 0 -if facts: +def address_tokens(paths, base=ROOT): + """Each entry address written in the files, as (token, where), in file and line order.""" + found = [] + for path in sorted(paths): + with open(path, encoding="utf-8") as lines: + for number, line in enumerate(lines, 1): + for token in MENTION_TOKEN.findall(line): + token = token.rstrip(".:!?") + if ADDRESS_SECTION.search(token): + found.append((token, f"{os.path.relpath(path, base)}:{number}")) + return found + + +def address_failures(found, rows): + """The tokens recipe 25 does not resolve. `rows` are its answer, one row per token in input order.""" + if len(rows) != len(found): + return [f"the address recipe answered {len(rows)} rows for {len(found)} entry addresses"] + return [f"entry address {token} at {where} {ADDRESS_REASONS.get(row['reason'], 'does not resolve: ' + repr(row['reason']))}" + for (token, where), row in zip(found, rows) if not row["resolves"]] + + +def cycle_failures(answer): + """Each set of Specs recipe 26 finds resting on each other through dependsOn, with its witness cycle.""" + return [f"dependsOn cycle among {', '.join(entry['members'])}: {' -> '.join(entry['cycle'])}" + for entry in answer["cycles"]] + + +def main(): + if "--slice" in sys.argv: + wanted = sys.argv[sys.argv.index("--slice") + 1] + for item in json.load(open(os.path.join(DESIGN, "reviews", "consensus-ledger.json"), encoding="utf-8"))["ledger"]: + if item.get("slice") == wanted and item["status"] in ("open", "partially-fixed", "owner"): + print(f"{item['id']} | {item['severity']} | {item['status']} | caught by: {item.get('detector', '?')} | {', '.join(item['files'])}") + sys.exit(0) + + + # 1. The graph: validate and readiness divergence. + out = run(["validate", "."]) + text = out.stdout + out.stderr + graph = re.search(r"(\d+) specs · (\d+) packs · (\d+) anchors → (\d+) nodes · (\d+) edges", text) + verdict = re.search(r"validate: (\d+) errors · (\d+) warnings", text) + if not graph or not verdict: + fail("validate printed no summary line; run `npm ci` at the repository root, then check " + SDP) + print("\n".join(failures)) + sys.exit(1) + n_specs, n_packs, n_anchors, n_nodes, n_edges = (int(x) for x in graph.groups()) + n_errors, n_warnings = (int(x) for x in verdict.groups()) + warnings = [l for l in text.splitlines() if "[warning]" in l and "conformance/prose-mentions" not in l] + if n_errors: + fail(f"validate: {n_errors} errors") + + out = run(["q", GRAPH_FACTS, "--root", ".", "--json"]) + try: + facts = json.loads(out.stdout) + except ValueError: + facts = None + fail("the graph facts query did not return JSON") + + # 1a. A prose mention with no declared relation is lawful when no typed relation fits; the pair is listed + # with its reason. A new pair fails until it gets a relation or a line, and a listed pair that stopped warning goes. + listed = {(p["from"], p["to"]): p["reason"] for p in json.load(open(PROSE_MENTIONS, encoding="utf-8"))["pairs"]} + warned = {(m[0], m[1]): m[2] for m in facts["mentions"]} if facts else {} + for (source, target), path in sorted(warned.items()): + if (source, target) not in listed: + fail(f"{source} mentions {target} at {path} with no relation: declare the relation that fits, or list the pair with its reason in design/tools/prose-mentions.json") + for source, target in sorted(set(listed) - set(warned)): + fail(f"{source} → {target} is listed in design/tools/prose-mentions.json and no longer warns; remove the line") + for (source, target), reason in sorted(listed.items()): + if not reason.strip(): + fail(f"{source} → {target} is listed in design/tools/prose-mentions.json with no reason") + if n_warnings != len(warned): + fail(f"validate: {n_warnings - len(warned)} warnings other than prose mentions, first: {(warnings or ['not printed'])[0][:200]}") + + # 1b. Entry addresses outside the Specs resolve, through the Protocol's address recipe. files = [p for top in ADDRESS_SOURCES for ext in ("ts", "tsx", "mjs") for p in glob.glob(os.path.join(ROOT, top, "**", f"*.{ext}"), recursive=True)] files = [p for p in files if "_generated" not in p and not p.endswith(".test.generated.ts")] files += [os.path.join(DESIGN, name) for name in ADDRESS_RECORDS] - for path in sorted(files): - for number, line in enumerate(open(path, encoding="utf-8"), 1): - for token in MENTION_TOKEN.findall(line): - token = token.rstrip(".:!?") - if not re.search(r"#(design|ui)\b", token): - continue - addresses += 1 - where = f"{os.path.relpath(path, ROOT)}:{number}" - match = ADDRESS.match(token) - if not match or match.group(3) == "description": - fail(f"entry address {token} at {where} is outside the address grammar") - continue - spec_id, section, key = match.groups() - if spec_id not in facts["keys"]: - fail(f"entry address {token} at {where} names no Spec") - elif key not in facts["keys"][spec_id][section]: - fail(f"entry address {token} at {where}: {spec_id} has no {section} entry {key}") - -out = run(["q", READINESS_DIVERGENCE, "--root", ".", "--json"]) -try: - diverging = json.loads(out.stdout.strip().splitlines()[-1]) -except (ValueError, IndexError): - diverging = None -if diverging is None: - fail("readiness divergence query did not return JSON") -elif diverging: - fail(f"stated readiness not earned by: {diverging}") - -# 2. Read the Specs. -kinds = collections.Counter() -readiness = collections.Counter() -question_graph = graph_recipe(20) -questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in question_graph["specs"]} -if question_graph["malformed"]: - fail("open-question recipe reports malformed questions") -for spec in question_graph["specs"]: - for question in spec["questions"]: - if not question.get("key"): - fail(f"{spec['id']} carries an open question without a key") -for spec in question_graph["specs"]: - if spec["totals"]["blocking"] and spec["statedReadiness"] != "scoped": - fail(f"{spec['id']} carries a blocking question and states {spec['statedReadiness']}") -spec_files = {} -n_blocking = question_graph["totals"]["blocking"] -cited_extensions = set() -edge_gaps = [] -for path in sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)): - if path.endswith(".pack.sdp.md"): - continue - raw = open(path, encoding="utf-8").read() - front, body = raw.split("\n---\n", 1) - sid = re.search(r"^id: (\S+)", front, re.M).group(1) - spec_files[sid] = os.path.relpath(path, ROOT) - kind = re.search(r"^kind: (\w+)", front, re.M).group(1) - kinds[kind] += 1 - stated = re.search(r"^readiness: (\w+)", front, re.M).group(1) - readiness[stated] += 1 - if stated == "ready": - fail(f"{sid} states ready; only the owner states it, and STATE.md must record the ruling") - cited_extensions |= set(re.findall(r"\bE-(\d+)\b", raw)) - block = re.search(r"constrainedBy:(.*?)(?=\n [a-zA-Z]+:|\Z)", front, re.S) - block = block.group(1) if block else "" - linked_laws = {int(x) for x in re.findall(r"laws\.law(\d+)", block)} - linked_facts = {int(x) for x in re.findall(r"facts\.f(\d+)", block)} - section, cited_laws, cited_facts = None, set(), set() - for line in body.split("\n"): - heading = re.match(r"^#{2,3} (\S+)", line) - if heading: - section = heading.group(1) + found = address_tokens(files) + addresses = len(found) + try: + for message in address_failures(found, graph_recipe(25, ROOT, [token for token, _ in found])["rows"]): + fail(message) + except (ValueError, KeyError) as error: + fail(f"the address recipe did not answer: {str(error)[:200]}") + + # 1c. No Spec rests on itself through dependsOn, as the Protocol's cycle recipe reports. + cycles = None + try: + answer = graph_recipe(26, ROOT) + cycles = len(answer["cycles"]) + for message in cycle_failures(answer): + fail(message) + except (ValueError, KeyError) as error: + fail(f"the cycle recipe did not answer: {str(error)[:200]}") + + out = run(["q", READINESS_DIVERGENCE, "--root", ".", "--json"]) + try: + diverging = json.loads(out.stdout.strip().splitlines()[-1]) + except (ValueError, IndexError): + diverging = None + if diverging is None: + fail("readiness divergence query did not return JSON") + elif diverging: + fail(f"stated readiness not earned by: {diverging}") + + # 2. Read the Specs. + kinds = collections.Counter() + readiness = collections.Counter() + question_graph = graph_recipe(20) + questions = {spec["id"]: [q["question"] for q in spec["questions"]] for spec in question_graph["specs"]} + if question_graph["malformed"]: + fail("open-question recipe reports malformed questions") + for spec in question_graph["specs"]: + for question in spec["questions"]: + if not question.get("key"): + fail(f"{spec['id']} carries an open question without a key") + for spec in question_graph["specs"]: + if spec["totals"]["blocking"] and spec["statedReadiness"] != "scoped": + fail(f"{spec['id']} carries a blocking question and states {spec['statedReadiness']}") + spec_files = {} + n_blocking = question_graph["totals"]["blocking"] + cited_extensions = set() + edge_gaps = [] + for path in sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)): + if path.endswith(".pack.sdp.md"): continue - if section in TYPED_SECTIONS and line.startswith("- "): - cited_laws |= {int(x) for x in re.findall(r"\bLaw (\d+)", line)} - cited_facts |= {int(x) for x in re.findall(r"\bF(\d+)\b", line)} - family = sid.split(":")[1].split(".")[0] - exempt = kind in ("decision", "example") or family in ("laws", "facts") or sid == "spec:platform.vocabulary" - missing_laws, missing_facts = cited_laws - linked_laws, cited_facts - linked_facts - if not exempt and (missing_laws or missing_facts): - edge_gaps.append(f"{sid}: laws {sorted(missing_laws)} facts {sorted(missing_facts)}") -for gap in edge_gaps: - fail("cited without a constrainedBy edge (rubric 16): " + gap) - -# 2a. Open question sources resolve by address through the Protocol; closed ones keep their text. -register = json.load(open(os.path.join(DESIGN, "decisions/register.json"), encoding="utf-8")) -resolutions = question_resolutions(register["decisions"]) -for row in register["decisions"]: - for error in question_source_errors(row, questions, spec_files, resolutions): - fail(row["id"] + ": " + error) - -# 3. README.md against the Specs. -readme = open(os.path.join(DESIGN, "README.md"), encoding="utf-8").read() -expected_line = f"{n_specs} specs · {n_packs} packs · {n_anchors} anchors → {n_nodes} nodes · {n_edges} edges (0 errors, 0 warnings)" -if expected_line not in readme: - fail("README's expected validate output is stale; it should read: " + expected_line) -if f"validate: 0 errors · {n_warnings} warnings" not in readme: - fail(f"README's expected validate verdict is stale; it should read 0 errors and {n_warnings} warnings, each a listed prose mention") -registered = set(re.findall(r"^\| E-(\d+) \|", readme, re.M)) -if cited_extensions - registered: - fail(f"extensions cited in Specs but missing from README's register: E-{sorted(cited_extensions - registered, key=int)}") -if registered - cited_extensions: - fail(f"extensions registered in README but cited by no Spec: E-{sorted(registered - cited_extensions, key=int)}") -n_questions = sum(len(v) for v in questions.values()) -for link in re.findall(r"\]\(([^)#]+)\)", readme): - if not link.startswith("http") and not os.path.exists(os.path.join(DESIGN, link)): - fail(f"README link does not resolve: {link}") - -# 4. The review ledger. -ledger = json.load(open(os.path.join(DESIGN, "reviews", "consensus-ledger.json"), encoding="utf-8"))["ledger"] -by_status = collections.Counter() -for item in ledger: - if item["status"] not in LEDGER_STATUSES: - fail(f"ledger item {item['id']} has status {item['status']!r}; allowed: {sorted(LEDGER_STATUSES)}") - by_status[item["status"]] += 1 - -by_slice = collections.Counter(item.get("slice", "none") for item in ledger if item["status"] == "open") - -# 5. Each Pack page is what the tree generates. The page design/pages/.md is the page of pack:, -# and the generator's --check names the first line that differs. PACK_PAGES is the list of pages the corpus -# keeps, so a page deleted by mistake fails here instead of leaving nothing to check. -PACK_PAGES = ("history-view",) -for path in sorted(glob.glob(os.path.join(DESIGN, "pages", "*.md"))): - if os.path.splitext(os.path.basename(path))[0] not in PACK_PAGES: - fail(f"{os.path.relpath(path, ROOT)} is not in PACK_PAGES") -stale_pages = 0 -for name in PACK_PAGES: - path = os.path.join(DESIGN, "pages", name + ".md") - out = subprocess.run( - ["node", os.path.join(ROOT, "scripts", "pack-page.mjs"), "--pack", f"pack:{name}", "--out", os.path.relpath(path, ROOT), "--check"], - capture_output=True, text=True, cwd=ROOT, - ) - if out.returncode != 0: - stale_pages += 1 - message = (out.stderr + out.stdout).strip().splitlines() - fail(message[0] if message else f"scripts/pack-page.mjs exited {out.returncode} on {os.path.relpath(path, ROOT)}") - -digest = hashlib.sha256() -tracked = sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)) -tracked += [os.path.join(DESIGN, name) for name in ("README.md", "PLAN.md", "SESSIONS.md", "reviews/consensus-ledger.json", "tools/prose-mentions.json")] -for path in tracked: - digest.update(os.path.relpath(path, DESIGN).encode()) - digest.update(open(path, "rb").read()) - -print(expected_line) -print(f"validate: {n_errors} errors · {n_warnings} warnings, {len(listed)} prose mentions listed; readiness divergence: {diverging}") -print(f"entry addresses outside the Specs: {addresses}") -print(f"open questions: {len(questions)} Specs, {n_questions} questions, {n_blocking} blocking; extensions registered: {len(registered)}") -print(f"stated readiness: {dict(sorted(readiness.items()))}") -print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") -print(f"open findings by slice: {dict(sorted(by_slice.items()))}") -print(f"corpus digest: {digest.hexdigest()[:16]}") -print(f"Pack pages current: {len(PACK_PAGES) - stale_pages} of {len(PACK_PAGES)}") -print(f"protocol: {PINNED}") -if failures: - print(f"\nFAIL ({len(failures)}):") - for message in failures: - print(" - " + message) - sys.exit(1) -print("\nOK") + raw = open(path, encoding="utf-8").read() + front, body = raw.split("\n---\n", 1) + sid = re.search(r"^id: (\S+)", front, re.M).group(1) + spec_files[sid] = os.path.relpath(path, ROOT) + kind = re.search(r"^kind: (\w+)", front, re.M).group(1) + kinds[kind] += 1 + stated = re.search(r"^readiness: (\w+)", front, re.M).group(1) + readiness[stated] += 1 + if stated == "ready": + fail(f"{sid} states ready; only the owner states it, and STATE.md must record the ruling") + cited_extensions |= set(re.findall(r"\bE-(\d+)\b", raw)) + block = re.search(r"constrainedBy:(.*?)(?=\n [a-zA-Z]+:|\Z)", front, re.S) + block = block.group(1) if block else "" + linked_laws = {int(x) for x in re.findall(r"laws\.law(\d+)", block)} + linked_facts = {int(x) for x in re.findall(r"facts\.f(\d+)", block)} + section, cited_laws, cited_facts = None, set(), set() + for line in body.split("\n"): + heading = re.match(r"^#{2,3} (\S+)", line) + if heading: + section = heading.group(1) + continue + if section in TYPED_SECTIONS and line.startswith("- "): + cited_laws |= {int(x) for x in re.findall(r"\bLaw (\d+)", line)} + cited_facts |= {int(x) for x in re.findall(r"\bF(\d+)\b", line)} + family = sid.split(":")[1].split(".")[0] + exempt = kind in ("decision", "example") or family in ("laws", "facts") or sid == "spec:platform.vocabulary" + missing_laws, missing_facts = cited_laws - linked_laws, cited_facts - linked_facts + if not exempt and (missing_laws or missing_facts): + edge_gaps.append(f"{sid}: laws {sorted(missing_laws)} facts {sorted(missing_facts)}") + for gap in edge_gaps: + fail("cited without a constrainedBy edge (rubric 16): " + gap) + + # 2a. Open question sources resolve by address through the Protocol; closed ones keep their text. + register = json.load(open(os.path.join(DESIGN, "decisions/register.json"), encoding="utf-8")) + resolutions = question_resolutions(register["decisions"]) + for row in register["decisions"]: + for error in question_source_errors(row, questions, spec_files, resolutions): + fail(row["id"] + ": " + error) + + # 3. README.md against the Specs. + readme = open(os.path.join(DESIGN, "README.md"), encoding="utf-8").read() + expected_line = f"{n_specs} specs · {n_packs} packs · {n_anchors} anchors → {n_nodes} nodes · {n_edges} edges (0 errors, 0 warnings)" + if expected_line not in readme: + fail("README's expected validate output is stale; it should read: " + expected_line) + if f"validate: 0 errors · {n_warnings} warnings" not in readme: + fail(f"README's expected validate verdict is stale; it should read 0 errors and {n_warnings} warnings, each a listed prose mention") + registered = set(re.findall(r"^\| E-(\d+) \|", readme, re.M)) + if cited_extensions - registered: + fail(f"extensions cited in Specs but missing from README's register: E-{sorted(cited_extensions - registered, key=int)}") + if registered - cited_extensions: + fail(f"extensions registered in README but cited by no Spec: E-{sorted(registered - cited_extensions, key=int)}") + n_questions = sum(len(v) for v in questions.values()) + for link in re.findall(r"\]\(([^)#]+)\)", readme): + if not link.startswith("http") and not os.path.exists(os.path.join(DESIGN, link)): + fail(f"README link does not resolve: {link}") + + # 4. The review ledger. + ledger = json.load(open(os.path.join(DESIGN, "reviews", "consensus-ledger.json"), encoding="utf-8"))["ledger"] + by_status = collections.Counter() + for item in ledger: + if item["status"] not in LEDGER_STATUSES: + fail(f"ledger item {item['id']} has status {item['status']!r}; allowed: {sorted(LEDGER_STATUSES)}") + by_status[item["status"]] += 1 + + by_slice = collections.Counter(item.get("slice", "none") for item in ledger if item["status"] == "open") + + # 5. Each Pack page is what the tree generates. The page design/pages/.md is the page of pack:, + # and the generator's --check names the first line that differs. PACK_PAGES is the list of pages the corpus + # keeps, so a page deleted by mistake fails here instead of leaving nothing to check. + PACK_PAGES = ("history-view",) + for path in sorted(glob.glob(os.path.join(DESIGN, "pages", "*.md"))): + if os.path.splitext(os.path.basename(path))[0] not in PACK_PAGES: + fail(f"{os.path.relpath(path, ROOT)} is not in PACK_PAGES") + stale_pages = 0 + for name in PACK_PAGES: + path = os.path.join(DESIGN, "pages", name + ".md") + out = subprocess.run( + ["node", os.path.join(ROOT, "scripts", "pack-page.mjs"), "--pack", f"pack:{name}", "--out", os.path.relpath(path, ROOT), "--check"], + capture_output=True, text=True, cwd=ROOT, + ) + if out.returncode != 0: + stale_pages += 1 + message = (out.stderr + out.stdout).strip().splitlines() + fail(message[0] if message else f"scripts/pack-page.mjs exited {out.returncode} on {os.path.relpath(path, ROOT)}") + + digest = hashlib.sha256() + tracked = sorted(glob.glob(os.path.join(DESIGN, "specs", "**", "*.sdp.md"), recursive=True)) + tracked += [os.path.join(DESIGN, name) for name in ("README.md", "PLAN.md", "SESSIONS.md", "reviews/consensus-ledger.json", "tools/prose-mentions.json")] + for path in tracked: + digest.update(os.path.relpath(path, DESIGN).encode()) + digest.update(open(path, "rb").read()) + + print(expected_line) + print(f"validate: {n_errors} errors · {n_warnings} warnings, {len(listed)} prose mentions listed; readiness divergence: {diverging}") + print(f"entry addresses outside the Specs: {addresses}; dependsOn cycles: {cycles}") + print(f"open questions: {len(questions)} Specs, {n_questions} questions, {n_blocking} blocking; extensions registered: {len(registered)}") + print(f"stated readiness: {dict(sorted(readiness.items()))}") + print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") + print(f"open findings by slice: {dict(sorted(by_slice.items()))}") + print(f"corpus digest: {digest.hexdigest()[:16]}") + print(f"Pack pages current: {len(PACK_PAGES) - stale_pages} of {len(PACK_PAGES)}") + print(f"protocol: {PINNED}") + if failures: + print(f"\nFAIL ({len(failures)}):") + for message in failures: + print(" - " + message) + sys.exit(1) + print("\nOK") + + +if __name__ == "__main__": + main() diff --git a/design/tools/test_decisions.py b/design/tools/test_decisions.py index f249264..9fa537a 100644 --- a/design/tools/test_decisions.py +++ b/design/tools/test_decisions.py @@ -1,4 +1,5 @@ -"""Decision queries, patch refusals and the real register's question sources. +"""Decision queries, patch refusals, the real register's question sources, and the two checks +check.py runs through the Protocol's recipes: entry addresses outside the Specs and dependsOn cycles. Run: python3 -m unittest design/tools/test_decisions.py Fixtures and mutation copies live in operating-system temporary directories. @@ -14,6 +15,7 @@ from pathlib import Path import re import subprocess +import sys import tempfile import unittest @@ -23,6 +25,7 @@ SPEC = importlib.util.spec_from_file_location("decisions_under_test", TOOL_PATH) tool = importlib.util.module_from_spec(SPEC) SPEC.loader.exec_module(tool) +CHECK_PATH = Path(os.environ.get("CHECK_TOOL_UNDER_TEST", ROOT / "design/tools/check.py")) def lean(): @@ -461,5 +464,85 @@ def test_real_register_has_unique_ids_and_resolving_question_sources(self): self.assertEqual(tool.question_source_errors(decision, questions, files, resolutions), []) +def sample_spec(name, relations="{}"): + """A rule Spec of a sample corpus, with one Design entry and one keyed open question.""" + return f"""--- +id: spec:sample.{name} +kind: rule +altitude: story +readiness: scoped +relations: {relations} +--- +# Sample {name} + +## Intent +- outcome: Keep {name}. + +### Open questions +- [non-blocking #keepIt] Keep {name} as it is. Another sentence. + +## Rule +- Keep {name}. + +## Design +- typeOne: `type One = string` + +## Verification — reviewed +- Review {name}. +""" + + +class CheckTests(unittest.TestCase): + """check.py's address and cycle checks over a sample corpus, through the shipped recipes 25 and 26.""" + + @classmethod + def setUpClass(cls): + sys.path.insert(0, str(ROOT / "design/tools")) + spec = importlib.util.spec_from_file_location("check_under_test", CHECK_PATH) + cls.check = importlib.util.module_from_spec(spec) + spec.loader.exec_module(cls.check) + + def setUp(self): + self.temporary = tempfile.TemporaryDirectory() + self.addCleanup(self.temporary.cleanup) + self.root = Path(self.temporary.name) + + def put(self, path, text): + (self.root / path).parent.mkdir(parents=True, exist_ok=True) + (self.root / path).write_text(text) + + def test_a_broken_address_fails_where_it_is_written(self): + self.put("design/specs/sample/one.sdp.md", sample_spec("one")) + self.put("src/cites.ts", "\n".join([ + "// spec:sample.one#design.typeOne resolves.", + "// spec:sample.one#question.keepIt resolves.", + "// spec:sample.one#design.typeTwo names no entry.", + "// spec:sample.none#design.typeOne names no Spec.", + "// spec:sample.one#design.Type-one is malformed.", + "// spec:sample.one#3 is a positional citation, kept as written.", + ]) + "\n") + found = self.check.address_tokens([self.root / "src/cites.ts"], self.root) + self.assertEqual([where for _, where in found], [f"src/cites.ts:{n}" for n in range(1, 6)]) + rows = tool.graph_recipe(25, self.root, [token for token, _ in found])["rows"] + self.assertEqual(self.check.address_failures(found, rows), [ + "entry address spec:sample.one#design.typeTwo at src/cites.ts:3 names no entry of its Spec", + "entry address spec:sample.none#design.typeOne at src/cites.ts:4 names no Spec", + "entry address spec:sample.one#design.Type-one at src/cites.ts:5 is outside the address grammar", + ]) + self.assertEqual(self.check.address_failures(found, rows[:-1]), + ["the address recipe answered 4 rows for 5 entry addresses"]) + + def test_a_planted_cycle_fails_and_a_chain_passes(self): + self.put("design/specs/sample/one.sdp.md", sample_spec("one", "\n dependsOn: spec:sample.two")) + self.put("design/specs/sample/two.sdp.md", sample_spec("two", "\n dependsOn: spec:sample.three")) + self.put("design/specs/sample/three.sdp.md", sample_spec("three")) + self.assertEqual(self.check.cycle_failures(tool.graph_recipe(26, self.root)), []) + self.put("design/specs/sample/three.sdp.md", sample_spec("three", "\n dependsOn: spec:sample.one")) + self.assertEqual(self.check.cycle_failures(tool.graph_recipe(26, self.root)), [ + "dependsOn cycle among spec:sample.one, spec:sample.three, spec:sample.two: " + "spec:sample.one -> spec:sample.two -> spec:sample.three -> spec:sample.one", + ]) + + if __name__ == "__main__": unittest.main() diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index 7f93be6..494b377 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -4,6 +4,47 @@ A running file, addressed to the Protocol's maintainers. Each `adopt` unit and e Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-04, adopting round 2 at `27b896a` + +The pin moved from `5e29c03` to `27b896a`, a build of the Protocol's branch `feature/adopter-round-2`, packed from a clean clone as before. The graph schema is `0.7.0`. The corpus derives 240 Specs, 6 Packs and 144 anchors into 390 nodes and 1,365 edges, validate reports 0 errors and 12 warnings, each a listed prose mention, and `npm test` passed 1,137 tests in 74 files, with 10 skipped. Of the five workarounds the first Pack page listed in the section below, four are gone. What the round changed here: + +- **Pack order.** `packContext` gives the members in the order the Pack file writes them. The page reads its order there and no longer parses the Pack file's front matter. +- **Question keys.** All 166 open questions in 72 Specs carry a key, and `check.py` fails on one without. The register cites 152 open questions by address. Seven sources keep their Spec and opening text, each on a row whose question was removed. The page joins a register row to a question by address: 47 of the 53 questions on the members of `pack:history-view` join a row, the same 47 the text join found. +- **The next rung.** `SpecContext.nextRungFailures` and recipe 9 name the unmet clauses of the rung above the floor, and a typed-dependency failure lists its targets. Here 22 of 240 Specs cannot reach the rung above the one they state: 10 hold a blocking question, and 12 are examples that state `defined` under a parent that states `scoped`. The other 218 have a floor above their stated rung. The page means the rung above the stated one, so when the floor sits higher it says nothing blocks that rung, and otherwise it prints the Protocol's first unmet clause with the targets and their rungs. Every member of the history view states `defined` with its floor at `ready`, so nothing on its page is held. +- **Recipes 25 and 26.** `check.py` sends the 489 entry addresses written outside the Specs to recipe 25 in one call, 337 Design addresses and 152 question addresses, and all of them resolve. Recipe 26 finds no `dependsOn` cycle, and `check.py` fails on any set it returns. That closes the gap of 2026-10-03, when a script outside the gates found nine Specs in loops. + +### The passes as readers of the page + +The domain pass (Opus 5.5) and the operator pass (`gpt-6-astra`) read `design/pages/history-view.md` first, with five tasks each: find the history contract and where each part is pinned; locate OD-157 and its question; say which members depended on the aggregate form and what still does after OD-162; find one declaration's type comparison; say whether a paused-rebuild example has native-backend evidence. + +The domain pass did the second, fourth and fifth in full and the other two in part. The page gave the history contract's declarations with their lines, and the Contract bullets on order independence and the version rule were only in the linked Spec. OD-162 and its ruling were not on the page. It also asked which command declarations bind the history view. + +The operator pass did all five in full, the third through the linked register, because the page gave no OD-162. It also needed the pinned module the type test imports, `generated/pinned/history-view.ts`, which the page did not link, and the restore's comparison contract behind a link outside the Pack. + +The page now links the pinned module, shows each open question's address, and has a section of the 22 register rows whose sources lie in the members, each with its status: 20 decided, each with the first sentence of its ruling, and 2 not decided, OD-147 and OD-171, whose sources cite no question. OD-162 is among the decided rows: its only source was an owner-queue item in `design/STATE.md`, and the register now also cites the three member lines its ruling changed. Member Contract text stays in the Spec files the page links. What the passes asked for and the page still lacks: + +- OD-163, whose one source is an owner-queue item and no Spec line. +- OD-166, whose question is on `spec:application.restore`, a Spec outside the Pack. +- The command declarations that bind a history view. `spec:application.orders-inventory-example` states them in the prose of three model terms, `PlaceOrder`, `ReceiveStock` and the `CancelOrder` declaration, and no declaration in the code binds the view yet. The page reads no prose, so it shows nothing for them. The gap is this corpus's: a keyed Design entry pinning each binding would reach the page through recipe 24. + +### What the adoption deleted + +From `scripts/pack-page.mjs`: `authoredMembers` (15 lines, the Pack file's front matter read by hand), `floorTable` (11 lines, the walk of the exported `readinessFloors` over `buildGraphIndex`), the `nextRung` that walked that table (10 lines), the `belowDefined` recomputation of the typed-dependency targets (5 lines), the 11 lines of `readGraph` that compared the Pack file with the graph, and the join of a question to a register row by its folded opening text. The imports of `buildGraphIndex` and `readinessFloors` went with them. In their place are `packMembers` (9 lines, which refuses a repeated or unresolved member) and a `nextRung` of 15 lines that reads `nextRungFailures` and compares the floor with the stated rung. The script still grew, from 1,114 to 1,185 lines, with the register section and the checks of the register's new source shapes. + +From `design/tools/check.py`: the address grammar, the two lines of its graph query that listed every Spec's Design and UI keys, and the 9-line lookup against them. `address_failures` reads recipe 25's rows in their place, and `cycle_failures` reads recipe 26's sets. Finding the addresses in files and naming each one's file and line stay this corpus's. Two tests in `design/tools/test_decisions.py` derive a sample corpus and show a broken address and a planted cycle failing. + +### What still needs the Protocol + +- **An entry's line.** The page still reads each member's carrier to find the line of every Design entry and open question, because the graph records the line of a binding and not of an entry. Any page that links an address to its line needs it. +- **A recipe's parameter as data.** Recipe 25 takes its addresses on its opening `const` line. `design/tools/decisions.py` rewrites that line with a regular expression and passes 489 addresses, 28,788 characters of JSON, on the command line. Recipe 4 takes its files as JSON in `SDP_CHANGED_FILES_JSON`. The same for recipe 25 would let an adopter run the body as shipped. +- **An anchor that lives in a test.** Unchanged since the first page: `design/tools/anchor-sites.json` is still the adopter's join, and `byFile` on `src/read-model/rebuild.ts` still returns no Spec. + +### Annotating every design pattern in code, an open question + +The owner on the first generation of this tooling: "I loved how annotations for architecturally significant patterns and relationships worked in gen 1." And: "AI agents were constantly against my approach. But that is the strongest value. It was misunderstood that the issue was typescript + gherking -> dual extraction. That was not the issue." And on the claim map of the Studio slice: "You would not be looking for shapes in the codebase that resemble the original desing. All of those from the docs would be annottated, all are significant." + +Two of the Protocol's decision records rule on this. `spec:decisions.architectural-significance-rides-primitives` rules that architectural significance is authored on the existing Spec kinds, relations and anchors, with no pattern kind or vocabulary, so an anchor satisfies only a realized Spec. `spec:decisions.jsdoc-graph-extraction-refused` rules that source commentary never authors graph content and that the anchor constant is the only path from code into the graph. The owner contests both records' account of gen 1. The rulings stand for this round. The Studio slice's claim map, 81 rows that an Opus agent found by reading the code for shapes that resemble each claim of the original design, is the manual work that annotating every design pattern in the code would turn into a projection, and it is the evidence for the later decision. This corpus shows the same question at a smaller scale: the declarations that bind a history view are a relationship the design states in prose and the code will realize, and a page can show a relationship only when the graph holds it. + ## 2026-10-04, a page per capability Pack, built by the adopter The unit `pack-page` built round 1 of `sdp-feedback-03-selection.md` beside this file. `scripts/pack-page.mjs` reads the graph in memory, through the package's exported `extract` and `createReader`. It writes `design/pages/history-view.md`, one committed page for `pack:history-view`: the members in authored order, each with its rung, floor, next rung and the clause that blocks it, its anchors and verifiers, its pinned pairs, the dependencies outside the Pack, and the open questions joined to the register. `check.py` fails when the page is behind the tree. Five things the page needed are not in the Protocol, and the page works around each: diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index e9607ad..476ac41 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -4,12 +4,13 @@ // that differs. It reads the graph in memory through the Protocol package's exported extractor and // reader, never through validate, view, census or build, and runs recipes 20 and 24 as the pinned // Protocol ships them in recipes.md. Three inputs join it: the pinned pairs -// (tests/types/pinned-pairs.json), the anchor sites (design/tools/anchor-sites.json) and the question -// sources of the decision register (design/decisions/register.json); a missing input is an error -// that names its path. The members come in the order the Pack file writes them: the reader sorts -// them, so the order is read from the file. The next rung's blocker is the first clause of the Protocol's floor table, cumulative -// up to the rung above the stated one, that fails: the Protocol's evaluator answers only for the -// stated rung, so the page walks the exported table with the same predicates. +// (tests/types/pinned-pairs.json), the anchor sites (design/tools/anchor-sites.json) and the rows of +// the decision register (design/decisions/register.json); a missing input is an error that names +// its path. The members come in the order the reader's Pack context gives them, which is the order +// the Pack file writes them. The next rung is the rung above the stated one: the reader's +// `nextRungFailures` are the unmet clauses of the rung above the floor, so when the floor sits above +// the stated rung nothing blocks the next rung, and otherwise its first unmet clause is the first of +// them, with the targets that break a typed-dependency clause. // Exit 0: written, or the page is current. 1: --check found the page behind the tree. 2: it cannot // generate. import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; @@ -19,10 +20,8 @@ import { parseArgs } from "node:util"; import { SPEC_KINDS, SPEC_READINESS, - buildGraphIndex, createReader, extract, - readinessFloors, } from "@libar-dev/software-delivery-protocol"; import { format, resolveConfig } from "prettier"; @@ -36,6 +35,10 @@ const inputs = { // The relations a Spec rests on, as recipe 21 and the floor's typed-dependency clause read them. const typedRelations = ["refines", "dependsOn", "constrainedBy", "decidedBy"]; const typedClause = "typed-dependency-targets-are-defined"; +const blockingClause = "no-blocking-open-questions"; +// The module scripts/pinned.mjs emits for a Pack, by default named after the Pack's id. +const pinnedModule = (pack) => + `generated/pinned/${pack.replace(/^pack:/, "")}.ts`; export class PageError extends Error {} function cannot(reason) { @@ -103,88 +106,132 @@ export function readAnchorSites(base) { return sites; } -// The question sources: every register row that names a Spec question, with the fields the page shows. -export function readQuestionSources(base) { +// The register: every row with the fields the page shows and its sources as the register writes +// them. An open question source cites its question by address; a closed one keeps its Spec and the +// question's opening text, as design/advisors/register.md rules. +export function readRegister(base) { const path = inputs.register; const data = readJson(base, path); if (!Array.isArray(data?.decisions)) cannot(`${path} has no list of decisions`); - const rows = []; - for (const decision of data.decisions) - for (const source of decision.sources ?? []) { - if (source?.kind !== "specQuestion") continue; - if (![source.spec, source.question, source.file].every(isText)) - cannot( - `${path} ${decision.id}: a specQuestion source needs spec, question and file`, - ); - rows.push({ - id: decision.id, - class: decision.class ?? null, - status: decision.status ?? null, - advisor: decision.advisor ?? null, - blocks: decision.blocks ?? null, - spec: source.spec, - question: source.question, - }); + return data.decisions.map((decision, at) => { + if (!isText(decision?.id)) cannot(`${path} decisions[${at}] has no id`); + const where = `${path} ${decision.id}`; + if (!Array.isArray(decision.sources)) + cannot(`${where} has no list of sources`); + for (const source of decision.sources) { + if (!isText(source?.kind) || !isText(source.file)) + cannot(`${where}: a source needs a kind and a file`); + if (source.kind !== "specQuestion") continue; + if (source.open === false) { + if (![source.spec, source.question].every(isText)) + cannot( + `${where}: a closed specQuestion source needs spec, question and file`, + ); + } else if (!isText(source.address)) + cannot(`${where}: an open specQuestion source needs address and file`); } - return rows; + return { + id: decision.id, + title: decision.title ?? null, + class: decision.class ?? null, + status: decision.status ?? null, + advisor: decision.advisor ?? null, + blocks: decision.blocks ?? null, + decidedBy: decision.decidedBy ?? null, + decidedOn: decision.decidedOn ?? null, + ruling: decision.ruling ?? null, + sources: decision.sources, + }; + }); +} + +// One entry for each open question source: the row it belongs to and the address it cites. +export function questionSources(rows) { + return rows.flatMap((row) => + row.sources + .filter( + (source) => source.kind === "specQuestion" && source.open !== false, + ) + .map((source) => ({ ...row, address: source.address })), + ); } // --------------------------------------------------------------------------------------------- // The pure parts. -// The members of a Pack in the order its file writes them: the `specs` list of its front matter. -export function authoredMembers(packText) { - const front = /^---\n([\s\S]*?)\n---\n/.exec(packText); - if (front === null) cannot("the Pack file has no front matter"); - const members = []; - let inSpecs = false; - for (const line of front[1].split("\n")) { - if (/^\S/.test(line)) inSpecs = /^specs:\s*$/.test(line); - else if (inSpecs) { - const item = /^\s+-\s+(\S+)\s*$/.exec(line); - if (item !== null) members.push(item[1]); - } - } - if (members.length === 0) cannot("the Pack file lists no specs"); +// The members of a Pack in the order the reader's Pack context gives them, each once. +export function packMembers(context) { + const members = context.members.map((member) => member.id); + if (members.length === 0) cannot(`${context.id} lists no specs`); + const repeated = members.find((id, at) => members.indexOf(id) !== at); + if (repeated !== undefined) cannot(`${context.id} lists ${repeated} twice`); + const unresolved = context.members.find((member) => !member.resolved); + if (unresolved !== undefined) cannot(`${unresolved.id} is not in the graph`); return members; } -// The rung above the stated one and the clauses that fail at it, the floors being cumulative: every -// clause of that rung and of each rung below it, in table order. `floors` is the floor table with -// each clause's verdict, lowest rung first. -export function nextRung(stated, floors) { - const at = floors.findIndex((floor) => floor.rung === stated); - if (at === -1) cannot(`the floor table has no rung ${stated}`); - const next = floors[at + 1]; - if (next === undefined) return { rung: null, failing: [] }; - const failing = floors - .slice(0, at + 2) - .flatMap((floor) => floor.clauses.filter((clause) => !clause.holds)); - return { rung: next.rung, failing }; +// The rung above the stated one and the clauses that fail at it, from a Spec context of the reader. +// `nextRungFailures` are the unmet clauses of the rung above the floor, cumulative in table order. +// When the floor sits above the stated rung, the next rung holds; otherwise the rung above the floor +// is at or below the next rung, so its first unmet clause is the first that fails at the next rung. +// A kind the Protocol does not ratify has no floor, and null says the next rung is not evaluated. +export function nextRung(context) { + if (!SPEC_KINDS.includes(context.specKind)) return null; + const stated = SPEC_READINESS.indexOf(context.statedReadiness); + const rung = SPEC_READINESS[stated + 1] ?? null; + if (rung === null) return { rung, below: false, failing: [] }; + const floor = + context.derivedReadiness === undefined + ? -1 + : SPEC_READINESS.indexOf(context.derivedReadiness); + return { + rung, + below: floor < stated, + failing: floor > stated ? [] : context.nextRungFailures, + }; } -// A question's text without its flag and with its spaces folded, so that a source's opening text -// joins it however the two were wrapped. -const flagged = /^\[(?:non-)?blocking\]\s*/; -const folded = (text) => text.replace(flagged, "").replace(/\s+/g, " ").trim(); +// The address of an open question, or null when its marker carries no key. +export const questionAddress = (spec, question) => + question.key === null || question.key === undefined + ? null + : `${spec}#question.${question.key}`; -// The register rows of one Spec joined to its open questions by text: a row joins each question its -// `question` opens. `left` holds the rows of the Spec that join none. +// The register rows of one Spec joined to its open questions by address: a row joins the question +// its source cites. `left` holds the rows whose address names the Spec and none of its questions. export function joinQuestions(spec, questions, rows) { - const own = rows.filter((row) => row.spec === spec); - const joined = questions.map((question) => ({ - ...question, - rows: own.filter((row) => - folded(question.question).startsWith(folded(row.question)), - ), - })); + const own = rows.filter((row) => row.address.startsWith(`${spec}#`)); + const joined = questions.map((question) => { + const address = questionAddress(spec, question); + return { + ...question, + address, + rows: + address === null ? [] : own.filter((row) => row.address === address), + }; + }); const left = own.filter( (row) => !joined.some((question) => question.rows.includes(row)), ); return { questions: joined, left }; } +// The register rows whose sources lie in a member's file, beside what the open questions show: every +// decided row, and every other row none of whose sources is an open question. `files` is keyed by +// the members' files; each row keeps only its sources in a member, in the register's order. +export function memberRows(rows, files) { + return rows.flatMap((row) => { + const inside = row.sources.filter((source) => files.has(source.file)); + if (inside.length === 0) return []; + const asks = row.sources.some( + (source) => source.kind === "specQuestion" && source.open !== false, + ); + if (row.status !== "decided" && asks) return []; + return [{ ...row, sources: inside }]; + }); +} + // Prettier formats a declaration where it parses as TypeScript, as written or as the form its key // implies: a call signature as a function, an index as a call chained on a name, a property as an // interface member. Otherwise the declaration stays as the Spec writes it. @@ -274,7 +321,7 @@ export function specLines(text) { if (key !== null) design.set(key[1], at + 1); } else if ( section === "Open questions" && - /^- \[(?:non-)?blocking\] /.test(line) + /^- \[(?:non-)?blocking(?: #[a-z][A-Za-z0-9]*)?\] /.test(line) ) questions.push(at + 1); }); @@ -382,20 +429,8 @@ function recipe(number) { return fence[1]; } -function floorTable(node, index) { - if (!SPEC_KINDS.includes(node.specKind)) return null; - return SPEC_READINESS.map((rung) => ({ - rung, - clauses: readinessFloors[rung].clauses.map((clause) => ({ - id: clause.id, - description: clause.description, - holds: clause.predicate(node, index), - })), - })); -} - -async function readGraph(pack) { - const extracted = extract({ root }); +async function readGraph(pack, base) { + const extracted = extract({ root: base }); const error = extracted.report.findings.find( (finding) => finding.severity === "error", ); @@ -406,24 +441,11 @@ async function readGraph(pack) { const summary = reader.packs().find((candidate) => candidate.id === pack) ?? cannot(`the graph has no ${pack}`); - const context = reader.packContext(pack); - const members = authoredMembers( - readFileSync(join(root, summary.file), "utf8"), - ); - const listed = context.members.map((member) => member.id); - if ( - members.length !== listed.length || - !members.every((id) => listed.includes(id)) - ) - cannot(`${summary.file} and the graph list different members`); - const unresolved = context.members.find((member) => !member.resolved); - if (unresolved !== undefined) cannot(`${unresolved.id} is not in the graph`); return { graph, reader, - index: buildGraphIndex(graph), summary, - members, + members: packMembers(reader.packContext(pack)), questions: await new AsyncFunction("g", "graph", "report", recipe(20))( reader, graph, @@ -437,24 +459,29 @@ async function readGraph(pack) { }; } -export async function generate(pack, out) { - const pin = JSON.parse(readFileSync(join(root, "package.json"), "utf8")); +// `base` is the repository the page describes: its graph, its inputs and its links. The recipes +// come from the Protocol this script's repository pins. +export async function generate(pack, out, base = root) { + const pin = JSON.parse(readFileSync(join(base, "package.json"), "utf8")); const enginePin = pin.devDependencies?.[engine] ?? pin.dependencies?.[engine] ?? cannot(`package.json does not depend on ${engine}`); - const { reader, index, summary, members, questions, declarations } = - await readGraph(pack); + const { reader, summary, members, questions, declarations } = await readGraph( + pack, + base, + ); const chained = indexTables(declarations.rows); - const pairs = readPinnedPairs(root, pack); - const sites = readAnchorSites(root); - const sources = readQuestionSources(root); + const pairs = readPinnedPairs(base, pack); + const sites = readAnchorSites(base); + const register = readRegister(base); + const sources = questionSources(register); const prettierOptions = - (await resolveConfig(join(root, "package.json"))) ?? {}; + (await resolveConfig(join(base, "package.json"))) ?? {}; const pageDirectory = dirname(out); const link = (path, line) => { - const target = relative(pageDirectory, join(root, path)) + const target = relative(pageDirectory, join(base, path)) .split(sep) .join("/"); if (line === undefined || line === null) return target; @@ -473,19 +500,11 @@ export async function generate(pack, out) { const model = await Promise.all( members.map(async (id, at) => { const context = reader.specContext(id); - const node = index.primitivesById.get(id); - const floors = floorTable(node, index); - const next = - floors === null ? null : nextRung(context.statedReadiness, floors); - const lines = specLines(readFileSync(join(root, context.file), "utf8")); + const next = nextRung(context); + const lines = specLines(readFileSync(join(base, context.file), "utf8")); const typed = context.relationsOut.filter((relation) => typedRelations.includes(relation.type), ); - const belowDefined = typed.filter( - (relation) => - !relation.resolved || - rank(specs.get(relation.otherId)?.statedReadiness) < rank("defined"), - ); const own = ( questions.specs.find((row) => row.id === id)?.questions ?? [] ).map((question, position) => ({ @@ -527,10 +546,8 @@ export async function generate(pack, out) { next, typed, blockers: - next !== null && - next.failing.some((clause) => clause.id === typedClause) - ? belowDefined - : [], + next?.failing.find((clause) => clause.clauseId === typedClause) + ?.targets ?? [], entries, otherEntries: [...lines.design] .filter(([key]) => !declared.has(key)) @@ -550,7 +567,7 @@ export async function generate(pack, out) { if (member.next.rung === null) return "none above ready"; if (member.next.failing.length === 0) return `${member.next.rung}, which its floor holds`; - return `${member.next.rung}, held by ${span(member.next.failing[0].id)}`; + return `${member.next.rung}, held by ${span(member.next.failing[0].clauseId)}`; }; const pairCounts = (member) => { const count = (state) => @@ -610,19 +627,21 @@ export async function generate(pack, out) { "", ); if (summary.framing !== undefined) write(summary.framing, "", ""); + const pinned = pinnedModule(pack); write( `This page is generated from the Specs of ${span(pack)} by ${span("scripts/pack-page.mjs")}, with three inputs: the pinned pairs in [${span(inputs.pairs)}](${link(inputs.pairs)}), the anchor sites in [${span(inputs.sites)}](${link(inputs.sites)}) and the register rows in [${span(inputs.register)}](${link(inputs.register)}). Do not edit it by hand. Change a Spec or an input, then run ${span("npm run pages")}; ${span("npm run pages -- --check")} fails while the page is behind the tree. The Protocol is pinned at ${span(`${engine}@${enginePin}`)}.${summary.modelRefs.length > 0 ? ` The members speak the vocabulary of ${list(summary.modelRefs.map(specLink))}.` : ""}`, "", "## How to read it", "", - "Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them.", + "Start with the members and with what holds a member below its next rung: together they say where the design stands and what keeps it there. Then come the Specs outside the Pack that the members rest on, the open questions with their register rows, the register rows whose sources lie in the members with their status and rulings, and each member in full with its code, its examples and verifiers, and its pinned declarations. Long lists are folded; open them where you need them.", "", "- The stated rung is the readiness a Spec's author states: idea, scoped, defined or ready.", "- A register row blocks the first unit of work that needs its decision, a build slice such as S5 named in `design/STATE.md`. That is apart from a question marked blocking, which holds its Spec at scoped, and apart from the floor.", "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", + "- An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries.", "- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it.", - "- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing.", + `- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [${span(pinned)}](${link(pinned)}), which ${span("npm run sdp:build")} emits and git does not keep.`, "", ); @@ -674,22 +693,23 @@ export async function generate(pack, out) { if (held.length === 0) write("No member is held below its next rung.", ""); for (const member of held) { const [first, ...rest] = member.next.failing; + const floor = member.context.derivedReadiness; write( - `- ${memberLink(member.id)} states ${member.context.statedReadiness} and cannot reach ${member.next.rung}. The first clause that fails is ${span(first.id)}, which the Protocol states as "${first.description}"${rest.length > 0 ? ` After it, ${list(rest.map((clause) => span(clause.id)))} fail too.` : ""}`, + `- ${memberLink(member.id)} states ${member.context.statedReadiness} and cannot reach ${member.next.rung}.${member.next.below ? ` Its floor, ${floor ?? "none"}, is below its stated rung.` : ""} The first clause that fails is ${span(first.clauseId)}, which the Protocol states as "${first.description}"${rest.length > 0 ? ` After it, ${list(rest.map((clause) => span(clause.clauseId)))} ${rest.length === 1 ? "fails" : "fail"} too.` : ""}`, ); if (member.blockers.length > 0) write( - ` It rests on ${list(member.blockers.map((relation) => `${specLink(relation.otherId)} by ${relation.type}, which ${relation.resolved ? `states ${specs.get(relation.otherId)?.statedReadiness}` : "is not in the graph"}`))}.`, + ` It rests on ${list(member.blockers.map((target) => `${specLink(target.id)} by ${target.type}, which ${target.statedReadiness === undefined ? "is not a Spec" : `states ${target.statedReadiness}`}`))}.`, ); const blocking = member.questions.filter((question) => question.blocking); if ( member.next.failing.some( - (clause) => clause.id === "no-blocking-open-questions", + (clause) => clause.clauseId === blockingClause, ) && blocking.length > 0 ) write( - ` Its blocking ${blocking.length === 1 ? "question is" : "questions are"} ${list(blocking.map((question) => `question ${question.position}`))}, under its open questions below.`, + ` Its blocking ${blocking.length === 1 ? "question is" : "questions are"} ${list(blocking.map((question) => (question.address === null ? `question ${question.position}` : span(question.address))))}, under its open questions below.`, ); } if (held.length > 0) write(""); @@ -717,7 +737,8 @@ export async function generate(pack, out) { }; target.from.push(`${span(member.id)} ${relation.type}`); if ( - member.blockers.some((blocker) => blocker.otherId === relation.otherId) + member.blockers.some((blocker) => blocker.id === relation.otherId) && + !target.blocks.includes(member) ) target.blocks.push(member); outside.set(relation.otherId, target); @@ -844,7 +865,7 @@ export async function generate(pack, out) { write( "## Open questions", "", - `${plural(allQuestions.length, "open question")} on ${plural(model.filter((member) => member.questions.length > 0).length, "member")}, ${blockingCount(allQuestions)}. ${allQuestions.length - unjoined.length} join a register row by their opening text; ${unjoined.length} join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its opening, at most its first sentence, and links to its line in the Spec for the rest.`, + `${plural(allQuestions.length, "open question")} on ${plural(model.filter((member) => member.questions.length > 0).length, "member")}, ${blockingCount(allQuestions)}. ${allQuestions.length - unjoined.length} join a register row by their address; ${unjoined.length} join none. A row gives its OD id, its class, its status, the advisor whose lens it falls under and what it blocks. Each question shows its address, which ends in its key, and its opening, at most its first sentence, and links to its line in the Spec for the rest.`, "", ); const rowText = (row) => @@ -853,10 +874,14 @@ export async function generate(pack, out) { if (member.questions.length === 0 && member.leftRows.length === 0) continue; write(`**${memberLink(member.id)}**, ${span(member.id)}`, ""); for (const question of member.questions) { + const name = + question.address === null + ? `question ${question.position}, which carries no key` + : span(question.address); const where = question.line === null - ? `question ${question.position}` - : `[question ${question.position}](${link(member.context.file, question.line)})`; + ? name + : `[${name}](${link(member.context.file, question.line)})`; const rows = question.rows.length === 0 ? "No register row" @@ -867,11 +892,55 @@ export async function generate(pack, out) { } for (const row of member.leftRows) write( - `- ${rowText(row)}. Its source names a question this Spec no longer holds: ${opening(row.question)}`, + `- ${rowText(row)}. Its source cites ${span(row.address)}, which names none of this Spec's open questions.`, ); write(""); } + // The register rows whose sources lie in the members, beside those the open questions show. + const memberFiles = new Map( + model.map((member) => [member.context.file, member]), + ); + const onMembers = memberRows(register, memberFiles); + const decided = onMembers.filter((row) => row.status === "decided"); + const questionLines = new Map( + model.flatMap((member) => + member.questions + .filter((question) => question.address !== null) + .map((question) => [ + question.address, + { file: member.context.file, line: question.line }, + ]), + ), + ); + const sourceText = (source) => { + const member = memberFiles.get(source.file); + const on = `on ${memberLink(member.id)}`; + if (source.kind === "specQuestion" && source.open === false) + return `a question ${on} that the Spec no longer holds`; + if (source.kind === "specQuestion") { + const at = questionLines.get(source.address); + return `${at === undefined || at.line === null ? span(source.address) : `[${span(source.address)}](${link(at.file, at.line)})`} ${on}`; + } + const name = span(source.ref ?? source.kind); + return `${source.line === undefined ? `[${name}](${link(source.file)})` : `[${name}](${link(source.file, source.line)})`} ${on}`; + }; + write( + "## Register rows whose sources lie in the members", + "", + `${plural(onMembers.length, "register row")} ${onMembers.length === 1 ? "has" : "have"} a source in a member's file: every decided row, and every row not decided whose sources cite no open question; a row not decided that cites one is under the open questions above. ${decided.length} ${decided.length === 1 ? "is" : "are"} decided and ${onMembers.length - decided.length} ${onMembers.length - decided.length === 1 ? "is" : "are"} not. Each row gives its status and its sources in the members; a decided row gives the first sentence of its ruling, and a row not decided gives its title. A source other than a question links to the line where it stood when the row was loaded. ${span("python3 design/tools/decisions.py --id ")} prints a row in full.`, + "", + ); + for (const row of onMembers) + write( + `- ${rowText(row)}, from ${list(row.sources.map(sourceText))}. ${ + row.status === "decided" + ? `Decided by ${row.decidedBy ?? "no one named"} on ${row.decidedOn ?? "no date"}. Ruling: ${opening(row.ruling ?? "none recorded.")}` + : `No ruling. Its title: ${opening(row.title ?? "none.")}` + }`, + ); + if (onMembers.length > 0) write(""); + // Each member. write("## Each member", ""); for (const member of model) { @@ -1030,7 +1099,7 @@ export async function generate(pack, out) { const spec = specs.get(id); if (spec === undefined) return span(address); const line = specLines( - readFileSync(join(root, spec.file), "utf8"), + readFileSync(join(base, spec.file), "utf8"), ).design.get(key); return line === undefined ? `[${span(address)}](${link(spec.file)})` diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index 60893a5..4e91395 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -1,45 +1,61 @@ -// The pure parts of scripts/pack-page.mjs, the generator of a Pack's page: the members in the order -// the Pack file writes them, the clause that holds a member below its next rung, the join of open -// questions to register rows by their opening text, and Prettier's formatting of a declaration with -// its fallback to the text as written. No graph is derived here. -import { - SPEC_READINESS, - readinessFloors, -} from "@libar-dev/software-delivery-protocol"; +// scripts/pack-page.mjs, the generator of a Pack's page: its pure parts, and one page generated from +// a sample corpus in a temporary directory, whose graph the Protocol's extractor derives. The sample +// shows the members in the Pack's order, the clause that holds a member below its next rung with +// the targets that break it, each open question's address, and the register rows on the members. import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; -import { join } from "node:path"; +import { dirname, join } from "node:path"; import { expect, test } from "vitest"; -type Clause = { id: string; description: string; holds: boolean }; -type Floor = { rung: string; clauses: Clause[] }; -type Question = { blocking: boolean; question: string }; +type Failure = { + clauseId: string; + description: string; + targets?: { type: string; id: string; statedReadiness?: string }[]; +}; +type Context = { + specKind: string; + statedReadiness: string; + derivedReadiness?: string; + nextRungFailures: Failure[]; +}; +type Question = { blocking: boolean; question: string; key: string | null }; +type Source = Record & { kind: string; file: string }; type Row = { id: string; + title: string | null; class: string | null; status: string | null; advisor: string | null; blocks: string | null; - spec: string; - question: string; + decidedBy: string | null; + decidedOn: string | null; + ruling: string | null; + sources: Source[]; }; type PackPage = { - authoredMembers(packText: string): string[]; + packMembers(context: { + id: string; + members: { id: string; resolved: boolean }[]; + }): string[]; nextRung( - stated: string, - floors: Floor[], - ): { rung: string | null; failing: Clause[] }; + context: Context, + ): { rung: string | null; below: boolean; failing: Failure[] } | null; joinQuestions( spec: string, questions: Question[], - rows: Row[], - ): { questions: (Question & { rows: Row[] })[]; left: Row[] }; + rows: (Row & { address: string })[], + ): { + questions: (Question & { address: string | null; rows: Row[] })[]; + left: Row[]; + }; + questionSources(rows: Row[]): (Row & { address: string })[]; + memberRows(rows: Row[], files: Map): Row[]; formatDeclaration( text: string, ): Promise<{ text: string; formatted: boolean }>; readPinnedPairs(base: string, pack: string): unknown; readAnchorSites(base: string): unknown; - readQuestionSources(base: string): unknown; + readRegister(base: string): Row[]; indexTables( rows: { spec: string; key: string; declaration: string }[], ): Map; @@ -54,140 +70,187 @@ type PackPage = { committed: string | null; generated: string | null; } | null; + generate(pack: string, out: string, base?: string): Promise; }; // The generator is a script with no declaration file, so it is loaded by URL and typed here. const page = (await import( new URL("../../scripts/pack-page.mjs", import.meta.url).href )) as PackPage; -test("the members come in the order the Pack file writes them, not sorted", () => { - const pack = [ - "---", - "id: pack:sample", - "specs:", - " - spec:sample.second", - " - spec:sample.first", - " - spec:other.third", - "modelRefs:", - " - spec:sample.vocabulary", - "---", - "# Sample", - "", - "The Specs a sample rests on, in reading order.", - ].join("\n"); - expect(page.authoredMembers(pack)).toEqual([ +// Entry addresses are built, so that the check of entry addresses outside the Specs, which reads +// this file, finds no address of the sample corpus. +const at = (spec: string, section: string, key: string) => + `${spec}#${section}.${key}`; + +test("the members come in the order the reader's Pack context gives them, each once", () => { + const member = (id: string, resolved = true) => ({ id, resolved }); + const members = [ + member("spec:sample.second"), + member("spec:sample.first"), + member("spec:other.third"), + ]; + expect(page.packMembers({ id: "pack:sample", members })).toEqual([ "spec:sample.second", "spec:sample.first", "spec:other.third", ]); - expect(() => page.authoredMembers("# No front matter\n")).toThrow( - "the Pack file has no front matter", - ); expect(() => - page.authoredMembers("---\nid: pack:empty\nspecs: []\n---\n# Empty\n"), - ).toThrow("the Pack file lists no specs"); + page.packMembers({ + id: "pack:sample", + members: [...members, member("spec:sample.first")], + }), + ).toThrow("pack:sample lists spec:sample.first twice"); + expect(() => + page.packMembers({ + id: "pack:sample", + members: [member("spec:sample.absent", false)], + }), + ).toThrow("spec:sample.absent is not in the graph"); + expect(() => page.packMembers({ id: "pack:empty", members: [] })).toThrow( + "pack:empty lists no specs", + ); }); -// The Protocol's floor table, with every clause holding but those named. -function floors(failing: string[]): Floor[] { - return SPEC_READINESS.map((rung) => ({ - rung, - clauses: readinessFloors[rung].clauses.map(({ id, description }) => ({ - id, - description, - holds: !failing.includes(id), - })), - })); +const typed: Failure = { + clauseId: "typed-dependency-targets-are-defined", + description: "Every typed target states at least defined.", + targets: [ + { type: "dependsOn", id: "spec:sample.beta", statedReadiness: "scoped" }, + ], +}; +const anchors: Failure = { + clauseId: "anchors-resolve", + description: "Any anchors present resolve.", +}; +function context( + statedReadiness: string, + derivedReadiness: string | undefined, + nextRungFailures: Failure[] = [], +): Context { + return { + specKind: "contract", + statedReadiness, + ...(derivedReadiness === undefined ? {} : { derivedReadiness }), + nextRungFailures, + }; } -const ids = (clauses: Clause[]) => clauses.map((clause) => clause.id); -test("the next rung is held by the clauses that fail at it, the first one first", () => { - const next = page.nextRung( - "defined", - floors(["typed-dependency-targets-are-defined", "anchors-resolve"]), - ); - expect(next.rung).toBe("ready"); - expect(ids(next.failing)).toEqual([ - "typed-dependency-targets-are-defined", - "anchors-resolve", - ]); +test("at the floor, the next rung is held by the Protocol's next-rung failures, the first one first", () => { + expect( + page.nextRung(context("defined", "defined", [typed, anchors])), + ).toEqual({ rung: "ready", below: false, failing: [typed, anchors] }); }); -test("the floors are cumulative: a clause failing below the stated rung comes first", () => { - const next = page.nextRung( - "defined", - floors(["anchors-resolve", "no-blocking-open-questions"]), - ); - expect(ids(next.failing)).toEqual([ - "no-blocking-open-questions", - "anchors-resolve", - ]); +test("a floor above the stated rung leaves nothing to hold the next rung", () => { + // The Protocol reports the rung above the floor, ready here; the page's next rung is defined. + expect(page.nextRung(context("scoped", "defined", [typed]))).toEqual({ + rung: "defined", + below: false, + failing: [], + }); }); -test("a clause above the next rung does not hold it, and ready has no next rung", () => { - expect( - page.nextRung("scoped", floors(["typed-dependency-targets-are-defined"])), - ).toEqual({ rung: "defined", failing: [] }); - expect(page.nextRung("ready", floors([]))).toEqual({ +test("a floor below the stated rung is said, and its first unmet clause holds the next rung", () => { + const blocking: Failure = { + clauseId: "no-blocking-open-questions", + description: "Spec has no blocking open question in intent.openQuestions.", + }; + expect(page.nextRung(context("defined", "scoped", [blocking]))).toEqual({ + rung: "ready", + below: true, + failing: [blocking], + }); +}); + +test("ready has no next rung, and a kind the Protocol does not ratify is not evaluated", () => { + expect(page.nextRung(context("ready", "ready"))).toEqual({ rung: null, + below: false, failing: [], }); + expect( + page.nextRung({ ...context("defined", undefined), specKind: "essay" }), + ).toBeNull(); }); -function row(id: string, spec: string, question: string): Row { +function row(id: string, changes: Partial = {}): Row { return { id, + title: `The title of ${id}.`, class: "owner", status: "sorted", - advisor: "convex", + advisor: "domain", blocks: null, - spec, - question, + decidedBy: null, + decidedOn: null, + ruling: null, + sources: [], + ...changes, }; } +const question = (address: string, file = "design/specs/sample/one.sdp.md") => + ({ kind: "specQuestion", address, file }) as Source; -test("a register row joins each open question of its Spec that its text opens", () => { +test("a register row joins the open question its source cites by address", () => { + const spec = "spec:sample.rebuild"; const questions: Question[] = [ - { - blocking: false, - question: - "Extension E-9, the history fold: D2 orders events only within a stream. The option taken here is a fold.", - }, - { - blocking: true, - question: - "The verify pass under the write pause: a generation is built while no source changes,\nso its verify pass repeats the backfill. The pass is kept.", - }, - { blocking: false, question: "A question no row names." }, + { blocking: false, question: "The fold.", key: "fold" }, + { blocking: true, question: "The verify pass.", key: "verifyPass" }, + { blocking: false, question: "A question with no key.", key: null }, ]; + const sources = page.questionSources([ + row("OD-157", { sources: [question(at(spec, "question", "verifyPass"))] }), + row("OD-158", { sources: [question(at(spec, "question", "fold"))] }), + row("OD-159", { + sources: [question(at("spec:sample.rebuild.child", "question", "fold"))], + }), + row("OD-160", { sources: [question(at(spec, "question", "removed"))] }), + row("OD-161", { + sources: [ + { + kind: "specQuestion", + spec, + question: "A closed question.", + file: "x", + open: false, + }, + ], + }), + ]); + expect(sources.map((source) => source.id)).toEqual([ + "OD-157", + "OD-158", + "OD-159", + "OD-160", + ]); + const joined = page.joinQuestions(spec, questions, sources); + expect(joined.questions.map((entry) => entry.rows.map((r) => r.id))).toEqual([ + ["OD-158"], + ["OD-157"], + [], + ]); + expect(joined.questions.map((entry) => entry.address)).toEqual([ + at(spec, "question", "fold"), + at(spec, "question", "verifyPass"), + null, + ]); + expect(joined.left.map((r) => r.id)).toEqual(["OD-160"]); +}); + +test("the rows on the members are every decided row and every other row that cites no open question", () => { + const file = "design/specs/sample/one.sdp.md"; + const elsewhere = { kind: "ownerQueue", ref: "O1", file: "design/STATE.md" }; + const line = { kind: "specLine", ref: "sample.one#rule", file, line: 9 }; const rows = [ - row( - "OD-157", - "spec:sample.rebuild", - "The verify pass under the write pause: a generation is built while no source changes, so its verify pass repeats the backfill.", - ), - row( - "OD-158", - "spec:sample.rebuild", - "[non-blocking] Extension E-9, the history fold: D2 orders events only within a stream.", - ), - row( - "OD-159", - "spec:sample.other", - "The verify pass under the write pause: a generation is built while no source changes, so its verify pass repeats the backfill.", - ), - row( - "OD-160", - "spec:sample.rebuild", - "A question the Spec no longer holds.", - ), + row("OD-001", { status: "decided", sources: [elsewhere, line] }), + row("OD-002", { status: "decided", sources: [question("q", file)] }), + row("OD-003", { status: "sorted", sources: [question("q", file)] }), + row("OD-004", { status: "sorted", sources: [line] }), + row("OD-005", { status: "decided", sources: [elsewhere] }), ]; - const joined = page.joinQuestions("spec:sample.rebuild", questions, rows); - expect( - joined.questions.map((question) => question.rows.map((r) => r.id)), - ).toEqual([["OD-158"], ["OD-157"], []]); - expect(joined.questions[1]?.blocking).toBe(true); - expect(joined.left.map((r) => r.id)).toEqual(["OD-160"]); + const chosen = page.memberRows(rows, new Map([[file, {}]])); + expect(chosen.map((r) => r.id)).toEqual(["OD-001", "OD-002", "OD-004"]); + expect(chosen[0]?.sources).toEqual([line]); }); test("a declaration Prettier parses is formatted, as written or in the form its key implies", async () => { @@ -240,7 +303,7 @@ test("a missing input is an error that names its path", async () => { expect(() => page.readAnchorSites(base)).toThrow( "design/tools/anchor-sites.json is missing", ); - expect(() => page.readQuestionSources(base)).toThrow( + expect(() => page.readRegister(base)).toThrow( "design/decisions/register.json is missing", ); } finally { @@ -254,7 +317,11 @@ test("an input off its ruled shape is refused", async () => { await mkdir(join(base, "tests/types"), { recursive: true }); await mkdir(join(base, "design/decisions"), { recursive: true }); const pair = { - address: "spec:application.generation-registry#design.typeRegistryReader", + address: at( + "spec:application.generation-registry", + "design", + "typeRegistryReader", + ), state: "bound", comparison: "type", code: "src/sample/index.ts#One", @@ -279,29 +346,35 @@ test("an input off its ruled shape is refused", async () => { ); await pairs([pair, pair]); expect(() => page.readPinnedPairs(base, "pack:sample")).toThrow( - "pairs[1] repeats spec:application.generation-registry#design.typeRegistryReader", + `pairs[1] repeats ${pair.address}`, ); - // A question source that cites the question by its position, the form the rulings retire. - await writeFile( - join(base, "design/decisions/register.json"), - JSON.stringify({ - decisions: [ - { - id: "OD-001", - sources: [ - { - kind: "specQuestion", - ref: "spec:sample.one#2", - file: "design/specs/sample/one.sdp.md", - line: 30, - }, - ], - }, - ], - }), + const register = (source: object) => + writeFile( + join(base, "design/decisions/register.json"), + JSON.stringify({ decisions: [{ id: "OD-001", sources: [source] }] }), + ); + // An open question source that cites its question by opening text, the form the rulings retire. + await register({ + kind: "specQuestion", + spec: "spec:sample.one", + question: "The opening.", + file: "design/specs/sample/one.sdp.md", + }); + expect(() => page.readRegister(base)).toThrow( + "OD-001: an open specQuestion source needs address and file", + ); + await register({ + kind: "specQuestion", + spec: "spec:sample.one", + file: "design/specs/sample/one.sdp.md", + open: false, + }); + expect(() => page.readRegister(base)).toThrow( + "OD-001: a closed specQuestion source needs spec, question and file", ); - expect(() => page.readQuestionSources(base)).toThrow( - "OD-001: a specQuestion source needs spec, question and file", + await register({ kind: "specLine", ref: "sample.one#rule" }); + expect(() => page.readRegister(base)).toThrow( + "OD-001: a source needs a kind and a file", ); } finally { await rm(base, { recursive: true, force: true }); @@ -321,7 +394,7 @@ test("the line of each Design entry and open question is read from the carrier", "", "### Open questions", "", - "- [non-blocking] Extension E-1: the first question (E-1)", + "- [non-blocking #first] Extension E-1: the first question (E-1)", "- [blocking] The second question (E-1)", "", "## Design", @@ -411,16 +484,230 @@ test("an index belongs to the table its Spec wrote last before it, as the pinned declaration: '.index("by_key", ["key"])', }, ]; - // Addresses are built, so that the check of entry addresses outside the Specs reads no sample one. - const at = (spec: string, key: string) => `${spec}#design.${key}`; expect([...page.indexTables(rows)]).toEqual([ [ - at("spec:sample.one", "indexItemsByName"), - at("spec:sample.one", "tableItems"), + at("spec:sample.one", "design", "indexItemsByName"), + at("spec:sample.one", "design", "tableItems"), ], [ - at("spec:sample.one", "indexMarksByAt"), - at("spec:sample.one", "tableMarks"), + at("spec:sample.one", "design", "indexMarksByAt"), + at("spec:sample.one", "design", "tableMarks"), ], ]); }); + +// A decision Spec of the sample corpus: `relations` are its front-matter lines, `questions` the +// lines of its open questions. +function decision( + name: string, + readiness: string, + relations: string[], + questions: string[] = [], +) { + return [ + "---", + `id: spec:sample.${name}`, + "kind: decision", + "altitude: feature", + `readiness: ${readiness}`, + "relations:", + ...relations.map((relation) => ` ${relation}`), + "---", + `# The ${name} decision`, + "", + "## Intent", + "", + `- outcome: Settle ${name}`, + ...(questions.length === 0 + ? [] + : ["", "### Open questions", "", ...questions]), + "", + "## Decision", + "", + `- context: A sample needs ${name}`, + `- decision: Take ${name}`, + "", + ].join("\n"); +} + +test("the page of a sample Pack reads its order, its blockers and its register rows from the graph", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + const put = async (path: string, text: string) => { + await mkdir(dirname(join(base, path)), { recursive: true }); + await writeFile(join(base, path), text); + }; + const file = (name: string) => `design/specs/sample/${name}.sdp.md`; + try { + await put( + "package.json", + JSON.stringify({ + devDependencies: { + "@libar-dev/software-delivery-protocol": "file:sample.tgz", + }, + }), + ); + await put( + "tests/types/pinned-pairs.json", + JSON.stringify({ + pack: "pack:sample", + test: "tests/types/sample.test-d.ts", + pairs: [], + }), + ); + await put( + "design/tools/anchor-sites.json", + JSON.stringify({ anchors: [] }), + ); + // The Pack lists its members out of id order. + await put( + "design/specs/sample.pack.sdp.md", + [ + "---", + "id: pack:sample", + "specs:", + " - spec:sample.gamma", + " - spec:sample.alpha", + " - spec:sample.beta", + "---", + "# Sample", + "", + "The Specs of a sample, in reading order.", + "", + ].join("\n"), + ); + // Alpha states defined and rests on two Specs that state scoped, one of them outside the Pack. + await put( + file("alpha"), + decision("alpha", "defined", [ + "dependsOn:", + " - spec:sample.delta", + " - spec:sample.beta", + ]), + ); + await put( + file("beta"), + decision( + "beta", + "scoped", + ["refines: spec:sample.gamma"], + ["- [blocking #betaChoice] Which option does beta take. More text."], + ), + ); + await put( + file("gamma"), + decision("gamma", "scoped", ["refines: spec:sample.alpha"]), + ); + await put( + file("delta"), + decision("delta", "scoped", ["refines: spec:sample.gamma"]), + ); + const betaChoice = at("spec:sample.beta", "question", "betaChoice"); + await put( + "design/decisions/register.json", + JSON.stringify({ + decisions: [ + row("OD-001", { + sources: [question(betaChoice, file("beta"))], + blocks: "S5", + }), + row("OD-002", { + status: "decided", + decidedBy: "owner", + decidedOn: "2026-10-04", + ruling: "Take the first option. Then the reasons.", + sources: [ + { + kind: "specLine", + ref: "sample.alpha#take", + file: file("alpha"), + line: 19, + }, + ], + }), + row("OD-003", { + status: "decided", + decidedBy: "owner", + decidedOn: "2026-10-04", + ruling: "A ruling outside the members.", + sources: [ + { + kind: "ownerQueue", + ref: "O1", + file: "design/STATE.md", + line: 1, + }, + ], + }), + row("OD-004", { + sources: [ + { + kind: "specLine", + ref: "sample.gamma#term", + file: file("gamma"), + line: 13, + }, + ], + }), + ], + }), + ); + const text = await page.generate( + "pack:sample", + join(base, "design/pages/sample.md"), + base, + ); + const lines = text.split("\n"); + + const memberIds = lines + .filter((line) => /^\| \[\d+\]\(#/.test(line)) + .map((line) => /`(spec:[^`]+)`/.exec(line)?.[1]); + expect(memberIds).toEqual([ + "spec:sample.gamma", + "spec:sample.alpha", + "spec:sample.beta", + ]); + + const alpha = lines.findIndex((line) => + line.startsWith("- [The alpha decision]"), + ); + expect(lines[alpha]).toContain( + "states defined and cannot reach ready. The first clause that fails is `typed-dependency-targets-are-defined`", + ); + expect(lines[alpha + 1]).toBe( + " It rests on [`spec:sample.beta`](../specs/sample/beta.sdp.md) by dependsOn, which states scoped and [`spec:sample.delta`](../specs/sample/delta.sdp.md) by dependsOn, which states scoped.", + ); + const beta = lines.findIndex((line) => + line.startsWith("- [The beta decision]"), + ); + expect(lines[beta]).toContain( + "The first clause that fails is `no-blocking-open-questions`", + ); + expect(lines[beta + 1]).toBe( + ` Its blocking question is \`${betaChoice}\`, under its open questions below.`, + ); + expect(text).toContain( + "The floor holds at the next rung for [The gamma decision](#1-the-gamma-decision).", + ); + expect(text).toContain( + "| [`spec:sample.delta`](../specs/sample/delta.sdp.md) | scoped | defined | [The alpha decision](#2-the-alpha-decision) | `spec:sample.alpha` dependsOn |", + ); + + expect(text).toContain( + `- **OD-001** class owner, status sorted, advisor domain, blocks the unit S5. [\`${betaChoice}\`](../specs/sample/beta.sdp.md?plain=1#L17), [blocking]: Which option does beta take.`, + ); + expect(text).toContain( + "- **OD-002** class owner, status decided, advisor domain, blocks no unit, from [`sample.alpha#take`](../specs/sample/alpha.sdp.md?plain=1#L19) on [The alpha decision](#2-the-alpha-decision). Decided by owner on 2026-10-04. Ruling: Take the first option.", + ); + expect(text).not.toContain("Then the reasons."); + expect(text).not.toContain("OD-003"); + expect(text).toContain("## Register rows whose sources lie in the members"); + expect(text).toContain( + "- **OD-004** class owner, status sorted, advisor domain, blocks no unit, from [`sample.gamma#term`](../specs/sample/gamma.sdp.md?plain=1#L13) on [The gamma decision](#1-the-gamma-decision). No ruling. Its title: The title of OD-004.", + ); + expect(text).toContain( + "[`generated/pinned/sample.ts`](../../generated/pinned/sample.ts)", + ); + } finally { + await rm(base, { recursive: true, force: true }); + } +}); From adbd37f2d98ead12e2519618cac576948c23a25b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 05:46:48 +0200 Subject: [PATCH 34/60] design: pause the unit sdp-round-2 at a seam for a restart Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/design/STATE.md b/design/STATE.md index c54c66f..bc76a1d 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -2,6 +2,8 @@ Written on 2026-10-04 at the close of the unit `pack-page`, which extends the pull request of the unit `design-in-the-graph` (#12), stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. +**In progress: the unit `sdp-round-2`**, paused on 2026-10-04 for a restart of the owner's machine, at a seam after `0c7b7aa`. It extends pull request #12 with the domain and operator passes over `pack:history-view` and the adoption of the Protocol's round 2 (branch `feature/adopter-round-2`, built in the same unit). The handover note is `handover.md` in the unit folder `~/dev-libar-supporting-context/calibration/application-platform-sdp-round-2/`; the rest of this file waits for the close. + ## Measured at close ``` From f04f44fae9a546577ece5f4cb658ced4d14e0a35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 06:07:53 +0200 Subject: [PATCH 35/60] build: pin the Protocol at dfa1bd9, the round-2 branch after its review The branch's whole gate passes there (npm run check, preflight included). Between 27b896a and dfa1bd9 the review's fold-in changed the import emitter, one Spec's wording on repeated Pack members, the Studio Specs, plan 39 and tests; nothing this corpus reads moved: 240 Specs, 390 nodes, 1,365 edges, 12 listed warnings, 489 addresses resolved, no cycle. The page names the new pin. Co-Authored-By: Claude Opus 5.5 --- design/pages/history-view.md | 2 +- package-lock.json | 6 +++--- package.json | 2 +- ...oftware-delivery-protocol-0.0.0-27b896a.tgz | Bin 433257 -> 0 bytes ...oftware-delivery-protocol-0.0.0-dfa1bd9.tgz | Bin 0 -> 434119 bytes 5 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 4bbad6b..23253ff 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,7 +4,7 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it diff --git a/package-lock.json b/package-lock.json index d0981bd..0840c8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -801,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", - "integrity": "sha512-D97EZ3ynVLM5VXF3U4FqwICikv++W6qxSIaWM25seo5L9srgDix8bDGXv087xz6+xFOgGqLt8eTid2uAGCc7Cg==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", + "integrity": "sha512-IYAFF1uJFcEcx0RGexzO/q0vZXWWIGfnU2AjVYbE1KYZgBFqo4QkX3103UdRs/YLTJFetuAXBoqmES8SB8qSWw==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index e0338a1..73d165d 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-27b896a.tgz deleted file mode 100644 index 8ce20d2b5ebb2057a6a708bd378f23afd7675cf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 433257 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

WD9-6?LI+*WpuTYeVI1Z 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

N|B` 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ưSRrmV_Ky8fvjTECCdhz?o>_|Kk~G0-C_s+ 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�zvT1X2LXE+lM5%$6fsU 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

N2jmePt16a~zNzl-|UY(tm-vE-D)0$zYl^NNu+K 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

8kK$#`1cx@Jj_~701yfAq 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 diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b15fc40968c085c009f91a1795f9be9a858798f3 GIT binary patch literal 434119 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

SW%NB{0WPLHI5Q6uy)<+6{JjS` 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⁢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

The 18 Specs that rest on a member @@ -159,10 +162,10 @@ No target outside the Pack holds a member below its next rung. **[History projection](#1-history-projection)**, `spec:application.history-projection` -- No register row. [`spec:application.history-projection#question.historyFoldOrder`](../specs/application/history-projection.sdp.md?plain=1#L34), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … -- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-projection#question.historyProjectionCost`](../specs/application/history-projection.sdp.md?plain=1#L35), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … -- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historyFoldPureTest`](../specs/application/history-projection.sdp.md?plain=1#L36), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … -- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historySubjectErasure`](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … +- No register row. [`spec:application.history-projection#question.historyFoldOrder`](../specs/application/history-projection.sdp.md?plain=1#L37), [non-blocking]: Extension E-9, the history fold: D2 orders events only within a stream, and the two paths feed one history row in different orders, the live path command by command and the backfill stream by stream; the option taken … +- **OD-160** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-projection#question.historyProjectionCost`](../specs/application/history-projection.sdp.md?plain=1#L38), [non-blocking]: The cost of the binding on the live path, one row read and one write of up to `rowBudgetBytes` per command and the measure of the row, is taken by the first experiment's latency cell with the order allocation history … +- **OD-164** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historyFoldPureTest`](../specs/application/history-projection.sdp.md?plain=1#L39), [non-blocking]: Extension E-9, the check of the history fold: the order independence the Contract requires is checked for the order allocation history alone; the option taken here is that every history projection of an application … +- **OD-165** class none, status unsorted, advisor domain, blocks the unit S5. [`spec:application.history-projection#question.historySubjectErasure`](../specs/application/history-projection.sdp.md?plain=1#L40), [non-blocking]: A history row keeps a deleted subject's history and every rebuild writes it again from the journal; whether a history view falls under the retention and deletion policy of D19, and what its rebuild does after an erasure, … **[Projection contract](#2-projection-contract)**, `spec:application.projection-contract` @@ -191,20 +194,20 @@ No target outside the Pack holds a member below its next rung. **[Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause)**, `spec:application.history-rebuild` -- **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchShape`](../specs/application/history-rebuild.sdp.md?plain=1#L40), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … -- **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.verifyPassUnderPause`](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … -- **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchWriteThroughput`](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … -- **OD-167** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyMigrationBeforePause`](../specs/application/history-rebuild.sdp.md?plain=1#L43), [non-blocking]: Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must … -- **OD-168** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.abortSwitchAtomicity`](../specs/application/history-rebuild.sdp.md?plain=1#L44), [non-blocking]: Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one … -- **OD-169** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyTenantPauseIsolation`](../specs/application/history-rebuild.sdp.md?plain=1#L45), [non-blocking]: Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while … +- **OD-156** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchShape`](../specs/application/history-rebuild.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the shape of a history batch: a batch takes one stream, so a pass costs at least one scheduled mutation per source stream and the pause lasts about twice the stream count times one batch; the alternative … +- **OD-157** class owner, status sorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.verifyPassUnderPause`](../specs/application/history-rebuild.sdp.md?plain=1#L42), [non-blocking]: The verify pass under the write pause: a history view's generation is built while no source changes, so its verify pass repeats the backfill's batches and, by `spec:application.history-rebuild#design.historyVerify`, … +- **OD-158** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.history-rebuild#question.historyBatchWriteThroughput`](../specs/application/history-rebuild.sdp.md?plain=1#L43), [non-blocking]: Whether a history view's batch chain, at up to 2 MiB of rows per batch scheduled with `runAfter(0)`, is held by the deployment class's write throughput limit, … +- **OD-167** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyMigrationBeforePause`](../specs/application/history-rebuild.sdp.md?plain=1#L44), [non-blocking]: Must every source's migration that reads history finish before `startGeneration` closes its source scopes, with abort, migration completion and a fresh generation as the recovery if it did not? If enumeration must … +- **OD-168** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.abortSwitchAtomicity`](../specs/application/history-rebuild.sdp.md?plain=1#L45), [non-blocking]: Should the native-backend abort example inject failure in the second source's audit insert, assert unchanged generation, progress, gate entries and audit records, then retry after removing the fault and assert one … +- **OD-169** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.history-rebuild#question.historyTenantPauseIsolation`](../specs/application/history-rebuild.sdp.md?plain=1#L46), [non-blocking]: Should the native-backend example use two tenants with equal local order and stock item IDs, check their folds separately, and refuse a command that writes a paused source without a history binding in both tenants, while … -**[Write pause](#8-write-pause)**, `spec:application.write-pause` +**[Write pause](#11-write-pause)**, `spec:application.write-pause` - **OD-084** class delegated, status sorted, advisor operator, blocks the unit S4. [`spec:application.write-pause#question.writePauseSourceScopes`](../specs/application/write-pause.sdp.md?plain=1#L39), [non-blocking]: Extension E-8: the doc names a maintenance gate every writer reads, fencing or draining of background writers, and operator resume and abort; the option taken here is one gate document per deployment holding the closed … - **OD-161** class none, status unsorted, advisor convex, blocks the unit S5. [`spec:application.write-pause#question.generationGateExemption`](../specs/application/write-pause.sdp.md?plain=1#L40), [non-blocking]: Extension E-8, the generation exemption: a batch reads the gate with the scopes `all` and its tenant, and no entry of either scope ever names a generation, so the exemption `gateAllows` makes for a given generation is … - **OD-170** class none, status unsorted, advisor operator, blocks the unit S5. [`spec:application.write-pause#question.writePauseOperatingInstructions`](../specs/application/write-pause.sdp.md?plain=1#L41), [non-blocking]: Should its operating instructions distinguish a stopped pass from a verified generation awaiting switch, using `getGenerations` and `getGate`, and measure the closed interval through the successful switch or abort? Keep … -**[Generation registry](#9-generation-registry)**, `spec:application.generation-registry` +**[Generation registry](#12-generation-registry)**, `spec:application.generation-registry` - **OD-068** class owner, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.generationRollbackPolicy`](../specs/application/generation-registry.sdp.md?plain=1#L37), [non-blocking]: Extension E-8: the doc names a generation registry, a marker and a gate without their shapes, and says to keep the old generation for a rollback period without saying whether live commands keep writing it; the option … - **OD-069** class owner, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.generationTenantReach`](../specs/application/generation-registry.sdp.md?plain=1#L38), [non-blocking]: Extension E-8, reach of a generation: the doc says nothing about tenants and rebuild; one generation per read model spans every tenant, the registry has no tenant dimension, one row is active for all tenants and the … @@ -213,17 +216,17 @@ No target outside the Pack holds a member below its next rung. - **OD-071** class delegated, status decided, advisor domain, blocks the unit S4. [`spec:application.generation-registry#question.rebuildProgressRow`](../specs/application/generation-registry.sdp.md?plain=1#L41), [non-blocking]: Extension E-40, the checkpoint: the cursor, the batch size and the counts live on the progress row and not on the generation row, because a batch that wrote its checkpoint on the row every command reads would re-run … - No register row. [`spec:application.generation-registry#question.tenantListGenerationStart`](../specs/application/generation-registry.sdp.md?plain=1#L42), [non-blocking]: Extension E-49, as it touches the registry: on a deployment whose grants predate the tenant list the list is empty while grants exist, and a generation started then visits no tenant; the option taken here is that … -**[Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain)**, `spec:application.orders-inventory-example` +**[Orders and Inventory, the example domain](#13-orders-and-inventory-the-example-domain)**, `spec:application.orders-inventory-example` - **OD-019** class delegated, status sorted, advisor convex, blocks no unit. [`spec:application.orders-inventory-example#question.orderInventoryCommandChoices`](../specs/application/orders-inventory-example.sdp.md?plain=1#L36), [non-blocking]: Extension E-46: the second lifecycle command, the essential summary, the command that creates stock, the unit price an order line carries, the bound on an order line's stock item ID, the rejection reasons, the stream … -**[Command declaration and bindings](#11-command-declaration-and-bindings)**, `spec:command.command-declaration` +**[Command declaration and bindings](#14-command-declaration-and-bindings)**, `spec:command.command-declaration` - **OD-087** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandEntrySignatures`](../specs/command/command-declaration.sdp.md?plain=1#L38), [non-blocking]: Extension E-7: the doc says a small composition helper and shared schema values; the helper signatures, the executor signature and the read-model binding below are the design's; the cost is two registered mutations per … - **OD-015** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandDeclarationLookup`](../specs/command/command-declaration.sdp.md?plain=1#L39), [non-blocking]: Extension E-7: the pipeline receives the declaration and takes the fingerprint's contract version from it, and the type check at a typed caller is the check of Sc L2-4, so no standing map from command type to declaration … - **OD-088** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-declaration#question.commandDeclarationFields`](../specs/command/command-declaration.sdp.md?plain=1#L40), [non-blocking]: Extension E-38: the doc names five declaration fields; this design adds `contractVersion` for the fingerprint, `retention` and `irreversible` for receipts, `admission`, `bounds`, `rejections`, `audit`, `diagnosticSink` … -**[The command pipeline](#12-the-command-pipeline)**, `spec:command.command-pipeline` +**[The command pipeline](#15-the-command-pipeline)**, `spec:command.command-pipeline` - **OD-089** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandOutcomeWireShape`](../specs/command/command-pipeline.sdp.md?plain=1#L68), [non-blocking]: Extension E-30: the doc names the outcome, the operation ID and the affected stream versions as what a command returns, but not a wire shape; the shape here is a union discriminated by `replayed`, whose executed member … - **OD-090** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.operationIdentityCause`](../specs/command/command-pipeline.sdp.md?plain=1#L69), [non-blocking]: Extension E-31: the doc says an operation's ID ties together everything one request caused but not how it is minted, and it says a derived command carries causation and an event's `causedBy` may be a triggering event … @@ -233,22 +236,22 @@ No target outside the Pack holds a member below its next rung. - **OD-093** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandReadModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L73), [non-blocking]: Extension E-9: the doc says essential read models are updated inside the command and does not say from what or in what order; here step 9 writes a per-entity read model from the DTO of each matching `streams` entry, … - **OD-094** class delegated, status sorted, advisor domain, blocks no unit. [`spec:command.command-pipeline#question.commandTextBounds`](../specs/command/command-pipeline.sdp.md?plain=1#L74), [non-blocking]: Extension E-34: step 1 bounds every text field a caller sets beside the input, the tenant ID, the request key, the correlation ID, the actor's fields and the fields of `causedBy`, in UTF-8 bytes as `limitCallText` lists … -**[The event envelope](#13-the-event-envelope)**, `spec:context.event-envelope` +**[The event envelope](#16-the-event-envelope)**, `spec:context.event-envelope` - **OD-104** class delegated, status sorted, advisor domain, blocks no unit. [`spec:context.event-envelope#question.eventEnvelopeFields`](../specs/context/event-envelope.sdp.md?plain=1#L31), [non-blocking]: Extension E-26: the doc lists the fifteen fields and their meaning; this Spec fixes the validator shapes, the `CausedBy` union with a migration variant for baseline events, the `OperationRef` the parent passes, and the … - **OD-105** class delegated, status sorted, advisor domain, blocks no unit. [`spec:context.event-envelope#question.envelopeTextBounds`](../specs/context/event-envelope.sdp.md?plain=1#L32), [non-blocking]: Extension E-12: the doc says events stay small and gives no number for the envelope; this Spec bounds the envelope beside the payload at `limitEnvelopeBytes`, 4,096 bytes, and each text field of it that a caller can set … -**[The journal](#14-the-journal)**, `spec:context.journal` +**[The journal](#17-the-journal)**, `spec:context.journal` - **OD-106** class delegated, status sorted, advisor domain, blocks the unit S5. [`spec:context.journal#question.baselineMigrationContract`](../specs/context/journal.sdp.md?plain=1#L51), [non-blocking]: Extension E-25: the doc says a migration writes a baseline event holding the migrated state and that rebuild starts from the latest baseline, and it does not say who computes that state, who drives the migration, or what … -**[The context queries](#15-the-context-queries)**, `spec:context.queries` +**[The context queries](#18-the-context-queries)**, `spec:context.queries` - **OD-108** class none, status folded, advisor convex, blocks no unit. [`spec:context.queries#question.contextPaginationSplit`](../specs/context/queries.sdp.md?plain=1#L41), [non-blocking]: Probe 5 showed on the pinned backend with `convex-helpers` 0.1.124 that the parent query stays reactive, that pages pinned by their end cursors stay contiguous, that a capped page crosses the boundary as `SplitRequired` … - **OD-109** class delegated, status sorted, advisor convex, blocks no unit. [`spec:context.queries#question.contextQueryContract`](../specs/context/queries.sdp.md?plain=1#L42), [non-blocking]: Extension E-24: the doc says component queries are authorized and return DTOs; this Spec fixes one definer per query, the one `tenantId` argument with no separate scope, the `toDto` mapping with the stream version on … - **OD-110** class owner, status decided, advisor convex, blocks no unit. [`spec:context.queries#question.queryRefusalEntry`](../specs/context/queries.sdp.md?plain=1#L43), [non-blocking]: A parent query's refusal carries the name of the entry that refused in the field `entry` of the rejection data; the wire shape stays `RejectionData` of `spec:command.outcome-boundary` unchanged, and the owner confirmed … -**[Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views)**, `spec:decisions.d09-rebuild-online-by-default` +**[Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views)**, `spec:decisions.d09-rebuild-online-by-default` - **OD-057** class delegated, status decided, advisor convex, blocks the unit S4. [`spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage`](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30), [non-blocking]: Probe 6 ran a backfill batch racing a live command and the migrations component on the native backend, with its results on F17; a hosted deployment and sustained contention are not run (Probe 6, F1, F17, D9) @@ -256,28 +259,28 @@ No target outside the Pack holds a member below its next rung. 22 register rows have a source in a member's file: every decided row, and every row not decided whose sources cite no open question; a row not decided that cites one is under the open questions above. 20 are decided and 2 are not. Each row gives its status and its sources in the members; a decided row gives the first sentence of its ruling, and a row not decided gives its title. A source other than a question links to the line where it stood when the row was loaded. `python3 design/tools/decisions.py --id ` prints a row in full. -- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.readModelInstallation`](../specs/application/generation-registry.sdp.md?plain=1#L40) on [Generation registry](#9-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: Install every read model through its first rebuild: generation 1 starts as `building` through `startGeneration`, its backfill covers whatever subjects exist, and the switch makes it active; no transition leads from … +- **OD-010** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.readModelInstallation`](../specs/application/generation-registry.sdp.md?plain=1#L40) on [Generation registry](#12-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: Install every read model through its first rebuild: generation 1 starts as `building` through `startGeneration`, its backfill covers whatever subjects exist, and the switch makes it active; no transition leads from … - **OD-014** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.projection-contract#question.projectionGenerationVersions`](../specs/application/projection-contract.sdp.md?plain=1#L34) on [Projection contract](#2-projection-contract). Decided by advisor:domain on 2026-10-03. Ruling: A read model declares its projection versions as a list, the latest first, and `applyProjection` writes each generation with the projection whose version the generation row records, failing as a technical failure when no … - **OD-017** class owner, status decided, advisor domain, blocks no unit, from [`spec:application.read-models#question.parentQueryRefusal`](../specs/application/read-models.sdp.md?plain=1#L51) on [Read models](#3-read-models). Decided by owner on 2026-10-03. Ruling: The shared RejectionData with the codes unauthenticated and forbidden for a query stays, a use case's own rejection stays bare, and the field is renamed entry, the name of the entry that refused; the code follows in the … -- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4, from [`spec:application.rebuild#question.rebuildBatchDriver`](../specs/application/rebuild.sdp.md?plain=1#L59) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) and [`spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage`](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30) on [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Decided by advisor:convex on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as the rebuild Specs build it, every batch its own self-scheduled internal mutation, … -- **OD-068** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationRollbackPolicy`](../specs/application/generation-registry.sdp.md?plain=1#L37) on [Generation registry](#9-generation-registry) and [`spec:application.rebuild#question.rebuildGenerationPauseContract`](../specs/application/rebuild.sdp.md?plain=1#L61) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by owner on 2026-10-02. Ruling: A retired generation is not written. -- **OD-069** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationTenantReach`](../specs/application/generation-registry.sdp.md?plain=1#L38) on [Generation registry](#9-generation-registry). Decided by owner on 2026-10-02. Ruling: One generation per read model spans every tenant. -- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.rebuildProgressRow`](../specs/application/generation-registry.sdp.md?plain=1#L41) on [Generation registry](#9-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, the generation row patched by a batch only at a pass end and the progress row … +- **OD-057** class delegated, status decided, advisor convex, blocks the unit S4, from [`spec:application.rebuild#question.rebuildBatchDriver`](../specs/application/rebuild.sdp.md?plain=1#L59) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) and [`spec:decisions.d09-rebuild-online-by-default#question.rebuildContentionCoverage`](../specs/decisions/d09-rebuild-online-by-default.sdp.md?plain=1#L30) on [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Decided by advisor:convex on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as the rebuild Specs build it, every batch its own self-scheduled internal mutation, … +- **OD-068** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationRollbackPolicy`](../specs/application/generation-registry.sdp.md?plain=1#L37) on [Generation registry](#12-generation-registry) and [`spec:application.rebuild#question.rebuildGenerationPauseContract`](../specs/application/rebuild.sdp.md?plain=1#L61) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by owner on 2026-10-02. Ruling: A retired generation is not written. +- **OD-069** class owner, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.generationTenantReach`](../specs/application/generation-registry.sdp.md?plain=1#L38) on [Generation registry](#12-generation-registry). Decided by owner on 2026-10-02. Ruling: One generation per read model spans every tenant. +- **OD-071** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.generation-registry#question.rebuildProgressRow`](../specs/application/generation-registry.sdp.md?plain=1#L41) on [Generation registry](#12-generation-registry). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, the generation row patched by a batch only at a pass end and the progress row … - **OD-075** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.projection-contract#question.projectionRowContract`](../specs/application/projection-contract.sdp.md?plain=1#L33) on [Projection contract](#2-projection-contract). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, a ReadModel with its projections, the latest first, and applyProjection writing … - **OD-080** class delegated, status decided, advisor domain, blocks the unit S4, from [`spec:application.rebuild#question.rebuildBatchBounds`](../specs/application/rebuild.sdp.md?plain=1#L60) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by advisor:domain on 2026-10-03. Ruling: By the advisor's checked lean, which the owner agreed to ("I agree with all recommendations", rulings 1 of round 3, Q8): the lean as built, the batch size the read model's by batchSizeFor and a field of the progress row, … -- **OD-110** class owner, status decided, advisor convex, blocks no unit, from [`spec:context.queries#question.queryRefusalEntry`](../specs/context/queries.sdp.md?plain=1#L43) on [The context queries](#15-the-context-queries). Decided by owner on 2026-10-03. Ruling: The field is entry on the wire, one validator and one word; the rename of the code follows in the language lane. -- **OD-147** class delegated, status sorted, advisor domain, blocks no unit, from [`spec:command.command-pipeline#limitCallText`](../specs/command/command-pipeline.sdp.md?plain=1#L131) on [The command pipeline](#12-the-command-pipeline). No ruling. Its title: The actor ID bound of 512 bytes and the rejection details bound of 16,384 bytes +- **OD-110** class owner, status decided, advisor convex, blocks no unit, from [`spec:context.queries#question.queryRefusalEntry`](../specs/context/queries.sdp.md?plain=1#L43) on [The context queries](#18-the-context-queries). Decided by owner on 2026-10-03. Ruling: The field is entry on the wire, one validator and one word; the rename of the code follows in the language lane. +- **OD-147** class delegated, status sorted, advisor domain, blocks no unit, from [`spec:command.command-pipeline#limitCallText`](../specs/command/command-pipeline.sdp.md?plain=1#L131) on [The command pipeline](#15-the-command-pipeline). No ruling. Its title: The actor ID bound of 512 bytes and the rejection details bound of 16,384 bytes - **OD-148** class owner, status decided, advisor operator, blocks the unit S4, from [`rebuild#73`](../specs/application/rebuild.sdp.md?plain=1#L73) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by owner on 2026-10-02. Ruling: Admin access is the authority of an operation over the whole deployment. - **OD-149** class delegated, status decided, advisor operator, blocks the unit S4, from [`rebuild#104`](../specs/application/rebuild.sdp.md?plain=1#L104) on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). Decided by advisor:operator on 2026-10-03. Ruling: By the lean of the domain lens on this operator row, under the owner's one-advisor word, its facts checked with the corrections in checkedBy, none of which touches its do: the Specs as written; a tenant whose row enters … -- **OD-150** class owner, status decided, advisor operator, blocks the unit S4, from [`write-pause#1`](../specs/application/write-pause.sdp.md?plain=1#L1) on [Write pause](#8-write-pause). Decided by owner on 2026-10-02. Ruling: The write-pause Spec states no acceptable length. -- **OD-151** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#e46-release`](../specs/application/orders-inventory-example.sdp.md?plain=1#L27) on [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: Stock state keeps totals only. -- **OD-152** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#history-view`](../specs/application/orders-inventory-example.sdp.md?plain=1#L52) on [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: The order allocation history view stays in the first experiment, because Sc L2-6 is a row of the doc and the experiment passes on every Layer 0 to 2 row. -- **OD-162** class owner, status decided, advisor domain, blocks no unit, from [`application.generation-registry#outcome`](../specs/application/generation-registry.sdp.md?plain=1#L29) on [Generation registry](#9-generation-registry), [`command.command-declaration#typeReadModelBinding`](../specs/command/command-declaration.sdp.md?plain=1#L70) on [Command declaration and bindings](#11-command-declaration-and-bindings) and [`command.command-pipeline#readModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L126) on [The command pipeline](#12-the-command-pipeline). Decided by owner on 2026-10-04. Ruling: The three Specs pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers, so their floor no longer waits on a scoped Spec. -- **OD-171** class owner, status sorted, advisor domain, blocks no unit, from [`application.projection-contract#source-versions`](../specs/application/projection-contract.sdp.md?plain=1#L47) on [Projection contract](#2-projection-contract). No ruling. Its title: The terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events -- **OD-172** class delegated, status decided, advisor domain, blocks the unit S5, from [`application.history-projection#declarations-bind`](../specs/application/history-projection.sdp.md?plain=1#L49) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule that every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry … -- **OD-173** class delegated, status decided, advisor domain, blocks the unit S5, from [`application.history-projection#event-schema-versions`](../specs/application/history-projection.sdp.md?plain=1#L46) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. +- **OD-150** class owner, status decided, advisor operator, blocks the unit S4, from [`write-pause#1`](../specs/application/write-pause.sdp.md?plain=1#L1) on [Write pause](#11-write-pause). Decided by owner on 2026-10-02. Ruling: The write-pause Spec states no acceptable length. +- **OD-151** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#e46-release`](../specs/application/orders-inventory-example.sdp.md?plain=1#L27) on [Orders and Inventory, the example domain](#13-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: Stock state keeps totals only. +- **OD-152** class owner, status decided, advisor domain, blocks the unit S4, from [`application.orders-inventory-example#history-view`](../specs/application/orders-inventory-example.sdp.md?plain=1#L52) on [Orders and Inventory, the example domain](#13-orders-and-inventory-the-example-domain). Decided by owner on 2026-10-02. Ruling: The order allocation history view stays in the first experiment, because Sc L2-6 is a row of the doc and the experiment passes on every Layer 0 to 2 row. +- **OD-162** class owner, status decided, advisor domain, blocks no unit, from [`application.generation-registry#outcome`](../specs/application/generation-registry.sdp.md?plain=1#L29) on [Generation registry](#12-generation-registry), [`command.command-declaration#typeReadModelBinding`](../specs/command/command-declaration.sdp.md?plain=1#L70) on [Command declaration and bindings](#14-command-declaration-and-bindings) and [`command.command-pipeline#readModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L126) on [The command pipeline](#15-the-command-pipeline). Decided by owner on 2026-10-04. Ruling: The three Specs pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers, so their floor no longer waits on a scoped Spec. +- **OD-171** class owner, status sorted, advisor domain, blocks no unit, from [`spec:application.projection-contract#source-versions`](../specs/application/projection-contract.sdp.md?plain=1#L47) on [Projection contract](#2-projection-contract). No ruling. Its title: The terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events +- **OD-172** class delegated, status decided, advisor domain, blocks the unit S5, from [`spec:application.history-projection#declarations-bind`](../specs/application/history-projection.sdp.md?plain=1#L51) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule that every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry … +- **OD-173** class delegated, status decided, advisor domain, blocks the unit S5, from [`spec:application.history-projection#event-schema-versions`](../specs/application/history-projection.sdp.md?plain=1#L48) on [History projection](#1-history-projection). Decided by advisor:domain on 2026-10-04. Ruling: Add to `spec:application.history-projection` a Contract rule: `project` reads every `eventSchemaVersion` that its sources' journals hold of the event types it folds, so no baseline retires an older shape for it. - **OD-174** class owner, status decided, advisor operator, blocks the unit S5, from a question on [History projection](#1-history-projection) that the Spec no longer holds. Decided by owner on 2026-10-04. Ruling: Keep one history projection version and require an operator-controlled handoff from an all-scope pause to the generation's source scopes before exposing a changed version or a new binding to commands. -- **OD-175** class delegated, status decided, advisor operator, blocks the unit S5, from [`application.history-rebuild#historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L73) on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause). Decided by advisor:operator on 2026-10-04. Ruling: Compare each history generation's declared source order with the gate entries naming it, and its declared projection version with the generation row, before backfill, verify, their resume and switch; retain the pause on … +- **OD-175** class delegated, status decided, advisor operator, blocks the unit S5, from [`spec:application.history-rebuild#historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L74) on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause). Decided by advisor:operator on 2026-10-04. Ruling: Compare each history generation's declared source order with the gate entries naming it, and its declared projection version with the generation row, before backfill, verify, their resume and switch; retain the pause on … ## Each member @@ -285,7 +288,7 @@ No target outside the Pack holds a member below its next rung. [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projection contract](#2-projection-contract) by dependsOn, [The event envelope](#13-the-event-envelope) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projection contract](#2-projection-contract) by dependsOn, [The event envelope](#16-the-event-envelope) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** No implementation anchor binds it. @@ -295,18 +298,18 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L58) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L59) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L61) | ahead | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | -| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L62) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L63) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | -| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L64) | ahead | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | -| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L65) | ahead | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L61) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L62) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L63) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L64) | ahead | the type | `HistoryEvent` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L65) | bound | the type | `OrderAllocation` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L66) | bound | the type | `OrderAllocationHistoryFields` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | | +| [`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L67) | ahead | the type | `orderAllocationHistoryKeyOf` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d | +| [`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L68) | ahead | the type | `projectOrderAllocationHistory` in [`example/domain/orderAllocationHistory.ts`](../../example/domain/orderAllocationHistory.ts) | the design adds `eventSchemaVersion`; the code carries it in 5d |
The 8 declarations as the Spec pins them -[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L58) +[`spec:application.history-projection#design.typeHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L61) ```ts interface HistoryProjection { @@ -319,7 +322,7 @@ interface HistoryProjection { } ``` -[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L59) +[`spec:application.history-projection#design.fnApplyHistoryProjection`](../specs/application/history-projection.sdp.md?plain=1#L62) ```ts applyHistoryProjection( @@ -334,7 +337,7 @@ applyHistoryProjection( ): Promise<{ key: string; results: ApplyResult[] }[]> ``` -[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L60) +[`spec:application.history-projection#design.tableOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L63) ```ts orderAllocationHistory: defineTable({ @@ -353,7 +356,7 @@ orderAllocationHistory: defineTable({ }).index("by_key", ["tenantId", "generation", "key"]) ``` -[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L61) +[`spec:application.history-projection#design.typeHistoryEvent`](../specs/application/history-projection.sdp.md?plain=1#L64) ```ts type HistoryEvent = { @@ -366,7 +369,7 @@ type HistoryEvent = { } ``` -[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L62) +[`spec:application.history-projection#design.typeOrderAllocation`](../specs/application/history-projection.sdp.md?plain=1#L65) ```ts type OrderAllocation = { @@ -377,7 +380,7 @@ type OrderAllocation = { } ``` -[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L63) +[`spec:application.history-projection#design.typeOrderAllocationHistoryFields`](../specs/application/history-projection.sdp.md?plain=1#L66) ```ts type OrderAllocationHistoryFields = { @@ -388,7 +391,7 @@ type OrderAllocationHistoryFields = { } ``` -[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L64) +[`spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf`](../specs/application/history-projection.sdp.md?plain=1#L67) ```ts orderAllocationHistoryKeyOf( @@ -397,7 +400,7 @@ orderAllocationHistoryKeyOf( ): string | null ``` -[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L65) +[`spec:application.history-projection#design.fnProjectOrderAllocationHistory`](../specs/application/history-projection.sdp.md?plain=1#L68) ```ts projectOrderAllocationHistory( @@ -409,13 +412,13 @@ projectOrderAllocationHistory(
-**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L66), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L67). +**Other Design entries.** 2 entries pin no declaration: [`orderAllocationHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L69), [`limitHistoryFold`](../specs/application/history-projection.sdp.md?plain=1#L70). ### 2. Projection contract [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Read models](#3-read-models) by refines and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Read models](#3-read-models) by refines and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** @@ -567,7 +570,7 @@ orderSummaries: defineTable({ ...rowConventions, ...orderSummaryFields }) [`spec:application.read-models`](../specs/application/read-models.sdp.md) · behavior · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [The context queries](#15-the-context-queries) by dependsOn. +Inside the Pack it rests on [The context queries](#18-the-context-queries) by dependsOn. **Code.** @@ -732,7 +735,7 @@ limitReadModelList(readModel) = { [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#8-write-pause) by dependsOn, [Generation registry](#9-generation-registry) by dependsOn, [The context queries](#15-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#11-write-pause) by dependsOn, [Generation registry](#12-generation-registry) by dependsOn, [The context queries](#18-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** @@ -1057,7 +1060,7 @@ limitPurgeBatch( [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by dependsOn, [Write pause](#8-write-pause) by dependsOn, [Generation registry](#9-generation-registry) by dependsOn, [The event envelope](#13-the-event-envelope) by dependsOn, [The context queries](#15-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by dependsOn, [Write pause](#11-write-pause) by dependsOn, [Generation registry](#12-generation-registry) by dependsOn, [The event envelope](#16-the-event-envelope) by dependsOn, [The context queries](#18-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** No implementation anchor binds it. @@ -1066,19 +1069,22 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p | Example | Tier | Verifier | Title | |---|---|---|---| | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | native backend | none bound | Rebuild a cross-stream history view under a write pause; interrupt, then abort | +| [`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) | native backend | none bound | Install a history view through the handoff | | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | native backend | none bound | Rebuild a cross-stream history view under a write pause; interrupt, then resume | +| [`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) | native backend | none bound | Reorder a history view's sources while its generation is interrupted | +| [`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) | native backend | none bound | Deploy a changed history projection version through the handoff | **Pinned declarations.** 3 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). | Design entry | Pair | Compared | Code | Why | |---|---|---|---|---| -| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L64) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L65) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | -| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L66) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L65) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L66) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it | +| [`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L67) | no pair | | | `tests/types/pinned-pairs.json` lists no pair for it |
The 3 declarations as the Spec pins them -[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L64) +[`spec:application.history-rebuild#design.typeHistorySource`](../specs/application/history-rebuild.sdp.md?plain=1#L65) ```ts type HistorySource = { @@ -1103,7 +1109,7 @@ type HistorySource = { } ``` -[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L65) +[`spec:application.history-rebuild#design.typeHistoryRebuildTarget`](../specs/application/history-rebuild.sdp.md?plain=1#L66) ```ts type HistoryRebuildTarget = { @@ -1112,7 +1118,7 @@ type HistoryRebuildTarget = { } ``` -[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L66) +[`spec:application.history-rebuild#design.fnHistoryPageCall`](../specs/application/history-rebuild.sdp.md?plain=1#L67) ```ts ctx.runQuery(source.history, { @@ -1124,7 +1130,7 @@ ctx.runQuery(source.history, {
-**Other Design entries.** 9 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L67), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L68), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L69), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L70), [`historyHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L71), [`historyAbortHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L72), [`historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L73), [`historyMismatch`](../specs/application/history-rebuild.sdp.md?plain=1#L74), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L75). +**Other Design entries.** 9 entries pin no declaration: [`historyCursor`](../specs/application/history-rebuild.sdp.md?plain=1#L68), [`historyStart`](../specs/application/history-rebuild.sdp.md?plain=1#L69), [`historySteps`](../specs/application/history-rebuild.sdp.md?plain=1#L70), [`historyVerify`](../specs/application/history-rebuild.sdp.md?plain=1#L71), [`historyHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L72), [`historyAbortHandoff`](../specs/application/history-rebuild.sdp.md?plain=1#L73), [`historyCompatibility`](../specs/application/history-rebuild.sdp.md?plain=1#L74), [`historyMismatch`](../specs/application/history-rebuild.sdp.md?plain=1#L75), [`limitHistoryBatch`](../specs/application/history-rebuild.sdp.md?plain=1#L76). ### 6. Rebuild a cross-stream history view under a write pause; interrupt, then resume @@ -1142,11 +1148,35 @@ Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-r **Tier and verifier.** Its opening line is `Sc L2-6 · native backend tier · the abort case, the doc's second enumerated case of the row.`, which names the native backend tier. No verifier is bound to it. -### 8. Write pause +### 8. Deploy a changed history projection version through the handoff + +[`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) · example · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause) by refines. + +**Tier and verifier.** Its opening line is ``E-8 · native backend tier · no acceptance row; the example verifies the handoff of `spec:application.history-rebuild#design.historyHandoff` for a deploy that changes a history projection's version, an extension under E-8 and E-9.``, which names the native backend tier. No verifier is bound to it. + +### 9. Install a history view through the handoff + +[`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) · example · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause) by refines. + +**Tier and verifier.** Its opening line is ``E-8 · native backend tier · no acceptance row; the example verifies the handoff of `spec:application.history-rebuild#design.historyHandoff` for a deploy that adds a history view's first binding, an extension under E-8 and E-9.``, which names the native backend tier. No verifier is bound to it. + +### 10. Reorder a history view's sources while its generation is interrupted + +[`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) · example · stated defined · floor ready · next rung ready, which its floor holds. + +Inside the Pack it rests on [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause) by refines. + +**Tier and verifier.** Its opening line is ``E-8 · native backend tier · no acceptance row; the example verifies the check of `spec:application.history-rebuild#design.historyCompatibility` and its recovery for a deploy that reorders a history view's sources while a generation of it is interrupted, an extension under E-8 and E-9.``, which names the native backend tier. No verifier is bound to it. + +### 11. Write pause [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** @@ -1318,11 +1348,11 @@ export const getGateAudit = internalQuery({ **Other Design entries.** 6 entries pin no declaration: [`indexGatesByKeyUse`](../specs/application/write-pause.sdp.md?plain=1#L67), [`occSerialization`](../specs/application/write-pause.sdp.md?plain=1#L80), [`observedRestoreDoorWithoutDeploy`](../specs/application/write-pause.sdp.md?plain=1#L81), [`limitClosedScopes`](../specs/application/write-pause.sdp.md?plain=1#L82), [`limitGateReason`](../specs/application/write-pause.sdp.md?plain=1#L83), [`limitGateReadsPerCommand`](../specs/application/write-pause.sdp.md?plain=1#L84). -### 9. Generation registry +### 12. Generation registry [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines, [Projection contract](#2-projection-contract) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. +Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines, [Projection contract](#2-projection-contract) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. **Code.** @@ -1490,7 +1520,7 @@ activeGeneration( **Other Design entries.** 7 entries pin no declaration: [`indexGenerationsByReadModelUse`](../specs/application/generation-registry.sdp.md?plain=1#L72), [`indexProgressByGenerationUse`](../specs/application/generation-registry.sdp.md?plain=1#L79), [`writableGenerationRole`](../specs/application/generation-registry.sdp.md?plain=1#L81), [`errorNoGenerationToWrite`](../specs/application/generation-registry.sdp.md?plain=1#L84), [`transitionCost`](../specs/application/generation-registry.sdp.md?plain=1#L85), [`limitRegistryReadsPerCommand`](../specs/application/generation-registry.sdp.md?plain=1#L86), [`limitRollbackPeriod`](../specs/application/generation-registry.sdp.md?plain=1#L87). -### 10. Orders and Inventory, the example domain +### 13. Orders and Inventory, the example domain [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) · model · stated defined · floor ready · next rung ready, which its floor holds. @@ -1513,11 +1543,11 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen **Pinned declarations.** It pins none. -### 11. Command declaration and bindings +### 14. Command declaration and bindings [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn and [The command pipeline](#12-the-command-pipeline) by dependsOn. +Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn and [The command pipeline](#15-the-command-pipeline) by dependsOn. **Code.** @@ -1725,11 +1755,11 @@ refine **Other Design entries.** 1 entry pins no declaration: [`generationTrigger`](../specs/command/command-declaration.sdp.md?plain=1#L79). -### 12. The command pipeline +### 15. The command pipeline [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) · workflow · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#8-write-pause) by dependsOn and [The event envelope](#13-the-event-envelope) by dependsOn. +Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#11-write-pause) by dependsOn and [The event envelope](#16-the-event-envelope) by dependsOn. **Code.** @@ -1973,11 +2003,11 @@ ctx.runMutation **Other Design entries.** 17 entries pin no declaration: [`transactionBoundary`](../specs/command/command-pipeline.sdp.md?plain=1#L109), [`convexSurface`](../specs/command/command-pipeline.sdp.md?plain=1#L110), [`typeAffectedRef`](../specs/command/command-pipeline.sdp.md?plain=1#L116), [`factsCapture`](../specs/command/command-pipeline.sdp.md?plain=1#L122), [`contextCallIsolation`](../specs/command/command-pipeline.sdp.md?plain=1#L124), [`rejectionRelay`](../specs/command/command-pipeline.sdp.md?plain=1#L125), [`readModelWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L126), [`helperGenerics`](../specs/command/command-pipeline.sdp.md?plain=1#L129), [`receiptWrites`](../specs/command/command-pipeline.sdp.md?plain=1#L133), [`limitMutationTimeout`](../specs/command/command-pipeline.sdp.md?plain=1#L136), [`limitTransaction`](../specs/command/command-pipeline.sdp.md?plain=1#L137), [`limitContextCalls`](../specs/command/command-pipeline.sdp.md?plain=1#L138), [`limitTooLarge`](../specs/command/command-pipeline.sdp.md?plain=1#L139), [`fnUtf8Length`](../specs/command/command-pipeline.sdp.md?plain=1#L140), [`limitCallText`](../specs/command/command-pipeline.sdp.md?plain=1#L141), [`errorPath`](../specs/command/command-pipeline.sdp.md?plain=1#L142), [`injectionPointOrder`](../specs/command/command-pipeline.sdp.md?plain=1#L143). -### 13. The event envelope +### 16. The event envelope [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [The journal](#14-the-journal) by refines. +Inside the Pack it rests on [The journal](#17-the-journal) by refines. **Code.** @@ -2126,11 +2156,11 @@ registration.eventValidators[event.eventType] **Other Design entries.** 6 entries pin no declaration: [`causedByProducers`](../specs/context/event-envelope.sdp.md?plain=1#L59), [`occurredAtSource`](../specs/context/event-envelope.sdp.md?plain=1#L67), [`limitPayloadStructure`](../specs/context/event-envelope.sdp.md?plain=1#L68), [`envelopeTextBounds`](../specs/context/event-envelope.sdp.md?plain=1#L69), [`limitEnvelopeBytes`](../specs/context/event-envelope.sdp.md?plain=1#L70), [`limitEventBytes`](../specs/context/event-envelope.sdp.md?plain=1#L71). -### 14. The journal +### 17. The journal [`spec:context.journal`](../specs/context/journal.sdp.md) · behavior · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [Write pause](#8-write-pause) by dependsOn. +Inside the Pack it rests on [Write pause](#11-write-pause) by dependsOn. **Code.** @@ -2385,11 +2415,11 @@ operationId **Other Design entries.** 21 entries pin no declaration: [`transactionBoundary`](../specs/context/journal.sdp.md?plain=1#L88), [`migratedStateSource`](../specs/context/journal.sdp.md?plain=1#L93), [`appendWrites`](../specs/context/journal.sdp.md?plain=1#L99), [`limitEnvelopeCheck`](../specs/context/journal.sdp.md?plain=1#L101), [`rebuildReads`](../specs/context/journal.sdp.md?plain=1#L103), [`limitFoldEvents`](../specs/context/journal.sdp.md?plain=1#L104), [`migrateToSchemaVersionCallers`](../specs/context/journal.sdp.md?plain=1#L107), [`baselineRow`](../specs/context/journal.sdp.md?plain=1#L108), [`writeBaselineSequence`](../specs/context/journal.sdp.md?plain=1#L112), [`writeBaselineOperationRef`](../specs/context/journal.sdp.md?plain=1#L113), [`writeBaselineIdempotence`](../specs/context/journal.sdp.md?plain=1#L114), [`limitBaselineBatch`](../specs/context/journal.sdp.md?plain=1#L115), [`baselineDriver`](../specs/context/journal.sdp.md?plain=1#L116), [`limitDriverDeferral`](../specs/context/journal.sdp.md?plain=1#L117), [`sweepVersionBump`](../specs/context/journal.sdp.md?plain=1#L118), [`migrationWindow`](../specs/context/journal.sdp.md?plain=1#L119), [`codeOlderThanData`](../specs/context/journal.sdp.md?plain=1#L120), [`driverTenancy`](../specs/context/journal.sdp.md?plain=1#L121), [`limitRebuildRead`](../specs/context/journal.sdp.md?plain=1#L123), [`noGlobalOrder`](../specs/context/journal.sdp.md?plain=1#L124), [`schemaMigration`](../specs/context/journal.sdp.md?plain=1#L126). -### 15. The context queries +### 18. The context queries [`spec:context.queries`](../specs/context/queries.sdp.md) · contract · stated defined · floor ready · next rung ready, which its floor holds. -Inside the Pack it rests on [The event envelope](#13-the-event-envelope) by dependsOn and [The journal](#14-the-journal) by dependsOn. +Inside the Pack it rests on [The event envelope](#16-the-event-envelope) by dependsOn and [The journal](#17-the-journal) by dependsOn. **Code.** @@ -2633,7 +2663,7 @@ limitListPage(budgetBytes) = max(1, min(100, floor(4 MiB / budgetBytes))) **Other Design entries.** 11 entries pin no declaration: [`fnGet`](../specs/context/queries.sdp.md?plain=1#L77), [`fnList`](../specs/context/queries.sdp.md?plain=1#L78), [`pagingByCursor`](../specs/context/queries.sdp.md?plain=1#L83), [`tenantNarrowing`](../specs/context/queries.sdp.md?plain=1#L93), [`reactivityAssumption`](../specs/context/queries.sdp.md?plain=1#L94), [`limitListBytes`](../specs/context/queries.sdp.md?plain=1#L96), [`limitHistoryPage`](../specs/context/queries.sdp.md?plain=1#L97), [`limitHistoryBytes`](../specs/context/queries.sdp.md?plain=1#L98), [`limitRebuildRead`](../specs/context/queries.sdp.md?plain=1#L99), [`observedFullLastPage`](../specs/context/queries.sdp.md?plain=1#L100), [`registeredFunctions`](../specs/context/queries.sdp.md?plain=1#L101). -### 16. Rebuild online by default, pause writes only for history-dependent views +### 19. Rebuild online by default, pause writes only for history-dependent views [`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) · decision · stated defined · floor ready · next rung ready, which its floor holds. diff --git a/design/specs/application.pack.sdp.md b/design/specs/application.pack.sdp.md index 80fe37f..8de820f 100644 --- a/design/specs/application.pack.sdp.md +++ b/design/specs/application.pack.sdp.md @@ -18,6 +18,9 @@ specs: - spec:application.history-rebuild - spec:application.history-rebuild.write-pause-rebuild-interrupt - spec:application.history-rebuild.write-pause-rebuild-abort + - spec:application.history-rebuild.write-pause-rebuild-version-change + - spec:application.history-rebuild.write-pause-rebuild-installation + - spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch - spec:application.generation-registry - spec:application.generation-registry.first-rebuild-installs-read-model - spec:application.generation-registry.command-without-generation-fails @@ -60,4 +63,4 @@ modelRefs: Package D. Layer 2: parent use cases, read models and the projection contract, online rebuild with the generation registry and the write pause, and the rebuild of a history view under that pause, restore, baseline operations, the cost-target constraints and the first experiment, with the Layer 2 scenarios and the all-layers audit scenario. -Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract with the history and aggregate projections, rebuild and the history rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Fifty-one Specs: twelve application Specs, one operations Spec, eight constraints and thirty examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. +Membership order follows the plan's inventory with each parent's examples directly after it: parent use cases, read models, the projection contract with the history and aggregate projections, rebuild and the history rebuild with its registry and gate, restore, the first experiment with the example domain, baseline operations, then the eight constraints. Fifty-four Specs: twelve application Specs, one operations Spec, eight constraints and thirty-three examples. Three examples are siblings the plan's table did not list, `second-context-throws`, `committed-state-read-through-query` and `write-pause-rebuild-abort`, added because each doc row enumerates two cases. Six examples verify no doc row: `first-activation-makes-read-model-writable` and `command-without-generation-fails` verify the generation registry's first rebuild and the failure of a command before it under E-8, `query-refused-before-disclosure` and `query-refused-without-grant` verify Law 5 for a parent query, `list-pages-by-cursor` verifies a parent list under E-24, and `restore-door-without-deploy` shows on the pinned release that the restore door's environment switch needs no deploy, under E-42. Six more verify no doc row: the `cancel-` examples of the example domain verify `CancelOrder` under E-46, the second lifecycle command, its rejections, its receipt and its grant. Three more verify no doc row: the stock item ID examples of the first experiment verify the bound on an order line's stock item ID under E-46. Three more verify no doc row: `write-pause-rebuild-version-change`, `write-pause-rebuild-installation` and `write-pause-rebuild-source-order-mismatch` verify the history rebuild's handoff for a changed projection version and for an installation, and its compatibility check and recovery for reordered sources, under E-8. diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 6e940d2..48172ff 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -10,9 +10,12 @@ relations: - spec:context.event-envelope decidedBy: - spec:decisions.d02-context-owns-state-and-journal + - spec:decisions.d04-four-outcomes + - spec:decisions.d05-rebuildable-history-with-baselines - spec:decisions.d08-read-models-in-command - spec:decisions.d09-rebuild-online-by-default - spec:decisions.d18-everything-else-waits-for-trigger + - spec:decisions.d19-operations-travel-with-capability constrainedBy: - spec:laws.law06-technical-failure-never-a-rejection - spec:laws.law10-replay-never-runs-commands-or-effects @@ -21,7 +24,7 @@ relations: --- # History projection -Story · Detail: full · Traces: D2, D8, D9, D18, Law 6, Law 10, F1, F13, Sc L2-6, E-7, E-9, E-25, E-40, E-46. +Story · Detail: full · Traces: D2, D4, D5, D8, D9, D18, D19, Law 6, Law 10, F1, F13, Sc L2-6, E-7, E-9, E-25, E-40, E-46. A history projection is the form of a read model whose row depends on history across several streams: it folds events into the prior row, where a per-entity projection builds a row from one DTO. The contract pins the `HistoryProjection` shape and `applyHistoryProjection`, the one helper that folds and writes such a row, shared by the command pipeline's step 9 and the rebuild's history batches; a fold that gives one row whatever the order across streams and however the events are split between calls; a row that no fold deletes, which keeps its subject's ended state; baselines dropped before `keyOf`; the `sourceVersions` that keep an event from being folded twice; and the order allocation history of the example domain, with its table, its rules and the bound on what one call reads and writes. @@ -56,7 +59,7 @@ A history projection is the form of a read model whose row depends on history ac The shapes are TypeScript in the parent. `EventEnvelope` is the envelope `spec:context.event-envelope` pins, which the adapter's `streams` entry carries on the live path and the context's `history` query on the backfill. `ApplyMode`, `ApplyResult`, `WritableGeneration`, `projectionOf`, `rowConventions` and the `by_key` index are those of `spec:application.projection-contract`, which this form shares with the per-entity form, and `MutationCtx` is Convex's mutation context. The example domain's rules read `HistoryEvent`, the part of `EventEnvelope` they need, and live in `example/domain/orderAllocationHistory.ts`. - typeHistoryProjection: `interface HistoryProjection { name: string; version: number; table: string; rowBudgetBytes?: number; keyOf(tenantId: string, event: EventEnvelope): string | null; project(tenantId: string, prior: Row | null, events: EventEnvelope[]): Row }` where `EventEnvelope` is the envelope of `spec:context.event-envelope`, `null` from `keyOf` means the event is not this view's, `prior` is `null` before the key's first event, `events` are the events of one key not yet folded into `prior`, each stream's in version order and the streams interleaved in any order, `project` answers a row and never `null`, and `rowBudgetBytes` is 16 KiB when absent; a history row is a bounded summary of history, never a list that grows with it, so `rowBudgetBytes` binds it like any row (E-9, D8, D9, F13) -- fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing, and a generation given whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf` before it reads a row, a technical failure (E-9, D8, D9, F1, Law 6) +- fnApplyHistoryProjection: `applyHistoryProjection(ctx: MutationCtx, projection: HistoryProjection, input: { tenantId: string; events: EventEnvelope[]; mode: ApplyMode; generations: readonly WritableGeneration[] }): Promise<{ key: string; results: ApplyResult[] }[]>` checking first each generation given: one whose `projectionVersion` is not the projection's `version` makes it throw the plain `Error` of `projectionOf`, a technical failure, before it drops or groups any event or reads a row, so a command whose events fold nothing, such as `ReceiveStock`, fails alike on a mismatch; then dropping the events of type `baseline`, grouping the rest by `keyOf` in the order given and leaving out those whose key is `null`, and per key and generation reading the row by `by_key`, dropping every event whose `streamVersion` is not above the row's recorded version for the event's stream, named by the envelope's `tenantId`, `contextId`, `streamType` and `streamId`, answering `skipped-newer` when none remain, and otherwise writing `project(tenantId, prior, remaining)` with `sourceVersions` raised to the highest version folded per stream and sorted by `contextId`, then `streamType`, then `streamId`, strings compared by UTF-16 code units, so the row is one value whatever the order the streams arrived in, and answering `inserted` or `updated`, never `deleted`, in the same mutation; `mode` is read by nothing (E-9, D8, D9, F1, Law 6) - tableOrderAllocationHistory: `orderAllocationHistory: defineTable({ ...rowConventions, orderId: v.string(), placedAt: v.optional(v.number()), cancelledAt: v.optional(v.number()), allocations: v.array(v.object({ stockItemId: v.string(), quantity: v.number(), allocatedAt: v.number(), releasedAt: v.optional(v.number()) })) }).index("by_key", ["tenantId", "generation", "key"])` the history-dependent cross-stream view of the example domain, the `HistoryProjection` named `orderAllocationHistory` over the table of that name, keyed by order ID and folded from `OrderPlaced` and `OrderCancelled` in Orders and `StockAllocated` and `AllocationReleased` in Inventory, with one entry of `allocations` per stock item the order allocated on and `sourceVersions` holding the order stream and every stock stream folded, so a row holds at most 100 entries and 101 versions; `getConvexSize` measures the largest such row, at 256-byte tenant and order IDs and 100 stock item IDs of 64 bytes, every allocation released, at 55,803 bytes, so the view declares `rowBudgetBytes` 65,536, the ceiling; it is bound once per source stream type, rebuilds only under the write pause, and Sc L2-6 builds it (E-9, E-46, D9, F13, Sc L2-6) - typeHistoryEvent: `type HistoryEvent = { streamId: string; eventType: string; eventSchemaVersion: number; recordedAt: number; occurredAt?: number; payload: unknown }`, the part of an event envelope the order allocation history's rules read, so that every `EventEnvelope` of `spec:context.event-envelope` is one and `keyOf` and `project` of the view take it where `HistoryProjection` hands them envelopes (E-9) - typeOrderAllocation: `type OrderAllocation = { stockItemId: string; quantity: number; allocatedAt: number; releasedAt?: number }`, the quantity one stock item allocated to the order, when, and when it was released (E-9) diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index d842f79..1873850 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -20,10 +20,11 @@ relations: decidedBy: - spec:decisions.d09-rebuild-online-by-default - spec:decisions.d04-four-outcomes + - spec:decisions.d19-operations-travel-with-capability --- # Rebuild of a history view under a write pause -Layer 2 · Detail: full · Traces: D2, D4, D9, D10, D18, Law 11, F1, F13, F19, Sc L2-6, E-8, E-9, E-24, E-38, E-40, E-48, E-49. +Layer 2 · Detail: full · Traces: D2, D4, D9, D10, D18, D19, Law 11, F1, F13, F19, Sc L2-6, E-8, E-9, E-24, E-38, E-40, E-48, E-49. For a read model that depends on history across several streams the rebuild runs under a write pause, because it needs a consistent cut; the scope closed is the view's sources, the context and stream type pairs its bindings name, so every use case that writes one of them and the journal's baseline driver read the gate and are refused, background writers are fenced by that read and by the generation's fence, and an operator can resume or abort. Such a view is a `HistoryProjection` and its backfill pages each source stream's history under the pause. The rebuild closes the gate for its own scope in the mutation that registers its generation. @@ -70,7 +71,7 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause; because the write rule drops every event at or below a row's recorded version before `project`, the pass writes a missing row and brings a lagging row up to the last event of each source stream with its key, and never folds a covered row again, so it finds a missing or lagging row and not a fold that disagrees with itself (D9, E-8, E-9, Sc L2-6) - historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; then `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `resumeGate` reopens the `all` entry this sequence closed and no other entry; `resumeGeneration` resumes the generation's parked chain while its pass is `backfill` or `verify`, or `switchGeneration` follows once it is `verified`, because reopening `all` resumes no chain; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds (E-8, E-9, D9, D19) - historyAbortHandoff: [extension] before `abortGeneration` of a history generation the operator closes `all` again and confirms it with `getGate`; after the abort of a rebuild `all` stays closed until the deployed projection's version is the active generation's, which needs no deploy when it already is and otherwise the prepared compatible deploy, or a fresh `startGeneration` under the desired code and `historyHandoff` again; after the abort of an installation `all` stays closed until a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows, or until a new installation starts; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) -- historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version before it reads a row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page folds nothing, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) +- historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version before it reads a row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page is empty, which calls no write helper, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) - historyMismatch: [extension] a backfill or verify batch of a history view makes the check of `historyCompatibility` after step 1's state and fence checks and before step 2, so before it reads the cursor, the tenant list or a source; on a mismatch it keeps the cursor, the counts, the rows, the generation's state and the gate as they are, patches the progress row's `lastError` to one line naming the generation and what differs and `updatedAt`, and schedules nothing, so the source scopes stay closed and the pause holds; `resumeChain`, for a backfill or verify pass, and `switchGeneration` make the check before they change the fence, the state or a gate entry and throw a plain `Error` naming the difference on a mismatch; `abortGeneration`, `purgeGeneration` and the resume of a purge make no check, because an abort or a switch removes the entries the check reads and a purge reads only the read model's table; the recovery is compatible code and `resumeGeneration`, or `historyAbortHandoff` and a fresh generation from a `null` cursor, never a translated `sourceIndex` or rows kept from the incompatible pass (E-8, E-9, D9) - limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) @@ -78,8 +79,8 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - A reviewer confirms that `startGeneration` closes one entry per source of a paused view and nothing else, and that the write-pause examples assert a refusal of a source writer while closed, the fold of the history view against the journal, and a reopen only after verification. - A reviewer confirms that a history target's `sources` name exactly the context and stream type pairs the view's bindings name, so `startGeneration` closes every writer of its sources, and that `rollbackGeneration` refuses every generation with `pauseRequired`. -- A reviewer confirms that a test at the native backend tier deploys a changed projection version through `historyHandoff` and finds every command refused `writePaused` while `all` is closed, only the writers of the view's sources refused while the source scopes stay closed, and ordinary answers after the switch, with no technical failure at any step. -- A reviewer confirms that a test at the native backend tier deploys the view's first binding through `historyHandoff` and finds the same three windows, with no command failing for a missing generation. +- A reviewer confirms that the test of `spec:application.history-rebuild.write-pause-rebuild-version-change`, at the native backend tier, deploys a changed projection version through `historyHandoff` and finds every command refused `writePaused` while `all` is closed, only the writers of the view's sources refused while the source scopes stay closed, and ordinary answers after the switch, with no technical failure at any step. +- A reviewer confirms that the test of `spec:application.history-rebuild.write-pause-rebuild-installation`, at the native backend tier, deploys the view's first binding through `historyHandoff` and finds the same three windows, with no command failing for a missing generation. - A reviewer confirms that a test at the native backend tier makes `startGeneration` fail inside `historyHandoff` and finds `all` still closed, no generation row inserted and every command refused `writePaused` until compatible code is deployed or the start succeeds. - A reviewer confirms that a test at the native backend tier finds the new generation's first batch parked on `all` with its `lastError`, and that reopening `all` schedules nothing until `resumeGeneration` resumes the chain. - A reviewer confirms that a test at the native backend tier aborts a rebuild whose deployed version is the active generation's through `historyAbortHandoff` and finds ordinary answers once `all` is reopened, with no deploy. @@ -87,4 +88,4 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - A reviewer confirms that a test at the native backend tier aborts an installation through `historyAbortHandoff`, deploys declarations without the view's bindings and finds ordinary answers after `all` is reopened, with the aborted rows purged by `purgeGeneration`. - A reviewer confirms that a test at the native backend tier makes the operator audit insert fail on a reopen of the handoff, the `resumeGate` of `all` and the `resumeScope` of an abort or a switch, and finds the gate, the generation and its progress row as they were and the scope still closed. - A reviewer confirms that a pure test compares a target's ordered source scope keys with gate entries mixed with unrelated closed entries, and finds a reorder, an added source, a removed source and a missing entry incompatible and the same list compatible. -- A reviewer confirms that a test at the native backend tier deploys between an interruption and its resume a reordered, added or removed source or a changed projection version, and finds the batch parked with a `lastError` naming the difference, `resumeGeneration` refused, the cursor, the rows and the gate unchanged, and a deploy between `verified` and the switch refused by `switchGeneration`. +- A reviewer confirms that a test at the native backend tier deploys between an interruption and its resume a reordered, added or removed source or a changed projection version, and finds the batch parked with a `lastError` naming the difference, the test running `backfillBatch` through its admin access with the generation's fence, standing for a batch scheduled before the deploy, since no batch carries the live fence after `interruptGeneration`, `resumeGeneration` refused, the cursor, the rows and the gate unchanged, and a deploy between `verified` and the switch refused by `switchGeneration`; the test of `spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch` is the reordered source, with the protected abort of `historyAbortHandoff` and a fresh generation after it. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md index 52c2660..15d2d6f 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md @@ -31,6 +31,6 @@ And writes {writes: "reopen after the abort"} - Runs in the native backend tier; every test owns its disposable backend. - The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, interrupts after the second history batch and calls `abortGeneration`. -- The test asserts that the generation is `aborted`, that the active generation is unchanged, that both source entries are gone from the gate, that `PlaceOrder` succeeds again, and that no query returns a row of the aborted generation. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, and interrupts after the second history batch; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires, it closes `all` through `closeGate`, confirms it with `getGate` and calls `abortGeneration`. +- The test asserts that the generation is `aborted`, that the active generation is unchanged and that `all` is still closed; since the deployed projection's version is the active generation's, it then reopens the `all` entry it closed through `resumeGate`, and asserts that `PlaceOrder` succeeds again, that both source entries are gone from the gate, and that no query returns a row of the aborted generation. - The test runs `purgeGeneration` and asserts that its batches run until the generation is `purged` and that every batch deleted at most `limitPurgeBatch` rows. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md new file mode 100644 index 0000000..700a0d9 --- /dev/null +++ b/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md @@ -0,0 +1,39 @@ +--- +id: spec:application.history-rebuild.write-pause-rebuild-installation +kind: example +altitude: story +readiness: defined +relations: + refines: spec:application.history-rebuild + verifies: spec:application.history-rebuild +--- +# Install a history view through the handoff + +E-8 · native backend tier · no acceptance row; the example verifies the handoff of `spec:application.history-rebuild#design.historyHandoff` for a deploy that adds a history view's first binding, an extension under E-8 and E-9. + +## Intent + +- outcome: A deploy that adds a history view's first binding leaves every caller an ordinary answer or the transient refusal `writePaused`, never a failure for a missing generation, and the view's first generation is verified, switched and written by the commands after it. (E-8, E-9, D9, D19) + +```gwt +Given a deployed composition whose command declarations bind no {viewKind: "cross-stream history"} read model +And {generationRows: 0} generation rows of the view +And {orders: 3} orders placed on stock items received before the deploy +And a composition ready to deploy that binds the view on every declaration that writes its sources +And a gate with {closedEntries: 0} closed entries +When the operator runs the handoff: closes all, deploys, starts a generation, reopens all, resumes the parked chain and switches the verified generation +Then every command that reaches step 7 while all is closed is {whileAllClosed: "refused with writePaused"} +And {missingGeneration: 0} commands fail for a missing generation +And generation {generation: 1} of the view is {state: "active"} +And the view holds {rows: 3} rows for the orders placed before it +And a command after the switch {afterSwitch: "writes its order's row in generation 1"} +``` + +## Verification — executable + +- Runs in the native backend tier; every test owns its disposable backend. +- The test first deploys, through `deployTemporary`, a copy of the composition whose command declarations bind no history projection and whose rebuild targets hold no history target, places three orders on stock items it received, and asserts that `generations` holds no row of the order allocation history. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the composition that binds the order allocation history to the order stream type and the stock item stream type, sends `PlaceOrder` and asserts the refusal `writePaused` with `data.kind` `"transient"` and nothing stored, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` generation 1 with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, and reopens the `all` entry it closed through `resumeGate`. +- The test asserts that the first batch parked on `all` with its `lastError` and that reopening `all` scheduled nothing, runs `resumeGeneration`, waits until generation 1 is `verified`, and asserts that `PlaceOrder` sent while the source scopes are closed is refused with `writePaused`. +- The test switches the generation and asserts that the gate holds no closed entry, that generation 1 is `active`, and that the view holds one row for each of the three orders, equal to the fold of its order's events and its stock items' allocation events read from the two journals through `history`. +- The test sends `PlaceOrder` for a fourth order, asserts that it succeeds and that generation 1 holds that order's row, and asserts that no answer it received at any step was a technical failure. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md new file mode 100644 index 0000000..07ed866 --- /dev/null +++ b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md @@ -0,0 +1,39 @@ +--- +id: spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch +kind: example +altitude: story +readiness: defined +relations: + refines: spec:application.history-rebuild + verifies: spec:application.history-rebuild +--- +# Reorder a history view's sources while its generation is interrupted + +E-8 · native backend tier · no acceptance row; the example verifies the check of `spec:application.history-rebuild#design.historyCompatibility` and its recovery for a deploy that reorders a history view's sources while a generation of it is interrupted, an extension under E-8 and E-9. + +## Intent + +- outcome: A generation whose sources a deploy reordered parks with a `lastError` naming the difference and is never resumed, and the protected abort and a fresh generation bring the view back. (E-8, E-9, D9, D19) + +```gwt +Given a {viewKind: "cross-stream history"} read model with an active generation +And a new generation building under a write pause over sources in the order {startedOrder: "stock item, then order"} +And its backfill interrupted after {batches: 2} batches +And a deploy, at the same projection version, that lists the sources in the order {deployedOrder: "order, then stock item"} +When a batch carrying the generation's fence runs under the deployed code +Then the batch {batch: "parks with a lastError naming the source order"} +And the cursor, the rows and the gate {unchanged: "stay as the interruption left them"} +And resumeGeneration {resume: "is refused naming the difference"} +And the abort under all {abort: "succeeds and reopens both sources"} +And a fresh generation {fresh: "is verified and switched"} +``` + +## Verification — executable + +- Runs in the native backend tier; every test owns its disposable backend. +- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, interrupts after the second history batch with `interruptGeneration`, and deploys the copy. +- The test runs `backfillBatch` through its admin access with the generation's ID and its fence, standing for a batch scheduled before the deploy, since no batch carries the live fence after `interruptGeneration`, and asserts that the progress row's `lastError` names the generation and the two source orders, that the batch scheduled nothing, and that the cursor, the counts, the rows, the generation's state and the gate are as they were before it. +- The test asserts that `resumeGeneration` is refused with a plain `Error` naming the difference and that the fence, the progress row and the gate are unchanged. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed through `resumeGate` and asserts that `PlaceOrder` succeeds. +- The test runs `startGeneration` again, asserts that the gate holds the two source entries naming the fresh generation, the order entry first, waits until it is `verified`, switches it, and asserts that every row of it equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md new file mode 100644 index 0000000..93b412d --- /dev/null +++ b/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md @@ -0,0 +1,38 @@ +--- +id: spec:application.history-rebuild.write-pause-rebuild-version-change +kind: example +altitude: story +readiness: defined +relations: + refines: spec:application.history-rebuild + verifies: spec:application.history-rebuild +--- +# Deploy a changed history projection version through the handoff + +E-8 · native backend tier · no acceptance row; the example verifies the handoff of `spec:application.history-rebuild#design.historyHandoff` for a deploy that changes a history projection's version, an extension under E-8 and E-9. + +## Intent + +- outcome: A deploy that changes a history projection's version leaves every caller an ordinary answer or the transient refusal `writePaused`, never a technical failure, and the generation of the deployed version is verified and switched. (E-8, E-9, D9, D19) + +```gwt +Given a {viewKind: "cross-stream history"} read model whose active generation records projection version {activeVersion: 1} +And a composition ready to deploy that declares the view at projection version {deployedVersion: 2} with the same sources +And a gate with {closedEntries: 0} closed entries +When the operator runs the handoff: closes all, deploys, starts a generation, reopens all, resumes the parked chain and switches the verified generation +Then every command that reaches step 7 while all is closed is {whileAllClosed: "refused with writePaused"} +And every writer of the view's sources is {whileSourcesClosed: "refused with writePaused"} while the source scopes are closed +And {technicalFailures: 0} commands end in a technical failure +And the active generation records projection version {switchedVersion: 2} +And writes {writes: "reopen after the switch"} +``` + +## Verification — executable + +- Runs in the native backend tier; every test owns its disposable backend. +- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at projection version 1 with an active generation; the deployed composition is a copy, deployed through `deployTemporary`, that declares version 2 with the same rebuild target. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the copy, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` the new generation with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, and reopens the `all` entry it closed through `resumeGate`. +- The test asserts that `PlaceOrder`, `CancelOrder` and `ReceiveStock` sent while `all` is closed, before the deploy and after it, are refused with `writePaused`, that the error's `data.kind` is `"transient"`, and that nothing is stored. +- The test asserts that the new generation's first batch parked on `all` with its `lastError` and that reopening `all` scheduled nothing, runs `resumeGeneration`, and waits until the generation is `verified`. +- The test asserts that `PlaceOrder` sent while the source scopes are closed is refused with `writePaused`, switches the generation, and asserts that the gate holds no closed entry, that `PlaceOrder` succeeds and that the active generation records projection version 2. +- The test asserts that no answer it received at any step was a technical failure. diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index 9c61c8d..fb3473c 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -129,7 +129,7 @@ And a generation stranded in the backup archive is {stranded:"resumed by the acc ## Verification — reviewed - A reviewer confirms that no check batch calls a context operation, schedules anything or writes anything but the run record, and that the only scheduling in the procedure is `finishRestoreRun`'s rescheduling of inventoried generations in its accepted branch. -- A reviewer confirms that the six restore mutations and the rebuild's operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, are the only functions in the parent that skip the gate read, that each restore mutation writes only `restoreRuns` apart from the generation rows `finishRestoreRun` resumes, and that each restore mutation refuses outside a running restore. +- A reviewer confirms that the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, the rebuild's other operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the six restore mutations are the only mutations in the parent that skip the gate read, that each restore mutation writes only `restoreRuns` apart from the generation rows `finishRestoreRun` resumes, and that each restore mutation refuses outside a running restore. - A reviewer confirms that the door is read by the writer check before the gate document and that the procedure clears it only in the accepted branch, before `finishRestoreRun` reschedules anything. - A reviewer confirms that `streamCheckBatch` passes `maxEvents` on every `rebuild` call, that a `budgetExhausted` refusal is never recorded as a finding, and that the read of a batch that folds one stream, one full fold with its stored baseline event plus the page read twice, is stated below the ceiling, with each further folded stream's own stored baseline event named beside it. - A reviewer confirms that every generation the inventory lists is `resumed` or `aborted` on an accepted run record and that no closed gate entry on an accepted run names a generation that is not `building`, `verifying` or `verified` again. diff --git a/design/specs/history-view.pack.sdp.md b/design/specs/history-view.pack.sdp.md index 196bd0a..4c433eb 100644 --- a/design/specs/history-view.pack.sdp.md +++ b/design/specs/history-view.pack.sdp.md @@ -8,6 +8,9 @@ specs: - spec:application.history-rebuild - spec:application.history-rebuild.write-pause-rebuild-interrupt - spec:application.history-rebuild.write-pause-rebuild-abort + - spec:application.history-rebuild.write-pause-rebuild-version-change + - spec:application.history-rebuild.write-pause-rebuild-installation + - spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch - spec:application.write-pause - spec:application.generation-registry - spec:application.orders-inventory-example @@ -22,4 +25,4 @@ modelRefs: --- # History view -The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. +The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. diff --git a/design/tools/test_decisions.py b/design/tools/test_decisions.py index 9fa537a..f97003f 100644 --- a/design/tools/test_decisions.py +++ b/design/tools/test_decisions.py @@ -1,5 +1,7 @@ -"""Decision queries, patch refusals, the real register's question sources, and the two checks -check.py runs through the Protocol's recipes: entry addresses outside the Specs and dependsOn cycles. +"""Decision queries, patch refusals, the real register's question sources and its rows found by Spec, +the two checks check.py runs through the Protocol's recipes, entry addresses outside the Specs and +dependsOn cycles, and check.py run whole over a sample tree, so that each of its checks reaches the +failures it prints and its exit status. Run: python3 -m unittest design/tools/test_decisions.py Fixtures and mutation copies live in operating-system temporary directories. @@ -463,9 +465,24 @@ def test_real_register_has_unique_ids_and_resolving_question_sources(self): self.assertEqual(tool.row_errors(decision, register["units"], ROOT, set(ids)), []) self.assertEqual(tool.question_source_errors(decision, questions, files, resolutions), []) + def test_real_rows_are_found_by_the_spec_their_sources_name(self): + def ids(*args): + stdout = io.StringIO() + with contextlib.redirect_stdout(stdout): + code = tool.main([*args, "--json"], register_path=ROOT / "design/decisions/register.json", root=ROOT) + self.assertEqual(code, 0) + return {row["id"] for row in json.loads(stdout.getvalue())} + for spec, expected in [ + ("spec:application.projection-contract", {"OD-171"}), + ("spec:application.history-projection", {"OD-172", "OD-173", "OD-174"}), + ("spec:application.history-rebuild", {"OD-175"}), + ]: + with self.subTest(spec=spec): + self.assertLessEqual(expected, ids("--spec", spec) | ids("--spec", spec, "--decided")) + -def sample_spec(name, relations="{}"): - """A rule Spec of a sample corpus, with one Design entry and one keyed open question.""" +def sample_spec(name, relations="{}", key=" #keepIt"): + """A rule Spec of a sample corpus, with one Design entry and one open question, keyed unless key is empty.""" return f"""--- id: spec:sample.{name} kind: rule @@ -479,7 +496,7 @@ def sample_spec(name, relations="{}"): - outcome: Keep {name}. ### Open questions -- [non-blocking #keepIt] Keep {name} as it is. Another sentence. +- [non-blocking{key}] Keep {name} as it is. Another sentence. ## Rule - Keep {name}. @@ -544,5 +561,55 @@ def test_a_planted_cycle_fails_and_a_chain_passes(self): ]) + +class CheckCommandTests(unittest.TestCase): + """check.py run whole, as the command it is, over a sample tree in a temporary directory. + + The tree holds a copy of check.py and decisions.py under test, the pinned Protocol through a link to + this repository's node_modules, and a stand-in for the page generator. Four defects are planted at + once: an address that names no entry, a dependsOn cycle, an open question without a key, and a page + generator that exits 1. The run must print each one's failure, no other, and exit 1, so a check that + stops reaching its failures or the exit status fails here. + """ + + def put(self, path, text): + (self.root / path).parent.mkdir(parents=True, exist_ok=True) + (self.root / path).write_text(text) + + def test_each_check_reaches_its_failure_and_the_exit_status(self): + with tempfile.TemporaryDirectory() as temporary: + self.root = Path(temporary) + pin = json.loads((ROOT / "package.json").read_text())["devDependencies"]["@libar-dev/software-delivery-protocol"] + self.put("package.json", json.dumps({"devDependencies": {"@libar-dev/software-delivery-protocol": pin}})) + os.symlink(ROOT / "node_modules", self.root / "node_modules") + self.put("design/tools/check.py", CHECK_PATH.read_text()) + self.put("design/tools/decisions.py", TOOL_PATH.read_text()) + self.put("design/tools/prose-mentions.json", json.dumps({"pairs": []})) + self.put("design/decisions/register.json", json.dumps({"schema": 1, "units": [], "decisions": [], "possiblySame": []})) + self.put("design/reviews/consensus-ledger.json", json.dumps({"ledger": []})) + for name in ("STATE.md", "ROADMAP.md", "PLAN.md", "SESSIONS.md"): + self.put("design/" + name, "# Sample\n") + self.put("design/specs/sample/one.sdp.md", sample_spec("one", "\n dependsOn: spec:sample.two")) + self.put("design/specs/sample/two.sdp.md", sample_spec("two", "\n dependsOn: spec:sample.one", key="")) + self.put("src/cites.ts", "// spec:sample.one#design.typeOne resolves.\n// spec:sample.one#design.typeTwo names no entry.\n") + self.put("scripts/pack-page.mjs", 'console.error("pack-page: design/pages/history-view.md is behind the tree from line 1");\nprocess.exit(1);\n') + validate = subprocess.run(["node", str(ROOT / "node_modules/@libar-dev/software-delivery-protocol/dist/cli/sdp.js"), "validate", "."], + cwd=self.root, capture_output=True, text=True) + summary = re.search(r"\d+ specs · \d+ packs · \d+ anchors → \d+ nodes · \d+ edges", validate.stdout + validate.stderr) + self.assertIsNotNone(summary, validate.stdout + validate.stderr) + self.put("design/README.md", f"{summary.group(0)} (0 errors, 0 warnings)\n\nvalidate: 0 errors · 0 warnings\n") + run = subprocess.run([sys.executable, str(self.root / "design/tools/check.py")], cwd=self.root, capture_output=True, text=True, + env={**os.environ, "PYTHONDONTWRITEBYTECODE": "1"}) + printed = [line[3:] for line in run.stdout.splitlines() if line.startswith(" - ")] + self.assertEqual(printed, [ + "entry address spec:sample.one#design.typeTwo at src/cites.ts:2 names no entry of its Spec", + "dependsOn cycle among spec:sample.one, spec:sample.two: spec:sample.one -> spec:sample.two -> spec:sample.one", + "spec:sample.two carries an open question without a key", + "pack-page: design/pages/history-view.md is behind the tree from line 1", + ], run.stdout + run.stderr) + self.assertEqual(run.returncode, 1) + self.assertNotIn("\nOK", run.stdout) + + if __name__ == "__main__": unittest.main() diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index 476ac41..d4af13c 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -1131,10 +1131,12 @@ export async function generate(pack, out, base = root) { } // --------------------------------------------------------------------------------------------- -// The command. +// The command. It takes the arguments after the script's path and the repository it reads, so a +// test runs it over a sample tree; it answers the exit status. -async function main() { +export async function main(args = process.argv.slice(2), base = root) { const { values } = parseArgs({ + args, options: { pack: { type: "string" }, out: { type: "string" }, @@ -1144,12 +1146,12 @@ async function main() { if (values.pack === undefined || values.out === undefined) cannot("name the Pack and the page: --pack --out "); const out = resolve(values.out); - const path = relative(root, out).split(sep).join("/"); + const path = relative(base, out).split(sep).join("/"); if (path.startsWith("..") || !path.endsWith(".md")) cannot( `the page must be a .md file inside the repository, not ${values.out}`, ); - const generated = await generate(values.pack, out); + const generated = await generate(values.pack, out, base); if (!values.check) { mkdirSync(dirname(out), { recursive: true }); writeFileSync(out, generated); diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index 4e91395..d2b6001 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -2,10 +2,10 @@ // a sample corpus in a temporary directory, whose graph the Protocol's extractor derives. The sample // shows the members in the Pack's order, the clause that holds a member below its next rung with // the targets that break it, each open question's address, and the register rows on the members. -import { mkdir, mkdtemp, rm, writeFile } from "node:fs/promises"; +import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; -import { expect, test } from "vitest"; +import { expect, test, vi } from "vitest"; type Failure = { clauseId: string; @@ -71,6 +71,7 @@ type PackPage = { generated: string | null; } | null; generate(pack: string, out: string, base?: string): Promise; + main(args: string[], base?: string): Promise; }; // The generator is a script with no declaration file, so it is loaded by URL and typed here. const page = (await import( @@ -711,3 +712,83 @@ test("the page of a sample Pack reads its order, its blockers and its register r await rm(base, { recursive: true, force: true }); } }); + +test("the command's --check exits 1 for a page that is missing or behind the tree, and 0 for a current one", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + const put = async (path: string, text: string) => { + await mkdir(dirname(join(base, path)), { recursive: true }); + await writeFile(join(base, path), text); + }; + const said: string[] = []; + const error = vi + .spyOn(console, "error") + .mockImplementation((message: string) => void said.push(message)); + try { + await put( + "package.json", + JSON.stringify({ + devDependencies: { + "@libar-dev/software-delivery-protocol": "file:sample.tgz", + }, + }), + ); + await put( + "tests/types/pinned-pairs.json", + JSON.stringify({ + pack: "pack:sample", + test: "tests/types/sample.test-d.ts", + pairs: [], + }), + ); + await put( + "design/tools/anchor-sites.json", + JSON.stringify({ anchors: [] }), + ); + await put( + "design/decisions/register.json", + JSON.stringify({ decisions: [] }), + ); + await put( + "design/specs/sample.pack.sdp.md", + [ + "---", + "id: pack:sample", + "specs:", + " - spec:sample.alpha", + " - spec:sample.beta", + "---", + "# Sample", + "", + ].join("\n"), + ); + await put( + "design/specs/sample/alpha.sdp.md", + decision("alpha", "scoped", ["refines: spec:sample.beta"]), + ); + await put( + "design/specs/sample/beta.sdp.md", + decision("beta", "scoped", []).replace("relations:\n", "relations: {}\n"), + ); + const out = join(base, "design/pages/sample.md"); + const command = ["--pack", "pack:sample", "--out", out]; + const check = () => page.main([...command, "--check"], base); + + expect(await check()).toBe(1); + expect(said.at(-1)).toBe( + "pack-page: design/pages/sample.md is missing; run npm run pages", + ); + expect(await page.main(command, base)).toBe(0); + expect(await check()).toBe(0); + const written = await readFile(out, "utf8"); + await writeFile(out, `${written}A line the tree does not generate.\n`); + expect(await check()).toBe(1); + expect(said.at(-1)).toContain( + "pack-page: design/pages/sample.md is behind the tree from line", + ); + await writeFile(out, written); + expect(await check()).toBe(0); + } finally { + error.mockRestore(); + await rm(base, { recursive: true, force: true }); + } +}); diff --git a/tests/types/pinned.test-d.ts b/tests/types/pinned.test-d.ts index 82a1b40..8b43000 100644 --- a/tests/types/pinned.test-d.ts +++ b/tests/types/pinned.test-d.ts @@ -276,6 +276,8 @@ describe("ahead: the design leads the code", () => { }); test("spec:application.history-projection#design.typeHistoryEvent: the design adds `eventSchemaVersion`; the code carries it in 5d", () => { expectTypeOf().not.toEqualTypeOf(); + // The pin says every envelope is a HistoryEvent, so the code's envelope carries each field the pin declares. + expectTypeOf().toExtend(); }); test("spec:application.history-projection#design.fnOrderAllocationHistoryKeyOf: the design adds `eventSchemaVersion`; the code carries it in 5d", () => { expectTypeOf< From 265cb9ec13068558017857f3480733d692fdce2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 06:52:24 +0200 Subject: [PATCH 37/60] design: the history view's release procedure, stated whole A second read (gpt-6-astra at high, whole Specs after 3545e9a) found the release procedure still uneven, folded in from leans piece by piece. Ruled by the main thread as one statement: - What callers see, by case: a bound command fails as a technical failure only when it passes step 7 with no writable generation of the deployed version; the handoff and the protected abort hold `all` closed through every such window, so callers see writePaused; a same-version abort opens no window. - historyHandoff closes `all` at its one closing step; a replacement generation after a protected abort enters it after that step. - The restore's read-model check holds for a per-entity read model and names OD-166's question for a history view. - One inventory of the mutations that skip the gate read, in every place. - Examples whose worlds cannot finish early or race: a stated sample and batch size, a wait for the batches before the interrupt and for the first batch to park before `all` reopens, and an installed order summary before the first order. - A test runs the page generator as a process and expects --check to exit non-zero on a stale page. Co-Authored-By: Claude Opus 5.5 --- .../application/history-projection.sdp.md | 6 +- .../specs/application/history-rebuild.sdp.md | 12 +- ...y-rebuild.write-pause-rebuild-abort.sdp.md | 7 +- ...ld.write-pause-rebuild-installation.sdp.md | 9 +- ...build.write-pause-rebuild-interrupt.sdp.md | 7 +- ...pause-rebuild-source-order-mismatch.sdp.md | 7 +- ....write-pause-rebuild-version-change.sdp.md | 8 +- design/specs/application/rebuild.sdp.md | 2 +- design/specs/application/restore.sdp.md | 4 +- design/specs/application/write-pause.sdp.md | 2 +- tests/pure/pack-page.test.ts | 153 ++++++++++++------ 11 files changed, 143 insertions(+), 74 deletions(-) diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index 48172ff..d5bf20b 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -49,9 +49,9 @@ A history projection is the form of a read model whose row depends on history ac - [extension] A history row's `sourceVersions` hold, per source stream, the highest event version folded into it; `applyHistoryProjection` drops every event whose version is not above the recorded version for its stream and skips the write when none remain, so a live update and a backfill page never fold one event twice, and the live path never meets a non-active generation of a history view, because its generation in flight exists only while its source scopes are closed and `rollbackGeneration` of `spec:application.rebuild` refuses to reopen a retired one (E-9, D9, F1) - [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` takes one entry's DTO, so a per-entity read model derives each row from one source stream (E-9, E-7, D8) - [extension] Every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds, so every event of a source stream reaches `keyOf` on the live path and a row's recorded version for a stream means that every event of that stream with the row's key up to it is folded, on the live path as under the pause; a declaration that writes a source without the binding is a defect, which a pure test over the application's declarations finds (E-9, E-7, D8) -- [extension] A history projection declares one version, so no generation of a view is written by two versions at once: a deploy that changes the version leaves the active generation, which records the earlier one, refused by `applyHistoryProjection`, and a deploy that adds the view's first binding leaves it no generation to write, and in both every command whose declaration binds the view fails as a technical failure until a generation of the deployed version is switched, unless the operator runs the handoff of `spec:application.history-rebuild#design.historyHandoff` (E-9, D8, D9, Law 6) -- [extension] The handoff under `all` is the release contract for four cases: a deploy that changes the version, a deploy that adds the view's first binding, the abort of a rebuild and the abort of an installation; an operator who deploys or aborts without it leaves callers the technical failures above, and they stay technical failures, never turned into transient refusals (E-9, E-8, D9, Law 6) -- [extension] What a caller sees through the handoff: ordinary answers before `all` closes; `writePaused`, a transient refusal, for every command that reaches step 7 while `all` is closed, with grant changes through `insertGrant` and `revokeGrant` refused alike and every rebuild batch, the new generation's first included, and every tenant-fill batch parked; `writePaused` only for the writers of the view's sources while the generation's source scopes stay closed through backfill and verification; and ordinary answers after `switchGeneration`, or after an abort and the compatible deploy it needs; a refusal before step 7 and a duplicate answered from its receipt keep their answers throughout, and a first installation's parent queries have no active generation to read until the switch (E-9, E-8, D9, D4) +- [extension] A history projection declares one version, so no generation of a view is written by two versions at once: the command pipeline's step 9 fails as a technical failure on a generation that records another version, which `applyHistoryProjection` refuses, and on a view with no generation to write; so a command whose declaration binds the view fails as a technical failure only when it passes step 7 while the view has no writable generation of the deployed version, which happens after a deploy that changes the version or adds the view's first binding, until `startGeneration` closes the view's sources, and after the abort of a rebuild under a deployed version other than the active generation's, or of an installation whose bindings are still deployed, until compatible code is deployed or a replacement generation's start closes the sources again (E-9, D8, D9, Law 6) +- [extension] The release procedure for four cases, a deploy that changes the version, a deploy that adds the view's first binding, the abort of a rebuild and the abort of an installation, is the handoff of `spec:application.history-rebuild#design.historyHandoff` and the protected abort of `spec:application.history-rebuild#design.historyAbortHandoff`, which hold `all` closed through every window above: under them a caller sees `writePaused`, a transient refusal, while `all` is closed and, for a writer of a source, while the source scopes are closed, until the switch or the protected abort, and never a technical failure; technical failures remain only for an operator who skips them, only in the windows above, and stay technical failures, never turned into transient refusals; the abort of a rebuild whose deployed version is the active generation's opens no window, so after it the operator reopens `all` and commands write as before, with no deploy (E-9, E-8, D9, Law 6) +- [extension] What a caller sees through the release procedure, window by window: ordinary answers before `all` closes; `writePaused` for every command that reaches step 7 while `all` is closed, with grant changes through `insertGrant` and `revokeGrant` refused alike and every rebuild batch, the new generation's first included, and every tenant-fill batch parked; `writePaused` only for the writers of the view's sources while the generation's source scopes stay closed through backfill and verification; and ordinary answers after `switchGeneration`, or after the protected abort once it reopens `all`, at once for a rebuild whose deployed version is the active generation's and otherwise after the compatible deploy; a refusal before step 7 and a duplicate answered from its receipt keep their answers throughout, and a first installation's parent queries have no active generation to read until the switch (E-9, E-8, D9, D4) - [extension] A history projection's version also fixes what its generations' saved cursors mean: a change of the fold or of a source's `list` or `history` contract is a new version, never a change under the same one, because the history rebuild's compatibility check compares the version and the order and identity of the sources and cannot see a change of meaning beneath them, and code moved without such a change keeps the batches' function references and what each saved cursor names (E-9, E-24, D9, D19) ## Design diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index 1873850..21adc00 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -69,10 +69,10 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) - historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) - historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause; because the write rule drops every event at or below a row's recorded version before `project`, the pass writes a missing row and brings a lagging row up to the last event of each source stream with its key, and never folds a covered row again, so it finds a missing or lagging row and not a fold that disagrees with itself (D9, E-8, E-9, Sc L2-6) -- historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; then `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `resumeGate` reopens the `all` entry this sequence closed and no other entry; `resumeGeneration` resumes the generation's parked chain while its pass is `backfill` or `verify`, or `switchGeneration` follows once it is `verified`, because reopening `all` resumes no chain; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds (E-8, E-9, D9, D19) -- historyAbortHandoff: [extension] before `abortGeneration` of a history generation the operator closes `all` again and confirms it with `getGate`; after the abort of a rebuild `all` stays closed until the deployed projection's version is the active generation's, which needs no deploy when it already is and otherwise the prepared compatible deploy, or a fresh `startGeneration` under the desired code and `historyHandoff` again; after the abort of an installation `all` stays closed until a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows, or until a new installation starts; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) -- historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version before it reads a row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page is empty, which calls no write helper, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) -- historyMismatch: [extension] a backfill or verify batch of a history view makes the check of `historyCompatibility` after step 1's state and fence checks and before step 2, so before it reads the cursor, the tenant list or a source; on a mismatch it keeps the cursor, the counts, the rows, the generation's state and the gate as they are, patches the progress row's `lastError` to one line naming the generation and what differs and `updatedAt`, and schedules nothing, so the source scopes stay closed and the pause holds; `resumeChain`, for a backfill or verify pass, and `switchGeneration` make the check before they change the fence, the state or a gate entry and throw a plain `Error` naming the difference on a mismatch; `abortGeneration`, `purgeGeneration` and the resume of a purge make no check, because an abort or a switch removes the entries the check reads and a purge reads only the read model's table; the recovery is compatible code and `resumeGeneration`, or `historyAbortHandoff` and a fresh generation from a `null` cursor, never a translated `sourceIndex` or rows kept from the incompatible pass (E-8, E-9, D9) +- historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; the closing step, in which `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `getGenerations` shows the generation's first batch parked on `all`, its progress row's `lastError` naming the scope; `resumeGate` reopens the `all` entry the closing step closed and no other entry; `resumeGeneration` resumes the parked chain, because reopening `all` resumes no chain, and `switchGeneration` follows once the generation is `verified`; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds; the sequence closes `all` in its closing step alone, and a replacement generation after `historyAbortHandoff`, which holds `all` closed already, enters it after that step (E-8, E-9, D9, D19) +- historyAbortHandoff: [extension] the protected abort, the operator's sequence for the abort of a history generation, a rebuild's or an installation's: `closeGate` closes `all` and `getGate` confirms it, as in the closing step of `historyHandoff`; then `abortGeneration`, which reopens the generation's source scopes while `all` stays closed; after the abort of a rebuild whose deployed projection version is the active generation's, `resumeGate` reopens the `all` entry at once, with no deploy, and commands write as before; after the abort of a rebuild under another version `all` stays closed until the prepared compatible deploy brings the deployed version back to the active generation's, and after the abort of an installation until a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows, and then `resumeGate` reopens the `all` entry; the other exit from either is a replacement generation, a fresh rebuild under the desired code or a new installation, which enters `historyHandoff` after its closing step, with the deploy when the desired code is not the deployed code, since `all` is already closed by this sequence and confirmed, and which `startGeneration` accepts because the aborted generation is no longer `building`, `verifying` or `verified`; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) +- historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version first, before it reads any event or row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page is empty, which calls no write helper, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) +- historyMismatch: [extension] a backfill or verify batch of a history view makes the check of `historyCompatibility` after step 1's state and fence checks and before step 2, so before it reads the cursor, the tenant list or a source; on a mismatch it keeps the cursor, the counts, the rows, the generation's state and the gate as they are, patches the progress row's `lastError` to one line naming the generation and what differs and `updatedAt`, and schedules nothing, so the source scopes stay closed and the pause holds; `resumeChain`, for a backfill or verify pass, and `switchGeneration` make the check before they change the fence, the state or a gate entry and throw a plain `Error` naming the difference on a mismatch; `abortGeneration`, `purgeGeneration` and the resume of a purge make no check, because an abort or a switch removes the entries the check reads and a purge reads only the read model's table; the recovery is compatible code and `resumeGeneration`, or `historyAbortHandoff` and a fresh generation, which starts from a `null` cursor, never a translated `sourceIndex` or rows kept from the incompatible pass (E-8, E-9, D9) - limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) ## Verification — reviewed @@ -82,9 +82,9 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - A reviewer confirms that the test of `spec:application.history-rebuild.write-pause-rebuild-version-change`, at the native backend tier, deploys a changed projection version through `historyHandoff` and finds every command refused `writePaused` while `all` is closed, only the writers of the view's sources refused while the source scopes stay closed, and ordinary answers after the switch, with no technical failure at any step. - A reviewer confirms that the test of `spec:application.history-rebuild.write-pause-rebuild-installation`, at the native backend tier, deploys the view's first binding through `historyHandoff` and finds the same three windows, with no command failing for a missing generation. - A reviewer confirms that a test at the native backend tier makes `startGeneration` fail inside `historyHandoff` and finds `all` still closed, no generation row inserted and every command refused `writePaused` until compatible code is deployed or the start succeeds. -- A reviewer confirms that a test at the native backend tier finds the new generation's first batch parked on `all` with its `lastError`, and that reopening `all` schedules nothing until `resumeGeneration` resumes the chain. +- A reviewer confirms that a test at the native backend tier finds the new generation's first batch parked on `all` with its `lastError` before the operator reopens `all`, and that reopening `all` schedules nothing until `resumeGeneration` resumes the chain. - A reviewer confirms that a test at the native backend tier aborts a rebuild whose deployed version is the active generation's through `historyAbortHandoff` and finds ordinary answers once `all` is reopened, with no deploy. -- A reviewer confirms that a test at the native backend tier aborts a rebuild of a changed version through `historyAbortHandoff` and finds the active generation unchanged and every command refused `writePaused`, never failed, until the compatible deploy or a fresh generation's handoff. +- A reviewer confirms that a test at the native backend tier aborts a rebuild of a changed version through `historyAbortHandoff` and finds the active generation unchanged and every command refused `writePaused`, never failed, until the compatible deploy and the reopen of `all`, or, for a replacement generation entering `historyHandoff` after its closing step, through the windows of a version change. - A reviewer confirms that a test at the native backend tier aborts an installation through `historyAbortHandoff`, deploys declarations without the view's bindings and finds ordinary answers after `all` is reopened, with the aborted rows purged by `purgeGeneration`. - A reviewer confirms that a test at the native backend tier makes the operator audit insert fail on a reopen of the handoff, the `resumeGate` of `all` and the `resumeScope` of an abort or a switch, and finds the gate, the generation and its progress row as they were and the scope still closed. - A reviewer confirms that a pure test compares a target's ordered source scope keys with gate entries mixed with unrelated closed entries, and finds a reorder, an added source, a removed source and a missing entry incompatible and the same list compatible. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md index 15d2d6f..61c5011 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md @@ -17,6 +17,8 @@ Sc L2-6 · native backend tier · the abort case, the doc's second enumerated ca ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation +And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} +And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} When the backfill is interrupted after {batches: 2} batches and then {resumption: "aborted"} @@ -30,7 +32,8 @@ And writes {writes: "reopen after the abort"} ## Verification — executable - Runs in the native backend tier; every test owns its disposable backend. -- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, and interrupts after the second history batch; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires, it closes `all` through `closeGate`, confirms it with `getGate` and calls `abortGeneration`. +- Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. +- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires, it closes `all` through `closeGate`, confirms it with `getGate` and calls `abortGeneration`. - The test asserts that the generation is `aborted`, that the active generation is unchanged and that `all` is still closed; since the deployed projection's version is the active generation's, it then reopens the `all` entry it closed through `resumeGate`, and asserts that `PlaceOrder` succeeds again, that both source entries are gone from the gate, and that no query returns a row of the aborted generation. - The test runs `purgeGeneration` and asserts that its batches run until the generation is `purged` and that every batch deleted at most `limitPurgeBatch` rows. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md index 700a0d9..e1740eb 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md @@ -18,10 +18,11 @@ E-8 · native backend tier · no acceptance row; the example verifies the handof ```gwt Given a deployed composition whose command declarations bind no {viewKind: "cross-stream history"} read model And {generationRows: 0} generation rows of the view +And an order summary installed before the deploy, with {orderSummary: "an active generation"} And {orders: 3} orders placed on stock items received before the deploy And a composition ready to deploy that binds the view on every declaration that writes its sources And a gate with {closedEntries: 0} closed entries -When the operator runs the handoff: closes all, deploys, starts a generation, reopens all, resumes the parked chain and switches the verified generation +When the operator runs the handoff: closes all, deploys, starts a generation, waits for its first batch to park, reopens all, resumes the parked chain and switches the verified generation Then every command that reaches step 7 while all is closed is {whileAllClosed: "refused with writePaused"} And {missingGeneration: 0} commands fail for a missing generation And generation {generation: 1} of the view is {state: "active"} @@ -32,8 +33,8 @@ And a command after the switch {afterSwitch: "writes its order's row in generati ## Verification — executable - Runs in the native backend tier; every test owns its disposable backend. -- The test first deploys, through `deployTemporary`, a copy of the composition whose command declarations bind no history projection and whose rebuild targets hold no history target, places three orders on stock items it received, and asserts that `generations` holds no row of the order allocation history. -- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the composition that binds the order allocation history to the order stream type and the stock item stream type, sends `PlaceOrder` and asserts the refusal `writePaused` with `data.kind` `"transient"` and nothing stored, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` generation 1 with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, and reopens the `all` entry it closed through `resumeGate`. -- The test asserts that the first batch parked on `all` with its `lastError` and that reopening `all` scheduled nothing, runs `resumeGeneration`, waits until generation 1 is `verified`, and asserts that `PlaceOrder` sent while the source scopes are closed is refused with `writePaused`. +- The test first deploys, through `deployTemporary`, a copy of the composition whose command declarations bind no history projection and whose rebuild targets hold no history target, installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write, places three orders on stock items it received, and asserts that `generations` holds no row of the order allocation history. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the composition that binds the order allocation history to the order stream type and the stock item stream type, sends `PlaceOrder` and asserts the refusal `writePaused` with `data.kind` `"transient"` and nothing stored, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` generation 1 with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, waits until `getGenerations` shows the first batch parked on `all`, the progress row's `lastError` naming `all` and its `batchesDone` 0, and only then reopens the `all` entry it closed through `resumeGate`. +- The test asserts that reopening `all` scheduled nothing, the progress row still showing the parked batch, runs `resumeGeneration`, waits until generation 1 is `verified`, and asserts that `PlaceOrder` sent while the source scopes are closed is refused with `writePaused`. - The test switches the generation and asserts that the gate holds no closed entry, that generation 1 is `active`, and that the view holds one row for each of the three orders, equal to the fold of its order's events and its stock items' allocation events read from the two journals through `history`. - The test sends `PlaceOrder` for a fourth order, asserts that it succeeds and that generation 1 holds that order's row, and asserts that no answer it received at any step was a technical failure. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md index 2dd1b19..ce4b8fa 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md @@ -17,6 +17,8 @@ Sc L2-6 · native backend tier · the resume case. ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation +And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} +And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} When the backfill is interrupted after {batches: 2} batches and then {resumption: "resumed"} @@ -30,10 +32,11 @@ And writes {writes: "reopen only after verification"} ## Verification — executable - Runs in the native backend tier; every test owns its disposable backend. -- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type, whose rebuild target lists the stock item source first, so the backfill folds every stock event of an order before its `OrderPlaced`. +- Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. +- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type, whose rebuild target lists the stock item source first, so the backfill folds every stock event of an order before its `OrderPlaced`. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. - The test starts a generation with `pauseRequired` and asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation. - The test asserts that `PlaceOrder` and `CancelOrder` are refused with `writePaused` because their declarations' `writes` name a closed source, that the error's `data.kind` is `"transient"`, and that nothing is stored. -- The test interrupts after the second history batch, asserts the gate is still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. +- The test waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done and the gate still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. - The test asserts that every row of the new generation equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`, and that its `sourceVersions` hold, per stream, the version of that stream's last event with the order's key; the sample holds a cancelled order whose stock items were released after the cancel, a stock item received and never allocated, and a stock item that allocated to a second order after the first. - The test asserts that each row of the new generation equals, beside `generation`, the row the old generation holds for the same order, which live commands wrote. - The test asserts that a `PlaceOrder` sent once the generation is `verified` and before the switch is still refused, then switches, which resumes both source scopes, and asserts that the same command now succeeds and that the active generation is the new one. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md index 07ed866..962f8d8 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md @@ -17,6 +17,8 @@ E-8 · native backend tier · no acceptance row; the example verifies the check ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation +And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} +And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation building under a write pause over sources in the order {startedOrder: "stock item, then order"} And its backfill interrupted after {batches: 2} batches And a deploy, at the same projection version, that lists the sources in the order {deployedOrder: "order, then stock item"} @@ -31,8 +33,9 @@ And a fresh generation {fresh: "is verified and switched"} ## Verification — executable - Runs in the native backend tier; every test owns its disposable backend. -- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, interrupts after the second history batch with `interruptGeneration`, and deploys the copy. +- Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. +- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done, and deploys the copy. - The test runs `backfillBatch` through its admin access with the generation's ID and its fence, standing for a batch scheduled before the deploy, since no batch carries the live fence after `interruptGeneration`, and asserts that the progress row's `lastError` names the generation and the two source orders, that the batch scheduled nothing, and that the cursor, the counts, the rows, the generation's state and the gate are as they were before it. - The test asserts that `resumeGeneration` is refused with a plain `Error` naming the difference and that the fence, the progress row and the gate are unchanged. - In this order the test closes `all` through `closeGate` and confirms it with `getGate`, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed through `resumeGate` and asserts that `PlaceOrder` succeeds. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md index 93b412d..3d9e81c 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md @@ -17,9 +17,10 @@ E-8 · native backend tier · no acceptance row; the example verifies the handof ```gwt Given a {viewKind: "cross-stream history"} read model whose active generation records projection version {activeVersion: 1} +And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} And a composition ready to deploy that declares the view at projection version {deployedVersion: 2} with the same sources And a gate with {closedEntries: 0} closed entries -When the operator runs the handoff: closes all, deploys, starts a generation, reopens all, resumes the parked chain and switches the verified generation +When the operator runs the handoff: closes all, deploys, starts a generation, waits for its first batch to park, reopens all, resumes the parked chain and switches the verified generation Then every command that reaches step 7 while all is closed is {whileAllClosed: "refused with writePaused"} And every writer of the view's sources is {whileSourcesClosed: "refused with writePaused"} while the source scopes are closed And {technicalFailures: 0} commands end in a technical failure @@ -30,9 +31,10 @@ And writes {writes: "reopen after the switch"} ## Verification — executable - Runs in the native backend tier; every test owns its disposable backend. +- Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. - The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at projection version 1 with an active generation; the deployed composition is a copy, deployed through `deployTemporary`, that declares version 2 with the same rebuild target. -- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the copy, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` the new generation with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, and reopens the `all` entry it closed through `resumeGate`. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, deploys the copy, runs `startGeneration` for the view, confirms through `getGenerations` and `getGate` the new generation with `pauseRequired` and one closed `source:` entry for each of the two stream types naming it, waits until `getGenerations` shows the first batch parked on `all`, the progress row's `lastError` naming `all` and its `batchesDone` 0, and only then reopens the `all` entry it closed through `resumeGate`. - The test asserts that `PlaceOrder`, `CancelOrder` and `ReceiveStock` sent while `all` is closed, before the deploy and after it, are refused with `writePaused`, that the error's `data.kind` is `"transient"`, and that nothing is stored. -- The test asserts that the new generation's first batch parked on `all` with its `lastError` and that reopening `all` scheduled nothing, runs `resumeGeneration`, and waits until the generation is `verified`. +- The test asserts that reopening `all` scheduled nothing, the progress row still showing the parked batch, runs `resumeGeneration`, and waits until the generation is `verified`. - The test asserts that `PlaceOrder` sent while the source scopes are closed is refused with `writePaused`, switches the generation, and asserts that the gate holds no closed entry, that `PlaceOrder` succeeds and that the active generation records projection version 2. - The test asserts that no answer it received at any step was a technical failure. diff --git a/design/specs/application/rebuild.sdp.md b/design/specs/application/rebuild.sdp.md index 22ff4d7..c64ea43 100644 --- a/design/specs/application/rebuild.sdp.md +++ b/design/specs/application/rebuild.sdp.md @@ -94,7 +94,7 @@ The registry, the progress row and the gate document are pinned by `spec:applica - Each verify batch enumerates the sources again from the progress row's cursor, which the end of the backfill reset to `null`, the first tenant, and calls `applyProjection` in backfill mode for every DTO, so a missing row is inserted, an older one updated, and the row of a DTO that projects to `null` deleted; each such repair is counted as a miss; when the last tenant's last page is done the generation moves to `verified` and no batch is scheduled (D9, E-8, Sc L2-5) - `switchGeneration` sets the verified generation `active` and, when the read model has an active generation, sets that one `retired` with `retiredAt` and `retireAfter`, in one mutation; every query reads the active generation from the registry, so every subscription on the read model re-runs (D9, F7, F1) - [extension] During the rollback period the retired generation's rows are kept and not written; `rollbackGeneration` reopens the retired generation it is given, one without `pauseRequired`, as `verifying` with a new fence and a `null` cursor and schedules a verify batch, live commands write it again from that commit, its one verify pass repairs every row that is missing, older or left behind by a deleted subject, and the ordinary `switchGeneration` makes it active and retires the generation that served meanwhile (E-8, D9, Sc L2-5) -- `abortGeneration` marks a building, verifying or verified generation `aborted`, leaves the active generation untouched, and resumes every closed gate entry that names this generation; an aborted rollback leaves the reopened generation `aborted`, never `retired` again; reopening the sources is not a promise that commands can write, because a bound history view whose deployed version is not its active generation's, or that has no other generation, still fails its commands as a technical failure until `spec:application.history-rebuild#design.historyAbortHandoff` has ended (D9, Sc L2-6, E-8) +- `abortGeneration` marks a building, verifying or verified generation `aborted`, leaves the active generation untouched, and resumes every closed gate entry that names this generation; an aborted rollback leaves the reopened generation `aborted`, never `retired` again; reopening the sources is not a promise that commands can write, because a bound history view whose deployed version is not its active generation's, or that has no other generation, still fails its commands as a technical failure once `all` is open, unless the abort runs under `spec:application.history-rebuild#design.historyAbortHandoff`, which holds `all` closed until compatible code is deployed or a replacement generation's start closes the sources again (D9, Sc L2-6, E-8) - `purgeGeneration` starts the purge of an aborted generation, or of a retired one once `retireAfter` has passed; each purge batch deletes at most the progress row's batch size, capped by `limitPurgeBatch`, of rows of the generation for one tenant by the `by_key` range, stays on that tenant while a full batch came back, moves to the next tenant of the tenant list otherwise, and marks the generation `purged` after the last tenant; nothing starts a purge by itself, and a purge whose chain ended, a restore among the causes, is continued by `resumeGeneration` from its progress row (D19, E-40, E-49) ## Design diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index fb3473c..ebcf558 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -79,7 +79,7 @@ The parts of restore that concern obligations, external dispatch and provider ev - The operator starts the run record with `startRestoreRun`, which stores the backup ID, the backup time, the commit, the hashes and the operator (E-42, D19) - The journal check runs in batches: for each stream of a `list` page taken with `includeDeleted`, the context's `rebuild` query, called with the events the batch may still fold as `maxEvents`, reports `version`, `savedVersion`, `fromBaseline` and `eventsApplied`, and the check asserts that `eventsApplied` equals `version` minus the baseline version and that `version` equals `savedVersion`, which shows the events since the latest baseline are contiguous and the stream row agrees; a `rebuild` answer refused with `tailTooLong` is recorded as a journal finding naming the stream and its tail length, never retried with a bigger batch, while one refused with `budgetExhausted` is not a finding but the point where this batch stops and the next one resumes; event identity is enforced by the append's indexed read and is not rescanned (E-42, E-24, E-25, D2, D5) - The domain check runs in the same batches from the same `rebuild` call: its `equal` flag shows that folding the events since the latest baseline through `evolve` gives the saved state at the stream version (E-42, D3, Law 3, Sc L0-2) -- The read-model check runs in batches through the rebuild's verify logic in compare mode: for each read model's active generation, every enumerated stream has a row whose source versions equal the current versions and whose fields equal the projection of the current DTO (E-42, D8, D9) +- The read-model check runs in batches through the rebuild's verify logic in compare mode: for each per-entity read model's active generation, every enumerated stream has a row whose source versions equal the current versions and whose fields equal the projection of the current DTO; a history view's row records the last folded event of each source stream with its key, not one stream's DTO, and the check of its active generation is the open question `spec:application.restore#question.restoreHistoryFoldVerification` (E-42, D8, D9) - The receipt check runs in batches over receipts: for each receipt the context's `byOperation` query returns the events of its operation ID, and the check asserts that the stream versions the receipt lists are among them (E-42, D6, D19) - Each check batch writes its cursor, its examined count and its findings on the run record in the same mutation, so an interrupted check resumes from its cursor (E-42, F13) - The pending-work inventory runs after the four checks: it reads the restored gate document and records every closed entry, reads every generation in `building`, `verifying` or `verified` for each read model the parent declares and records it with its state and fence, and pages the `imports` table recording every row in `running`; nothing it records is a finding, because pending work is not a broken invariant (E-42, F12, D19) @@ -90,7 +90,7 @@ The parts of restore that concern obligations, external dispatch and provider ev ## Design -The restore itself is a platform operation outside any mutation. Everything the procedure adds is in the parent: a run record table, one internal mutation per check batch, one for the pending-work inventory, and the door in the writer check. Each check batch is one mutation. The journal and domain checks share one batch function, because both read the context's `rebuild` query, which folds a stream inside the context and compares it with the saved row; that query is per stream and runs in the batch's own transaction, so the batch hands it the events it may still fold and the query refuses before reading when the tail would not fit, which makes one 500-event fold the batch's worst case rather than a fold on top of a nearly full budget. The read-model check reuses the rebuild's verify logic, and the receipt check reads the parent's receipts and the context's `byOperation` query. The pending-work inventory reads the gate document, the registry and the `imports` table and writes what it finds on the run record. The procedure's six mutations are the only mutations in the parent that do not read the write pause's gate: they write only the `restoreRuns` record and, in the accepted branch, the generation rows they resume; they run only while a run is `running`; and the door they hold closed would otherwise refuse them. +The restore itself is a platform operation outside any mutation. Everything the procedure adds is in the parent: a run record table, one internal mutation per check batch, one for the pending-work inventory, and the door in the writer check. Each check batch is one mutation. The journal and domain checks share one batch function, because both read the context's `rebuild` query, which folds a stream inside the context and compares it with the saved row; that query is per stream and runs in the batch's own transaction, so the batch hands it the events it may still fold and the query refuses before reading when the tail would not fit, which makes one 500-event fold the batch's worst case rather than a fold on top of a nearly full budget. The read-model check reuses the rebuild's verify logic, and the receipt check reads the parent's receipts and the context's `byOperation` query. The pending-work inventory reads the gate document, the registry and the `imports` table and writes what it finds on the run record. The procedure's six mutations are among the mutations in the parent that do not read the write pause's gate, with the gate's own entries, the rebuild's `fillTenants` and the rebuild's other operator entries, the inventory `spec:application.write-pause` states: the six write only the `restoreRuns` record and, in the accepted branch, the generation rows they resume; they run only while a run is `running`; and the door they hold closed would otherwise refuse them. - transactionBoundary: none for the import of the backup archive; each check batch is one internal mutation that reads through one component query and writes only the run record; `finishRestoreRun` is one mutation that marks the run and reschedules the stranded generations together, so acceptance and the rescheduling commit or fail as one (D19, F8, F13) - convexSurface: `startRestoreRun`, `streamCheckBatch`, `readModelCheckBatch`, `receiptCheckBatch`, `pendingWorkBatch`, `finishRestoreRun` as internal mutations and `getRestoreRun` as an internal query, all in the parent (E-42, D19) diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index fa435c0..4a78518 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -85,7 +85,7 @@ The gate is one document so that a command pays one point read. Scopes are strin ## Verification — reviewed -- A reviewer confirms that `assertWritable` is called by the command pipeline's step 7 for every command that reaches it and by the two grant helpers before they write, that `gateAllows` is called by every background batch before its first write and that the batch parks rather than throws on a refusal, that the two are one read because `assertWritable` is `gateAllows` plus the throw, that the gate's entries, the rebuild's operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the restore procedure's six mutations are the only exemptions, and that no function caches the gate across mutations. +- A reviewer confirms that `assertWritable` is called by the command pipeline's step 7 for every command that reaches it and by the two grant helpers before they write, that `gateAllows` is called by every background batch before its first write and that the batch parks rather than throws on a refusal, that the two are one read because `assertWritable` is `gateAllows` plus the throw, that the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, the rebuild's other operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the restore procedure's six mutations are the only exemptions, and that no function caches the gate across mutations. - A reviewer confirms that `gateAllows` reads the environment before the document, that an entry with no generation is never exempt, and that a gate read with no generation passes no closed entry. - A reviewer confirms that no function other than `startGeneration` closes a source scope, so every closed entry that names a generation names a row that exists, and that the journal's baseline driver reads the gate with the source scope of the stream type it migrates before every batch. - A reviewer confirms that `closeScope` and `resumeScope` are the only writers of the gate document, that each inserts its audit record in the same mutation with no catch around it, and that a test whose audit table refuses the record finds the gate unchanged. diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index d2b6001..5a9c5b6 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -2,9 +2,19 @@ // a sample corpus in a temporary directory, whose graph the Protocol's extractor derives. The sample // shows the members in the Pack's order, the clause that holds a member below its next rung with // the targets that break it, each open question's address, and the register rows on the members. -import { mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; +import { spawnSync } from "node:child_process"; +import { + copyFile, + mkdir, + mkdtemp, + readFile, + rm, + symlink, + writeFile, +} from "node:fs/promises"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; +import { fileURLToPath } from "node:url"; import { expect, test, vi } from "vitest"; type Failure = { @@ -713,62 +723,64 @@ test("the page of a sample Pack reads its order, its blockers and its register r } }); -test("the command's --check exits 1 for a page that is missing or behind the tree, and 0 for a current one", async () => { - const base = await mkdtemp(join(tmpdir(), "pack-page-")); +// A sample tree of two Specs in one Pack, with every input the generator reads, in base. +async function smallSample(base: string) { const put = async (path: string, text: string) => { await mkdir(dirname(join(base, path)), { recursive: true }); await writeFile(join(base, path), text); }; + await put( + "package.json", + JSON.stringify({ + devDependencies: { + "@libar-dev/software-delivery-protocol": "file:sample.tgz", + }, + }), + ); + await put( + "tests/types/pinned-pairs.json", + JSON.stringify({ + pack: "pack:sample", + test: "tests/types/sample.test-d.ts", + pairs: [], + }), + ); + await put("design/tools/anchor-sites.json", JSON.stringify({ anchors: [] })); + await put( + "design/decisions/register.json", + JSON.stringify({ decisions: [] }), + ); + await put( + "design/specs/sample.pack.sdp.md", + [ + "---", + "id: pack:sample", + "specs:", + " - spec:sample.alpha", + " - spec:sample.beta", + "---", + "# Sample", + "", + ].join("\n"), + ); + await put( + "design/specs/sample/alpha.sdp.md", + decision("alpha", "scoped", ["refines: spec:sample.beta"]), + ); + await put( + "design/specs/sample/beta.sdp.md", + decision("beta", "scoped", []).replace("relations:\n", "relations: {}\n"), + ); +} + +test("the command's --check exits 1 for a page that is missing or behind the tree, and 0 for a current one", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); const said: string[] = []; const error = vi .spyOn(console, "error") .mockImplementation((message: string) => void said.push(message)); try { - await put( - "package.json", - JSON.stringify({ - devDependencies: { - "@libar-dev/software-delivery-protocol": "file:sample.tgz", - }, - }), - ); - await put( - "tests/types/pinned-pairs.json", - JSON.stringify({ - pack: "pack:sample", - test: "tests/types/sample.test-d.ts", - pairs: [], - }), - ); - await put( - "design/tools/anchor-sites.json", - JSON.stringify({ anchors: [] }), - ); - await put( - "design/decisions/register.json", - JSON.stringify({ decisions: [] }), - ); - await put( - "design/specs/sample.pack.sdp.md", - [ - "---", - "id: pack:sample", - "specs:", - " - spec:sample.alpha", - " - spec:sample.beta", - "---", - "# Sample", - "", - ].join("\n"), - ); - await put( - "design/specs/sample/alpha.sdp.md", - decision("alpha", "scoped", ["refines: spec:sample.beta"]), - ); - await put( - "design/specs/sample/beta.sdp.md", - decision("beta", "scoped", []).replace("relations:\n", "relations: {}\n"), - ); + await smallSample(base); const out = join(base, "design/pages/sample.md"); const command = ["--pack", "pack:sample", "--out", out]; const check = () => page.main([...command, "--check"], base); @@ -792,3 +804,48 @@ test("the command's --check exits 1 for a page that is missing or behind the tre await rm(base, { recursive: true, force: true }); } }); + +// The script run as a process, from a copy in a sample tree that links this repository's +// node_modules, so the exit status a caller such as check.py reads is the one asserted. +test("the generator run as a process exits non-zero with --check on a stale page", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + try { + await smallSample(base); + await mkdir(join(base, "scripts"), { recursive: true }); + await copyFile( + fileURLToPath(new URL("../../scripts/pack-page.mjs", import.meta.url)), + join(base, "scripts/pack-page.mjs"), + ); + await symlink( + fileURLToPath(new URL("../../node_modules", import.meta.url)), + join(base, "node_modules"), + ); + const run = (...flags: string[]) => + spawnSync( + process.execPath, + [ + "scripts/pack-page.mjs", + "--pack", + "pack:sample", + "--out", + "design/pages/sample.md", + ...flags, + ], + { cwd: base, encoding: "utf8" }, + ); + expect(run().status).toBe(0); + expect(run("--check").status).toBe(0); + const out = join(base, "design/pages/sample.md"); + await writeFile( + out, + `${await readFile(out, "utf8")}A line the tree does not generate.\n`, + ); + const stale = run("--check"); + expect(stale.status).toBe(1); + expect(stale.stderr).toContain( + "pack-page: design/pages/sample.md is behind the tree from line", + ); + } finally { + await rm(base, { recursive: true, force: true }); + } +}); From 7535f44c101cf8136e13eff9db0ba8faa6c06b56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 07:05:46 +0200 Subject: [PATCH 38/60] design: the protected abort at its edges A third read (gpt-6-astra at high) found the history projection and the version-change and installation examples ready, and four seams left at the abort handoff's edges, ruled by the main thread: - An abort inside a handoff, or inside a restore's recovery, continues with `all` already held closed; no step closes a scope the procedure holds. - The protected abort resumes the passes it interrupted or parked, just after it reopens `all`, since a chain resumed while `all` is closed parks again. - Inside a restore's recovery `all` stays closed until finishRestoreRun accepts the run; historyAbortHandoff and finishCompatibility cite each other. - The interrupt, abort and source-order examples hold the backfill with `all` once two batches are done, and act while it is parked, so a native backend cannot finish the backfill before the interrupt. Co-Authored-By: Claude Opus 5.5 --- design/README.md | 2 +- design/pages/history-view.md | 2 +- design/specs/application/history-projection.sdp.md | 4 ++-- design/specs/application/history-rebuild.sdp.md | 4 ++-- .../history-rebuild.write-pause-rebuild-abort.sdp.md | 3 ++- .../history-rebuild.write-pause-rebuild-interrupt.sdp.md | 3 ++- ...ebuild.write-pause-rebuild-source-order-mismatch.sdp.md | 7 ++++--- design/specs/application/restore.sdp.md | 3 ++- 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/design/README.md b/design/README.md index 9aab829..e4a9dce 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -243 specs · 6 packs · 144 anchors → 393 nodes · 1381 edges (0 errors, 0 warnings) +243 specs · 6 packs · 144 anchors → 393 nodes · 1382 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 2e8f70c..243e22d 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -140,7 +140,7 @@ No target outside the Pack holds a member below its next rung. | [`spec:application.aggregate-projection`](../specs/application/aggregate-projection.sdp.md) | scoped | scoped | dependsOn `spec:application.projection-contract`, refines `spec:application.read-models`, dependsOn `spec:application.generation-registry`, dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, decidedBy `spec:decisions.d09-rebuild-online-by-default` | | [`spec:application.first-experiment`](../specs/application/first-experiment.sdp.md) | defined | ready | dependsOn `spec:application.history-projection`, dependsOn `spec:application.read-models`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.history-rebuild`, dependsOn `spec:application.generation-registry`, dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | | [`spec:application.parent-use-cases`](../specs/application/parent-use-cases.sdp.md) | defined | ready | dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline` | -| [`spec:application.restore`](../specs/application/restore.sdp.md) | defined | ready | dependsOn `spec:application.projection-contract`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.write-pause`, dependsOn `spec:application.generation-registry`, dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | +| [`spec:application.restore`](../specs/application/restore.sdp.md) | defined | ready | dependsOn `spec:application.projection-contract`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.history-rebuild`, dependsOn `spec:application.write-pause`, dependsOn `spec:application.generation-registry`, dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | | [`spec:command.idempotency-and-receipts`](../specs/command/idempotency-and-receipts.sdp.md) | defined | ready | refines `spec:command.command-pipeline`, dependsOn `spec:context.queries` | | [`spec:command.outcome-boundary`](../specs/command/outcome-boundary.sdp.md) | defined | ready | refines `spec:command.command-pipeline` | | [`spec:command.receipt-table`](../specs/command/receipt-table.sdp.md) | defined | ready | dependsOn `spec:context.queries` | diff --git a/design/specs/application/history-projection.sdp.md b/design/specs/application/history-projection.sdp.md index d5bf20b..54ce6a4 100644 --- a/design/specs/application/history-projection.sdp.md +++ b/design/specs/application/history-projection.sdp.md @@ -50,8 +50,8 @@ A history projection is the form of a read model whose row depends on history ac - [extension] A history projection is bound once per source stream type on the command declaration; the pipeline's step 9 feeds it, once per command, the events of every `streams` entry its bindings match, and the backfill feeds it each source's history, so a history row has one projection and several bindings; a `Projection` takes one entry's DTO, so a per-entity read model derives each row from one source stream (E-9, E-7, D8) - [extension] Every command declaration whose `writes` names a source of a history projection binds the projection for each such source, whether or not its events carry a key the view folds, so every event of a source stream reaches `keyOf` on the live path and a row's recorded version for a stream means that every event of that stream with the row's key up to it is folded, on the live path as under the pause; a declaration that writes a source without the binding is a defect, which a pure test over the application's declarations finds (E-9, E-7, D8) - [extension] A history projection declares one version, so no generation of a view is written by two versions at once: the command pipeline's step 9 fails as a technical failure on a generation that records another version, which `applyHistoryProjection` refuses, and on a view with no generation to write; so a command whose declaration binds the view fails as a technical failure only when it passes step 7 while the view has no writable generation of the deployed version, which happens after a deploy that changes the version or adds the view's first binding, until `startGeneration` closes the view's sources, and after the abort of a rebuild under a deployed version other than the active generation's, or of an installation whose bindings are still deployed, until compatible code is deployed or a replacement generation's start closes the sources again (E-9, D8, D9, Law 6) -- [extension] The release procedure for four cases, a deploy that changes the version, a deploy that adds the view's first binding, the abort of a rebuild and the abort of an installation, is the handoff of `spec:application.history-rebuild#design.historyHandoff` and the protected abort of `spec:application.history-rebuild#design.historyAbortHandoff`, which hold `all` closed through every window above: under them a caller sees `writePaused`, a transient refusal, while `all` is closed and, for a writer of a source, while the source scopes are closed, until the switch or the protected abort, and never a technical failure; technical failures remain only for an operator who skips them, only in the windows above, and stay technical failures, never turned into transient refusals; the abort of a rebuild whose deployed version is the active generation's opens no window, so after it the operator reopens `all` and commands write as before, with no deploy (E-9, E-8, D9, Law 6) -- [extension] What a caller sees through the release procedure, window by window: ordinary answers before `all` closes; `writePaused` for every command that reaches step 7 while `all` is closed, with grant changes through `insertGrant` and `revokeGrant` refused alike and every rebuild batch, the new generation's first included, and every tenant-fill batch parked; `writePaused` only for the writers of the view's sources while the generation's source scopes stay closed through backfill and verification; and ordinary answers after `switchGeneration`, or after the protected abort once it reopens `all`, at once for a rebuild whose deployed version is the active generation's and otherwise after the compatible deploy; a refusal before step 7 and a duplicate answered from its receipt keep their answers throughout, and a first installation's parent queries have no active generation to read until the switch (E-9, E-8, D9, D4) +- [extension] The release procedure for four cases, a deploy that changes the version, a deploy that adds the view's first binding, the abort of a rebuild and the abort of an installation, is the handoff of `spec:application.history-rebuild#design.historyHandoff` and the protected abort of `spec:application.history-rebuild#design.historyAbortHandoff`, which hold `all` closed through every window above: under them a caller sees `writePaused`, a transient refusal, while `all` is closed and, for a writer of a source, while the source scopes are closed, until the switch or the protected abort, and never a technical failure; technical failures remain only for an operator who skips them, only in the windows above, and stay technical failures, never turned into transient refusals; the abort of a rebuild whose deployed version is the active generation's opens no window, so after it the operator reopens `all`, after the run's acceptance when the abort is part of a restore's recovery, and commands write as before, with no deploy (E-9, E-8, D9, Law 6) +- [extension] What a caller sees through the release procedure, window by window: ordinary answers before `all` closes; `writePaused` for every command that reaches step 7 while `all` is closed, with grant changes through `insertGrant` and `revokeGrant` refused alike and every rebuild batch, the new generation's first included, and every tenant-fill batch parked; `writePaused` only for the writers of the view's sources while the generation's source scopes stay closed through backfill and verification; and ordinary answers after `switchGeneration`, or after the protected abort once it reopens `all`, at once for a rebuild whose deployed version is the active generation's and otherwise after the compatible deploy, and inside a restore's recovery not before the run is accepted; a refusal before step 7 and a duplicate answered from its receipt keep their answers throughout, and a first installation's parent queries have no active generation to read until the switch (E-9, E-8, D9, D4) - [extension] A history projection's version also fixes what its generations' saved cursors mean: a change of the fold or of a source's `list` or `history` contract is a new version, never a change under the same one, because the history rebuild's compatibility check compares the version and the order and identity of the sources and cannot see a change of meaning beneath them, and code moved without such a change keeps the batches' function references and what each saved cursor names (E-9, E-24, D9, D19) ## Design diff --git a/design/specs/application/history-rebuild.sdp.md b/design/specs/application/history-rebuild.sdp.md index 21adc00..61a31d6 100644 --- a/design/specs/application/history-rebuild.sdp.md +++ b/design/specs/application/history-rebuild.sdp.md @@ -69,8 +69,8 @@ Every entry below extends `spec:application.rebuild`: a history batch keeps that - historyStart: for a `HistoryRebuildTarget`, `startGeneration` takes the version the projection declares and refuses a given `projectionVersion` that differs with the message of `projectionOf`, sets `pauseRequired: true`, and, after inserting the generation row and the progress row and before scheduling, calls the write pause's `closeScope` once per entry of `sources`, in order, with `"source:" + contextId + ":" + streamType`, the reason `"rebuild of " + name + " generation " + n`, the operator and the new generation's ID, so a scope already closed or a full gate refuses the whole start and no batch is scheduled (D9, E-8, E-38, E-48) - historySteps: for a history view a backfill or verify batch keeps steps 1 to 3 and replaces steps 4 to 6: with `source` the entry of `sources` at the cursor's `sourceIndex`, 0 when the cursor is `null`, when the cursor names no stream it calls `source.list` with `numItems` 1, `includeDeleted` and the page cursor; a page with no DTO reads no history: when it is not done the batch checkpoints at its `continueCursor`, and when it is done that source ends in the tenant and the batch checkpoints at the next source of the same tenant with a `null` page cursor, or after the last source at `{ tenantId: next, pageCursor: null, sourceIndex: 0 }` for `next = nextTenant(ctx, tenantId)`, the pass being done when `next` is `null`; a page with a DTO names the stream, its `version.streamId`, with a `null` event cursor and the page's `continueCursor` as the page cursor; for the stream the cursor or the page names, the batch then calls `source.history` as `fnHistoryPageCall` states, calls `applyHistoryProjection(ctx, target.readModel, { tenantId, events: page, mode: "backfill", generations: [thisGeneration] })`, adds one to `rowsWritten`, or to `misses` in a verify batch, for each `inserted` or `updated` and one to `rowsSkipped` for each `skipped-newer`, and checkpoints with the stream and the page's `continueCursor` as the event cursor, or with neither when the page reports `isDone`; every checkpoint patches the progress row and schedules the next batch as step 6 does for a pass that is not done, and the batch whose pass is done moves the generation and the progress row as step 6 and `verifySteps` state (D9, E-9, E-24, E-40, E-49) - historyVerify: a verify batch of a history view runs `historySteps` from the `null` cursor the end of the backfill set, with `state` `verifying` and `pass` `verify`; under the pause no source changes, so over a generation the backfill covered every key answers `skipped-newer`, an event of type `baseline` or whose key is `null` is never a miss, and a row the pass finds missing or behind is repaired by the batch that read the events; the generation is `verified` when the pass ends, as for every read model, and the pass reads every source's history once more under the pause; because the write rule drops every event at or below a row's recorded version before `project`, the pass writes a missing row and brings a lagging row up to the last event of each source stream with its key, and never folds a covered row again, so it finds a missing or lagging row and not a fold that disagrees with itself (D9, E-8, E-9, Sc L2-6) -- historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; the closing step, in which `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `getGenerations` shows the generation's first batch parked on `all`, its progress row's `lastError` naming the scope; `resumeGate` reopens the `all` entry the closing step closed and no other entry; `resumeGeneration` resumes the parked chain, because reopening `all` resumes no chain, and `switchGeneration` follows once the generation is `verified`; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds; the sequence closes `all` in its closing step alone, and a replacement generation after `historyAbortHandoff`, which holds `all` closed already, enters it after that step (E-8, E-9, D9, D19) -- historyAbortHandoff: [extension] the protected abort, the operator's sequence for the abort of a history generation, a rebuild's or an installation's: `closeGate` closes `all` and `getGate` confirms it, as in the closing step of `historyHandoff`; then `abortGeneration`, which reopens the generation's source scopes while `all` stays closed; after the abort of a rebuild whose deployed projection version is the active generation's, `resumeGate` reopens the `all` entry at once, with no deploy, and commands write as before; after the abort of a rebuild under another version `all` stays closed until the prepared compatible deploy brings the deployed version back to the active generation's, and after the abort of an installation until a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows, and then `resumeGate` reopens the `all` entry; the other exit from either is a replacement generation, a fresh rebuild under the desired code or a new installation, which enters `historyHandoff` after its closing step, with the deploy when the desired code is not the deployed code, since `all` is already closed by this sequence and confirmed, and which `startGeneration` accepts because the aborted generation is no longer `building`, `verifying` or `verified`; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) +- historyHandoff: [extension] the operator's sequence for a deploy that changes a history projection's version or adds its first binding: beforehand the sources' migrations that read history and the tenant fill have ended, other generations' passes have ended or been interrupted with their IDs kept, the gate has room for `all` beside every source scope of the view, because `startGeneration` refuses a full gate and `all` is never reopened to make room, and a compatible deploy back to the active version, or to declarations without the new bindings, is ready; the closing step, in which `closeGate` closes `all` and `getGate` confirms it; the deploy; `startGeneration` under the new code while `all` stays closed, and `getGenerations` and `getGate` confirm the generation and every source scope that names it; `getGenerations` shows the generation's first batch parked on `all`, its progress row's `lastError` naming the scope; `resumeGate` reopens the `all` entry the closing step closed and no other entry; `resumeGeneration` resumes the parked chain, because reopening `all` resumes no chain, and `switchGeneration` follows once the generation is `verified`; and `resumeGeneration` resumes each other chain the sequence interrupted or parked; a failed deploy or start keeps `all` closed until compatible code is deployed or the start succeeds; the sequence closes `all` in its closing step alone, and a replacement generation after `historyAbortHandoff`, which holds `all` closed already, enters it after that step; an abort of the generation while the sequence holds `all` closed is `historyAbortHandoff`, which continues with it closed (E-8, E-9, D9, D19) +- historyAbortHandoff: [extension] the protected abort, the operator's sequence for the abort of a history generation, a rebuild's or an installation's: when `all` is open, `closeGate` closes it and `getGate` confirms it, as in the closing step of `historyHandoff`, and when the operator already holds it closed, as `historyHandoff` and the restore's recovery of `spec:application.restore#design.finishCompatibility` do, `getGate` confirms it and the abort continues with it closed, so no step closes a scope the operator holds; then `abortGeneration`, which reopens the generation's source scopes while `all` stays closed; `all` stays closed after the abort until the deployed code is compatible with what the abort left: at once for a rebuild whose deployed projection version is the active generation's, with no deploy; for a rebuild under another version, once the prepared compatible deploy brings the deployed version back to the active generation's; for an installation, once a compatible deploy removes the view's bindings from the declarations and withholds its parent queries, its table, target and entries kept until `purgeGeneration` has purged the aborted rows; and, for an abort inside the restore's recovery, also until `finishRestoreRun` accepts the run, as `finishCompatibility` states; then `resumeGate` reopens the `all` entry, commands write as before, and `resumeGeneration` resumes each other chain the sequence interrupted or parked, and `fillTenants` a tenant fill it parked, as in `historyHandoff`, because a parked batch schedules nothing and reopening `all` resumes none; the other exit from a rebuild under another version or an installation is a replacement generation, a fresh rebuild under the desired code or a new installation, which enters `historyHandoff` after its closing step, with the deploy when the desired code is not the deployed code, since `all` is already closed by this sequence and confirmed, and which `startGeneration` accepts because the aborted generation is no longer `building`, `verifying` or `verified`; a compatible deploy is not an older commit by default, because newer stream data can make older code invalid (E-8, E-9, D9, D19) - historyCompatibility: [extension] a generation with `pauseRequired` is compatible with the deployed code when its read model's target is a `HistoryRebuildTarget` whose distinct `sources` give, in order, the same `source:` scope keys as the closed entries of the stored gate document that name the generation, read in their array order and never sorted, and when the projection's declared `version` equals the generation row's `projectionVersion`; a missing gate document, a missing target, or a difference of length, order, identity or version is incompatible; the check reads the gate document itself, never through `gateAllows`, whose restore door reads none, and adds no field to the generation row; its version half is one rule with the throw of `applyHistoryProjection`, which refuses a generation of another version first, before it reads any event or row, a technical failure on the live path, and since that throw ends a folding batch's chain with no `lastError` and never reaches a batch whose page is empty, which calls no write helper, `resumeChain`, `switchGeneration` or the restore's `finishRestoreRun`, this check, made first, parks the batch with a `lastError` and refuses the other three (E-8, E-9, D9, D19) - historyMismatch: [extension] a backfill or verify batch of a history view makes the check of `historyCompatibility` after step 1's state and fence checks and before step 2, so before it reads the cursor, the tenant list or a source; on a mismatch it keeps the cursor, the counts, the rows, the generation's state and the gate as they are, patches the progress row's `lastError` to one line naming the generation and what differs and `updatedAt`, and schedules nothing, so the source scopes stay closed and the pause holds; `resumeChain`, for a backfill or verify pass, and `switchGeneration` make the check before they change the fence, the state or a gate entry and throw a plain `Error` naming the difference on a mismatch; `abortGeneration`, `purgeGeneration` and the resume of a purge make no check, because an abort or a switch removes the entries the check reads and a purge reads only the read model's table; the recovery is compatible code and `resumeGeneration`, or `historyAbortHandoff` and a fresh generation, which starts from a `null` cursor, never a translated `sourceIndex` or rows kept from the incompatible pass (E-8, E-9, D9) - limitHistoryBatch: [extension] a history batch reads at most the progress row's `batchSize` events, which `startGeneration` sets through `batchSizeFor` like every read model's and nothing changes after, so the one formula of `limitBatchSize` gives 100 events at the default 16 KiB row budget and 32 at the 64 KiB ceiling, the order allocation history's; one batch reads one stream row of at most the stream's `budgetBytes` through its one `list` call, those events through its one `history` call, each at most `limitEventBytes` of `spec:context.event-envelope` and the 61 bytes of a stored document's system fields, with the page's baselines held to about 9 MiB by the query's byte bound, and at most one history row per event, at most 2 MiB, and writes at most 2 MiB, under the ceilings with the 1 second timeout in mind (E-40, E-9, E-24, F13) diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md index 61c5011..b883203 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md @@ -21,6 +21,7 @@ And an order summary installed before the first order is placed, with {orderSumm And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} +And the backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the interrupt When the backfill is interrupted after {batches: 2} batches and then {resumption: "aborted"} Then no row of the new generation holds data older than its source stream version And the new generation {coverage: "is discarded and read by no query"} @@ -34,6 +35,6 @@ And writes {writes: "reopen after the abort"} - Runs in the native backend tier; every test owns its disposable backend. - Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. - The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires, it closes `all` through `closeGate`, confirms it with `getGate` and calls `abortGeneration`. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires when the operator already holds `all` closed, it confirms `all` with `getGate`, keeps it closed and calls `abortGeneration`. - The test asserts that the generation is `aborted`, that the active generation is unchanged and that `all` is still closed; since the deployed projection's version is the active generation's, it then reopens the `all` entry it closed through `resumeGate`, and asserts that `PlaceOrder` succeeds again, that both source entries are gone from the gate, and that no query returns a row of the aborted generation. - The test runs `purgeGeneration` and asserts that its batches run until the generation is `purged` and that every batch deleted at most `limitPurgeBatch` rows. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md index ce4b8fa..e527531 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md @@ -21,6 +21,7 @@ And an order summary installed before the first order is placed, with {orderSumm And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} +And the backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the interrupt When the backfill is interrupted after {batches: 2} batches and then {resumption: "resumed"} Then no row of the new generation holds data older than its source stream version And the new generation {coverage: "covers every stream enumerated at cutover"} @@ -36,7 +37,7 @@ And writes {writes: "reopen only after verification"} - The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type, whose rebuild target lists the stock item source first, so the backfill folds every stock event of an order before its `OrderPlaced`. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. - The test starts a generation with `pauseRequired` and asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation. - The test asserts that `PlaceOrder` and `CancelOrder` are refused with `writePaused` because their declarations' `writes` name a closed source, that the error's `data.kind` is `"transient"`, and that nothing is stored. -- The test waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done and the gate still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. +- The test waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done; it then reopens the `all` entry it closed through `resumeGate`, asserts that both source entries are still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. - The test asserts that every row of the new generation equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`, and that its `sourceVersions` hold, per stream, the version of that stream's last event with the order's key; the sample holds a cancelled order whose stock items were released after the cancel, a stock item received and never allocated, and a stock item that allocated to a second order after the first. - The test asserts that each row of the new generation equals, beside `generation`, the row the old generation holds for the same order, which live commands wrote. - The test asserts that a `PlaceOrder` sent once the generation is `verified` and before the switch is still refused, then switches, which resumes both source scopes, and asserts that the same command now succeeds and that the active generation is the new one. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md index 962f8d8..a87dacd 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md @@ -20,7 +20,8 @@ Given a {viewKind: "cross-stream history"} read model with an active generation And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read And a new generation building under a write pause over sources in the order {startedOrder: "stock item, then order"} -And its backfill interrupted after {batches: 2} batches +And its backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the deploy +And its backfill interrupted after {batches: 2} batches while held And a deploy, at the same projection version, that lists the sources in the order {deployedOrder: "order, then stock item"} When a batch carrying the generation's fence runs under the deployed code Then the batch {batch: "parks with a lastError naming the source order"} @@ -35,8 +36,8 @@ And a fresh generation {fresh: "is verified and switched"} - Runs in the native backend tier; every test owns its disposable backend. - Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. - The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, waits until the progress row's `batchesDone` is at least 2, interrupts with `interruptGeneration`, and asserts that the pass is still `backfill` with fewer than 60 batches done, and deploys the copy. +- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` and deploys the copy while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done. - The test runs `backfillBatch` through its admin access with the generation's ID and its fence, standing for a batch scheduled before the deploy, since no batch carries the live fence after `interruptGeneration`, and asserts that the progress row's `lastError` names the generation and the two source orders, that the batch scheduled nothing, and that the cursor, the counts, the rows, the generation's state and the gate are as they were before it. - The test asserts that `resumeGeneration` is refused with a plain `Error` naming the difference and that the fence, the progress row and the gate are unchanged. -- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed through `resumeGate` and asserts that `PlaceOrder` succeeds. +- In this order the test, which still holds `all` closed, confirms it with `getGate`, as `spec:application.history-rebuild#design.historyAbortHandoff` requires when the operator already holds it, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed through `resumeGate` and asserts that `PlaceOrder` succeeds. - The test runs `startGeneration` again, asserts that the gate holds the two source entries naming the fresh generation, the order entry first, waits until it is `verified`, switches it, and asserts that every row of it equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`. diff --git a/design/specs/application/restore.sdp.md b/design/specs/application/restore.sdp.md index ebcf558..8871ad2 100644 --- a/design/specs/application/restore.sdp.md +++ b/design/specs/application/restore.sdp.md @@ -8,6 +8,7 @@ relations: dependsOn: - spec:context.event-envelope - spec:application.write-pause + - spec:application.history-rebuild - spec:application.generation-registry - spec:application.rebuild - spec:application.projection-contract @@ -105,7 +106,7 @@ The restore itself is a platform operation outside any mutation. Everything the - fnReceiptCheckBatch: `export const receiptCheckBatch = internalMutation({ args: { runId: v.id("restoreRuns"), scope: checkScopeValidator }, returns: v.boolean(), handler })` reading 25 receipts by tenant from the receipt cursor and calling `ctx.runQuery(components.orders.queries.operations.byOperation, { tenantId, operationId })` per receipt for each context the receipt's versions name (E-42, D6, D19) - fnPendingWorkBatch: `export const pendingWorkBatch = internalMutation({ args: { runId: v.id("restoreRuns") }, returns: v.boolean(), handler })` which on its first call, when the inventory's cursor is empty, reads the gate document and appends one `closedScope` item per closed entry, then reads `by_read_model_state` for each read model the parent's declarations name and each of `building`, `verifying` and `verified` and appends one `generation` item per row with its state and fence, and on every call pages the `imports` table with `.paginate` in creation order, `limitPendingWorkBatch` rows at a time, appending one `import` item per row in `running`; it saves the page cursor on its `checks` entry and returns whether the paging is done (E-42, F12, D19, E-41) - fnFinishRestoreRun: `export const finishRestoreRun = internalMutation({ args: { runId: v.id("restoreRuns"), operator: v.string() }, returns: v.null(), handler })` an operator entry of `spec:command.actor-and-scope`, which calls `assertOperator` first, writes the stated operator on the run as `finishedBy` whether it marks the run failed or accepted, and passes it to `resumeChain`, marking the run failed when any check has a finding; otherwise refusing with a plain error while `MAINTENANCE_MODE` is still `restore` or the inventory has not finished, and then, for every `generation` item whose row is still in `building` or `verifying` at the inventoried fence, calling the rebuild's `resumeChain` in this mutation, which bumps the fence and schedules the next batch from the saved cursor, writing `resumed` on the item, `aborted` on one whose row is `aborted`, `kept` on a `closedScope` item still closed, `recorded` on an `import` item, and marking the run accepted with the finish time (E-42, E-48, D19, F8, F12, Sc L2-8) -- finishCompatibility: [extension] `resumeChain` refuses a history generation that is not compatible with the deployed code, as the history rebuild's compatibility check states, and `finishRestoreRun` does not catch the refusal, so one incompatible generation refuses the whole finish: the run stays unaccepted and no fence, schedule or item resolution commits; before clearing `MAINTENANCE_MODE` for a finish that resumes a history generation the operator closes `all` with `closeGate` and confirms it with `getGate`, so a refused finish leaves callers refused with `writePaused`; the operator then deploys compatible code and calls `finishRestoreRun` again, or, with `all` still closed, aborts the incompatible generation, completes the history rebuild's abort handoff and calls it again, the item then answered `aborted`; `all` is reopened only after the run is accepted and the deployed bindings and projection versions are compatible, and each chain parked under it is then resumed with `resumeGeneration` (E-42, E-8, E-9, D19) +- finishCompatibility: [extension] `resumeChain` refuses a history generation that is not compatible with the deployed code, as the history rebuild's compatibility check states, and `finishRestoreRun` does not catch the refusal, so one incompatible generation refuses the whole finish: the run stays unaccepted and no fence, schedule or item resolution commits; before clearing `MAINTENANCE_MODE` for a finish that resumes a history generation the operator closes `all` with `closeGate` and confirms it with `getGate`, so a refused finish leaves callers refused with `writePaused`; the operator then deploys compatible code and calls `finishRestoreRun` again, or, with `all` still closed, aborts the incompatible generation through `spec:application.history-rebuild#design.historyAbortHandoff`, which continues with `all` closed and keeps it closed until the run is accepted, and calls it again, the item then answered `aborted`; `all` is reopened only after the run is accepted and the deployed bindings and projection versions are compatible, and each chain parked under it is then resumed with `resumeGeneration` (E-42, E-8, E-9, D19) - doorExemption: `startRestoreRun`, `streamCheckBatch`, `readModelCheckBatch`, `receiptCheckBatch`, `pendingWorkBatch` and `finishRestoreRun` do not read the gate through `assertWritable` or `gateAllows` and write only `restoreRuns`, except that `finishRestoreRun`'s accepted branch also patches the generation rows it resumes and their progress rows; `startRestoreRun` refuses when `MAINTENANCE_MODE` is not `restore`, and each later mutation refuses when its run is not `running`, so no operational row is written outside a restore and no business table is written by them at all (E-42, D19) - checkOrder: journal, domain, read model, receipt, then the inventory; a later check does not start while an earlier one has findings, because a broken journal makes the fold check meaningless, and the inventory runs last because it is not a check and its items never fail the run (E-42, D3) - gapRecord: the run record's `backupTakenAt` is the gap start; the procedure writes no synthetic receipt and invents no event for the gap (D19, Existing systems) From 29d31cabdf3d81f98b70654c19b3cafeb7d0f19d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 07:11:50 +0200 Subject: [PATCH 39/60] design: hold the paused examples' backfill by a tenant scope A gpt-6.1-sol check found the round-6 hold still raced: polling batchesDone and then closing `all` left a window in which the backfill could end. The interrupt, abort and source-order examples now hold it by construction: the sample is split between two tenants, the test closes the scope of the tenant the enumeration reaches second before startGeneration, so the backfill runs every batch of the first tenant and parks at the second, and the test interrupts (and, for source order, deploys) while it is parked. Co-Authored-By: Claude Opus 5.5 --- ...istory-rebuild.write-pause-rebuild-abort.sdp.md | 12 ++++++------ ...ry-rebuild.write-pause-rebuild-interrupt.sdp.md | 14 +++++++------- ...rite-pause-rebuild-source-order-mismatch.sdp.md | 12 ++++++------ 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md index b883203..c9e70a8 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md @@ -18,11 +18,11 @@ Sc L2-6 · native backend tier · the abort case, the doc's second enumerated ca ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} -And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read +And a sample of {orders: 40} orders on {stockItems: 20} stock items, split evenly between {tenants: 2} tenants, read in batches of {batchSize: 32} events And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} -And the backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the interrupt -When the backfill is interrupted after {batches: 2} batches and then {resumption: "aborted"} +And the scope of the tenant the enumeration reaches second closed before the start, so the backfill {hold: "parks at the second tenant"} +When the backfill is interrupted while it is parked at the second tenant and then {resumption: "aborted"} Then no row of the new generation holds data older than its source stream version And the new generation {coverage: "is discarded and read by no query"} And no command or external effect ran during the rebuild @@ -34,7 +34,7 @@ And writes {writes: "reopen after the abort"} - Runs in the native backend tier; every test owns its disposable backend. - Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. -- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires when the operator already holds `all` closed, it confirms `all` with `getGate`, keeps it closed and calls `abortGeneration`. -- The test asserts that the generation is `aborted`, that the active generation is unchanged and that `all` is still closed; since the deployed projection's version is the active generation's, it then reopens the `all` entry it closed through `resumeGate`, and asserts that `PlaceOrder` succeeds again, that both source entries are gone from the gate, and that no query returns a row of the aborted generation. +- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type. The sample holds 40 orders on 20 stock items, one stream each, split evenly between two tenants, and the view's batch size is 32 events. +- Before `startGeneration` the test closes, through `closeGate`, the scope of the tenant whose ID sorts second, which the enumeration reaches second, so the backfill runs every batch of the first tenant and parks at the second, whose scope each batch reads, and cannot end before the interrupt; it then starts a generation with `pauseRequired`, asserts that the gate holds that tenant's scope and one closed `source:` entry for each of the two stream types, each naming this generation, waits until `getGenerations` shows the backfill parked at the second tenant, the progress row's cursor naming it and its `lastError` naming its scope, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill`; then, as `spec:application.history-rebuild#design.historyAbortHandoff` requires while `all` is open, it closes `all` through `closeGate`, confirms it with `getGate` and calls `abortGeneration`. +- The test asserts that the generation is `aborted`, that the active generation is unchanged and that `all` is still closed; since the deployed projection's version is the active generation's, it then reopens the `all` entry it closed and the tenant's scope through `resumeGate`, and asserts that `PlaceOrder` succeeds again in both tenants, that both source entries are gone from the gate, and that no query returns a row of the aborted generation. - The test runs `purgeGeneration` and asserts that its batches run until the generation is `purged` and that every batch deleted at most `limitPurgeBatch` rows. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md index e527531..7ad7328 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md @@ -18,11 +18,11 @@ Sc L2-6 · native backend tier · the resume case. ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} -And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read +And a sample of {orders: 40} orders on {stockItems: 20} stock items, split evenly between {tenants: 2} tenants, read in batches of {batchSize: 32} events And a new generation registered as {mode: "building under a write pause"} And live commands {liveCommands: "are refused while paused"} -And the backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the interrupt -When the backfill is interrupted after {batches: 2} batches and then {resumption: "resumed"} +And the scope of the tenant the enumeration reaches second closed before the start, so the backfill {hold: "parks at the second tenant"} +When the backfill is interrupted while it is parked at the second tenant and then {resumption: "resumed"} Then no row of the new generation holds data older than its source stream version And the new generation {coverage: "covers every stream enumerated at cutover"} And no command or external effect ran during the rebuild @@ -34,10 +34,10 @@ And writes {writes: "reopen only after verification"} - Runs in the native backend tier; every test owns its disposable backend. - Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. -- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type, whose rebuild target lists the stock item source first, so the backfill folds every stock event of an order before its `OrderPlaced`. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. -- The test starts a generation with `pauseRequired` and asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation. -- The test asserts that `PlaceOrder` and `CancelOrder` are refused with `writePaused` because their declarations' `writes` name a closed source, that the error's `data.kind` is `"transient"`, and that nothing is stored. -- The test waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done; it then reopens the `all` entry it closed through `resumeGate`, asserts that both source entries are still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. +- The view is the order allocation history of `spec:application.orders-inventory-example`, a `HistoryProjection` bound to the order stream type and the stock item stream type, whose rebuild target lists the stock item source first, so the backfill folds every stock event of an order before its `OrderPlaced`. The sample holds 40 orders on 20 stock items, one stream each, split evenly between two tenants, and the view's batch size is 32 events. +- Before `startGeneration` the test closes, through `closeGate`, the scope of the tenant whose ID sorts second, which the enumeration reaches second, so the backfill runs every batch of the first tenant and parks at the second, whose scope each batch reads, and cannot end before the interrupt; it then starts a generation with `pauseRequired` and asserts that the gate holds that tenant's scope and one closed `source:` entry for each of the two stream types, each naming this generation. +- The test asserts that `PlaceOrder` and `CancelOrder` sent in the first tenant are refused with `writePaused` because their declarations' `writes` name a closed source, that the error's `data.kind` is `"transient"`, and that nothing is stored. +- The test waits until `getGenerations` shows the backfill parked at the second tenant, the progress row's cursor naming it and its `lastError` naming its scope, interrupts with `interruptGeneration` while it is parked, and asserts that the pass is still `backfill`; it then reopens the tenant's scope through `resumeGate`, asserts that both source entries are still closed, resumes with `resumeGeneration`, and asserts the generation reaches `verified` with zero misses. - The test asserts that every row of the new generation equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`, and that its `sourceVersions` hold, per stream, the version of that stream's last event with the order's key; the sample holds a cancelled order whose stock items were released after the cancel, a stock item received and never allocated, and a stock item that allocated to a second order after the first. - The test asserts that each row of the new generation equals, beside `generation`, the row the old generation holds for the same order, which live commands wrote. - The test asserts that a `PlaceOrder` sent once the generation is `verified` and before the switch is still refused, then switches, which resumes both source scopes, and asserts that the same command now succeeds and that the active generation is the new one. diff --git a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md index a87dacd..d0dc562 100644 --- a/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md +++ b/design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md @@ -18,10 +18,10 @@ E-8 · native backend tier · no acceptance row; the example verifies the check ```gwt Given a {viewKind: "cross-stream history"} read model with an active generation And an order summary installed before the first order is placed, with {orderSummary: "an active generation"} -And a sample of {orders: 40} orders on {stockItems: 20} stock items, read in batches of {batchSize: 32} events, which the backfill takes at least {backfillBatches: 60} batches to read +And a sample of {orders: 40} orders on {stockItems: 20} stock items, split evenly between {tenants: 2} tenants, read in batches of {batchSize: 32} events And a new generation building under a write pause over sources in the order {startedOrder: "stock item, then order"} -And its backfill held by closing all once {heldAfter: 2} batches are done, so it cannot end before the deploy -And its backfill interrupted after {batches: 2} batches while held +And the scope of the tenant the enumeration reaches second closed before the start, so the backfill {hold: "parks at the second tenant"} before the deploy +And its backfill interrupted while it is parked at the second tenant And a deploy, at the same projection version, that lists the sources in the order {deployedOrder: "order, then stock item"} When a batch carrying the generation's fence runs under the deployed code Then the batch {batch: "parks with a lastError naming the source order"} @@ -35,9 +35,9 @@ And a fresh generation {fresh: "is verified and switched"} - Runs in the native backend tier; every test owns its disposable backend. - Before it places the first order, the test installs the order summary, which `PlaceOrder` and `CancelOrder` bind, through `startGeneration`, its batches and `switchGeneration`, so that its commands have a generation to write. -- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. The sample holds 40 orders on 20 stock items, one stream each, and the view's batch size is 32 events, so the backfill takes at least one batch per stream, 60 in all, before it can end. -- The test starts a generation with `pauseRequired`, asserts that the gate holds one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, waits until the progress row's `batchesDone` is at least 2, closes `all` through `closeGate` to hold the backfill, waits until `getGenerations` shows the batch parked on `all`, interrupts with `interruptGeneration` and deploys the copy while it is parked, and asserts that the pass is still `backfill` with fewer than 60 batches done. +- The view is the order allocation history, a `HistoryProjection` bound to the order stream type and the stock item stream type, at one projection version in both compositions; the composition the generation starts under lists the stock item source first in its rebuild target, and the copy the test deploys through `deployTemporary` lists the order source first. The sample holds 40 orders on 20 stock items, one stream each, split evenly between two tenants, and the view's batch size is 32 events. +- Before `startGeneration` the test closes, through `closeGate`, the scope of the tenant whose ID sorts second, which the enumeration reaches second, so the backfill runs every batch of the first tenant and parks at the second, whose scope each batch reads, and cannot end before the interrupt and the deploy; it then starts a generation with `pauseRequired`, asserts that the gate holds that tenant's scope and one closed `source:` entry for each of the two stream types, each naming this generation, the stock item entry first, waits until `getGenerations` shows the backfill parked at the second tenant, the progress row's cursor naming it and its `lastError` naming its scope, interrupts with `interruptGeneration` and deploys the copy while it is parked, and asserts that the pass is still `backfill`. - The test runs `backfillBatch` through its admin access with the generation's ID and its fence, standing for a batch scheduled before the deploy, since no batch carries the live fence after `interruptGeneration`, and asserts that the progress row's `lastError` names the generation and the two source orders, that the batch scheduled nothing, and that the cursor, the counts, the rows, the generation's state and the gate are as they were before it. - The test asserts that `resumeGeneration` is refused with a plain `Error` naming the difference and that the fence, the progress row and the gate are unchanged. -- In this order the test, which still holds `all` closed, confirms it with `getGate`, as `spec:application.history-rebuild#design.historyAbortHandoff` requires when the operator already holds it, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed through `resumeGate` and asserts that `PlaceOrder` succeeds. +- In this order the test closes `all` through `closeGate` and confirms it with `getGate`, as `spec:application.history-rebuild#design.historyAbortHandoff` requires while `all` is open, runs `abortGeneration`, asserts that the generation is `aborted`, that the active generation is unchanged and that both source entries are gone while `all` stays closed, and, since the deployed projection's version is the active generation's, reopens the `all` entry it closed and the tenant's scope through `resumeGate` and asserts that `PlaceOrder` succeeds. - The test runs `startGeneration` again, asserts that the gate holds the two source entries naming the fresh generation, the order entry first, waits until it is `verified`, switches it, and asserts that every row of it equals the fold of its order's events and its stock items' allocation events read from the two journals through `history`. From 22cc96bb2862db28ba5b02188917c33eba887927 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 07:12:32 +0200 Subject: [PATCH 40/60] design: close the unit sdp-round-2 The owner's scope, "Passes + SDP round 2 + adopt": the domain and operator passes over pack:history-view read its page first and were folded in (OD-164 to OD-175, the owner's OD-174); the Protocol's round 2 was built on its branch feature/adopter-round-2 (its pull request 28) with a slice of the original design captured as Specs ahead of their code; this corpus adopted it at dfa1bd9 (166 question keys, the register by address, the page and check.py on the Protocol's data); and the adopter's design text went through a review, a second and a third read, and a check, each folded in. STATE.md is rewritten under its headings with the close's measurements, decisions 64 to 68, the owner queue and the leads; ROADMAP.md says 5d's passes are done and its build waits for the owner's ready. Co-Authored-By: Claude Opus 5.5 --- design/ROADMAP.md | 18 ++++-- design/STATE.md | 149 +++++++++++++++++++++++++++++----------------- 2 files changed, 106 insertions(+), 61 deletions(-) diff --git a/design/ROADMAP.md b/design/ROADMAP.md index 213942d..0d3e4af 100644 --- a/design/ROADMAP.md +++ b/design/ROADMAP.md @@ -1,6 +1,6 @@ # Roadmap: the next units -Written on 2026-10-02 by the main thread, from four advisor memos written the same day under `design/advisors/task-roadmap.md`. It is a work document: it orders units and names what each needs and shows, and it says nothing a Spec should say. The owner rules on it. The memos, the plants and the check are in the roadmap unit's folder, which the project notes name. It is kept current at each close, last at the close of round 3 on 2026-10-03. +Written on 2026-10-02 by the main thread, from four advisor memos written the same day under `design/advisors/task-roadmap.md`. It is a work document: it orders units and names what each needs and shows, and it says nothing a Spec should say. The owner rules on it. The memos, the plants and the check are in the roadmap unit's folder, which the project notes name. It is kept current at each close, last at the close of the unit `sdp-round-2` on 2026-10-04. ## How to read it @@ -31,12 +31,12 @@ The slices of `STATE.md` keep their names. S3 is round 1's attribution and round | 4 | a | A command's audit fails closed and its diagnostic never aborts, Sc ALL-1. Done in the close of round 3: both Sc ALL-1 examples pass natively, the proof written apart from the fix | mixed | operator | an evening | 3a | | 4 | c | The history view's fold, its memory and its rollback, on paper. Done in the close of round 3: ten choices ruled, ten ledger findings on paper, one pure fold with its test | design | domain | an evening | 2c | | 4 | d | The receipts sweep, one tenant per run. Done in the close of round 3: `receipts.sweep` and `sweepNext` in both compositions, at `convex-test` | build | operator | under an evening | the tenant list from 2b | -| 4 | e | `ready` as approval to build: the history view's Specs after their passes, then the built Specs by family | decide | product | a session, one owner unit | 1c, sitting two, the domain and operator passes over `pack:history-view` | +| 4 | e | `ready` as approval to build: the history view's Specs after their passes, then the built Specs by family. The four passes are done; the owner's statements are next | decide | product | a session, one owner unit | 1c, sitting two, the four passes over `pack:history-view` (done) | | 4 | f | The language in the code: the refusal field `entry`, the tier names in the examples' opening lines and the harness parser, the harness's backup archive names. Done in the close of round 3 | build | product | under an evening | sitting two | | 5 | a | Baselines, migration and the fold bound, Sc L2-7 at the native tier; the history-reading sweep with its transient refusal and the restore check's pending-work inventory, at `convex-test` for the interleavings and natively for the sweep | mixed | domain | a night or more | OD-041 (ruled), 3b | | 5 | b | The restore procedure and the drill, Sc L2-8 | mixed | operator | unknown until 4b | 4b, 5a | | 5 | c | The first adopter-facing cut: README, the example walkthrough, the package shape | mixed | product | a night | OD-047, OD-048, Sc L2-5 to L2-8 bound | -| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10. Its design is `pack:history-view`; the implementation and Convex passes ran in the unit `design-in-the-graph` | build | domain | a night | 3b, 4c, the domain and operator passes over `pack:history-view` | +| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10. Its design is `pack:history-view`, read in four passes: the implementation and Convex passes in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`. The build waits for the owner's `ready` | build | domain | a night | 3b, 4c, the four passes (done), round 5 of the passes' fold-in and a third read of the history Specs, the owner's `ready` on the history projection, and on the history rebuild once OD-157 is ruled | ## Round 1: what blocks nothing @@ -97,7 +97,7 @@ Every item is done but the hosted tier's first runs, which are the owner's after **4d. The receipts sweep.** One internal mutation per tenant over the expiry index, at most the bound, returning what it deleted and whether more remains, with the loop over tenants from 2b's ruling. Done in the close of round 3, as `receipts.sweep` and `sweepNext`. -**4e. `ready` as approval to build.** By the owner's ruling O2 of 2026-10-04, `ready` states that a Spec is approved to build, the Protocol's reading: recipe 1 is the build backlog, and a `ready` Spec leaves it when an anchor binds its code. 4e is therefore no longer a stamp on what is built. Its first use is the history view: once the domain and operator passes over `pack:history-view` have run, the owner may state `ready` on `spec:application.history-projection` and on the paused path, which moved out of `spec:application.rebuild` into `spec:application.history-rebuild` with its two examples, now `spec:application.history-rebuild.write-pause-rebuild-interrupt` and `spec:application.history-rebuild.write-pause-rebuild-abort`; that statement approves 5d. The fork for OD-024 still lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application. Since O1 the generation registry, the command declaration and the command pipeline no longer rest on the aggregate Spec, so their floors reach `ready` and the registry no longer stands apart. A Spec with an unruled `owner` row stays `defined`. +**4e. `ready` as approval to build.** By OD-163, the owner's ruling of 2026-10-04, `ready` states that a Spec is approved to build, the Protocol's reading: recipe 1 is the build backlog, and a `ready` Spec leaves it when an anchor binds its code. 4e is therefore no longer a stamp on what is built. Its first use is the history view. The four passes over `pack:history-view` have run, and after round 5 of their fold-in and a short third read of the history Specs the owner may state `ready` on `spec:application.history-projection`, which OD-174 left with no unruled `owner` row, and on the paused path, `spec:application.history-rebuild` with its five examples, once OD-157 is ruled; those statements approve 5d. The fork for OD-024 still lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application. Since OD-162 the generation registry, the command declaration and the command pipeline no longer rest on the aggregate Spec, so their floors reach `ready` and the registry no longer stands apart. A Spec with an unruled `owner` row stays `defined`. ## Round 5: S5 @@ -107,7 +107,15 @@ Every item is done but the hosted tier's first runs, which are the owner's after **5c. The adopter-facing cut.** The root README's first hour, an `example/README.md` that walks `PlaceOrder` from its declaration to the order summary, and the package kept private with nothing of the first-release list. No name, export or version is a contract yet. -**5d. The history view's build.** Its design is `pack:history-view`, read before the build in passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation pass ran in the unit `design-in-the-graph`: the pinned module compiles the Pack's declarations and binds 53 of them to the code, and the pass pinned the two names the history design used and no Spec pinned. The Convex pass ran in the same unit and left its open questions on the rebuild, the write pause and the two projection Specs. The domain and operator passes come next, one advisor launch each, at once; the Convex pass's memo names what it left to each. The build then binds `spec:application.history-projection` and `spec:application.history-rebuild` to their code, moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the two Sc L2-6 examples, `spec:application.history-rebuild.write-pause-rebuild-interrupt` and `spec:application.history-rebuild.write-pause-rebuild-abort`, at the native tier. +**5d. The history view's build.** Its design is `pack:history-view`, nineteen Specs, read before the build in four passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation and Convex passes ran in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`, and their rulings are OD-156 to OD-161 and OD-164 to OD-175. The second read of the history Specs found the release procedure uneven, and round 5 of the unit's fold-in stated it whole (L1 to L8 of its rulings); a short third read follows. The build then waits for the owner's `ready` on `spec:application.history-projection` and on `spec:application.history-rebuild`, which also waits for OD-157. It then binds the two Specs to their code: `applyHistoryProjection` at step 9, checking each generation's version first; the paused path with `historyHandoff`, the protected abort and the source check of OD-175; the order allocation history bound on `PlaceOrder`, `CancelOrder` and `ReceiveStock`, with the pure test over the declarations that OD-172 asks for; and `eventSchemaVersion` on the history event, OD-173. It moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the history rebuild's five examples at the native tier: the two Sc L2-6 examples, interrupt then resume and interrupt then abort, a version-changing deploy and a first installation through the handoff, and a source-order mismatch. OD-164 to OD-170 are sorted by their lenses before or beside it. + +## Beside the rounds + +**The Protocol's round 2** is built on `feature/adopter-round-2` of `libar-dev/software-delivery-protocol` and waits for its pull request and merge: authored entry order rendered, a Pack's member order, the next rung, question keys, recipes 25 and 26, and the Studio slice, `pack:spec-studio-v1`. This corpus is pinned at `dfa1bd9`, the branch's last commit, and moves to the merge commit after it. The owner's `ready` on the four Specs the round implemented, and the Studio Pack's 25 departures, keyed questions for the owner, are in the Owner queue of `STATE.md`. + +**The dedicated pull request of O16**, a ruling of the unit `sdp-round-2`, comes after 5d or beside it, as the owner chooses. The owner: "Now it is perfect ground for demonstation in a dedicated PR. I am preparing the ground for that." and "The Graph, when properly implemented, gives all of these as projections." The Pack page, recipes 25 and 26, the question keys, the next-rung data and the Studio slice are its ground. Its subject lives in a private repository, and nothing from it is quoted here without the owner's word. + +**The rest of the Protocol's original design** is captured as Specs in a later unit, as O8 of the same rulings left it; the owner's later decision on annotating every design pattern in code (O14) bears on how. ## Deferred, with the trigger diff --git a/design/STATE.md b/design/STATE.md index bc76a1d..22d55b2 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -1,31 +1,29 @@ # State of the design corpus -Written on 2026-10-04 at the close of the unit `pack-page`, which extends the pull request of the unit `design-in-the-graph` (#12), stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. - -**In progress: the unit `sdp-round-2`**, paused on 2026-10-04 for a restart of the owner's machine, at a seam after `0c7b7aa`. It extends pull request #12 with the domain and operator passes over `pack:history-view` and the adoption of the Protocol's round 2 (branch `feature/adopter-round-2`, built in the same unit). The handover note is `handover.md` in the unit folder `~/dev-libar-supporting-context/calibration/application-platform-sdp-round-2/`; the rest of this file waits for the close. +Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the pull request of the unit `design-in-the-graph` (#12) after the unit `pack-page`. That pull request is stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. ## Measured at close ``` -240 specs · 6 packs · 144 anchors → 390 nodes · 1365 edges (0 errors, 0 warnings) +243 specs · 6 packs · 144 anchors → 393 nodes · 1382 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] -entry addresses outside the Specs: 297 -open questions: 72 Specs, 160 questions, 10 blocking; extensions registered: 54 -stated readiness: {'defined': 229, 'idea': 1, 'scoped': 10} +entry addresses outside the Specs: 497; dependsOn cycles: 0 +open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 +stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 73543acdec58767f +corpus digest: c42dee4b7dd8aa48 Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-5e29c03.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz ``` -`python3 design/tools/decisions.py`, after this unit, which adds OD-162 and OD-163, the owner's rulings of 2026-10-04: +`python3 design/tools/decisions.py`, after this unit, which adds OD-164 to OD-175 and decides OD-172 to OD-175: ``` -total: 163 -status: unsorted=5, sorted=81, waiting=21, decided=41, folded=15 -class: tactical=3, delegated=86, owner=54, null=20 -advisor: convex=43, domain=46, operator=34, product=40 +total: 175 +status: unsorted=12, sorted=82, waiting=21, decided=45, folded=15 +class: tactical=3, delegated=89, owner=56, null=27 +advisor: convex=43, domain=51, operator=41, product=40 ``` **Round 2, the tooling unit, round 3's unit 3b, sitting two and the close of round 3 are on `feature/round-2`, not on `main`.** `main` is still at `592f1dc`, the close of round 1. The close of round 3 did the rest of the mini roadmap (4f, the hosted tier, 4c, 4a and 4d) and ends the branch: `feature/round-2` goes to `main` as one pull request, which the main thread opens at this close for the owner's review and merge. The owner's words at the opening of the close: "forks have been resolved and mini roadmap unlocked. please complete the work to wrap up the feature branch and PR. use Opus, GPT 6 Astra and 6.1 Sol and orchestrate from the main thread". The main thread was Opus 5.5; no Fable agent and no advisor ran. Its head is this close's commit, on top of the fold-in's follow-up `651fcc3`. Tactical decision 42 holds the branch and its one pull request. @@ -36,25 +34,39 @@ A review of the pull request at `9e58019` found three things, and the commit aft The default branch is `main`, published at `github.com/libar-dev/libar-platform`. Slice S0 reached it through a pull request; from S1 on the session fast-forwarded it once CI was green, on the owner's mandate of 2026-10-01, until the merge of slice S2 and the platform review unit on 2026-10-02, when the owner said: "Please merge to main and push. This is the last change we will do without formal PRs since things are starting to shape up." Round 1's four lanes then reached it through pull requests #6 to #9 (decision 32). The platform review as it was received is in commit `70c15bc`, with paths of the owner's machine in its links; its files left the tree at that unit's close, and the owner said the deleted review may stay in the history. +**The units `design-in-the-graph`, `pack-page` and `sdp-round-2` are on `unit/design-in-the-graph`, pull request #12**, stacked on `feature/round-2`. CI last ran on it at `15f3d04` (run 37167922151, 7 m 3 s, passed). This unit's commits from `ee8846a`, round 5's fold-in among them, and its close are not pushed yet. The Protocol's side of the unit is the branch `feature/adopter-round-2` of `libar-dev/software-delivery-protocol`, from `5e29c03`, not pushed and with no pull request yet. The main thread pushes both after the owner's answer on the gen-1 quotes (Owner queue) and opens the Protocol's pull request from `pr-sdp-draft.md` in the unit folder. + ## Where the work stands -**The unit `pack-page`**, on 2026-10-04, on `unit/design-in-the-graph` from `746782c`, extending pull request #12. Main thread Opus 5.5. The owner: "Please help me plan and execute a logical but sizeable part of this scope: docs/feedback/sdp-feedback-03-selection.md", and chose its scope from the main thread's options: round 1 of the selection, steps 1, 3 and 4 with the review's conditions, the passes (step 5) next. The rulings, briefs and job reports are in the unit folder the project notes name, `application-platform-pack-page`. +**The unit `sdp-round-2`**, on 2026-10-04, in two repositories: this one on `unit/design-in-the-graph` from `15f3d04`, extending pull request #12, and the Protocol on a new branch `feature/adopter-round-2` from `5e29c03`, the merge of its pull request 27. Main thread Opus 5.5; no Fable agent ran. The owner: "Please help me plan and execute a logical but sizeable part of this scope: docs/feedback/sdp-feedback-03-selection.md ... Target is extension of this stacked PR, where I am attempting to take application of SDP and SPD to a level of usable tool for managing design-heavy project like the Platform. ... Given the capable suite of models at your disposal, i sugges you lean towards addrewssing a lerger scope of work vs. smaller." From the main thread's options the owner chose "Passes + SDP round 2 + adopt" for the scope and "One branch, one PR" for the Protocol. Every ruling and every word of the owner (O1 to O17, R1 to R8, F, G, H, K, L and A) is on `rulings.md` in the unit folder the project notes name, `application-platform-sdp-round-2`, with the briefs, memos, plants and designs. The owner's machine restarted once, at a seam after `0c7b7aa`, with a handover note beside the rulings. What each part showed, at the tier named: + +- The two passes over `pack:history-view`, each reading the page first. By the owner's "Opus domain, Astra operator", the domain pass ran as Opus 5.5 on the `advisor-domain` definition (6.4 min, eight findings) and the operator pass as `gpt-6-astra` at high on the `advisor-operator` definition (`job-mut5gte2-10a2467a`, 10.9 min, seven findings). Each had five page tasks: find the history contract and where each part is pinned, find OD-157 and its question, say what still rests on the aggregate form after OD-162, find one declaration's type comparison, and say whether a paused-rebuild example has native-backend evidence. The domain pass did three in full and two in part; the operator pass did all five, the third through the linked register. The page lacked OD-162, a link to the pinned module, the Contract bullets on order independence and the version rule, and the command declarations that bind the view. Each memo and each set of leans was checked by the other family on a copy with one planted citation: sol on the domain memo (`job-mut5plf6-cc622f9f`) and leans (`job-mut64uxp-2eb47318`), an Opus agent on the operator's. Every check caught its plant. +- The passes' fold-in, in three rounds, in Spec text, register rows and the pinned pairs, with no code. Round 1 (`ee8846a`): the last sentences of the built Specs that named the aggregate form point at `spec:application.aggregate-projection`; `spec:application.history-rebuild#design.historyVerify` says the pass finds a missing or lagging row and never a fold that disagrees with itself; seven non-blocking questions, OD-164 to OD-170; and OD-171, the owner's row on the terms of the history form. Round 2 (`c3637e9`), two rows decided by the domain advisor's checked leans. OD-172 says every command declaration whose `writes` names a source of a history projection binds it, and a pure test over the declarations finds one that does not; `PlaceOrder`, `CancelOrder` and `ReceiveStock` name the order allocation history in the example's Spec. OD-173 says a history projection reads every `eventSchemaVersion` its sources hold, so the pinned `HistoryEvent` carries it, and three pinned pairs moved from bound to ahead (compiled tier). Round 3 (`e54ae38`): OD-174, the owner's ruling, "One version + handoff": a history projection keeps one version, and a version-changing deploy, a first binding, an aborted rebuild and an aborted installation follow the handoff under the `all` scope (`spec:application.history-rebuild#design.historyHandoff` and `spec:application.history-rebuild#design.historyAbortHandoff`), so callers see `writePaused` where they saw technical failures. OD-175, decided by the operator advisor's checked lean: a history batch, the resume helper and `switchGeneration` compare the target's ordered sources with the gate entries naming the generation, and the projection version with the generation row, keep the pause on a mismatch, and refuse a restore's finish until compatible code is back or the generation is aborted (`spec:application.history-rebuild#design.historyCompatibility`). The write pause's list of mutations that skip the gate read names the rebuild's operator entries. +- The Protocol's round 2, on its branch. The owner ruled the model: "Ratify now" (`spec:decisions.authored-entry-order` states `ready`), "Members list on Pack node", "Key in the marker" and "Show the key"; the rest are the main thread's design rulings, in plan 39's new section. The Spec text came first (`ab024d0`), then the five changes, each package with mutations its own tests caught: open-section entries as a list in authored order (`2d5d851`, sol); a Pack's members in authored order through the graph, schema `0.7.0` (`d82d36d`, sol); the floor evaluated for a target rung, the next rung's unmet clauses on `SpecContext.nextRungFailures` and a typed-dependency failure naming its targets (`e945811`, Opus); an open question's optional key in its marker, `[blocking #key]`, with a `question` section in the entry address and the key on the Design Review (`d6c6b21`, `65edf75` and `e1e38d3`, merged at `61e0e54`, Opus, the one package in a worktree); recipes 25, address resolution in a batch, and 26, `dependsOn` cycles (`944a5a6`, Opus). A sol integrator re-derived the self-hosting pins at `27b896a`: 225 Specs, 2 Packs, 233 anchors, 460 nodes, 1,055 edges. +- The Studio slice. On the Protocol's original design the owner said: "That was more of FYI, but it is actually a pefect case what to showcase in this PR, so I will build towards that. To have a representative slice." An astra inventory of the original design against the Specs (`job-mut66y1s-f87c6a5d`, 13.6 min) proposed three slices, and the owner chose "Studio review workbench" and ruled how it is held: "the patterns should be in the implemented code and tests. We should not try to make a prose story." An Opus agent captured chapter 07's sections 1 to 3, 11 and 12 as `pack:spec-studio-v1`, twelve Specs at `scoped` (`3a0ed5c`). Where a ruled record departs from the original, the entry follows the record and a keyed question keeps the original's claim whole: 25 such questions, five blocking. Read back, four members stop at `scoped` on their blocking questions, and eight reach `defined` and are held below `ready` by the typed-dependency clause. Its 81-row claim map (5 realized, 25 in part, 25 not built, 25 departed, 1 placed later) goes in the pull request as evidence for the later decision on annotations (Owner queue). +- The Protocol's review. `gpt-6-astra` at xhigh (`job-mut8z07h-a0b05af1`, 22.4 min) read the branch against `5e29c03` on a frozen copy of `27b896a` with one plant: the authoring skill teaching the key outside the marker, which every test passed. It caught the plant and found eight more findings, folded in at `644a70f` and `dfa1bd9`: the import emitter wrote an omitted blocking flag wrongly, a repeated Pack member is kept only where the carrier admits one, four new tests, the Studio Specs' remaining homes, and plan 39. `npm run check` passed in full at `dfa1bd9`, `preflight` included. +- The adoption. A sol job (`job-mut8z0co-8575223c`, 5.4 min) moved the pin to `27b896a` and applied 166 question keys that another sol job drafted (`job-mut7blut-e5bf6617`), in one script (`8c217aa`). Every open question carries a key, the register's 152 open question sources cite their question by address, and the seven closed sources keep their text. An Opus agent then moved the page and `check.py` onto the Protocol's data (`0c7b7aa`, decision 67). Member order comes from the reader's Pack context and the next rung's clauses from `SpecContext.nextRungFailures`, and a register row joins its question by address. The Pack-file read, the floor walk and the below-defined recomputation are gone. `check.py` resolves the 489 entry addresses outside the Specs through recipe 25 and fails on any cycle recipe 26 reports. The page gained each question's key and address, a link to the pinned module and the 22 register rows whose sources lie in the members. The re-pin to `dfa1bd9` (`f04f44f`) moved nothing the corpus reads. `docs/feedback/sdp-feedback-01.md` has the dated section for the Protocol's maintainers. +- The adopter review and its fold-in. `gpt-6-astra` at xhigh (`job-mut9wpn7-575a7c07`, 35.1 min, resumed after the restart) read this side on a frozen copy of `0c7b7aa` with one plant: the deploy moved before the close of `all` in `historyHandoff`, which `check.py` and every test passed. It caught the plant as its first finding and found nine more, four P1 and five P2, ruled K1 to K8 and folded in by the main thread at `3545e9a`. `applyHistoryProjection` checks each generation's version before it reads anything, so a command whose events fold nothing fails alike on a mismatch. The abort example runs the protected abort. Three new examples give a 5d test something to bind: a version-changing deploy and a first installation through the handoff, and a source-order mismatch that parks, refuses the resume, aborts and starts afresh, so the Pack has 19 members. The restore's list of mutations that skip the gate read says what the write pause's says, and the history Specs carry `decidedBy` edges for D4, D5 and D19. New tests fail when `check.py` stops acting on an address, a cycle, a question without a key or the generator's exit, when the page's `--check` passes a stale page (pure test), and when the pinned `HistoryEvent` drifts from the code's `EventEnvelope` (compiled tier). The review retracted the `defineList` gap round 1 had listed: `defineList` refuses a newer saved schema version through `metaOf` (`convex-test`). +- The second read and its fold-in. `gpt-6-astra` at high (`job-mutbtzmh-06e6d440`) read the whole history Specs after `3545e9a` and found the release procedure still uneven, because it had been folded in from leans piece by piece: three P1 and five P2 seams. The main thread ruled them L1 to L8, stating the procedure whole, and an Opus agent applied them in round 5. What callers see is stated by case: `writePaused` while `all` is closed and, for writers of a source, while the source scopes are closed; technical failures only for an operator who skips the handoff, and only where they arise (L1). A replacement generation after an abort enters `historyHandoff` after its closing step, so no step closes a scope the procedure already holds (L2). The restore's read-model check holds for a per-entity read model, and a history view's check is OD-166's question (L3). The gate-read exemptions read alike in the restore and the write pause (L4). The interrupt, abort and source-order examples state a world in which the backfill has not ended when it is interrupted (L5). The version-change and installation examples wait until the first batch has parked under `all` before `all` reopens (L6), and the installation example installs the order summary first (L7). A test runs the page generator as a process with `--check` and expects a non-zero exit on a stale page (L8). A short third read follows before the owner's `ready` on the history Specs. +- The third read and the stop. `gpt-6-astra` at high (`job-mutch8yk-df8cfad1`) found the history projection and the version-change and installation examples ready, every new test failing under its mutation, and four seams at the protected abort's edges: an abort inside a handoff or a restore's recovery, the passes it parks, and an interrupt window a native backend could close early. Ruled M1 to M4 and folded in as round 6 (`7535f44`): the abort continues with `all` already held, resumes the parked passes just after it reopens `all`, keeps `all` closed in a restore until `finishRestoreRun` accepts, and the three examples hold the backfill before they interrupt. A `gpt-6.1-sol` check of those four alone followed, not another full read (`job-mutcyem1-1b9fe429`): M1 to M3 held, and the hold still raced, so it became a tenant scope closed before the start, which parks the backfill at the second tenant by construction (`29d31ca`, M5). The stopping rule is decision 66's. +- The gates at `29d31ca`, run locally at this close, after round 6 and M5: `check.py` OK; `test_decisions.py` 40 tests; `npm test` 74 files, 1,139 passed and 10 skipped, at the compiled, pure test and `convex-test` tiers; pinned pairs 49 bound, 17 ahead and 10 not compared. No file under `src/`, `example/`, `fixture/` or `harness/` changed in this unit, so the native tier has nothing new to show. -- The owner's rulings of 2026-10-04, chosen from the main thread's options. OD-162: the generation registry, the command declaration and the command pipeline pin the per-entity and history forms only, and the aggregate projection states how it extends them when OD-075 triggers ("Drop the aggregate form"). OD-163: a stated `ready` means approved to build, the Protocol's reading ("Approved to build"); no Spec states it in this unit. And the move of the feedback file into `docs/feedback/`. -- The page. `scripts/pack-page.mjs` writes `design/pages/history-view.md` from the graph in memory (`npm run pages`). It puts the members in the Pack file's order with their rung, floor, next rung and what blocks it, anchors and their sources, verifiers and tiers, pinned pairs, the outside dependencies, and the open questions joined to register rows. The page is committed and deterministic, and `check.py` fails when it is behind the tree, missing or unlisted (`PACK_PAGES`). The next-rung blocker walks the Protocol's own `readinessFloors`, because the Protocol's evaluator takes no target rung. -- The data the page reads. `tests/types/pinned-pairs.json` holds the type test's pairs: 52 bound, 14 ahead and 10 not compared. A pure test keeps it in step with the test. `scripts/pinned.mjs` formats its module with Prettier. `design/tools/anchor-sites.json` names the source files of the 22 anchors that live in tests, kept by a pure test. The register cites each open question by its Spec and opening text (151 sources), `check.py` verifies it, and `test_decisions.py` passes and runs in CI. -- One maturity per Spec, applied. `spec:application.history-rebuild` takes the rebuild's history path, its two paused examples and the write pause's statements of it, verbatim. The rebuild and the write pause now carry implementation anchors. The aggregate form left the three built Specs for `spec:application.aggregate-projection`, and their floors reach `ready`. `design/PLAN.md` 6.7 states the principle: a type the design widens stays as an ahead pair, and a behavior the code lacks gets its own Spec. Line pointers into the rebuild Spec became entry addresses, in tests and in the register. -- The review. `gpt-6-astra` at high ran the behavior lane on a frozen copy with one plant (`job-mut4hpxq-53aad487`, 10.0 min). It caught the plant, `check.py` ignoring a generator that cannot read an input. It found one more blocker: a deleted page left nothing to check. And it confirmed all 16 members against the Protocol's floor evaluation. An astra reader (`job-mut4hpww-482df8d2`, 2.9 min) did A1, A3, A4 and A5 from the page alone, and A2 in part: "blocks S5" was unexplained. The fold-in (`0f6e91b`) closes both. Two sol lanes and an Opus taste lane were stopped by the owner as excessive (decision 63). +**The unit `pack-page`**, on 2026-10-04, on `unit/design-in-the-graph` from `746782c`, extending pull request #12. Main thread Opus 5.5. The owner: "Please help me plan and execute a logical but sizeable part of this scope: docs/feedback/sdp-feedback-03-selection.md", and chose round 1 of the selection, steps 1, 3 and 4, from the main thread's options. The unit folder is `application-platform-pack-page`. + +- The owner's rulings: OD-162, the generation registry, the command declaration and the command pipeline pin the per-entity and history forms only ("Drop the aggregate form"); OD-163, a stated `ready` means approved to build ("Approved to build"); and the move of the feedback file into `docs/feedback/`. +- The page. `scripts/pack-page.mjs` writes `design/pages/history-view.md` from the graph in memory (`npm run pages`), deterministic and committed, and `check.py` fails when it is behind the tree, missing or unlisted (`PACK_PAGES`). The pinned pairs became data in `tests/types/pinned-pairs.json`, and the source files of the 22 anchors that live in tests are named in `design/tools/anchor-sites.json`, each file kept in step by a pure test. The page's own reads of the Pack file and of the floors gave way to the Protocol's data in `sdp-round-2`. +- One maturity per Spec, applied (`PLAN.md` 6.7). `spec:application.history-rebuild` took the rebuild's history path and its two paused examples verbatim, the rebuild and the write pause carry implementation anchors, and the aggregate form left the three built Specs for `spec:application.aggregate-projection`, so their floors reach `ready`. +- The review. `gpt-6-astra` at high on a frozen copy with one plant (`job-mut4hpxq-53aad487`, 10.0 min) caught the plant, found one more blocker, a deleted page that left nothing to check, and confirmed every member's floor. An astra reader (`job-mut4hpww-482df8d2`, 2.9 min) did four of the five page tasks from the page alone. The fold-in `0f6e91b` closed both. Two sol lanes and an Opus taste lane were stopped by the owner as excessive (decision 63). **The unit `design-in-the-graph`**, on 2026-10-03, on `unit/design-in-the-graph` from `77acdf2`, a pull request stacked on `feature/round-2`. The owner, after the Protocol's pull request 27 merged: "My primary motivation was to unlock management of specs at different levels of maturity and ability to capture and present designs for upcoming implementations as SDP first-class citizens and enable iterative design with iterations focusing on different perspectives of the system, before committing to implementation.", then "please investigate opportunities to better use SDP sepecs and designs (stubs) and propose a stacked PR for platform to showcase that." The main thread was Opus 5.5 at xhigh effort. It showed, on the history view as the subject: -- The adoption. The pin moved to `5e29c03`, the merge of pull request 27; the graph kept its shape and `npm test` passed unchanged. The 83 prose-mention warnings were read pair by pair: 70 were dependencies, now 56 declared relations, 12 stay prose and are listed with their reason in `design/tools/prose-mentions.json`, one moved with its text. Two older `dependsOn` edges of the event envelope ran backwards and closed nine Specs into cycles with the new edges; they are reversed and the corpus has no cycle. `check.py` accepts a mention warning only for a listed pair and resolves every entry address in the code, the tests and the records. -- One maturity per Spec. The projection contract is three Specs: `spec:application.projection-contract` (per-entity form and shared conventions, implemented), `spec:application.history-projection` (`defined`, floor `ready`, nothing implements it) and `spec:application.aggregate-projection` (`scoped`, deferred with OD-075 as its trigger). `pack:history-view` gathers the fifteen Specs the history view rests on; its Design Review page shows each member's rung, floor and bindings. -- The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations from recipe 24, with the declarations of other Specs they use, into `generated/pinned/history-view.ts` on every `sdp:build`; `tests/types/pinned.test-d.ts` binds 53 pairs where the code equals the pin, asserts 14 pairs where the design leads the code (three of them compared with the ctx parameter erased), and lists 9 it does not compare because they differ in the ctx they take, five of those also leading the code. A name pinned in two entries stops the emitter, and a bound table pair compares its indexes. Adding a literal to a pinned `ApplyMode` fails `npm run test:types` at its entry address. Thirteen names the design uses and no Spec pins stand in the emitter's preamble as one list. -- Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes: one owner for `WritableGeneration`, the code's spelling of `ScopeKey` and of `pageInGeneration`'s prefix, `const` on two validators, and `HistoryEvent` and `OrderAllocation` pinned in the history projection. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min); the rulings added six open questions (OD-156 to OD-161, OD-157 the owner's), three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. -- What it found beside: the Design Review sorts a Pack's members by ID, not in authored order; `spec:application.rebuild` and `spec:application.write-pause` show no implementation binding though code realizes both; three implemented Specs now depend on the deferred aggregate Spec, so their `ready` floor waits on it. `docs/feedback/sdp-feedback-01.md` has the section for the Protocol's maintainers. +- The adoption of pull request 27 at `5e29c03`, with the graph's shape and `npm test` unchanged. Of the 83 prose-mention warnings, 70 were dependencies and became 56 declared relations, 12 stay prose and are listed with their reason in `design/tools/prose-mentions.json`, and one moved with its text. Two `dependsOn` edges of the event envelope ran backwards and closed nine Specs into cycles; they are reversed, and `check.py` now fails on a cycle (decision 67). +- One maturity per Spec. The projection contract became three Specs: `spec:application.projection-contract` (per-entity form and shared conventions, implemented), `spec:application.history-projection` (`defined`, nothing implements it) and `spec:application.aggregate-projection` (`scoped`, deferred with OD-075 as its trigger). `pack:history-view` gathers the Specs the history view rests on. +- The pinned module. `scripts/pinned.mjs` emits the Pack's pinned declarations into `generated/pinned/history-view.ts` on every `sdp:build`, and `tests/types/pinned.test-d.ts` keeps three lists: pairs bound where the code equals the pin, pairs where the design leads the code, and pairs not compared because they differ in the ctx they take. A name pinned in two entries stops the emitter. Thirteen names the design uses and no Spec pins stand in the emitter's preamble (Leads 44). +- Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min). The rulings added OD-156 to OD-161, OD-157 the owner's, three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. +- What it found beside, each since closed: the Design Review sorted a Pack's members by ID (the Protocol's round 2 keeps authored order), the rebuild and the write pause showed no implementation binding (`pack-page`), and three implemented Specs depended on the deferred aggregate Spec (OD-162). -Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. On `feature/round-2` follow round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. +Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. On `feature/round-2` follow round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. On `unit/design-in-the-graph`, stacked on it, follow `design-in-the-graph`, `pack-page` and `sdp-round-2`, which put the history view's design in the graph and read it in four passes before its build. The close of round 3, `application-platform-round-3-close`, on 2026-10-03 from about 09:15 to 11:15, on the ThinkPad, on `feature/round-2` from `d2a8d1b`. The cut was the list "Round 3, as it now stands" of `ROADMAP.md`, whose items 1 and 3 (3b, sitting two) were done: the hosted tier, 4a, 4c, 4d and lane 4f, which sitting two created, then an integration, a review, one fold-in, one read of it and this close. Five lanes ran at once, each in a worktree from `d2a8d1b`: language (4f, an Opus agent), hosted (an Opus lead), history (4c on paper, an Opus agent), audit (4a, an Opus designer, then an Opus builder with astra writing the proof apart) and sweep (4d, sol). `rulings-1-close.md` and `foldin-list.md` in the unit folder hold every ruling. What each showed, at the tier named: @@ -183,7 +195,7 @@ What passed, and at which tier, with backend release `precompiled-2026-09-28-5c7 Every Layer 1 scenario runs on the fixture composition. The Layer 2 scenarios run on the production composition, except the one that needs a fault. -What the code has and what it does not have yet, at the close of round 3. The Specs pin all of it and say nothing about which part is built: the owner's direction of 2026-10-01 is that a Spec carries no temporal information. +What the code has and what it does not have yet, at this close; no library, composition or harness code changed after the close of round 3. The Specs pin all of it and say nothing about which part is built: the owner's direction of 2026-10-01 is that a Spec carries no temporal information. - Pipeline: both entries, steps 1 to 6 with the ID length bound, the gate read of step 7 through `assertWritable` before the `OperationRef` is minted, step 8, step 9 with the `writes` check, each writable generation written with the projection its row's version selects, the row budget and the row count, and the return of step 11. Step 10 inserts the receipt, then, for a declaration that sets `audit`, the audit record of an applied command or a business failure only; a failed audit insert throws, and the command rolls back as a technical failure with nothing stored. The diagnostic (`src/operations/diagnostic.ts`): one line per execution of a command entry's handler, written at the end through the declaration's `diagnosticSink` (`consoleSink` when it names none), with `relayFailure` in the outermost catch, at most 4,096 bytes with `versions` cut by a binary search for the longest prefix that fits, no duration, and one gap line, never a throw, when the sink throws or returns a thenable. Step 9 has no history or aggregate path. - Declaration: `writes` is required, `readModels`, `audit` and `diagnosticSink` are optional. No `irreversible` field yet, and `retention.afterExpiry` is `"delete"` only. There is no `commandRegistry` and no registration check: the Specs dropped them, and the compiler over the generated api is the check of Sc L2-4. @@ -228,7 +240,7 @@ Review round 3 stands as it was for the rest of the corpus: no lens approved. Th | Slice | Builds | Open findings | Blocker, major, minor | |---|---|---|---| | S3 | Measurement: 1, 10 and 100 lines, without and with contention. Repeated after S4 and S5 | 1 | 0, 0, 1 | -| S4 | Generations and rebuild, the history view and the write pause, with the tenant list, operator entry points and gate audit the rebuild uses. The paper, the gate, Probe 6, the per-entity online rebuild and the history view on paper are done | 4 | 0, 0, 4 | +| S4 | Generations and rebuild, the history view and the write pause, with the tenant list, operator entry points and gate audit the rebuild uses. The paper, the gate, Probe 6, the per-entity online rebuild, the history view on paper and its four passes are done | 4 | 0, 0, 4 | | S5 | Baseline migration, restore, the rest of operators and audit, diagnostics, the receipts sweep, maintenance jobs. Probe 7's local part, command audit, the diagnostic and the sweep are done | 16 | 0, 9, 7 | | L3 | Layers 3 to 6, written from what the experiment shows | 30 | 0, 12, 18 | | P | Polish with no effect on what is built: citations, markers, stale sentences, README | 29 | 0, 0, 29 | @@ -237,11 +249,15 @@ Thirty-eight more findings are `partially-fixed`, each waiting for its slice. Re ## Next unit -`ROADMAP.md` is the order, ruled as cut by decision 36. Rounds 1 and 2 are done, and so is round 3's mini roadmap but for the hosted tier's first runs. The next unit is the owner's: the review and merge of the pull request of `feature/round-2` into `main`, and of the pull request of `unit/design-in-the-graph` stacked on it, which the main thread opens at this close; the stacked one merges into `feature/round-2` first or follows it into `main`. After the merge: +`ROADMAP.md` is the order, ruled as cut by decision 36. Rounds 1 and 2 are done, round 3's mini roadmap is done but for the hosted tier's first runs, and the four passes over `pack:history-view` are done. The next unit is the owner's: -- The hosted tier's first runs, the owner's steps 10 and 11 of `design-hosted-tier.md`: first from the owner's machine with `npm run test:hosted`, then the workflow on `main`, which the `hosted` environment admits, since GitHub runs a schedule only from the default branch. They settle the design's eight "built when" items, OD-036's count, and Leads 39 and 43's assumptions about a hosted deployment. +- The review and merge of three pull requests: #11, `feature/round-2` into `main`; #12, `unit/design-in-the-graph`, stacked on it and extended by this unit; and the Protocol's pull request of `feature/adopter-round-2`, which the main thread opens after this close. #12 merges into `feature/round-2` first or follows it into `main`. The adopter's pin is a tarball of the Protocol's branch at `dfa1bd9`; after the Protocol's merge it moves to the merge commit, made the way `docs/feedback/sdp-feedback-01.md` says under "2026-10-01, adopting pull request 26". +- The owner's `ready` statements, each an approval to build (OD-163). `spec:application.history-projection` carries no unruled `owner` row since OD-174; its `ready` waits for round 5 of the unit's fold-in and a short third read of the history Specs. `spec:application.history-rebuild` and its five examples wait for the same read and for OD-157 (`spec:application.history-rebuild#question.verifyPassUnderPause`). In the Protocol, the four Specs this round implemented, `spec:extraction.pack-member-order`, `spec:model.open-question-keys`, `spec:validation.next-rung-floor` and `spec:consumers.agent-surface.address-and-cycle-recipes`, sit with their examples in the drift alarm (recipe 2) until the owner states `ready`, as R5 expects. +- 5d, the build of the history view, once the history projection and the history rebuild state `ready`; `ROADMAP.md` says what it binds. +- The dedicated pull request of O16, after 5d or beside it, as the owner chooses. The owner: "Now it is perfect ground for demonstation in a dedicated PR. I am preparing the ground for that." It would show the graph giving, as projections, the views the owner once made of the earlier platform with a 20-hour workflow of Opus agents, a snapshot "Outdated the moment it was created.": "The Graph, when properly implemented, gives all of these as projections." This unit's Pack page, recipes 25 and 26, question keys, next-rung data and Studio slice are its ground. Nothing from that private repository is quoted in a public one without the owner's word. +- The hosted tier's first runs, the owner's steps 10 and 11 of `design-hosted-tier.md`, after the merge of #11: first from the owner's machine with `npm run test:hosted`, then the workflow on `main`, which the `hosted` environment admits, since GitHub runs a schedule only from the default branch. They settle the design's eight "built when" items, OD-036's count, and Leads 39 and 43's assumptions about a hosted deployment. - The dashboard check of `clean-capybara-16`: a production deployment, reference `production`, never deployed, with no tables and no keys, made by the project's default. The design wants `dev/hosted` only, so the owner deletes it if nothing uses it. Deletion is permanent and an agent does not do it. -- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b, 5c and 5d, discussed with the owner before they are prepared (decision 42). 5d's design is `pack:history-view`; its domain and operator passes, one advisor launch each with `design/advisors/task-pass.md`, come before its build. Each reads `design/pages/history-view.md` first and ends with what the page did not give; that is step 5 of `docs/feedback/sdp-feedback-03-selection.md`, and with OD-163 the history projection may state `ready` after them. Under OD-163, 4e is the owner stating `ready` on a family approved for its build. +- Then the roadmap's remaining units, 4e (`ready` by family, the owner's), 5a, 5b and 5c, discussed with the owner before they are prepared (decision 42). Under OD-163, 4e is the owner stating `ready` on a family approved for its build. The setup is done: the project `libar-platform-hosted` and its development deployment `dev/hosted` (`wandering-mule-403`, `HOSTED_DEPLOYMENT_URL` in the regional form the CLI printed), the GitHub environment `hosted` with its `main` branch policy and its three variables (`HOSTED_PLAN` is `Professional`, `HOSTED_DEPLOY_KEY_NAME` is `hosted-ci-scoped`), and the key `hosted-ci-scoped` with exactly the fourteen actions as the secret `HOSTED_DEPLOY_KEY`, which passed the key-only check (Owner queue); the first key, with 25 actions, is revoked. The local backend stays primary, by the owner's words of 2026-10-03: "Local backend should be primary, IMO. But happy to take the hosted as default if easier for start." @@ -258,7 +274,7 @@ What S2 left, as it stands now: Decisions each later slice needs on paper before its code: -- S4, the history view: taken on paper in 4c (`design/specs/application/**`, ten ledger findings); what is left is the build, 5d, with Leads 43's step 9 gap. The rest of S4's paper was taken in round 2: `design-s4-paper.md` sections 1 and 7. +- S4, the history view: taken on paper in 4c (`design/specs/application/**`, ten ledger findings) and in the four passes over `pack:history-view`, whose rulings are OD-156 to OD-161 and OD-164 to OD-175; what is left is OD-157, the owner's, the sort of OD-164 to OD-170 by their lenses, and the build, 5d, with Leads 43's step 9 gap. The rest of S4's paper was taken in round 2: `design-s4-paper.md` sections 1 and 7. - S5: the history-reading sweep's transient refusal and the restore check's pending-work inventory, ruled at sitting two (OD-041) and designed with the baseline unit, including a read for the journal check that `list` does not refuse with `writePaused` (restore's open question from F5); what a restore in place does with the schedules it keeps (`probe-7-architecture-restore-kept-schedules-not-reconciled`); how the restore check detects a stream state that is not the fold of its events (`s3-measurement-architecture-current-state-not-checked-against-event-fold`); the read-only comparison of the restore's read-model check (`s4-paper-sdp-restore-read-model-check-compare-mode-undefined`). What the platform review of 2026-10-02 asks of the later units. The ledger owns each finding's counterexample and what its build must show. This is the order and the guidance that fits no single finding. @@ -278,7 +294,7 @@ What the platform review of 2026-10-02 asks of the later units. The ledger owns ## Tactical decisions taken on 2026-10-01 -The owner accepted the first nine on the session's recommendation. The session took 10 to 19 during S0, 20 to 23 during S1, 25 to 27 during S2 and 28 to 31 during the platform review unit, on 2026-10-02. Decisions 32 and 33 are the owner's words of the same day. Decisions 40 to 45 were taken during round 2, on 2026-10-02 and 2026-10-03, most of them on the owner's words, 46 and 47 during the tooling unit on 2026-10-03, 48 and 49 during round 3's unit 3b the same day, 50 and 51 at sitting two the same day, and 52 at the close of round 3 the same day. Any of them can be reopened. +The owner accepted the first nine on the session's recommendation. The session took 10 to 19 during S0, 20 to 23 during S1, 25 to 27 during S2 and 28 to 31 during the platform review unit, on 2026-10-02. Decisions 32 and 33 are the owner's words of the same day. Decisions 40 to 45 were taken during round 2, on 2026-10-02 and 2026-10-03, most of them on the owner's words, 46 and 47 during the tooling unit on 2026-10-03, 48 and 49 during round 3's unit 3b the same day, 50 and 51 at sitting two the same day, 52 at the close of round 3 the same day, 53 to 57 during the unit `design-in-the-graph` the same day, 58 to 63 during `pack-page` on 2026-10-04, and 64 to 68 during `sdp-round-2` the same day. Any of them can be reopened. 1. Slices replace the eight fix units of the previous plan. 2. A slice is built on Specs at `defined` with no open blocker inside the slice. The owner states `ready` after the slice passes. @@ -337,44 +353,57 @@ The owner accepted the first nine on the session's recommendation. The session t 54. One maturity per Spec (`PLAN.md` 6.7). The projection contract is split into the per-entity, history and aggregate projections, the moved text verbatim. The new IDs follow the code's names, `HistoryProjection` and `AggregateProjection`, while the language rows "history view" and "history projection" wait for the owner; a ruling of other words renames them. 55. The pinned module is this corpus's recipe for the Protocol's declarations module: `scripts/pinned.mjs` over one Pack, run by `sdp:build`, and `tests/types/pinned.test-d.ts` with three lists named by entry address, bound, ahead and not compared. A pin that leads its code is listed ahead with what closes it, and a duplicate pin fails the compile. The scope grows a Pack at a time. 56. A Design entry is cited by its entry address, `spec:#design.`, in code comments, test names, the register, the ledger and the advisors' memos; `check.py` resolves each one outside the Specs. A line pointer into a Spec is replaced when its file is next touched. +57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. 58. A capability Pack has a committed page, `design/pages/.md`, written by `scripts/pack-page.mjs` from the graph in memory, with no commit, timestamp or absolute path; `check.py` keeps the list of pages (`PACK_PAGES`) and fails on one that is behind, missing or unlisted. An edit to a member Spec is followed by `npm run pages`. A pass reads the page first. 59. The pinned pairs are data, `tests/types/pinned-pairs.json`, beside the type test, which a pure test keeps in step; the page reads them and parses no test. The pinned module is formatted by Prettier. 60. An anchor that lives in a test names the source files it stands for in `design/tools/anchor-sites.json`, kept by a pure test; the graph does not hold the link. -61. The register cites an open question by its Spec and the opening of its text, never by position; `check.py` verifies it, and a source whose question left its Spec keeps its last text with `open: false`, only on a decided or folded row. Elsewhere a question is cited by its OD number. +61. Ended by decision 65. The register cited an open question by its Spec and the opening of its text, never by position, and `check.py` verified it. 62. A built Spec may pin a type that a designed form widens, listed ahead; a behavior the code lacks lives in a Spec of its own (`PLAN.md` 6.7). The rebuild is split by it. -63. The owner, 2026-10-04, on this unit's four worktree lanes and five review lanes: "This approach is appropriate if for implementation of a large full-week epic. ... it is excessive, very."; on worktrees: "I would say no benefit at all."; and "situation dictates actions. And intelligence of the orchestrator decides. Guides are recommendations to consider (unless project has hard rules)." Until the owner rules on the proposal (Owner queue), the main thread sizes review and isolation to the work, and one review that runs things is the usual start. -57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. +63. The owner, 2026-10-04, on the four worktree lanes and five review lanes of `pack-page`: "This approach is appropriate if for implementation of a large full-week epic. ... it is excessive, very."; on worktrees: "I would say no benefit at all."; and "situation dictates actions. And intelligence of the orchestrator decides. Guides are recommendations to consider (unless project has hard rules)." Until the owner rules on the proposal (Owner queue), the main thread sizes review and isolation to the work, and one review that runs things is the usual start. +64. An advisor runs on the model the owner names for it. For the passes over `pack:history-view` the owner chose "Opus domain, Astra operator", so the domain pass ran as Opus 5.5 on the `advisor-domain` definition and the operator pass as `gpt-6-astra` at high, briefed with the `advisor-operator` definition's three paths and `design/advisors/task-pass.md`. `design/advisors/protocol.md` bound both alike, and each memo and each set of leans was checked by the other family on a copy with one planted citation. With no model named, an advisor is a Fable agent (decision 33). +65. Every open question carries a key, and a tool cites it by its address. The owner's ruling of 2026-10-04 on the Protocol's model: "Key in the marker". So the marker reads `[blocking #key]` or `[non-blocking #key]`, the key unique among one Spec's open questions, and the question's entry address is its Spec's ID, then `#question.` and the key. `check.py` fails on an open question without a key. The register cites an open question by address; a source whose question left its Spec keeps its Spec and last text with `open: false`, on a decided or folded row only. `decisions.py`, `check.py` and their tests resolve an address through recipe 25, so a removed or renamed key fails the check. In prose a question is cited by its OD number. +66. One review per repository, by `gpt-6-astra` at xhigh, on a frozen copy with one plant, running what it reads, as decision 63 sizes it. In this unit the Protocol's branch had one (`job-mut8z07h-a0b05af1`, 22.4 min) and this repository's side one (`job-mut9wpn7-575a7c07`, 35.1 min), and both caught their plant. A second read of the history Specs (`job-mutbtzmh-06e6d440`) followed the fold-in, because the release procedure had been folded in piece by piece, and a short third read follows its own fold-in, round 5. What the plants showed: the builders' own tests caught every code plant tried, and two candidate plants for the Protocol's copy were withdrawn for that reason. The plants that tested a reviewer sat where no gate reads: in taught text (the authoring skill teaching the key outside the marker, with every test passing) and in Spec prose (the deploy moved before the close of `all` in `historyHandoff`, with `check.py` and every test passing). So a plant goes in taught text, Spec prose or a citation, and a code plant is first tried against the tests. +67. The Pack page and `check.py` read the Protocol's data, not this corpus's copies of it (A2, A4). The page takes member order from the reader's Pack context and the next rung's unmet clauses and typed-dependency targets from `SpecContext.nextRungFailures`. It keeps its own meaning of the next rung, the rung above the stated one, and says nothing blocks it when the floor is above the stated rung. `check.py` sends every entry address outside the Specs to recipe 25 in one call and fails on any set recipe 26 reports; finding the addresses in files and naming each one's line stay this corpus's. The adopter's joins stay: the pinned pairs, the anchor sites and the register. A workaround goes when the Protocol gives the thing, and what the Protocol still lacks goes to `docs/feedback/sdp-feedback-01.md`. +68. A worktree only where two builds would race. The rulings of 2026-10-04: "No worktree unless two lanes would break each other's gates." In this unit one package had one: Q, the question key, whose build would have raced package G's on the Protocol's `dist/`. The other packages ran in the main checkout, two lanes at once where their files were disjoint. Decision 39 says how a worktree is set up when one is made, not that every lane gets one. ## Owner queue Every open decision is a row of `design/decisions/register.json`, and `python3 design/tools/decisions.py` filters it: `--owner` lists what waits for the owner, forks first, `--owner --before S4` what the owner must decide before S4, `--decided --by advisor --since ` what agents decided. The register at the close: ``` -total: 161 -status: unsorted=5, sorted=81, waiting=21, decided=39, folded=15 -class: tactical=3, delegated=86, owner=52, null=20 -advisor: convex=43, domain=45, operator=34, product=39 +total: 175 +status: unsorted=12, sorted=82, waiting=21, decided=45, folded=15 +class: tactical=3, delegated=89, owner=56, null=27 +advisor: convex=43, domain=51, operator=41, product=40 ``` The key check is done ("Next unit"). For the record, the procedure that worked with CLI 1.46.0, which refuses a directory with no `package.json`: in a fresh temporary directory, write `{"name":"libar-hosted-key-check","private":true,"dependencies":{"convex":"1.46.0"}}` as `package.json`, install nothing, paste the key at a silent `read -rs CONVEX_DEPLOY_KEY`, export it, run the repository's `node_modules/.bin/convex env list --names-only` under a fresh temporary `HOME`, then unset the variable. An empty list with no error means the key authenticates. -What waits for the owner at the close of round 3: - -- The pull request of `feature/round-2` into `main`, which the main thread opens at this close: the owner reviews and merges it. And the pull request of `unit/design-in-the-graph`, stacked on it. -- Decided on 2026-10-04: OD-163, a stated `ready` means approved to build, and OD-162, the aggregate form leaves the three built Specs ("Where the work stands"). No Spec states `ready` yet. -- The proposal on sizing review and isolation to the work, from the owner's words of 2026-10-04, is `proposal-review-sizing.md` in the unit folder of `pack-page`. It would change step 6 of `slice` in `SESSIONS.md`, the guide's run pattern and decision 39's default, once the owner rules. -- Words for the design language that this unit used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack; from `pack-page`, history rebuild (the new Spec's ID), Pack page, stated rung, floor, next rung, pair with bound, ahead and not compared, an anchor's site, register row; and from the Convex pass, batch, source, consistent cut, history view. +What waits for the owner at this close: + +- The three pull requests of "Next unit": #11, `feature/round-2` into `main`; #12, stacked on it; and the Protocol's pull request of `feature/adopter-round-2`. +- Before the pushes, one question from the main thread: the new section of `docs/feedback/sdp-feedback-01.md` and both pull requests quote the owner's words on gen 1 verbatim, and they go public with the push. +- The `ready` statements, each an approval to build (OD-163): `spec:application.history-projection` after round 5 and a short third read of the history Specs; `spec:application.history-rebuild` and its five examples after the same read and once OD-157 is ruled; the Protocol's four implemented Specs and their examples. No Spec of this corpus states `ready` yet. +- OD-157, the verify pass under the write pause (convex lens). Under the pause no source changes, so the pass finds nothing over a covered generation and doubles the pause; the option kept is the pass, as D9 and Sc L2-6 read, and whether a paused generation is `verified` when its backfill ends is the owner's. The domain pass added what the pass can find: a missing or lagging row, never a fold that disagrees with itself (`spec:application.history-rebuild#design.historyVerify`). +- OD-171, the terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events. +- The later decision on annotating every design pattern in code. The owner holds the first generation's annotations of architecturally significant patterns and relationships to be the approach's strongest value, and says its trouble was misread as the dual extraction from TypeScript and Gherkin; with every pattern of a design annotated where it is realized, the Studio slice's claim map would not be found by reading code for resembling shapes. The owner's words are in the unit's rulings page. The owner chose "Map now, rule later": the Protocol's records `spec:decisions.architectural-significance-rides-primitives` and `spec:decisions.jsdoc-graph-extraction-refused` stand for this round, and the owner contests their account of gen 1. The 81-row claim map is the manual work such annotations would turn into a projection, and the evidence for the decision. +- The 25 departures of `pack:spec-studio-v1`, each a keyed open question, five of them blocking, where a ruled record of the Protocol goes another way than the original design: among them the patch loop against `spec:consumers.edit-model`, HTML first against the Markdown Design Review, and seven rungs against four. The Protocol's pull request lists them. +- Words this unit used that the language lacks. In this corpus's `CONTEXT.md`: handoff and protected abort (OD-174's procedure), question key, next rung, target rung, dependency cycle. In the Protocol's: the same four, and from the Studio slice Spec Studio, lens, panel, shell, custom element, gathered intent, hand-off, build stamp, hosted preview, harness. The history view's "handoff" and the Studio's "hand-off" name two different things. +- Words the units `design-in-the-graph` and `pack-page` used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack, history rebuild (a Spec's ID), Pack page, stated rung, floor, pair with bound, ahead and not compared, an anchor's site, register row; and from the Convex pass, batch, source, consistent cut, history view. +- The proposal on sizing review and isolation to the work, from the owner's words of 2026-10-04, is `proposal-review-sizing.md` in the unit folder of `pack-page`. It would change step 6 of `slice` in `SESSIONS.md`, the guide's run pattern and decision 39's default, once the owner rules; decisions 66 and 68 are how this unit sized them meanwhile. - The doc's two hunks, from OD-008 and OD-044, in `patch-doc-sitting-two.diff` of sitting two's folder: `git apply ~/dev-libar-supporting-context/calibration/application-platform-sitting-two/patch-doc-sitting-two.diff` from the repository root, then a commit. Only the owner edits the doc. - The hosted tier's first run, from the owner's machine and then by the workflow on `main`, and the dashboard check of `clean-capybara-16` ("Next unit"). OD-036, Probe 3's quota half, is `waiting` for that run. -- The untracked `tmp-convex-findings.txt` at the repository root, the owner's notes of the hosted key rotation, makes every local run record "not clean" until the owner moves it. +- The untracked `tmp-convex-findings.txt`, the owner's notes of the hosted key rotation, at the root of the ThinkPad's checkout, makes every local run record there "not clean" until the owner moves it. The Mac's checkout, where this unit ran, has none. - OD-135 and OD-095 wait for their advisors when the owner next asks for a sort: OD-135's lean held 9 of 19 claims and needs its advisor's correction, and OD-095's held 6 of 6 but is a `do` alone and needs its lean in full. -- The language rows still open, which keep the code's names until the owner rules: interrupt, park, stall, batch chain, fill, the aggregate's marker, history view, history projection, tombstone, drill, door, gate, audit record, diagnostic record, diagnostic gap, adopter, package, activation record; and from this unit Probe 3's "set of calls", the one "preview deployment", the Vitest project names (`types`, `pure`, `simulator`, `native` and now `hosted`) beside the four tier names, and the design keys `tierDomain` and its siblings, which keep their IDs. +- The language rows still open, which keep the code's names until the owner rules: interrupt, park, stall, batch chain, fill, the aggregate's marker, history view, history projection, tombstone, drill, door, gate, audit record, diagnostic record, diagnostic gap, adopter, package, activation record; and from the close of round 3 Probe 3's "set of calls", the one "preview deployment", the Vitest project names (`types`, `pure`, `simulator`, `native` and `hosted`) beside the four tier names, and the design keys `tierDomain` and its siblings, which keep their IDs. -Decided since the last close: OD-149, the tenant created behind a pass's cursor, by its operator advisor's checked lean (`19738b4`); and OD-155, the hosted tier's money, as the owner's, from the owner's words of the tooling unit on the advisor's eight hosted recommendations, applied by the main thread's register patch (`c1bdf80`), which also set OD-036 `waiting`. `decisions.py --decided --since 2026-10-03` lists them with sitting two's sixteen `owner` rows (decision 50) and the advisor rows of 3b and the tooling unit (OD-057 by the convex advisor; OD-010, OD-014, OD-071, OD-075 and OD-080 by the domain advisor). At sitting one twelve `owner` rows were recorded as the owner's (decision 40) and OD-007 was decided by the convex advisor. OD-154, the grant read, is a `delegated` row with its measured cost. OD-093's provisional reading still quotes the old E-9 text, a field the tool does not patch (Leads 43). +Decided since the last close: OD-174, the history projection's one version, by the owner from the main thread's options ("One version + handoff"); OD-172 and OD-173 by the domain advisor's checked leans; OD-175 by the operator advisor's checked lean. `decisions.py --decided --since 2026-10-04` lists them with OD-162 and OD-163, the owner's rulings of `pack-page`. The seven questions of the passes, OD-164 to OD-170, are `unsorted` and wait for their lens's sort, OD-164 and OD-165 the domain's and OD-166 to OD-170 the operator's. + +Before that, at the close of round 3: OD-149, the tenant created behind a pass's cursor, by its operator advisor's checked lean (`19738b4`); and OD-155, the hosted tier's money, as the owner's, from the owner's words of the tooling unit on the advisor's eight hosted recommendations, applied by the main thread's register patch (`c1bdf80`), which also set OD-036 `waiting`. `decisions.py --decided --since 2026-10-03` lists them with sitting two's sixteen `owner` rows (decision 50) and the advisor rows of 3b and the tooling unit (OD-057 by the convex advisor; OD-010, OD-014, OD-071, OD-075 and OD-080 by the domain advisor). At sitting one twelve `owner` rows were recorded as the owner's (decision 40) and OD-007 was decided by the convex advisor. OD-154, the grant read, is a `delegated` row with its measured cost. OD-093's provisional reading still quotes the old E-9 text, a field the tool does not patch (Leads 43). `delegated` rows that wait for the next sort of their lens, each with the round's result on its lean: OD-066 (3N + 5 with every term attributed; the journal tail read is 10 documents and 6,010 bytes, 29 percent of the documents read on ten lines), OD-120 (Probe 7's states) and OD-154 (3 documents and 918 bytes for the grant read) for the convex lens, OD-081 (Probe 7's restore answers) and OD-135 (its check) for the operator lens, and OD-095 (its check) for the domain lens. The session may not decide a `delegated` row (`decisions.py`: "session may decide only tactical rows"). -The 86 `delegated` rows carry the leans of the first panel run, five of them replaced in the tooling unit. A `gpt-6.1-sol` check read the first 23: twelve held on every checked claim and carry `checkedBy`; eight hold with a gap and three do not hold (OD-066, OD-103, OD-109), each waiting for its advisor's correction with the check's findings in the unit folder the project notes name. Later checks added `checkedBy` to OD-057, OD-071, OD-075 and OD-080 in the tooling unit and to OD-095, OD-135 and OD-149 in the close of round 3, so eighteen rows carry it, and eight of them are decided. The other leans are unchecked. A checked lean is applied to the Specs as a ruling by a later unit, one Spec family at a time, and the row becomes `decided`. The rest carry a one-line lean or wait for a probe, a measurement or a build (`--waiting`). +Of the 89 `delegated` rows, 86 carry the leans of the first panel run, five of them replaced in the tooling unit, and the three this unit added, OD-172, OD-173 and OD-175, carry checked leans and are decided. A `gpt-6.1-sol` check read the first 23: twelve held on every checked claim and carry `checkedBy`; eight hold with a gap and three do not hold (OD-066, OD-103, OD-109), each waiting for its advisor's correction with the check's findings in the unit folder the project notes name. Later checks added `checkedBy` to OD-057, OD-071, OD-075 and OD-080 in the tooling unit to OD-095, OD-135 and OD-149 in the close of round 3, and to OD-172 to OD-175 in this unit, so twenty-two rows carry it, and twelve of them are decided. The other leans are unchecked. A checked lean is applied to the Specs as a ruling by a later unit, one Spec family at a time, and the row becomes `decided`. The rest carry a one-line lean or wait for a probe, a measurement or a build (`--waiting`). ## Leads @@ -406,7 +435,7 @@ A session confirms or drops each. None is a finding yet. 7. Four type names used in pinned signatures and declared by no Spec: `HistoryArgs`, `WriteBaselineArgs`, `WriteBaselineResult`, `BatchCursor`. Recipe 23 finds where each is used. 8. `dispatchId` on the obligation row is `v.id("_scheduled_functions")`. Nothing shows whether such an ID validates after a restore into another deployment. It belongs in Probe 7. 9. The mention audit (recipe 22) gives 78 unbacked pairs, 50 of them declared from neither side. Each slice checks the ones in its families. -10. Using the Protocol more, from a side thread's read on 2026-10-01. A local query for the build backlog at `defined` (recipe 1 reads stated `ready`, which no Spec here has before its slice passes; the same question at `defined` with a clear floor gave 80 Specs). A Pack per slice, so that "which Specs does S1 build" is a graph read. `check.py` counting open questions through recipe 20 in place of its own expression. The carrier grammar restated in `PLAN.md` 6.2, which can drift from the authoring skill's table. +10. Using the Protocol more, from a side thread's read on 2026-10-01. A local query for the build backlog at `defined` (recipe 1 reads stated `ready`, which no Spec here has until the owner approves its build, OD-163; the same question at `defined` with a clear floor gave 80 Specs). A Pack per slice, so that "which Specs does S1 build" is a graph read. The carrier grammar restated in `PLAN.md` 6.2, which can drift from the authoring skill's table. 11. Small things in the harness that no finding carries. The sweep signals by process id after reading the process table, and the Spec says the interval is not closed. A `convex dev` child killed with SIGKILL leaves a temporary directory behind, which a `TMPDIR` inside the watch mode's own home would remove. The scripts' hand-over of the interrupt to executable resolution is tested by reading their source. The admin read's page size of 10 in the shared-limits helper is not needed for the read to succeed. Inside a Codex sandbox `ps` cannot inspect other processes, so the sweep tests fail there and pass outside it. 12. Left by the last review of S0 on purpose. Redaction of a failed child's output scans a character at a time: 901 ms and about 725 MiB at peak for a 16 MiB output, where the version before the overlapping-secret fix took 3 ms. No pure test covers the accepting path of the download's hash check; it needs a real archive as a fixture, and the path runs for real whenever the cache is cold. Four mutations survive with no test: the interrupt not passed to `unzip`, the SQLite-path match dropped from the ownership check, SIGTERM mapped to SIGINT in `scripts/dev.mjs`, and a global teardown that does nothing. The test that both scripts hand their interrupt to executable resolution parses their source, and a shadowed variable or a later spread that overrides the step passes it. A failed amendment of a run record leaves a `.next` file beside the whole record. @@ -445,7 +474,6 @@ A session confirms or drops each. None is a finding yet. 28. From round 1. `design/specs/application/rebuild.sdp.md` near line 45 promises a one-write rollback and near line 84 a reverify and switch: the fork of OD-068 shows both, and S4's paper rules it. The pipeline accepts a stock stream row at version zero with positive stock and no event, which no command makes and the version-zero comparison planted. The journal tail read and the grant read stay, by C3 and C4 of round 2, and removal needs the writer-invariant proof first. OD-066 waits for its lens with 3N + 5 attributed. Probe 7 closed three items of this lead: `writeTable` is exercised against component tables, a ZIP reader replaced `unzip`, and `BackendFacts.composition` is `null` after a temporary deploy. The f15 remainder names a work stage and a run date, which overlaps the temporal sweep of leads 16 and 22. `design/PLAN.md` near lines 297 and 299 still lists one example for Sc L2-2 and L2-4. The harness's child runner now has a both-streams output whose timeout reports through the bounded error and not the "did not finish" message. 29. From round 2. Each is a test gap, a hole in a failure path, a Spec line about what is not built, or a number still to take. - - `design/tools/test_decisions.py` has one test that fails at `main` too: `test_real_register_has_unique_rows_and_exact_recipe_20_coverage` ends in an `IndexError`. It is not one of the gates. - Journal inspection. `orders-inventory-example.sdp.md` near line 70 names the context queries that return a stream's events and its current version; the Orders and Inventory contexts register only `get` and `list`, no `history` query of `spec:context.queries`, and the native tests read journals through admin table reads. The Spec line stays as intended truth. - The Probe 6 context callback at `fixture/convex/migrations.ts:198-203` writes a `draft` summary beside the source's version whatever the source's status. Fixture probe code that nothing rests on; fixed only if that fixture is reused. - A partial tenant list passes `startGeneration`'s refusal: a list that holds a tenant whose first grant came after the table, and misses an older one, gets through. The rebuild Spec states it as an open question and tells the operator to run `fillTenants` first. `limitTenantFillBatch` is 8 because a grant row is bounded only by the 1 MiB document limit. @@ -508,15 +536,24 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - Nine pairs of `tests/types/pinned.test-d.ts` are not compared because they differ in the ctx they take: the pinned `MutationCtx` is the emitter's generic stand-in, so it never equals a composition's ctx. Five of them (`typeCommandDeclaration`, `fnPublicCommand`, `fnInternalCommand`, `fnRunPipeline`, `fnRelayFailure`) also lead the code and carry the ctx inside the executor type, so nothing flips when their build lands. Either the notation pins a ctx generic over the data model, or the emitter compares with the ctx erased throughout. - Thirteen names the design uses and no Spec pins stand in the emitter's preamble, each pointing at the code's type: `ReadModelDataModel`, `RowDataModel`, `GateDataModel`, `ListArgs`, `BatchRef`, `FillBatchRef`, `AppendResult`, `SubjectRef`, `DiagnosticSink`, `FailedCall`, `outcomeKindValidator`, `WriteBaselineArgs`, `WriteBaselineResult`. The Spec that uses one may pin it when next touched. - The emitter takes no Convex registration (`export const name = mutation({ ... })`, 51 `fn*` entries in the corpus), no `index*` fragment and no `limit*` formula; the module covers shapes, not the registered surface. - - The Convex pass left questions to two lenses: the operator's, whether an entry computes the pause length from the tenant list and the stream counts before `startGeneration` and who takes the batch time; the domain's, what `verified` asserts for a history view nothing could change, if OD-157 keeps the pass. + - The Convex pass left questions to two lenses, and their passes took them in `sdp-round-2`. The domain pass said what `verified` asserts under the pause, a missing or lagging row found and never a fold that disagrees with itself (`spec:application.history-rebuild#design.historyVerify`). The operator pass kept the acceptable pause length for the owner, not a timeout derived from a batch estimate, and asked how the operating instructions measure the closed interval (OD-170); who takes the batch time stays open. 45. From the unit `pack-page`. - `readModelTables` in `src/read-model/tables.ts` still installs `projectionMarkers`, which only the aggregate form uses and no Pack Spec pins after OD-162; its pair is not compared. The build that next touches the read-model tables drops it, or OD-075's build keeps it. - - The rebuild keeps the whole example space, because a one-value slot is refused; `spec:application.history-rebuild` has none, and its two examples' steps are free-form. + - The rebuild keeps the whole example space, because a one-value slot is refused; `spec:application.history-rebuild` has none, and its five examples' steps are free-form. - The anchor sites live beside the graph: `byFile` on `src/read-model/rebuild.ts` and `src/gate/` still returns nothing, and only the page joins the map. A companion binding is a question for the Protocol (`docs/feedback/sdp-feedback-01.md`). - - The page is about 160 KB, most of it the pinned-declaration tables. The reader's remaining obstacles: the test link has no line anchor, and the aggregate answer is spread over three sections. + - The page is about 186 KB at this close, most of it the pinned-declaration tables. The reader's remaining obstacles: the test link has no line anchor, and the aggregate answer is spread over three sections. - Every edit to a member Spec moves line links, so `check.py` fails until `npm run pages` runs. +46. From the unit `sdp-round-2`. Each is a gap this unit found and did not fix. + - Decision citations against `decidedBy`. The adopter review found new bullets of the history Specs citing D4, D5 and D19 with no `decidedBy` edge, which `PLAN.md` 6.4 asks for (K6). The fold-in added those edges by hand; nothing checks the rest of the corpus. A check in `check.py` that every decision record a Spec cites is reached by its `decidedBy` edges would find the others. + - The declarations that bind a history view are stated only in prose, in the three model terms of `spec:application.orders-inventory-example` that OD-172 changed, and no declaration in the code binds the view yet. The page reads no prose, so it shows nothing for them. A keyed Design entry pinning each binding would reach the page through recipe 24; this corpus's gap, recorded in `docs/feedback/sdp-feedback-01.md`, section "2026-10-04, adopting round 2 at `27b896a`". + - An entry's line in the graph. The page reads each member's carrier to find the line of every Design entry and open question, because the graph records the line of a binding and not of an entry; for the Protocol, in the same section's "What still needs the Protocol". + - A recipe's parameter as data. Recipe 25 takes its addresses on its opening `const` line, which `design/tools/decisions.py` rewrites with a regular expression, 489 addresses and 28,788 characters of JSON on the command line. An input read from the environment, as recipe 4 reads `SDP_CHANGED_FILES_JSON`, would let the body run as shipped; for the Protocol, in the same place. + - Anchors that live in tests. `design/tools/anchor-sites.json` stays this corpus's join, and `byFile` on `src/read-model/rebuild.ts` returns no Spec (Leads 45); for the Protocol, in the same place. + - Two of the Protocol's carrier checks, `check-carrier-rule.mjs` and `check-carrier-truth.mjs` at its root, fail on `feature/adopter-round-2` and fail identically at `5e29c03`. Neither is a `package.json` gate, and the Protocol's pull request says so; its maintainers rule whether they become gates or go. + - Retracted: the gap the passes' first round listed, `defineList` mapping saved state through `toDto` without the schema-version checks of `spec:context.queries#design.fnList`. The adopter review showed that `defineList` refuses a newer saved schema version through `metaOf` (`convex-test`), so no lead stands for it. + The reports behind leads 1 to 3 and 6 are outside the repository, because they quote a private repository. The project notes file named in `AGENTS.md` lists them, with the reports, briefs and rulings of S0. ## Inputs @@ -529,7 +566,7 @@ The doc is `docs/convex-transactional-domain-platform-decisions.md`, unchanged s - First release: dual ESM and CJS, `publint` and the type-resolution check, packed-consumer fixtures, the Node and TypeScript matrix, changesets, trusted publishing, the compatibility policy for error codes, handler versions and event schema versions. - Not taken: its repository blueprint, which puts journal, receipts and obligations in one component against D2; the Node 18 floor and the TypeScript 5 promise, which came from its prompt; its sample types and error codes, which differ from what the corpus pins; test functions shipped behind a runtime guard; its sample CI, which builds before component codegen. -`docs/sdp-development-from-application-platform.md` is the first report to the Protocol's maintainers. `docs/feedback/sdp-feedback-01.md` is the running file that follows it; the `adopt` unit and each slice add to it. Beside it, `sdp-feedback-02.md` and `sdp-feedback-03-selection.md` are the two reads of 2026-10-04 that chose the next work from it. +`docs/sdp-development-from-application-platform.md` is the first report to the Protocol's maintainers. `docs/feedback/sdp-feedback-01.md` is the running file that follows it; the `adopt` unit and each slice add to it. Beside it, `sdp-feedback-02.md` and `sdp-feedback-03-selection.md` are the two reads of 2026-10-04 that chose the next work from it; `pack-page` did round 1 of the selection and `sdp-round-2` the rest, the passes and the Protocol's round 2. ## Leftovers From 5d9dd2e0733eb25eb3c39910a5c14484473946f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Thu, 8 Oct 2026 10:38:46 +0200 Subject: [PATCH 41/60] Name the relay plugin: relay:job jobs, reports under ~/.relay-jobs Co-Authored-By: Claude Fable 5.1 --- design/SESSIONS.md | 6 +++--- design/advisors/README.md | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/design/SESSIONS.md b/design/SESSIONS.md index 95ad40a..40fbd77 100644 --- a/design/SESSIONS.md +++ b/design/SESSIONS.md @@ -41,14 +41,14 @@ The two families are one team. The owner ruled on 2026-10-01 that Claude models Proof and fix are written apart. Once a designer's Spec text is ruled, astra writes the tests and a builder writes the code, each from the Spec text alone, in a worktree of its own, and an integrator merges them. A test that fails at that merge is a gap in the Spec, a wrong test or a wrong fix, and the integrator says which. So the designer writes into the Spec everything the two must agree on. -A GPT job is started as an agent of type `gpt:codex`, with its brief in a file, and a job that ended is continued on its own thread with the next rulings. Each reviewer that mutates code gets its own frozen copy. The mechanics, the briefing of each family and the calibration of a reviewer are in the orchestration guide, and this project's commands, brief fragments, plant results and job log are in its notes file. `AGENTS.md` names both. +A GPT job is started as an agent of type `relay:job`, with its brief in a file, and a job that ended is continued on its own thread with the next rulings. Each reviewer that mutates code gets its own frozen copy. The mechanics, the briefing of each family and the calibration of a reviewer are in the orchestration guide, and this project's commands, brief fragments, plant results and job log are in its notes file. `AGENTS.md` names both. Four rules from the stop of 2026-09-30, when ten parallel Fable agents hit the usage limit and one left 109 unreported edits: - One unit per session. - One write lane per tree. A second writer gets its own git worktree and files the first does not touch, and an integrator agent or the main thread merges its branch. Two writers share one tree only when the two briefs split the files and each names the other's files as forbidden, and then nothing is committed or checked until both are done. - The ledger is written ahead: each finding and each status before the next begins. -- A GPT job's report stays in its job directory and a Claude agent answers in the thread. The rule to save every report to a file is gone, because a job's report now survives in `~/.codex-jobs`. +- A GPT job's report stays in its job directory and a Claude agent answers in the thread. The rule to save every report to a file is gone, because a job's report now survives in `~/.relay-jobs`. ## Open @@ -126,7 +126,7 @@ Consensus holds for Layers 0 to 2 when the first experiment passes on a native b A build slice is too long for one conversation. The main thread hands over to a fresh main thread at a seam, before its own context gets in the way: after a commit, with no delegated job running. -1. Reach the seam. Wait for or stop every delegated job. A Claude agent dies with the conversation and leaves no report. A GPT job survives it, and its report, events and thread id are in its directory under `~/.codex-jobs`. +1. Reach the seam. Wait for or stop every delegated job. A Claude agent dies with the conversation and leaves no report. A GPT job survives it, and its report, events and thread id are in its directory under `~/.relay-jobs`. 2. Commit what is in the tree on the unit's branch, as work in progress if it is not reviewed, and say so in the message. 3. Write the handover note beside the unit's rulings page, in the folder the project notes name. It says what is committed, which gates fail at the last commit, which findings are ruled and where the rulings are, what is drafted and not applied, the next steps in order, and what waits for the owner. It lists every instruction the owner gave during the conversation, in the owner's words. 4. Put a short "In progress" block at the top of `STATE.md` that names the unit, the seam and the note. The rest of `STATE.md` waits for the close. diff --git a/design/advisors/README.md b/design/advisors/README.md index 92c9231..4a850c7 100644 --- a/design/advisors/README.md +++ b/design/advisors/README.md @@ -69,12 +69,12 @@ Agent(subagent_type: "advisor-domain", Then, in this order: 1. The memos are copied to `/check-copy/`, and the main thread plants one false citation in each copy and records the plants in `/plants.md`, as tactical decision 31 of `STATE.md` asks for a review copy. -2. One `gpt:codex` job, `gpt-6.1-sol` at medium with the fast tier, checks the copies: every cited claim held, not held or not checked, every unlabelled fact listed. Its brief is `/check-brief.md`, and its report stays in its job directory under `~/.codex-jobs`. +2. One `relay:job` job, `gpt-6.1-sol` at medium with the fast tier, checks the copies: every cited claim held, not held or not checked, every unlabelled fact listed. Its brief is `/check-brief.md`, and its report stays in its job directory under `~/.relay-jobs`. 3. While the check runs, the main thread writes `design/ROADMAP.md`: the cut as one table, the rounds, what is deferred with its trigger, where the advisors differed and what was ruled, the questions that are not rows yet, the findings beyond the roadmap, and the words the advisors needed that `CONTEXT.md` lacks. 4. The claims the check marked not held are corrected in the roadmap, or the advisor is continued with the check's findings where the memo must change. The plants caught go into `plants.md` and the project notes. 5. The unit closes as any unit does: the check prints `OK`, `STATE.md` points at the roadmap, the commit goes up through a pull request. -The next run is lighter, by the owner's words of 2026-10-02, quoted in tactical decision 37 of `STATE.md`. One Fable advisor and one astra advisor are launched for input, on the subjects where the roadmap is in doubt; astra runs as a `gpt:codex` job whose brief carries the protocol, the lens and the task by path, at high effort. The product advisor, a Fable agent, cuts the roadmap as its product manager, with the same task file and the same check. The main thread rules on the tactical questions and asks the owner only for the critical forks. Forks are drafted by `gpt-6.1-sol` from the register's leans and the Spec lines they cite, read by an Opus agent for balance, and an advisor rewrites one only when the owner names the row: Fable is spent on the main thread and on the design of a slice on paper. +The next run is lighter, by the owner's words of 2026-10-02, quoted in tactical decision 37 of `STATE.md`. One Fable advisor and one astra advisor are launched for input, on the subjects where the roadmap is in doubt; astra runs as a `relay:job` job whose brief carries the protocol, the lens and the task by path, at high effort. The product advisor, a Fable agent, cuts the roadmap as its product manager, with the same task file and the same check. The main thread rules on the tactical questions and asks the owner only for the critical forks. Forks are drafted by `gpt-6.1-sol` from the register's leans and the Spec lines they cite, read by an Opus agent for balance, and an advisor rewrites one only when the owner names the row: Fable is spent on the main thread and on the design of a slice on paper. What the first run showed, on 2026-10-02. Four advisors took five to six and a half minutes each, at 186 to 231 thousand tokens, and each returned a memo of 76 to 86 lines in the task's shape. The disjoint subjects held: no advisor leaned on another's decision, and the needs between subjects came back as one-line requests, as the task asks. Two advisors put the same case against the order, S3 before S4, which is the main thread's to rule. Every advisor listed the words it lacked; the union is in the roadmap. The memos state far fewer unlabelled facts than the first sort did: the task repeats the rules of a sentence, and that appears to be enough. The sol check took ten minutes on the fast tier for 291 claims and caught all four plants; its real findings were line citations past the end of a Spec, which an advisor can avoid by opening the line, and sentences that said more than their source. From fd5b2571fbbbfdebf0f114be39050f9c1166470d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Fri, 9 Oct 2026 21:25:16 +0200 Subject: [PATCH 42/60] build: pin the Protocol at da56a34, the annotations branch The Protocol's plan 40 branch adds the comment form of an anchor, plural satisfies, the non-conferring references edge and the role, layer and context attributes. The tarball is packed from a clean clone at da56a34. Nothing this corpus reads moved: 243 Specs, 393 nodes, 1,382 edges, 12 listed warnings, 497 addresses resolved, no cycle. The page names the new pin. Co-Authored-By: Claude Fable 5.1 --- design/pages/history-view.md | 2 +- package-lock.json | 6 +++--- package.json | 2 +- ...oftware-delivery-protocol-0.0.0-da56a34.tgz | Bin 0 -> 465961 bytes ...oftware-delivery-protocol-0.0.0-dfa1bd9.tgz | Bin 434119 -> 0 bytes 5 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 243e22d..81074c6 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,7 +4,7 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it diff --git a/package-lock.json b/package-lock.json index 0840c8e..b00fa3f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -801,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", - "integrity": "sha512-IYAFF1uJFcEcx0RGexzO/q0vZXWWIGfnU2AjVYbE1KYZgBFqo4QkX3103UdRs/YLTJFetuAXBoqmES8SB8qSWw==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", + "integrity": "sha512-6gT+pI2OECjjs9403Oeiipg0r4/fYwEdhYhVMZBrkRroKDAS4G4Bellnufz115htj8yvd8tcEmveHQHQKtG4ww==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 73d165d..911af1f 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz new file mode 100644 index 0000000000000000000000000000000000000000..ba8497e3e5d38eb40794946e602c14103f76982c GIT binary patch literal 465961 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%0A+s8QuHWMVjc+T2}eW0K$`7$FPa|c8%VoPA_s$A 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

c<(7gM{-Cs?=KtDIy!YysUSIE z@M)G_kD)B+o_Cm8KfR@@;h5wIy1FPsjiC?gP!!`4iI1-cN^F9<*8iXZ+NPrst(Bp9 z9O816)$4Z#y9NciJ&z%BI#_qKNQV?^0%hY0ai7-pmg|ti_1KU`(T5%=X*OIKHVWyo zCvIoJS=aK>XmV8y*lnj=RxsSzhZ|P-q*0E;G)^_eJ%brJN0_?Oo&n@tPBMM~#^`m= z679nfrdjLtElCEB*w#rLnPF+NFFuAdzQ`}zd`zBx2VabJt?Z+YC>acvgNgy&=du1G zUPv~ho8C%QpFN#Ogy7s@^E}rmaq~lK%P#7O(m^j>Yx~l>4_YO3;;9*)%-D|B3zSr% zsvz7WZtHtI+!_QJ?2|qY@z@Q4T9;VEnhn|8V#ngrl4!5IgA7aW2(Q#hmj?$P zrXK5xfS)?hKu7giUt>hfdlh zKvO;2XM-*ZI(>%nkv=s_8*JqE(GC4=H@nhzj2IRV+Gd8EAgR3x1bZ!FJ#u~6UY z870oKa)?VMfwKN_iKI`}c@&pYi6!}_8ao&!=e1~XKo|A=Kq5ygnd4QKR$KPjPuH4G zo@_n4)9&~O+?mR@0E6fX>lIbinKw8cPD}ghkehpT)seZ-2|Gnd@LFoc^b^XNtvXIv z>6_3DuaBS<$68G-jug=dQ{CD&aiW`LNo+s2tGBsgc$@7lLs#7_|4?`(;_2E8GKA&~ zz{>ne_4#qqiKP{Dv_kIQq$itoVoT)nEnLI|=zRS!iXdE~I-^o$b%Hy|PrJ5qg4(s4 zWT>^Y@ph?dZ8wc_)-EB)t0b=#1?Fc@Un@$eUpaeiGr->wz#AsGU8P#m9Vd>Znzp>y zgadBvN>>vtnpbMQNj}K9=9uS5pni=Skhr8w|p0B4%0VFQ;;Cbz7Z^#U{L7WL=K0Fpsjdnk&vw(h^*%ld=NPy(B-0c4OSSsnQI{G^)%9{N<&& zyb$))sxz)Vji2^Sn~Qc(+byVsQKKdEJkL$H6)qqR=wOTiNgNQ0XSSbwKhPn?+}9Tz zO=Rc3XnAzdK2Pa2CMy@%(t>z36$wjw{3ca}eA0dOo#1e&bMc?EmH?3%@h>4|=7VQM zqQ4(aPChWOTx=BEf+mA&uHns***Yf$V^ufndHE>#vEs-Lj)eLB7=E@mc3e4Ta(Y^V zf7dj>f_n@P6U>Lt(xZ3N&3EHR^UAt0l2G<(oYbRV{8F5>x#P}e|KQ0XI5D4_*fi8CtqB8Wk@rlwL@#Q&ZGQM zs-2m+A3N%w-E}oH23z@P-p!tL4j$v0WhK15PdwfR=OvgL7ea&oXJ2Q$QR?+YJ_09g zh$RF<>D*eg^>~7^7_*er*n#UZ*b|AQYLcdPW^^muXtH?5BPZOYX$LK)fW~4xAB|v= zxNT{&Th)*36o2(y;u|_Igbv<{0tYW~+YKk70rin1+@Mi6IFLTIuprtuD`o#-^Ocus z;m9`1B;j}#-4p9sP8(qu1#^>L7G@~4mHulvxJ0ix@8fQEH66}o;6qYU6Oh(&bK6`L zqi5hJPkcYRnOvQl>jo)2rJ6R9AELrhkkld~d)_jL)VV{f=^eUAV1r^j@Lwb0bMIvb zpJoYqY4$8dFJmpBH`8PIe^f(B(Q1Gu3R>8*k6RDz+O$>XD&TG4RE9R|k1NE)J;cf@ z?bCLKgjkO;GGckVePW;varUH)w!iuoFPi4Iuh56Bs1Zx%wy#3ux-9W24k)IG4BM)l zrHfxh3HYV2+BO19!sjNpIe>6eNdW@y;lPpVkS=gky8w>h+2XG4>E)D0-wp@geOaY6 zB&_j)8G;gKxuOmc@fH|ALg0RMXKea4?Ll2)k9jel3ecsxo(h<0gx&(mGIp4amn&YVJ5}DqqC@P7d5V7XU%{bc}h6VZkG}Cb2 zLIEM($c}fgF(_w{qu`+5?mGa(}?*$omXEod`%){L=?Ud%dRhjV;XddcFVXHb zDFbEu(ioNCTX$G!+J4TbEW4bP>zV(JI(Vr2uy65R?f7YG)`Ow}pas|(51vg%^NaBo zb{Nd4KN3G&mxgJPC|J2-Wdhy+KMnm$EYW?&o4<=Nw?IjLu|G8kU-5~$6pdiIPbx-# zW-s`KU<{2wHLqu7<&>nquI>(ONao)uX5u$e(wkFwybs~qeY0&CD|&F)L7L0(Bv>Qr zsXZppixP{r!*tNq4fd6qOJ>7*4EF(lYv$6i8~8w&iH_2|S!^pO(^ z;Q;U(I?Q_X5SJ5(mj6~hpPazbsY11uE72Pn^Jf{M&K{2M2NwEETzcx~+0-vOi#1e+33G}G#f0n;+kD3DgJS>MZ zaW)R@77;k>B6g6+uu#LCGalIfjfQt!@O+rG5J|xf5N8Uo@{AdW?TKF!DrD*8fy?mL z=={jId^)<}=jrnud=Cgt-#?(_9S&O99`i+o$D&iQl#}z}2y0u36a6!IFfGPyzz4Mx zxPfhK9+E|Rh3(ZT173_Lgx5ZDV4^~Bl;EN44;6|cHH{_&c#LoZ&EMw8xEJ4A6^)_W zE1YHG10!OjE*ndK=#FVZa$I`V#+MGxMG~?Gc~7SW)M$A%EH6h!gn{Cm$gmhj-Y>o* z9K>6;36*KZk=}9E0f3Wt1tIZ7k8l9w0k{*wWeEHTv~BX9w$n6-%n-VTWg3aMO>)L7 z7Sp>IElcY{_QT^KA^a}Tp>XjVbXdVUJ2~uBZv>FUh&pa+NGLB|cuHz?%@YS8ECR{gf7wY<+u5n184$_7X|6mS$?n)Ud01=Ot9Vzc5}ReFw_7u;G4D{du8|LrPN z-LyW{XR1!MB+9ZTUwbmZvW`duxP?-BSf#0w9)vFJPX8a)c}l(!U-u=YeXO6_gNka- zcTY>;KXqITwr%Gp=g*7s#PE8#ISMH`#-1ElToBvXAhU}ttR?s&*D7>Z2==svQC9ktG><^xxm_#Ld1-H)i{p;F)q;??A7z$lmFRa z?~=P1I3#r0aDiWV2O{0Nn6(T9A&1ukc0?_x5&JU5#Xehv!u!Q^V(8;*hP z>0!MHuE<4?Fnz>jJ}z%s$3^wrE1@I5j!SuB9)aUi_Q(BKFYN|ha8_gZEThlrDz*q1 zDh9ig>MhXe2~}>vl15v9eveZ&yvVoj9&OrUNPqqA@T>1WefzN2`_${fAM)nYx9>Kg zN{*FB4AI!lul_i@7`>roTVN|^4Zd;aW0$rEwv~Jx5lma=-g$KN^`o=7A%ksvq@{ZF z@K`5^Qk{`5+Ykoc)9h>db@2F5yxrIl6#iZhUy8_X&17ai-(SCE2b?B)GBhMjmnzke z(E)E%n&nf3h4`2BvL_q-;=89t65_vmPqQb!kYYaKPYunW5S(%eSCFJ+Pqp+XhsSd<)R43A z`Bno_9)8^vXm0y}Mswe?#xq%CrwYPw3Hu)}0lp;O;i>3v)i&BzmAx^1=r&T0o*JTE z7=yf`%xP+6tv+Srm+nzZ+Ea}>Uf;4Ssx{A0fk`GWyV_)49eq6r?V;qg@;MoBxqeV3 zr7!1~a8C%8f3@|$-oMy+{oJraP(JO+%88AFm>?xi}S@rU+d)gu&vzzV-IA z6EI*>+%?j&ssWbm5RF|s$5l5yQ2d_cmqFiUG{2jnOg*#=$8CA7bvA7D`>tMz-BIr& zvwN%&377pK)>b~TW_j+_K;>eH;Tpj0YyezQ+nJBtT;RZhoKv`z=4$!YzIRxA>cN}5 zCr-Cga&_<7&d&S&-JMrd(C^(WJN)_+{qu$4Ce%5G&ug~RgL0$oj|hmPPm-&w<)g(I z4mGF?-h!_IdIWnup_fMf!5Tk7LUO-+FLbWdO(aXG&iA}*T z4)B9R?QtBkC-y2sUL4!&C@wPaO22&yngWOBqobp|LLYiVqAyXp?&^o0oq7vAQQFED@7KADLv&&97!)L-3(gWGo*^^LV z%+WlK4ipGV+a4ZYokQ`zHoWYH3AAbPU2L68xN+jIVR;PJr`2|O28FKdnK=jj}4In@5!~eFx z5u)Ayx&wp^qqW>x9UflTIIE;x`R+kMXutumSx&o(Dz))sOfi#K5@ZD+NC}<`4xjR( z*GM*}S8Im}v7Nt$6Kp^Rgpj7RuHOJeTa@AoP_rd(&H10aoLqs%zAW0InD2|VR`PEl z^0&~#$v(R}j~?+@_p=*jt+ERcZe+N~lLEQUAO5^g5NNgq-eTPkVZf2(uzJ%XRfP`kU_pggl%1e#4R9v(;*&ZQZ`5!^}L zw!xL04Li0sn#{_!qHef4+6$*V@%Y^;9EHOg!{#AoXR@z23zmo5x446AB17z@>`WUP zoc0hSrgtOIc9FR5pW9Oqn-{#8YwQ)GB7xnL#11}lU~c!9HkecxA-sw=H-n}`?iWg{ zj66;DBnri*U8I_w&qx>*?z)<-M&I(lqXnYvBQF=pZSR=A^KaxYRjpjbx7R61HSble zA@$h5P_axeE7g%66GP{=6*$1SX?F+?5&Kw84Qi|l4LPEwG|O6VhGjN)QeOj#RVyXl zH{Zq{W(Eh;q%-M0Q;LYDm!xA!Rah+v4XX5?Mn#?5$m%gld=*QeY&r;z%7(9AFdz4c zYG~1e4u_TQZ6o(Jp8$SITJ9$|Tks$L@Q19?iV;n}(GzuU3N;&@+UljZ(>VL%H<{_J znAVgmX?5b<9H?3`vjoP0ykTRF&?BccLzPfhMdJ5G!+ax9w(jPLY79Ro7j2E;H^l5- zwgO@^o3467h3Z--%HTo?VU~$?L>cN3rYUeRfeTKL>R3@KeiT#`XsBWWTs-1Q?-Gfu z>;5p->W|;7XC7)R*ZL|TSIVuh`t%NbYSp~_uJya2oZe0M(Ixq6eB(7|$u6p)5El6k zc`{-}D3(rPyQE(Mu6H~kBBPzAMb|xtP|IS_Q_*r!ZE&kzp`uHdz$&eW%5Utz5E;bA zE)(}I;M-!k6#%CfngPX|TVUuiI@b7Ff{g^dJ2x^-0w zE9UUPKNs#eq*4J&Z1TxTap}s@Rb!T_$Fk`bChdDN0(z~vBjnt+Tnh?s(>BygBcTk? zOK&>pa_SVd>Fif9pH3-l5;b%s>hy1P)T6{>wAuU_%o;*`_$T*|HErmxz#gKzi19Cl zPk?BYi~-|R+HE-Rl-`7EK|#{7r>YuMfP&`Hs7OJe{lXR=4e<-etLF7fHRH@coi~fDw`W-RTdNK*Q^&nHx`+xswdvAZ|&FlBCwswEq-bM6ycR;Zl zW*MI#AFTZ7v^UqYKeP}2`tH!6OK0=lp;vh&4Q+A@Pe()WWf!{iFg_n7>X_yo3#XQcqkvt`TnweEraerGM*b@;p=CT6 zN72gHxM}jkE~xQvRIs$A?f@~Dd+uVFJEY4jNwvAwwH13k?IvkklR8dM>C;FQxzz4#>uApmPpCcm_Lb?+_C!u0~444oSZ ztI^F4#DVDzDF8i#p7v}}fG!9$msad4^yHUN>Z9u#QnO$9!Y>so`3(zfu z=|G}8)6h^Rh$)^x**eT|`4u16SFR^nA&D=(T}I zUbeir3E7og^39E4LY7y0szg?zD1CW{<$3)_z-dN(@#1u5XF&r0=Ciz!e4%t}e%LNc zP2iFdePhQXwT*~MZs6z>n3$2GztNX~ zn2~SI{JPPY4MwsOkB71k%gyG}0XsEewPuCY9w3upHh}v_J&}yejDe+ryp#%(_l0Td9Xg+DM-KJwmmuTCU?}qf> zQRBuDx-Lf7OAEgiP-+3sy2ek>GQ|9_YQQ3VOI~@YQw=$afcbGDg1nlPqP7*A%EXO; z%RjE)s*+G5HhK9-*are_r3M-O`$`fK#X| z_cYQ&fi9`}yboGN0>y9=FbW)xiVOI2GM^cF72-}>C_c6hT{aD>b%2tG+!>^vb6mS^ zB7b_iI<=O-_G@c-+YSi1r^E7t5kFZO>c+trWy>37NmqGU&M#1qNOtI6*K}J;Gtz2m zwPppsD6xx?z`kdWK+OtuK7k1KI}*Np)}>0c`tA-Cbrlvcb#cpd8%a+sDCzB(ShBef zCWST+WNeS0`V!Plxt--?l3Mue%o5Xt!nkH8_*HSZj=&Jq@azd{x56x`rn60T+UG_D zPo8%3B7H2w^R9Y3HPThGH+WIk+x>EJ0*i=@!y*x#aNZ#Yw{Qzpfc^7i`T^SmGTZ?; zePAYJ>pR9CqN?EplMCFGjRRwvtiV4fAw}ILIcyJeNxSZUujG_GHyqXUM3W|zwy6?J z$JeYLw9%9}r`GN$Fz;PPH6pD0sP-F8#oE*)9}g0&)@iXg-=*t22neZCsnjY{>eML6 zhFb=_PSjHO6;%zSL1jmg`5pkFMz-3EW%$GMPAOQkfZJU>k4V^ z{v=k71+mzw@)w~5+e~<6q0?c=O~p=8w7Q=9F4x}E`|u)&u6hqZ0vI?aZd=vSU@h{A z`sQhN;C>#4M!i>Hw*GIx`TTy#Anw5GqNDg5PccU12K3MQ3BCL3-B;~{zkYT2bqD^; z{_p?(KfaGpia4&~C)Bww;z6(r$;MY-?QieC;`F;u{waID{bJ|!4j2YnDcdDgD%N}r z+3UrXsdI1BN1qYiL+zE#v+0e@bSkGzh410kd2=;xV<+9L$(&cwVaHQ+4g;QqRu;3w zG`bcWJaWoY$AT^RMaMJ0TP|0y8~+U{7ieSuLAZWJ!iB~rks}NN`}H+n0qY|&4ISrL zH+|>lSwm!*OHZ?7ozR>A8q=2(Uoq$AOz}PHhy+vz_VuByzRbR}vHs_IaWX9ZbNvrO z^0^6#Y{E^Mpd4(`E+q%0h|SSu(*Dg-b`FIp#+by^yj8zSZU8+RHiBY@Tk03a8~;Pf zjFspZ81%~w9pl1x1K!!zJ(~jq@cA^9(8F6};IGEj@2H`oAKIG?+h|XLNGDC92eHO{ zp-l#NPPFaeSygxrNg>5Eo#eBBki%b>9O{i=N?2x>BgnL4AYv%iFvs-NpP#ErS&C#z zk*Vdr4B`#6+o;v{WCeI?wa+P=dCF}$u%wBzng_(86r~rhMCT|?ubR0@)3>a>v3=4X zDGLR;XIP`D*@s;)<#m-gj8sPyMWB>=xS*i8$?bhHwR3{JUgDhKExFR|FF*Px#M zv=husD2+e4MzX)2-T{u`C%FRgK>BDjVc})G2?~qjPteL0^12ZWRbTRF?Zmu5c<Y}Xz9q7LCN*X4sub&9`yY9Ro3 zCjK&q=)qw)OA7;8vwOuW(h!Gn&~(tc$j9@11R$6eKM#v52yrK-pJon5%i?4{1M^Xf zM=j@PXXGXMhSQM&fS^*K9kWXhqA{s1(}k2>IZENr7a!sM;-~|wjAPM%tswNgJQ)u6 zA+1N0`qj^)5@#Xi6uYW3D10(5&u7JO?3X+IC|M+7J0|m>V8TaR$$$zWGMkIZL%Uh~ zz2w>l*t!JvHbvBQas~O(H}H>dpHg8(Ne>0j;^a^+zWl&6I8+7Dpu-a^he&<$-=yn@*R+ci5x9dV~ipVnhi)2^st(H1LxnfHh(D*sny= zs<;IjK3vL=#dSMMTmcUnT>0P!r{91(9DM4H!ugR>Brr@UfV%4wN>&&ogxc!;$03q0 zIP5csg2igA@TbpfbtFff4ZM{HgCP`eLN6w&8`OXMW^ZSI=TF=3cV462?k|C4%Tr&& zGI0J)Q$?CIHI)MLvMQ0hrP~`VPy3Rg!vGKctzDlYZ7L#K29D{MK-+lV_(;qtNWLmYEwwfj-yq(%Il~zl()2g=I=(@fEYPbT0rK-N3sFMI#1Kg(| z@ApO!_+gq~nBO6 zN&&46gS#RyT4m+k3jlTCK|tVQq6uZXT2TH41Oup-z$IbmZ{+PMp`2qwgB)|J$_%Az z^a^lARet61w4B)#rH^erf`|BGGm&yoiN;>m*esiTSf?x&VZGP&>>xyJ2OusHg%<8h;s#}qA+G6t1+I+W9ezknJsSK%Z z#_m3{WfwpnIh{iQO+d20&UTeYh5VD~E1d?>mcR&NW-QyIt1=*X6KMufM=#vI)Xr(1 zf43r`XV$ulOA_PA-MKQjrXt91oX<1J+sYxv=F(?QCeGgZO;8!vGNAgrx*ohF6v0td ztza)L&zVjwf2;VS1VI0|CL=mCA!1VEi2flJBEGB&Ijc*RI3_Fffa0{OiPF7w*itFA z@Cxl{O=fJRgO4a4t!s0Im+O>|1;nnqXlOPxB{M+WB$F_(?J}iQK>D4Z(LdB>RsF+~ z*R9*TgeUORA}8J^^HM73kfx#sUe7N7>h*Y*|I$2|c?GK2fF`<|+lWv(rA@|rP*paP zobFD5q4BCCS1=W<_JoAa`;KFNN__?wB%HIQ)#6EIh}!VIq8LXPrar$$cp~ifuSNEf zu=)wo^P`qx!w>1i8L7;dV13t`czmTk$DAc@a(5$iQ2(}W19_hG&@n@C=#7(Qr?MTX z#X>=K1q#{Fnnibl{m{vzt;re?K$b%OCG3)DZgXN_M8!Epo?@XQh z$*eccnE+lI)i(|M2p(kwqpEqF`8T!UX|$Y=clJ;d!Hlj8<#*ZI|NQ6dtL(|+wSVep zp`yitogri=MKK^L5!(JZ{62#YsW_rd@Fs;d6|H?Yf3f}I1ySRNB>ne#kfV{SY+C7` zr=1>Om6OS5H1gkz=_IIzWqPJ+SXR<_H*Ie|ObikYz{Q{-b>avJ^|M_dK(;eNLddQ7 zZ2IyPEU&au>z6=MqoswmCDeDJrYRBA2$iY_^L@qYhrbvS`SJxyCC_%vA3V3RrHeaX zG3Rdw-^^$v(2tpaHX_+q_6vnv?jWfC940u!s<@QpEV9O6%r56PBlh0xhy#kQ{@Z&J z?}3ehg$>}VlRt@emL^0D?vt*x)8Op)`yo741>BUgCJkx6GcQl(5S!G48Vi-<%H+N_ z5||no*X$1*VW@!@o+T8veI=SD?rOjE#AP$$wPT@2y^B12OaN4WnhJcg#zX*P(bbsx z_?t$-=?BtBfoq6P>w3C$!HJ?_JzL`kNKY$)>8-?l@xATFwO*47HkG7R&Bmjy!}3*r zX+$9UW38J(*Uu*NF+v5^O6IUWXH+OH8NSXhMrLm+$AkC1%ZXXlb&8ss0qL)`n6Rt4 zZH_U&Y_Txu|N;JA>LH(8B>YA5X@V?fNaa=27n@MMQ6|!=?8L zFS1Wy@cHy#pB_&R9{2vA!>>O*{skhX^WG^~fO}sbZerjx{|#ilFAwk^_vEY2X6K;T zK5X!j{el|2Gl%Q+(>udKj5}XE8qPPobog@bL2BNcB*O3g>}A6LZKuYMmYm3zn*t1S zZ;1@}!}7HmD$xlepu9nqyTL^7HzAGxsQ6oI7&#mC1=j2aP<1omM3NP|lQq71#$$A` z*v#PH{xlz-6`KZW(D({w$;Yb8V8KFO3H$#)^4_((t>Z`({jOiJh4^Lw1%xcxnK=iH ztkHvVIFThCQt_NDn#Y8IO%f3ZaIgW(yb{*BKjQwv`%7-utGlYZ_Xa>wigQlZibd>x zS65e8*OS*k-I?{9k`Tfd2UH0MRFGe++k<)}5_|pP@xe#uQB_zF(s2)PXlPqaj?(8K+6>wEC8 zxV&^bzv%jCHk5eXow*19nl3PlaJdxVJ~}qJp5}lxjykgVErASsUNc=!ea)u9WSMo+ z%&eJsAf!ZZZ7E$%n&o|9-@Uhr-4(9EAohdg=^P<8tsZXLEWRe%A+tOaKWQguj=ob_ z6L*ZATJVAy&$GQ51yV?1=W5r59i zn|fz|td06#84)|~mTlfr~Z0L2Nl5 z1^urQRFh|tWUk72H`Vhj*tU^bxm&~JV$06wxX4chVBU>S;6|56L8P!c-ALa7u=&uC zaPwf)&P6t4Z`#oaQZXNvgNlq^q2^=y2+4`5pl!T0se2>)w%ur2x3~afRCreI&*!tb zt(nX834(75@`kSh;O3QbGVZPhl%P$53j|shzQ^RlAStTqst$$o;5~VWfA7;WFO3jHXwHOIy@@10S>ay}UOv+cd(1OTDn5Sk z=HSg=pBX3|$`VqzJ$`oZa{uV4V|4wL5`=F0oMT{({lRgbuXzwUiL+Z8lj`ST(^&}r z2JM}p7tLpg1p}sPtu;${BaTH#5lHeBT554qP-p0MOI->V>93pcXkrB(gH);XM2@T~ zf!WK;@;#nLNxsEqQC{o!Fx3RMy|IQIT_GR8l=BL+oU|VFc0GSv4KK>ef%|wi7*DFf zS=mws%H!dJjZF9(1*-y_wciOY>GyYKd38jvoxLlkQK?!joqDs(#2($Re>?}*@?RVl zaG1sRqyGQ;_|yE+Pt(r-C0=3?96H$^UY(s)CCK#SK7%*e&I3olY;ljRo1@RiU!Q2H zis!`Q(Y|{agsXFu4>!^AJU_~>?P#l`kpf2ca$G734SbV~)H9X-dDKgSn)?!ry}~wB zl?PIt zE1%|6d%t`#O7UC0UfG)Lb+WNFK_eXIkhrHI_ncagZTc}rOZ-^@E zB*;PSvL2_+3vMm`=@)j*+0JNwO{~sH{;;v{2Ag+V?2jYhDXZ>{r+OMq6|@7;1NjQq z*j=A)Fz;!-<@Mb%w%w_l^BSSWI=OB0;`9}8YNWMUQzSBme-w<)#1d&o0;PeeV0r+N z7{cX6dkCM%*--Z-25f4=XxEzc#`fcFD-sDa2uE5&-Jb$?ml+MD)_^u+zVEo{TH7qu zV(98&CNZUyzTAx9L7o3h8W`383j~ zOL$mV0ENuJVlSWiILPbkbSQUn>t}JYDT`4wU+B5NH3DJT6)mytWamrR4W)UyT+1$km=a^e5pmM#)^1g9)~3j#BZpfKh!R65c0AlMR^jPKr5 zLw!Y$p*tJxN8@h9dy(wKhL^)8?DLJd3U775S8uo&3^#PTF*C&WsYT4M?`5~tF}dcB z6Rs0xsxo{l-A;pkCq0~7DR=T(o!ipNH)=jKV`2|xqN8_X8np++qX~^yse)de!ZAS0 z>_)vhqK?MrDSS$ECJ9~oWJP_E^(nZMrS;yRD#W`ESci`)G&c3pb!DaAxn)Kdhx0tG z4u6O$t9N3ipDc1Z1Fu0xD~H}kuT_(L+^)|*7X2E%a^Q2WQ--ZyYk0-p>UzV2*e}>C zI6mis{kZijR&VuBT(Y^-)FEEoN!VwSJK!7L$RIlUMwu#Zk1C}A%1FoZw}*5=jM?S5 z0vD-ME4sscj2pSpns!LEn0y&a3hL0h&IX%eXr`SctW&L8g!tBWT@wjm!1s{xw&nRZ zc-u-1H1Noh)kv>&C&jZ`B5B}`mxu%Zz_lFp-5p>^=nA8fW$L@j#9bu#Xm|&C5($l3 zcT8maS`{n^t4w%s@6o*bj|v=Ww1uzT{4fa9msAzrSuY8$SAu$t;)#xaARe-TvAoqV zQKs7`Yhp&-BskQKLqqLGidHkj8wQHGathSyS?og zQ@fu%$dp9nP&R7+&_Gf5|JUz6>~>d08lo?jMXQiQAtFoI*5CbscJw~&rwU=2ZuDn2 zYwaa6QWYdp7Lp4Tx#u_!Ab*k`S5i?e+`Hg3%Xrj9klfPl_4cAz?cQ=2D+&pd#-7Q< zyTq!$iFlX0|K|q0+`aXPm!C6w3p&@C&@JC>WM#n7SVC}x!6kXdMsYa_CHGPoekCsxH9Hgtv&=4UOAV8>G-Uqgg!GY2TL9ata9a6zFqv*+$?S-f-8TU z%_)j&-8)CjON9%SR1-G^uk^FyGd~!>;#sLUBFoZoLMp_T@lh7>z$U<~8S~2o!c`Px zx8^M-QS3K1_7ucNx=2yMF2+|k-4g7D6JEJ)VoV>5swfaKn;D@rc6okLj3KWWvc%NM zMw=3ix-*B|CZBg-^bu1H*-(1HMtGCwHb9y zSSpd#C_ZB=-by#LESAz_Ie3|Rh8^lCHCM2A>sb5AZMe|hW*n&&AEWZ+VNo|p6f8rX zur4NN*zj&93PmK^N|;Q|Xr6SFw@-%N88$I7K^67Uays~BFrHw#C>C)Qg|Y8r_Pdel z+p(AydStm34m<&o^xk#Hnt<4~)bKlQHhq|=_ZR;P))$wc^1 zRT1YG<=kPc32k>?I(}-fD1V?qL#(`iA1;TO7Dt+?Aa}0+gVFcYa)yBd$&KX)kc5Ke z7JgckSAQw5-_PbF_;e@jm={`QLh|vLJ8-~uF5GQWEqrdh@Bh4i_?Ls1=)v{#i-Ub| zx;lFG@`&?rzvoPM4t(;b$n_vQ&DdQt#rM=b*~5b@_jx%0>4cc`xt$ouv%)Kw;VOmO z)%^p3p(kT-7Q-;6hgdS00Ode#w_0AhTNeTpPEkrGnK*mUnAqK+&#=eozUfCX#fUSP zgW-j1xC1=`#q!R+gW_mdP6zYx407-QZUHVphiJ;vXOkZ81~cpy?%-Y0ppx9NA2MWf zO-`nLUq0XW3C!>7T;xR?CEv@d63j5br+RTQSa|SxF^^1+Ab!3aR~NEs+~9u5bOcG6cv2SB- z(6XBN+I8fn9?vurMbRHJ;&CYKqQ^4&T~eCL9db~XM3a6cu!^6L{`&p*`$qtNS>ejemQ8=QfAsY5;58nzzwH0bBd>dKIAY0BK4;5?dx|jnlB%BY z8Xp~uls?xxqxHCA>>E^$h^rD#H!eSQ{?HvDxgH^p4qkr$*B6fue?EBmX8+|InIDh= zo?h_tC#6z&fZ6v2P&_|!_e%E=w|p(xn8er58iQ^dvLooPz{E& zE8tziL;#P}2fX=gk3a4o9y~vIO0@8YS7CCL&QQ0dyoTXRxFzIE$aH82`7=)Y`=5{g z{P^`g(CwG|7zr0M=pFyB{>i=mPu0Dz?sMc>w->tBPSJ)sf9OD^cJE%tSA6l9NU6zj@{Saxej_^j2|BV&!6QkcRZBp{Hm(}x4>O*2wJ-$;pd)iu%*fh9TK(}N%z@e3Je7cUq ziA`C!NFHA3X6=KIQq<6>iudXL?qPO^J1R?ba|iH}&*I3A*77HSC@zz}D$>qy!(!@}tLh zQe}r4CH*s*)zaXQM~n;O7)6fDpP;27m-q0)yqs!%I)3ZDb=<=F9CRGUeA=V~iYn?* zrdT9vGCgbrG}}Ju7#~ITHYe#Mp+P6{jfAgH1tg(j0u^?=k=mQUCRf>b?u80jD4766 z>*1C5*0BcvQ4kkuXE5yT(lzHJO7CmR;Go4(j(b24{;nWUYO+VwUzofRZ_wlfE#K~A zWQhAqojig%l_uhCCS#GA9RETSIsUshnGr*TVjgV?rw&VNtBbDS-Q=MfMf?^4Dfzf4$=E@3o+$Xld{2T8)h5!K&MTL+~b=U(OW>;zD{lG zy&FR-k*sG7M-}_fPx**EFTqUN5hgyf9wmm2VC9m6HZTT=|DHR@9FEQ^q;$DN!LC4y z0TFefkZiTb_H7gNnkaw8_+-}OIpF?)dHfZ?I2p zOb`vY9>Chybs6o{4Yy;m;YQGZ^<~nl+{Gm66Y1zj25j1v$ z_n3Pw-^m|)-z(wQsQ`IAqCUa;8UG;DXRZ#4C>l%NX32BkK6obOFXgnlSd`=GZhKOm zfiiS_ez6Fl!r>$00DtG{f4!&5qgzju*w8?%-nq8^7FAarg%p$JFXPz~IJ?L5`QRF~ zj+c%Bpjv%10!2^n7VV#tJZPOL-7~Yl*kwEJqhpNuVNwUdpg;U{+?bxQDlvxrG$3Tc zc^IlFrV+-#8K^{}XP}F6AF!Ad7S+IOtfw-Gbyuj~RHFInqrRCYPsbE!|6MyfG zr{Q{PXL_TaIsmso{M%`dVbrLuneZP7n~no4v6)A{v_niT^dJ*SvnY;bx?NczEbEy6 z?t0jqM4_MUDjD!Nch3r_jqjTMv1e;qf(pzB=^qZ<;U2lm3`1N0I=)<9J{yy^Skr7* zB%hz75fPhSL`}$cM8*PFzPLiaXyXxxzROv7Kb|_e=JN&lZi|aS4h5x#aKcVLrhC1lD6MPAPZGGIUj|zgFpGz zhvP)hK?`}V?i1aFIVWB1nV69_0Z#DI%`6`tK*=0ZKqmqQuJTCc+vl6w;NfC$4*W&i z{reI_0wuQTTw?rH{=EgUgM0~PH|)3(_>+a5-B*-M_o&mrG~W3r75 zb^CP}YD7Xmj$;DZ+*rFi^^>=r&i}5{$k|93|85e>MP)vdTx4wGGs*3ofhK!0o4s>) z>pMz1xl+Shcu^`kmCMwJV!@KApL`$S_Pnfivb{{kXXWsE2zoTEwNZzI`S4=AD2EHv zr~4P3p+jl5ORk(=fM+}oNe4G?`?h4XDnUGuPl}uJ21I#esC*oeIf+x6^ile`{e+N^wTi{XX$RUPs z1Z_=-(DRo3xL8hqddE2G=|V0n8;AcBK&U3+HwZkm z*Fm=LP5FZ5N6{9eke`;j5B~eEw;<^TI~guvF@6WUyT8;}dkzo$a#uC`#x#b488Y3m zdx@^&VK2V`7WdgXrGyI}% z!JizGR&g>Yke6TbT5+#~Ke8ZU_YNk6z5l1c@hC!`vDjIStYT zxniR2Ut)$oA)+`NSEzyRDuJ#Ok`g;ynE8no=o+~*cn`!_8tPT7S`ayi;qs_Qb}AvB zuOnxU=sQqe&z9~KxeKB7?@P*8q*lfcjz z=B(53N|X4zZ>kIGVuYGtiRbWc2B=tKo#CQu?_zhldOFkqPh0DpC_5K^{>~;nwB|NO zMJ1Lu>SLbH*C_;QX+BeaM|)-0SA1JnMMyT|E_U~pUtHVkV9&(Lr`7+-y(ZmTaA!RF zj+h0C!xU*O#wJ-$>K3)D8diE zD>|N_%yHC<;@+mzoF{p0}S+~T7c z?6|+s9QPA9W&2~|Zys|_?0pm;6kGbwb5cU2!G@z^!V&%>&x+ca++p#i+Ua4LtGrbI z6sM(TWAt$WOLRCSXoBwkVB2%|7aE;^#&bjb88Km)!zi}BQvBF4JQBMmsoDuJXs^&z zxyKn{+gT@}B6SbB)=J#k>obff!!H+ITewT-&xlc#d+keY)HGQAh z%gQ`)^nGQr$b zptDsZ`uu>ggvF8$e~ek$BO`S~=UpW!iDR_+xNt8e79QGknKauf5}pWJ(4t5_=fp1( z`*5PIw0-Quyk#$6hSaHvdlzOv7hI9P;M1of!X}35 zF0l{Nllk44;9GMZ13@NW3O08ou8G{J4dUo+Ei!1M*SZ4-g zsbiPoknB26k0$nW=jUa`n=eW|%#RfJ)Gc<^d+>8Uy}~{;y}7jUEhi3h|JX+tS{r~; zY*aul%C9~o;9+v`(Gdi9e`#o>_gJh7)Ad)aN2jak5$DhBZ9TSOhbfs#ozul{cw3mY zgV-OqhA#oEoD=)8n~oMX*xYJDuFwxCJ~9pPt$}bejPn_>>fpT10jNug75A8fdIa|f z@=-3WCPy9*OGuyvuvBt)yoz`$tc*w54I**G)E*Gez@#>UtBJ05o9`#rTE##xXC+)^ zoAwl+}V25)~`XlWP0Nm z#VAYD*GwDxl2E^V>I9%dLE|ez0cT@JOP*D6gt^1^@m0PgO6> z|4^K}Nlhu<}tjpL(mg zx^X1H-qTl(sr;XB`XSsWbP4&!amvcc-1t;y`+EEouKG+@u;i_JdiB>gPhb78pXq9` zZC7rA|MAzC(acch;=R=Vf!8ALR)dBvrpTmcqDY7C^WQ`MDu*HPmQ%aW&+k>ipFv;% zde+C&(fub&w(c8GFCY|=d(Sv{3`@+=g22A*tCV?2*+`A)nXMd^XM^Qr(f=ZE!gZSv zZ-E0fgSZal+S+-q_?LVCg3bkEfQLOGAlxN7_ytlK`3n;s<&bag7T%SC&%h~;W<&BP z&+>tvgT=7JZmJ|Rs7yHPtq2B%>yFd80wo(Pepz6;3z=luSMd+=FMay80sTx*Fc+VXQoPBo}nQ*1mh6 zRJBK-sTIEx6`6_{2;;K;>1MAGJ++)m-LLburamB+Haf+K-)w8TMiH(Di4BW%*>A|K z$gU;UjC<_%Q8Uys+#N{2&_*{>-lqE6TQFBK+Vvag)Hfh6sYX4rqo|+Pg>{kpl@&@(C zSNI4#t=@C()p7wVK@YSf^qqN0-oA$1k5>cK7^LXeqmsFW_Y~eg(Lw>5@iLJ&VoF<~ z$0g(QhV~PF416ACwF+MnK&>@6hio?>-Ze)0DIt6h5F(g;Ys(euU}$MDl+UpEruZ&C zxZdWl;OOBD4J{_x021MCTzP{zdfpp^@Cosn=hD)5_ufso37SbgGXat5F|y%jU>s5o z0b@04?%+1jpn>R~!ZOiA4<^7Sq(Wyiv=yq;smC0EJ3wnUJoqLY<10cjNqNSZb;+;jYDR*fm<|KxhFz&x%+iB9XDdcG~s zQ1(3^j3>}f03X408zBCs=m>@*-4LM+&A2f#ZGF`JRPx6i^8me?yB34_b>`jR$U!-U z(9X9{2sj!Id+Yg(OWJ$yj=9CqmoJJr)pW&qE`@_u`>AMG=6`1XCgk*JW@LP~H)~?fMO;i+chj0qqq89K z-1Q2SfmnuTvFDB$m(MYQEv-v^4{Ww&OiJ_N2JukS0?juediD0FK?$|WJKpwsJv*VE zFZOxr?*@m4YIa$+z2^W%L69Fk@N!_Y49>%$B4A`aB2>Z-hEOI4lV$9Oa_w7srU_CpwCF$_H?unzjiFZtnaL9ZMq5 zOMp=d`A|+V8{OU4H5^s7Pk92$2mBe08E(?i|q_*KkcNJzy zi>;*PU88OEOC>AMeXEmbe|p-5&naGv2X2rx)t)?*7$-7l4zk#x{~#%sO{#;qFFQ+DWh{}xvj#)W8V>F)NN3=*=28yl1Dyt60@Se z|Gn90gI%^jPjS6cC7^4~`~OaE8wF|#sNGE9Exp|M>86wQ=(nIbh+a%)lIt`(o$06e z4IcxEhuOLuyy+z3yWZ!ed>D+>h|J`z%IE?M=43US9~zhn%+x8QW$&YZDAz17_%dvB zrfQy{*0iRXpN^~pWj%G4fqu^or=3A7+8@jrB^Y0aX=Hb|!aQ*tfAg`Voxf=+cuAET z<*$#E!3(eKmj%)y33%w+fnhli3xr zoN+$nwjqYt}q0fu<`o-gem(nQQEY+z@`&#>FfJZ&49eJ*fW*d*{TjHB+JZ;k+8Y5_F;Woyye6$%Euj%$^?b6oxIn}_ z8OjthYIn7G1){xe%q1P`mi+ldmMeKYwD2jJo<(dU=n1}G8-=*MnG7m(>bE%a*^HUP z*>W<%Q~$Os=&HrcDz_6P)B45Mk%b4%@~Sj(x!l%^DoIGYyEY^37f3_9Chsh^^5++h@DP};1pqPgtIBe`aKEWUooUTVs3)&F;g%KuP<$A6M_ zt{{oQ*AKo$P8A8o&cdPad@$v{9R!B6Um&mX+w0V9mHF#0@Cbc>LBfESZbr&gOfZTYvNI<~Eg0 z(P=i?Vj*P&h|~ce02Ez^_;`MBc=YDyqkZ&YJKAlCL37+1mDTus+Hx%Pa@;!6v`qG>I72ZFnd(TvLyiLjA1TAzxT3Udp;K3Mmqk1mgX-1$sW0n- zIyxA7#+fIiT5Ja}L^~o=%$bSj4tC^ciRe_73mA?+N27JQCoPnUQyqifc?cJY0xD|M z(JCpZg%C1}32bpR3k*j?-C)FsPS$sYt6SsI@$lUdt-5N16wYLnrUFRqr1L``z21K+ zDD(5n$3N^JY4a2A%tMS_Pb+$O<`RTuK!P*T0MS#)L>`e*C0<4Yiu=~?C?$9c;}Qhj z0rNkUhY&AACGkp9#bK340TBIswj?-_ujk{-F&zAtj%{jVCIbzBlzd8x1N77C;inoG zZdJ{H&u)y_^w28JcnTaHm5Y>k>L&VzY(xCyMG+mFgLFMJ{1=ogtNDSbnTmsOSruEs zvJxw+I*~}Z*XzkWNKmsE;RpVVBHvZqB=Q0`?P^@WRX=bO%GAP>#`PXRp3wyO!j zfuZ;TlkvQQ(|S`@8@kz{q&_=%>@B1Ht^^Y*$>+n_e~3Ovj8M$@1G~K`J6$v6XXUB+ z6uFVZ0qXK{+)caPSvqsfCrHLk9sa1yI@~~$!}6@M_59~8&k*E-YCJxlgx7vaaU&^M zkH(xCs?P>;4A~PulD(om7&H&rhH?O6d!K(Gg_flb*on#aQxjCd^7YWW-Kz%%RBW z&4Prxenh-{|z$0#P6F-RwBk%8I@XKt@A)9o3 zC1!|b@mYZ{CK4b4)eduA&UGE+`+r^7TKsV@C+$m*ia9KRDldg1=_4~hc=#iuPXL1> z#((;(vA+)gMa4?rwK+r>guoS#fnV(qu1SjVjHxs&fNIi)hw<=?N0I`6$ci-5>Uvs4 zbBd@@1lk(_HV@VqsQL~hB>x`dGB>^dQrV7NeN*Ph-er*^PpRyDcA+shSamY zMpC2=vn@3>3?Ns6vy=PI7D^#m%w=+h5F00OL(Dz`}0|Q0ZRPGFP1hv{D9>jF_-Bpq1J&Xj|^k z&fE!nGizDErhD-z5H)z80YY-&8f>M#eLgNHBY)Q=7c9g`^&|v>rKa^DIvdvWR`;O0 zKpv`UCBWu1dT#d2!-QQuRx>*3d=hS}p6mwHA+*0RGT_f}Aa@fEq{$4<6U>;W;LkxS z?5|AUAj8Go2qG=Q)mLW`M*5+)g^7vW3>Kc{baT?@nB0JU?Zg^2%4t{hj5=Lal)%GJOFqDX+i)GOj1R;b#gGMb4Aa_(7c;mlL$BXLQ z_M|)mmDu?FVi6u@@Ui%l{_3Z;^B`h*vF>+Nms8?e8JyQJ9-w|A5?aTx3Z=AHC8{H;nd!pugl{M1WwsM8Q{71IOh>cj!fi+1ewE8qM^Zb} zQDVv)qA^m+hp1+z3yzza=>khs7gRF`S{+6+2jEby!K_;4VB|>V|5#FF^L)3ahK85^ zj&#D~;VV_t$+&!FE4Kg3w@8I1QWihd{C6=8mJfaZS5N-%i}xjOC$r%@kt@aPmO|B& zufIzBl9Xzu{f>0%JpQx09h^lDlftqag(R)~F)+6DUA;T_EBU9LDWyoxcd zo1oAM-+McbdR&r1W>eu)-PpIHfPqC1BQcUkz-QOf!R2_!0F0=X2wke>BqY{pR{r`9 zgu`QXH+90=ZmAUX-HP?2n)&1MtQ?N3be><9x@u8w+##2#&b)lLo0%Q0re}>?_1>fF1P}xs4uNyyi^6vdFgg}*j1(D4B#192S8uJLNT;!pr=2o zNa6obB%!GPISMx$>0Q8jIY9Z~?>QiGp$3rDZvc)r8xZxiKIOq=Qx3W^-KcsT!#y?7 z^X+;*0awl2OggdgX{5}%JT(oWT>NS|uFzF}pm3>FjbrJ0-nz&%w-11DmFLIByPSjq~4%5H?JxwcwC6;*@FD}OYxq`&U!F#U9jNTX#SLN;lQAmJ(x*N;jyJ2e9_ z;cOmCsB!&$6S~R|WD*rL4Ho64YouSc+x)=GapQ2VcmohF$4THbX_6->C{!mw8H^~I z28^66Or|QeysTemsSA7>%ff<8FsM3B=ZVk|OY!fnG5sYYCM=bop+YcY!V0lxtTAH3 z8i_}2A;P#`F!V@{54pmsTC23Vw^CZ0(ZbeV+2{{kZbJpg7#mqO^)uIoY2C?9KN7|o zKk&3djZbeR&dhYYvPQy;T40Xz<*@3OHe6fzByTw?lg$*fpAEL!82(^6e>q8Kpp2qw z*cB}0agmn$aEL@!FGXgj=F$vohU-Z=~o~A&hFuNHS@vwZOeBb|6n4R8-$G2b}x2{T%rD?zROO8VLx=$5A~as0k}c;o_Jbo_ojMCaKsz4C{l!DMzj(Bh zI8Av4QXw1-Egi%}qyzXP#%oYZ0+=Rdr-{j_HwK|zE7fZkyNUwu27(3(G z9n}fiM#6B~x5*dFW9CoAZnHI1mL^Rc@(13st|+oHwDB5095)_)YA*8oMK=y)rMYQ zgOh00z9Oe+@u|)q!WzeFXt>6gx)-@r=NzhQ1Fne^TsR_Icv$BUa1HXsezP}@KGFZ* z&7C^BY3dHdskX>x1b`pC)c=@JdA;|wu?}PB&Xr~+pW6FslZ$xWeJ0oMYc4hHUpctE zxw$?Y-1Eh=$wjLgZ`y>hyxgu83Qe|a;!uf$Y=GekK@MNSt-%%19dufz(@PKBmNX_F zLG9zs`TWez@kgZw&-z_Zqz@p}>lvtjTwo9W-kx103NbibXsJ1_@aO}bt)yZP9yi@W ze(_n>uGDCoZ(T2tQHs7X%M^X}Aucn18c1xwKM>}FY#7eW@?0T`2Syzoj3}1Kbl66k zF?d_eCd&m!OK2?@XaB7gIdKpPdsrkirdLi!)qgt5)^7Ex(N*tq)B?W*49@VwVE%42 zd!G&QmvjU!a%+3%NKavih9H935o$uW)CTgZp{d|NPWbgi#g=&P4pIWpjt=LActH0g zgd-)evNy+Gh%l7YAU~14J1M`XDtUgw-sIWPGP}1FTSlWT#p2iiOR4%(M<0-Seg=fq z5kH87+HkW})U}I2CD+mui2qj34=#c0G)QJbi!^ik21u4!Peb@V$BVr-NKcBEI#Q3% zMxZ8lC-ANYHGs3M3EmTD7smmDj}5OxKY#9S#O`k59ug=Hp4i7~LU;PmlctCLp|7Z^ZmQG!Bkx)m=UDt{pp#eSw`x017z5Y`31gP=3?`su2CDPV}}C z7H&CRAcf?xQnVrTvh|S}3AXZ)q0{$ZVtIkL*AeONa5BC>m@mfY#sSjZF%qGobq0=P zDkRyZ<4PWL#r74Fg!yG0Y;1nXMIYb^vz%9`Jtm6pj{2|^@^1Z3RK}fb(mAZkAq+0tgU+uqq(;`u#`uOJA!67`}SgX@FaRqrwi3-Ppra}NXoS7{b zSIY%nbndx13eZv{52})zrfXssdq$z5kU-@@ui~0<-CR7g_h6}Yv~YMn4<^z)w-7GS z@jeA4?#8LE`e3%}E>s9tySP}z0R&+>qoV!Q2Of9Tk@xIqhPB{Ah3tWldT=?1NZ7qQ zr@1V&77Z~9>JCpr6b-K6cHV`qqnbD2(-#L@JqBr>SL3S^v&Y@=IcVMun>Lzb(wptt z@YM@k)^-g6r03=IOFUVL=xo>K2JdNp8OLv2P^dLNZk1wY%AzL6QttoPaxfto7#bPR zrX!U?2|o9#@&8T7l8W(nBpUN!t|E`)V>;+8!Z{)C*7X^Mx`JLo%6)|o5EzPEBp!l( zphUJv(m9gF9PWRAaP;Qz@!`)uJbrobeE;ap&p+-T9v!@TSzr zD783WP<(J5#SM~Q_^{p>!p(hQ@8_|EYptc|+tKq#FO7kl%Mm>K#?v-EtcUVcFyRc! zYQY>L@pnmOH5aK21LHjI(id=bm@nvwdD`oJ^`R=SR;L|UE;m8P&R!2;a(7%k=GQ`- ziX*K$q@=1A`@fE>1*HdYzZ?;~@^S1Tgqoiqa$JiG&u8xydxfAyxU*d&@W;T{k6oL- zJEedTD0@valb&FP&P;=$bZKL2^RbX!?`S-S1P;5INpWm=an_EuZ~Z_9Ky&X6zDle! zW>d(uH##iO$6#$c2Ns{v0RDSeg5I1DD!!p!%k1&AX>_6_E->P(8vnXWB5K+>5vLpMD}GDRqP*AwnLk{C+(B#&jB2;9;jA{RUG9MKN$(z*+A4?Vu{PWCWrO z^dt)c+{__ZB0(7*{>X*3PnXkba0XlgL#(LAZ!s@04$@+lqIDWQT_)wPV1(eo_xG7w z4?`N2emF6Q61~dt_KSAweyihI|EfH{M2hE_fBu^nu37$)PmLd=?lhUXbV3d>-5hp) z&#=B}If)h~uwXb`yKP&gAyVi~p&CbZ_CcL(63848Bveip@yR<~l+|!>#bI=m_#Fnd z^NKbIcF=BxmIUbImRxn3`KLpF`Oe`Ek~q_4=Aoj57#NSTX1lNIw>ib1-`Fl+ed*oh zZJ|RQM(-Ai;M7=TdD8m>hahaL$5O3TlY4%PX;wW$Ln2&!I=dd-Ydf}pQct|WC_fRp z2f}R-7{I%T&K02q(%Lv8+)11@7R6(E%}pgD^K;2ZEX1i|S1GQ8=b@cv@vehnt&kK^(^3a}5R!8GZn zIzZp+&M&Up9eQeyRmb)X?@O2hUCqH=>lwN69G1{W@wPmJB!gt&fgKiu#iG2tS~Tac zaxh$8Iz)`;G%r!6azk~Y7elbB5S)C+!!jsQafYv1xUhdYzOg#hiYazV*Odhx0F2hcpc&|qq+dW$np zTsh8zwa?d!a)*r(E0!t4cM%gv>M$U&?m1M>i=Ca}MLB%8Gn|xz>E>GMXaHG2roS$? z54?FvQ++#j-1YTM;b(iv!z}|P*M77df=VB#S6D5W6iJthE$}TjjoSrT;0%^iqvAF`z^BTU4aoP#k&Vo@uk+e0OrkYTD>Ls%qI3EdeV@D2byb~T&);%*7N z7uevytqPF$Dd4W-X(chKeqzZUyt?wC-J5#UIV~M1_o=;Wg;1082!@;dr>V{<@ye%+ zNR@ARo|L#Ql8<{PtUufjhnK#K`6cjN(2o96k^YhX`-=EWcr>VQK13>~*Z9Pj=dA%r z%fGN8ZvvV6|Gk16Pi4H8sc+nmZ=t)H$Gq&u-T9VPGB;mz$XrD7Fwz}&Lco7_WgBLs zGWooxZs%)?js1Z`H(!eQzJ4*}#Op3}xYtFJya7l{#~D%{?bthMqzqkyZ;WCF6M6hToYl_I7NpsD4n$qC`(R>O)L z%t%fZ$s4^Wlpa5}=bRoexBthcS=T^5K>Q@9%k+R%6Y*YdEbaJU#I7rwfZ4r{7f&%b z#RGPWi_Agnu|_SaJ?OGFZ9)QS%hyT6W7`rJYCrKx<1|pUO4!UmS)i=b&MM^$pKYD> zsa7qU8GZ{bE%E%-Vs>=}kI5ORYT29^HMcpnZIV7+R7gr9mL=qQ(aD_+D1kW#aRWIG zX-ZljKPd1M?SwBeEtL5qHSUoWhc~lH$OadDLyv21WnV{#(db-^JjBG~n@$q(mM1_a z9~^R-9M(ZSt1mH zuir5}fyq-Y5@|ll*)gQtFG_cw!XC0A7H*oTEAsm#eh8!hB3A^-Lmo^$vSWOgCa`-y zm``1|SiY+#!9uN_>}>aMJMP;QB*>>9hSSkJ?b5LejQ<-5jW(8vJm$>FXJwy9)ff>cm)+A^Qof zzZlF%JcLgb#W)<^21xE9fv%qa__AAmY$DIS$2xe zM;-LkI|2i_bwskdmuROm>{`tz9m{cjGHBN zq;KzjVq5IVkZ$LC}TsleR;|0mJ4 zjj5R>X5l&t@}T$vBGaV9EtoOeGNo3!M?-nEEfgDD3C+79r)|Zw{bKQchDsg^ey?x( zsu)3}pmTTD6@x(>_L#f{jXbk~qqggRx{d^|0mt2pshU2U6NtSY4aM3#RQEMD57ayD zBb0SM6ZA9E^;_KrG{s3DGeSYoWG$i7N?Vv~OZr06-v)Kz)u6UNQ5}++G8rxOrzAk1 zThib|rkc)8*e#>=HWhItR-GM*A6T#LjTjS7!P`0d9lI?Q3paK~BRdOsHYj`m*Urw| z3&VTT@@rWMDAqijgA+8^y}E0Mw<#62?M2orYlMfLdV?0e_uFR7uA-G$M<>4zZ_=q| zgnTS#B!PK5-*{u^0K8x4CGPGrj9C^;p>t% zk;vIg;!_TXA8;a+^sLF<4EN%Vny-Qbb4*)q=@9sNH=KYP$^2!OOQ}1$H568#3IJUO ze?HH`e`BX#;b9#KuyB=g0%!(^#hN1c;CFvRjnn^}&laF{39Oly+H7_P z8+)}}lzN@#`gQN{%h?FBsB|L9QAV-$HB+2^p@jmhZENtebT1{xLa+Cne}@ar4k51PO(>fgSCYOQ|mQnBD8 zmC7$_d+7`CuW#X_H4<@U=EFC4R`i-6uUlE6xWGVt{`1=|vY7A%{{3S(=QNXvPdZQi z!SQrG3PhDJ;QiTqM^tv)m&)c>Ba7}scx=zh5$1DjgIAnQ8U=BU=H=A{;yO+y=$+#3 z!JmEtFBMbpd-(qQ!R6InRB%cSPNUBs>GQ|v^Y7^M@1oCt!rmu~xbyGu`#F4%EV*G> zuVK+Oi(>zhpQbH}r`ZN`DKhTO00s+V({=p!SqOmNHZFN`$W&~7;eK?~{JkVYR~(LC zCpTARJ@@spEz(h-L>SB@tXtL1?D7@ve71qbIF5rp+0^(FMS4jiiY`z;z1HdAFG-PF9yHPrnAfI!`b_)J$J?9 z%koDYvRlmFVxpmu{6>S#S7*D~h0)4wla4XUgRYNC2?qm4G-fZjAiUTJpTpN@V|R@Wu6fr&tu>wQ?Cccy-@fnB ze+mUYeb9}limZ=p8xz<*!+bF z$#fNEE1uk8v69&=xV3nOAx%fiZdqn?e8C2AJbJzV^ykC<$IlL4?jIcmKr-M?KcY6n zUH!|Uo7e!tJ-V3;FD%~Mm^~ZAq!W~dA5Uv{iq*1zDX*2fHbHE!ywzcuZHcILj%@$j=;rLJxRu#~Xf~EJX#d^cN3^x>FMcj&Plx?)I4HazmG0Bp3*eoQU>DpEb@x;bNgMC)Jd)NRC+Q+v zeBC#8Czjf9@JJw5d;H)XSV6AOS7+ZqKxd6*r9&A6^}}L3>Y)zt)mgjMZ)sW+kP^0{z+jR*BTla?M=moF3K^)FBz~NQ1lB4DFn!E~ zF45*3GC`jL-X?y>E`9QsPBvY9aAKK{IIp}hiN#zgIQKSH!qg~6(Z@MaOeOr5r~?TC zx*mVEY`6~zl4hlWcV1Ka7Lzb;O|lkKcZ19^;Ci?alk6aTX=+ES zG7Z(Irk1io)7E_SDG;KY>tOU^TrC_ev3~XLcl>x4l7>`)A8P;yAii}pc8nDDw8OWj zBLlfPJYKkC^LDu?Gu-uXHd$UyF%I9NdUE|Ey@~C+Qm2rey@xZ3EGIV#*MoXzn8i~y z^8mq5nj_lgp-b5YGSA&?wQ#2?(&E<9K3)I9vT%vsI<9YF2@>`hSP|3oc3+aY<%l-G zfWSTm*Dn}ef7?Dog-SGn>W-xQ)*=ne@f|%51&Akmnde;7dk#^M&>2t-!NvcQY$fpB z&2KN5Rw7w*ZP@(jWAPG#VSfafTnk<~P`{R=V4x7fcfmcLj-ozP=kwX}sy3lTPPhfV zfozKppuVd3w#1@iKio-Bs!)ZTVvgsbg=3T&i9W|$N{7SI>XUq41#XuiNQa(RX?wPX z@+@hF3*K2zu5tgiNNwV}0m$U~jYE2?5h$IBqyfVPHYOL5c+imegR_F^@7!snJM9)B zSoA7)26RgZ5-~1=@pk(d?jZ;AW4wD#8m>{fXqlfmhE3wJPZGw)yq%~{9pN!7NQ0mb z#`Ao>xd&)4dl8t2RE_XR-bBAE0^-EaqQ}K);DApF4XVL4Ih^2e8CPP?UkuI%V`Mom z2BAakv6v+-oXAzhWHTrhIXr*vUT>{PTd^nV_~ZIhSlh(=xam z!;?6y&nG8H&;V_{9Y&wZ8_C__r|?EP?P6qv1WPE~1YpT2aFI|QnL?@0T;6FQ-4)qz zjYPh z>zxZ-x9M2no_80v&RWJ*DIR=a1WcjsrwaXar98UYJ+f=@${k5VEhO|Nq6&<0s!th9 z0Wzn|$~2^&;GzPpZ=~R>7fcVBj#?EmKmMl)rNQ4YIR7?ETQi9;QrKV9F>ZqY=6ECj z_em~j*RiT9S(NjO&G^4lB~?A~%8|9klLU;THU{AeZb2Al!C1Fe>ZZ#rBd%Ng>Zb?O zbrAPeUoCHP`aBWHz$w3j3KW*fK30JNXg=|#w)yk9{v505GuDBdO~g|HGmV33ZWiwA z29v<(mO!d$V*~FR=v|;*>5U$0fgGO*nf$d8gSqZ#lXhE9RxP(*M^Z5lIn%Nl@@fI( zK)dEi5ksqJdR>Ih<%uDbyI!0oHINp{QEU>cah+JSW*#nfSfyOhkwO)*MB7E9C{pXL z;rm0l)EJ=z1pu-BT7iH5V7fD&7WeUwnLE~3h%a&xM0oa;j852C7!P!C-G6%xtSPxY zfF0@}^z$#32WB(sKBwu>A26L7zVtI;?I)s?Xf|ul{3@zeN1$#GE56=v>1UsseN`_l6fTKl?68_cd#v-g1^1R?Z^YqoT{huGdeER2Chd;k~{I~tXqYe6h zN{lg%z<+1PVD`Dy*`UWm2-61L!5^8vfOk(jQZlH`7+IxY>qLUgz>gn{G_%JYvk^t; z`B({s_!>IV@w7*S={cH!KNMC`w8rg@@dl{z>HbCM4kwP#=jOc6>sX8j6L&-xyWA2juE$hl3c?DaD-p3iq#GQk_MR?Cmb@4Hl* z{>^p$+bHh0QPJO?ZlADA5nN4AjjA3CGE%fG-Bbd!!RYVq)ioVnZ^mWAlZ&XrrrD}% z*=+7A2%XgvH7WA~Y3)Xd*}Y``+snMUlguEY(@5scO-$f-aMU>f`w2IjuLGoDPlxND zi;`LU{fqJR-G;TR#bEd@3T`-?9`V=4RVx)u93JtPafP~x*k*tif}nt+ZdkFfygd7c zDgj7;!0a&iVuT43F5{5&l^24$qCP8(Vjo)Oqbvf@+>udV%T`Gi5?&wBbn4nTiz8U1 zAb8Ve*8Bs+X}NUlwJ$R>`np?~0`8JntKbGzl#{B&nF%CnCU&D4$YL8N5Cs~`bOkq~ z?g+njm=c*FKY(W*&FHug$4$RSv*4XgZ^DOy6|<|haYp0vya%2@YE-%rN_p_?sc@BU z9)xL8nMCe+e*xxzdK86wFg|tRZ>|R@8WoZzQQi%&g`)0<+!H1;A{yhrbs}9Q({&oD z4tLelJR-C>3?B-npKFgmasZ-v5%McgSn-V46Fig^Y{~|q9ZE2g6eE=IMHGJ6Zx@r& zkRM8<^22g#U4fs>bpedwe9F2Z5RdzfOW0)TFW7z2b>j9fEpitIPt&)DSDCb06+7P* z{ChE5opv@=MjkzV8Xjb_bd<~x6G13)Q=1y zYliBgsbiwbkrsf)uWj8FbVmO1?v+nnG-mc}sJ1&zv`7wkM0h~@FhYe24#3)#1~bz5 z(HYsq*61|lHz_u`;Tq*8Y4)B^2EWYaIlU$;LTLUE8$|5%aB7mX(@>bj64&LL&kz7 z`f+2CxmRHTDaxrcZ0v@2C9vGbW=p!EVb>32jmb?^4Gt&s5Vs4jV%KX39S9#Q`q)*s zrHt0M_z(hSgh}{MG8rAyc?mJ{+dPR!_jpRd9D-SwuB)>^+fH>$@lU!{0Zo-}QE$GC?C=E`V zx>7%aE?!rgnTRG_D-? zG3kuf6-Q-8FaZX$}M~q(?s7sh5V$Dk?l9l<&NSCpU@I-Yp0I9); zlfn2h8vQAL+i+;?V8d~rX*04gs92XhcVCer+MV%gh}dN@w5qmRI8xXQ)IBp|mtOj3 zQ;vh&df-hVUOQ|9#ItXWs7}4HWmNIGEmo==u}i!6y^oRT10M!j`}UebEK)3nQ@MGd zx1HH^a=jN4Il1ka70W9~+Sa?*iml${I{$!?g)qh2sQeWo(fb%-eHNE9{|xcwS0*?F zt%3h(j0^E^Xs(b-GdT9>rfEm#l*c|+6dQfVf_cEl(?HxKA zz!~foGl%Qo7pk4m;ZqHyq`E?9PXCCnGfz%9b3L5!zB=vnnLCm6Uli=C&*KJhsXxX% zp^W1jmb~v6En@gZ*Y^1a8uW|0b}Y8% zU5lio{r&HY;N1fWX_HC3!kXT_gr;ir`HpoxM)3zug*-;obYKiuyaqsoI_p-J%lF~K znoX+G=PqI+G(aelXPiXRv}1Tl+90dZN(IY|AU~R-50r_K!N>+0(wMZ=X7VIh3FqqN zeV?RSR($<$kxw*6Gd;vBHFb*~v!WCuZX^GLTETYge*yA_%PX)Qf6lSZ`S&x;;OS>q zS93_JC!2;qvcOWLcpBBD?_sJv9}FktZ1v>&jl}HT*0NMjNbS?OIz%$ie44~tr3CZFmPnTUEzr%WkWgVeRe<5D3ZN}%GEK*j{w;pD3` zm?^7eA~Y8MC|FKQx{~2LZb+$0cd<3yl!QP}uAe(*8awb+*dutIsh4ATW)8dG%vzo7 zgJssKKiD?w1)BF2`Je(EEC#b~!(ZX;OSb6yy+Mbv=62WGjF z1u-P5)+%o7W6EVa@TDR{_qA90nF`b98uC*cFPZgcMu{QPw;=OFi6n%FlAnGiR${@m zydXr+NcJ!@nK&3w-|zS;_hfhFd>p*~L#jdK9i9aIDWCBW^yMtHm2*d-68}Z$_?m29 z0!p@-&cu>`7aUd!J>}}HDz=M`>Bt1BI9bxXx_@vKB)(D_Q{;`-Tv7d2R)~^QbkTM zHCKnfd+Kftd|1-{j7s-oUXJko%Lypr&^XcMQu|5{rW5+w(T}|-Pb04kJ%Q}P-pqbu z%R*z34HqU($WH=$+73FpbX|huR%AXv}r#Qw~vXjne!*nRn1}3b@2SuGxi(XMMAc4Wcz{rkmZmVW{Z0DbVL7x%{1Jyb)KQ+UOVyfVK1!?T@#>lFXr z|MUMAZH_Yju#O!Ci(-wimc%2B7MI^xCkZ-9#$j<-Og8>w`W z65)^-JfG;!ff49M6Ax8)QOSTi>qT>=3zauFzE8Ykk`(l8M^ZAbzWQrsY_ zNoj5nWKmM@WFoQ5Dp%+D>k|{Z(RL2@iE0!LeEy?fwA)b+b}Hkr-l&)wy+bU5y40lel}l8;k*4&_FeCoKhD zp>cp<5=DD`zg^$lkDy<-$+v^4e2Uo0P*Zq9`QlkE1wuKkIV~m?1yC`&*^dMd?K*iC z$WOKq5@Z$XK|Y`k^W7jx*;G;xq92glDGeuZFv?IP@1RqA2m8huzny&cD1X{PTqn)D zN{fw(vu-R{ba+(5DddiK_JaQG$!=lf zDgI_g3tHWl;|F$RfL5nt!i1}y+ZIQ-)3IgE_-h32JOz&Ts-~?1Bj(Q=FRp9rvW9Cg zx^8)cd(Gw4-5o4Cr@OCfeDD$?343s3$_LdTq>7`yR}@SSlPSg2Pi!ABvy#=uQ*t0h z0kLj2Sbbz;Vd>r(*zz6@rl2p-+M};!ZG2`Q$ZzI#cKzB##{Z4K_<|bf+dB%EnXh$Y zkx~zbW^pr5;u!xr0cQ4F-H24}m2#S_aq+7cz6WQB4csAeg7ti!MK%IJDQpP)BzKZ) zx5kP>6Mo+pyRwf*t!#GfoZ3Jxo;riE=r&Xx;RZiiXY7G79OuijV?-D6jIpnl@-bbd z4!k%hV$qETjfcdZHir{{0Yj@Pjnu8ogZsL{j%9bnAEH~@8Q))ScWkOs;(>QD4w|v= zGAyz;@@gFSRI2yB`XC*zPICyNxg+04o}A&?Ta2g6GKMwN2^u@vtG=0MMnk@l7g)~L z&qU^{;d$zs7y*%AcmPi*ep^-xpppIH&<;1PhZWq{L|i+ajGI|xwp29}L?nMQVzI+i z(0{168pPfe;gsJ@K3VSSP2=z{s?>?@$hX&!-w`efpA6SN4cNe!QZ^*kzI)L#LSG(1 zN4Y`Nj_h5dOss6+1h3C#cX^rQCfG}k0}<|K5p^w^dV`G{+!DTQjlw9@Sw;A^CDG%J z@WCy#TWCGBGNxsD^{zi_Q4m0}J4>yqNG@gxo1UbNi;|MDRgTLfgZzLIUA^ml-uzF{ z`x{S?z7O_YAMoJc^1SKW$pB9IXuL#uO zhYi3<9z3HQb6=58tkK>uZVCv!Wz*rzVZ-3uO-NEsShBI4I-Gx}Y*f86?dqzWj%YN1 zoLe?H2*Ar7K4qi_6Yw8&@3_HLY6C~o!D>PDfV8<5eIO-~yg<9T_8zT{!V_^`Sf8&Qk&e6VR-UeUG>3(nwXjB_yP*!r>SSy0X;keqI%qsj0 zQ$;Kd6OXBsd-aS*6xHEaGdVQ|UA`kR?XGPj8nn0tH}Ir5d#Gqm5o;&zO<)!mMeI<^ zedGflDHZ8nuAdFuqym~IeoT&+Q(#4VZZuOe%>ocv?t>;@2(su7;+1`*N zjjsLZb!C=?@`LUj^L|t z0scEY3B#OOa~r0_AH;7}+{uTN@qKYH+xcZ&zTa`Ua5f){s*K6FTn#(O2RKFy7Zs%uW!1T{i(#;j7!Xi-C{-F_pP(4wHF3=qoF&XtIvPB zuE0MYzQDiV`iAg|cTHt+A%IGCpOQ@N%u8IP+k|%`cnoO=`YVSm@BjuXWE`T0v&n2K z@lxwk&z^quL1&W{EcRacYoqTRX= zJ_$1H&I9Y*2$lcrSlTv#==I_h>Pk&yk3-C| zRUpTgL(;bry=E=FhAU*L}*=^-DvfC_glSrc~uS;?d*^{ z+(Bpc)dwDdA<5r45QAIT%5D-_1x0|ROaDXtB(iXo$^4<%g?T_H(O?UB5SepeF*i|$Kz)k4U| zQ;7`m`tkSsKRdpS4+y4!NYrwJGBD97ICNZcEF;(v$B{!n@wQu33jVkyiCvxpV z9wC|-t*rEvu#a6mBd(nrB$G|qboK`F5vN_%XJ?l6@m8zo<;_C@;_MsGbUj`>UY1xj zdf!>EInZKAwjknVP#wcdq)r29b#)BiPb3&xn%5UDa%5TbRDG;I_MCPwK>bDg{wbV* z#Elg!r%QYnK^u2wMoV}2+XOI7!;9-7rOx12T_Az3y2aNzb3i!(CIMfDty6#SWgJOW zBQ{ne_7mpV1S;mqDdj_^0=MGaXI;O@*Do+~iu(tG;J55;<>%_C4o}7Xg*})rq26g` zBi;aU%I^jbmESN;pjsax%`%ucP|(@-MhzjPZ(WKx{A!0AeJLWzf-XX(Hs>nFHrhIq`jdp4d|i@(B3)kYah-s7*0>Sj0@EGv)^=#~be2(jWh6cY@&4F&!T&3g3t zV1&CzyhdGq3*W|}=5Ri~!cg9;)4GgVEiYp@{jN~hvgYUwXfc z2gH?V->8_MlFH)r;-;;=p0NB{2P16{@*Y!oYFhX1LCkG#?ZDlRy`E0R%ZxJ=GZNU; z!!j!wwA0ebqvAP7OLBA2dj+py4=qT$~5LG z%bgBq@7r9ji|yJSNOiP-FG^tnOwTzQah%^TcH{JWNphaClTu^c)H)dbm$X< zNjZN3-Af3UL-DIQ_!IITBo7X6l8C2w6bLG>Y6I62zXasz1cOb}`D{a}qKEm`y zMAyIifLrT;FB|Iq)X;%*)Kb_&A#6hp2YlD_vFaMm-|7UTLnpZF-FO*3DdJu^3P8%S zHh4|?pku_JWX-*)o|_`K#RCa!L#rt}_mg}|ZU?9X<76UR+IRPqWAkZpIU+cf9(0&NWDiLmg)RCldZUn*A=raR3J7gTm? zlyx*P3VEeh6TE~rOHk%{6kL^0zy~?gLQ(h&GnIpk)^YL0;2Z+AE$BWWcD;x0%iM{k z`r|CV_0$;J;J+D!VU4#9J?~MqAr{CnsM~*k*Qwe2F=Cy$Txb54zu|pm+j|BzbE)~7 zTiD4(W>b{IwcfSA>c@+XxZYztKRy`DVs|EvH74#lhIX_GLQig-EyCGuRlS`YCn-Ufs>jn2>AUNBN|l-@+>^oISf_M!=vq_p zU>ahwaH<4Y%ECM8hKMXpY^R@h@q1R>Lmt4gxR_lfS+n*rYCh5ocVY&h2ikG<+!+|3 zU%YiE36%DDW`;{r8R6OKlbr!RqP+lRFU%|Xeff4a*_pUAISKWV7F1W`IWBZCk#&-zK@#U(-wkLEkYO-_leJ{g zv@KA=3V*U^Ga)^FSc~u6&Y}8g?geE?q@#^bDB32PZ_yYyC%h6x;s6B5(;jVaH%03} zLC6gM?cWk`~V=;8oKkG||-t*Wbzm zw=SoxSaj^RJq_>@GoKhPXTdGrp>Wck`v)ExinTDA8!t&Em@fX{&Yqjb;<|7b$Y2_- zC;)}KqBw3~uN8&$_Gddcm`R}g^r9TT(^->?|8(>ZvL{2$ot+)?|5h9=T7ne9E?RiV zRNiBE4?{S^47I;1%z0d?mlJ{)+=Aw6L5#MHyI_&0T#5!N{J-;1TQLwcm~wbv+z-x z?B!98`elT}*si|iNzgI)Z|k0IInseH%;=BY8h{}N4CX-LV0#IFGJ6Mqq9Ceu(rM6T z(`wi)TDf~;tz6nyOQAppf^Aoza;mYg02P<_$y_xqXg;pq;c*>Q)$;O+L>18jf`(G- z`s)@V+Q<~pjcW-mq^c4`bIL0>Pm5xwmdk`nZvEM~-?OW7`ahPA&~ZRMuXLsL^h~)@ z{i7|mF56H5@XEC*{!1FwNCC)Y2d+drx_$mToI{mX#wvp5M-}q9gOkfO137HpG2Xm& zPClYh0wDZY0vSUJR5D>D<-i6;X>(dgJHy%&UVE1G@!yRSaD+78mIA}6)L9pa8x z`MvTG1C0T%B{}o8?>&}7mluOy#nC_?g#|?A(VoG-_^ySqHrXw^YJg`6u|5lC;WE-|DL4&Le-+Y zit#hd^%%Q6i9CInZA+H8YG4LAg&#OSjQdBW5-z@NDCO;8AHX_Q$-$&l0_YuLn?$kF`deYsNr zp1S=Q4&E*&gZXuz&?EHUa3RJaFB{+DPhm^u1IHv*!r>Z2gG9om8l-7(DM_Jwf?>8! zP_?g}O;)U+pEzV2KFH-te30Ums1wzPvyY#?%a*ZXMio9uGDJKyorO^Ai zDCd`zfe}{e;dccol@i_6)@F}Xb8mBYiss-`3PP7Qm+|j^Ut}1ltl+0fM)PcT>9$Lq zncL;hlF2s^c8Bv0N^Ucsm1pDW7-3_jLD}~>diFpF1Q;eK$g{E!%=Z-wL>PT>m(Ua? zLR>(kPnU;O89~UiayW+6$`0D}N0yG@PH~0S$rfnjd%b<8+sEn`PEp1ZJD*M@$j)4r z(Rio#?y-|uuU4EPov%*g`CK@*a+;Y=0t2qO$#ewh4fDay^mJ-OD=hfO+iCzhlPSjQ zLN*3!m+lRR5&Sojx5%PyEOGHyd`r2uo_Zn7@z*C1ne4AuR}z_woQGFj&OT1yeCDlc z;@%qMHEX3cd6oH%FKp7*lYW*p_VlCnxak%JNrSdJd1jE?KYf?vAT6FfYB0>HoFZTK&VP$#6&`YU8W}vd@tuhq$ zfip334ILZ}(zi1x%TbiRSw3&_#z(Bo~@qARvJPKb468COyViGa~jF$ zrV~+6en2Doh9Q0Rb%UlN_ms&Nxq%iL`=M32X19GCb-WyDS0$NUuv60_4n0bS51Hh_ zVxO>7aUDSP13Vf@INtnVnTHNnUpHj>0*eOL{7ioEEU#ypt(!zWf7N$yb$0bL-jL5@yA8@DWFs^l%@ zb%ILBBCAMQoK)6o=1z?Z9j7D!2NJq58=j#_$DLKtuIWwt+E@vp#7^)|s}w^)EiCfK z&?AgT-jVdH4=|k-{gAW?#y?O#`X=5!b?jKW=B1KpZPxhKR_Vl6Uv~DMxWAN`)qV&c z#kvz!O`UdY`mAxLiE1Smp>>V*_KlbxX(P+Z;0Qk1)Gq{Q!?pb>ue%6?^;dv3TRn;N zduN9Q;VOEDc6a)~A!^l@O&5sZG$>j50e7>yb4oFOqH_thwEA3j(cF#je)}W(dCmal zMsAbM^lW(ry7>DA(VJp$em*bHArJ^F{@H^TydLN7AfQR0yESL;-K+7-9gm#RrzBHe z|8)PZSTir`Nk89X4%+J?+|%s`N{5kZDS#*!9}6I6?w`j(U07=Y-<}({;*T{xW3C|f z25Zo2#2SuHq~YL9JIY^%^Lca>>v=aymy$O@`iPX$Cp_8I5ZkSXt8MqkskR(ZT4^1q z5bRIknRy(~tl4;*a;1?;s~jND%(r(!r_bD?N`*9U%j!5ldobImq;9b)BFmC$U}yOoHK}DsWQAuiz1C) zj#@T-9dUrrmYgcu9h>BdGnjJ~`OVm|5_R?IXY?2Vihz+lf2#~fY*K*^9uC+Fld`uply7oZbG?mjYOMRY?`a$) zy`}N9f6azZ{za*3MRX~Ye6gFi&SxsMCBg?oov|cz1DlQA#q?WP^oLmNIrgpnAa!fy zeO=?W?47taK`yQb$kjBs+3l}B@LX0ke#`4g{+A&2Yo$wBV+$xJ%FCq6h``}U2WpN# z+a}f?RLKQ4yux6?%g0erBH=JsN7zXgHog)A>!dmJ(ge1==3WLL0{D}j3;}4GN7D~Uf zrBL{F9IdZ0Qgk?~%ju6?$xVM=0Rui;F0PgfpbS{QTU^X$?+hRJb~&DmC~vBQgljdMKb1M&)8K2BjO86%bPg zX6QD5A3r>z0`cxFcy#u(92 z${*c1KP+*a#}rf!qzWVcftfTQV@~*VFe3J^?{4z0U!)_B)Dl9hsRhk(G9iRfzc{X$4*cAy94|hewK^wv zAmp(js=)NbR578Wbi;URmhw$N($cScCR8pwPYy3bCltpY8d4npP#fC9Rpshp9Dbf) zZ$6v3*|q#L7}!U{-RXc5a^@`oP1f3?2X}MVJ3WO4;?GCC=Zbzis0T+ybz-_)2Xr0jKtb4k47w;J@a5b+ z!N%2MJnXq=Pe{j-^P%BW)ixUlN$1>-E$0IRory!MCu!>3X*j4frpqSZ%GCwB{f zP@}=1NlztaEmV?^wj|wXQy-no+*D>Ko6>{Z@Cf`g1bc_Y*?()<{I?8-fYBR5KqVcC zmnD65QvSnVm;dQVcv+|;TeLlALHxBBfe~QiYcx+Cz6=8pqqWbZkY4+%h?O6f?&hho zJbauD=)c)_g^C#t-{oncUlsD85KbwQ?hZz;`FqYg%RSR+@;7^gb!F0M-Ar8 z1)2)`=lzMkpQBgNjJLJmR8PbXnclNUHh80^%4i!3{a5|n&#y4fX`HaIPcRYuh^4u71 z3#&>7PyAH=dNmmj-2pv=h zADr8I(cC8V{~2C2chwa_opg)F_X|_G_yv^-1u~(6Ua=%uWx~U%BS%Bmc)~R)21|@ z;kU1#TC1PmP;ov9D7B5!fc_CaHYWo8_Rgk>K>uhHf&OdPzdC3p^!GO#~sl|wkN%Zu|pGAdHF4p?VM%@v5{;j4E|EZmA2BUdW2)yW;rne?C5ZdGPZ46S3@p97+KI+Ej{f zEI!2;NshEaY+};8cTeoGzAHR0O9(Jv>ngNK)0zh5t zK1<$vwZN*ZyhLV3Mnpz@L9^=m*R>?MO3WVfi|KI!=nwsAif*$LqU|PcQ64IsspH?X zY2iGm$U7`!mTrmDo>riV;p|<w{H0_ZnaviTd^0dSJPJ*TZIvy{)_lyERC+XSFxnPn?Y9KGBYFujMjKkV1bMy z;P@wiZ^9r|s3f-n$Qgd8DmB}#XPJafENsiDc8-eS!v}#67e2n=mp^eLEEZIY7q0H_e3~hxs9; z4nXCIBp2YJuV?_L6Q)mlh3u)g2tYHeDa$z(q_`w-Ad|VoR*V=329u<^Jt@DXLHW~W zfso_Zu9G*}rJ;Tm*;+-RN0zvkOE?l)FS4IX%BJ9^<)=-%rtqibr+r6&)DD?io?9Gi z`eC1I+>ovhBXSsVjV3IjF3TUm%z$!DXAA>NfQ(yAnMlhWKI&- z0E-P+*pwpxk)RP8oAXsiK*pd=DAI5Wn71`BQ4VceHK-uCo11k7>l=4vYPw)Sm0bsX zY;3O!9+WxHn1giIllIU(-?Bd~z;nelT^+T9LSto%S@tM1zoygN$m8UWHM)dRLsvAW zXDtv0?$HHkP?hNYm3D3Tb$>Ag6HcT4riWNe^^3Ox_Y|L03vL9n8ii$QURn10`mT8R zN!kNn_OWi&!#xVOc1^)%Cw{$NyeU&PKx#JU=+j%naqlR&sC#A>0}~(~3QgmaQKc;1{duBit`< zyIAR8&QxK51a2t%LYJL|Wu1Y*NwVdEg`H+f3B0&B&AfRf5gG2)0&&N1ugY^^YJiRe z&k&iWpA$ljR7#`m)W3%THoS&0b)tcNuuBE$yzN7oYs~c3ShtpCaN%}ksD~Oc-D0nG zbdY(BW)+yP8rGHLcRE|ZE@r{ny01VHe* z2&v|9Yg=N4&O z^lsi?-1wkcMSQRO>wnQ#yyv}5vFMu@{x`GuHwxlz$?Oj1*9l6xb^NqhP=zA8VIU7-6`>`aEv?dy z_UGbdse5L*oY%P(*ir3B>NycC!5S`9pI>1KUKD0$6YC+u*pXCJYHtQ6T$>w^ArWN`tTuxlS5%SI%bg9{lBbb}}!sAw&=F(#^01 zBnughgCbnrTH*ud#c=YPVe%q7Pr>99%#6jttGjl0W%}|g5->@x9w3U5UpyKFthcB8 z0wTBZldZ(7$YSQ#Wxf*NJ|C`c5n7**hp$lZb-DmWJAj}yM5{vKlj*Nwwp%QeP|u(e zW#b{>cC3R@pPNpgN{K}Vr)u|t)2C8n-J~dt!wRzD62OM~b-yX3w5Id6 zYW|ko3H@+6nb7bVL2w&=Ca}?{!4O$gkQF^{ucH{~BD(Jiq-rz3y^SgN3 zRR{X%aM*TE1qv=v4KAsEp-$VDb$|-WAa|{OD+|0Ls029bLRAH%PN5cr1db-I8@l$h zw4`JrF!i--kPo`{OSq3Z>?SYqChD-^f=jNz*xD!QNT|Hsw*;YnCC3D4#ex`fG@mJn zU9SRBL&N?hub=Pj96Wt; z@DgfKE0n<`lIF`ri%t>;dbOs;su~5dmgx8BC-ptu@V6S^nSQW-pWL5bd1g8{Ow1S_ zMZAb0mwQnHdd{}kB~a~~(x1~}J|6bW5}Qn*Oy6F}yQw6&$i$&pVv6By8V^Id4xIf@ z5n2nCfpZToPZFy+Tfxg((~fSaL46%`!fI?+I)^@bQ}o7M;OZn=XW-1eD8s=ttBd2n z>fQhmtM6Sy?DB^K2kw{lZh)%acy~gJC?B3=)#^fv%2vHj6n@N~1o*Y_lOz6ZS8Yut zmIZKIuid)04$cls?C6prCfKXYg1uO9GO)mj$8<6)lKBMvV_#Pi+eZL@#5YPqy}BT- z5CEti=nWBI%5G8x_PO>ZZ`Gg-R~#!V0B}OzN0vSGlP8)z(4QfDNS+{6;h=A*-4|;2 ztKA?>pdiP?%hr>Ez|{IJ*s4^BE^Exs2*i+C8BOfk!~8n*6WyMt(>E9bg>_WaTZP9!*1Rgg4U41(qZ$V1eW1r7R>EL{f~xaw+E2VDe(inl=(h|2exS=L=9x85%R z1Jpk;GRjYp6|pkF5>vx|p;v&MH~8vM?&{nPo8GiCT)S_(%4>*LZy=s@4x0drYRFKD z!i<3vMV#Yn{atTweC(L!&HA9`yMIVf^PLYL)XY@;7*Wml|Kw54cRoN=^W9G$)hsi% zbXfD|2aan#b=>nk0-Lpe{G!Na=GO$#Q6JxIPngvLoOMq=euT3=d#)GetZHzv&g$Vx z0nhhpp@8l;g*!9N7Q{POF?2pbwDYFLANj+Bo#O~;YN;+4`s^)#KLFYXJzE`FNapc_ z2SK}vKNQ;2dyQg=Am~pG>a;BB|IH$xHNI8v5?4(a`ta2e|6)XW%Neh8KrHQ$%nq3c5B1`d+s& z%=umt4>{(%F;pCX)&>*PH|vI?X)irKhQJ%Gf#&5t7I9)tXw1 zb><;APH25xg7G#C%9;#Rb7ON^XlcQgq1*z7SIdUrG`j^9-Bl;9GOGTlT9Z5jCr z%$-*%cu$goXv3nK2uvaVh*YET48%%3_g%5jwpuDSHsq4NA4HRpn?Cm@h|GxSli@x0 zYvcPbzCbfPcy?x}`Wx9c>9JThSqN522bhsKu*r0Ve}2QY$=_c+NN$I!$WZ8l2q#fO zQQ*lTH*WvJq%TH9e;LMG91c8H*tHPz`?FNE#UgfMOIBG(ilXu;MojQ~f|~}jl4_le z%scHR#oIi1N|hhVJx`TYbn5&};q#E@7$(9-K_FpxYYLxkS^D~z8M2o9>VR6q;&^_}DWIT$w?B z>e!_V?Y4Z;O}G+tWRaVV_WCQh)P7~;qc7IyMi0g-?(<=*qp?oT^BK9TQB!pF`EujX z`HSJ>5FO}SvWwWyD})8B{RJ+=sH9_Kk#KU=bkmiMjEwTiN-I*6jYu*o+XP-5U7|$< zoaTpc3vG1FDf*cDoj1dJXf<6*ghe^eE>KrQ61J{7L3XR979@UBb0kK@2AMBBE&0}I z`LCHC{I%q0U9{BSZ$^xMFHf#&W@T7pG%x5VGkr@*9&JKjq%?NfBXC8)hkAP=9@mAj^~)*t;JOx8?k?6ges_E{U0yW-tP*K2hn(xq|fd|ZO+iV+12jt-6Wr7 z=YC2>j2ZH@VfBGs99+!THleO~gtR;NMH?L4yqOT73-s!0(505Uel27$phwCtLu?0! z*4@*bF(jJ854~XRXRpQqveOB;N4Lqzs-mLX$g8-5uA)?9j=XNToJSPHh97w54L<_P zmBpyxc+rb9uOuUc)D)iig;N^z1FT>1WNh9)gbXj1(w^a(+gmilk{>mjIIk@uBTz%p z;B!c2=0%!wn3%+xBZ!{)#yV0CARG)F?vE)R!+KUp7nf`XMOC5AT(GXg~0ecd4c4$iqr5HdA$S;>j)C1-m(O*rJjrG zYNFt-RXRQ}6@#Uzabne)7mnbE->I zFrHAPclxuM72ui+_@WAxi-bW|LfIcg?@T~Y3A7a>>HD5+BAs)9xz7h(3lCikx?ND} zqs1yuF`F?FUt>}&f3irb#bTaR8}92} z6~)-)%DPyMCCC=44mM^V4}Bp(Fwq$AC{v7o=qZ-id^L?&<{`!DtK$iEV!-dCFDkaMOr4K@%}UwuGzuOhj$@6gXiVCV{XOUPH;65IwCntr`30dO!J8ki{kIEBMJiN$%2VTYF zHX3bW)q*BrSbtz;;5rdr7e*=#M$D1jc(D1eL%Dr0>u< zcZFC?#76e+%EL=HLJ40Y%B@os6Cl*B@wsBbvS>|FZl~`av7N}`&rzK#-$AwFmrqn( z+fLZjaK?OUjxRG$f4@zyJ1rj#7oPR=@$qOr1XwY=gD|_N^4zG`E8dVbck+Bbn&mwN zHpC~Ulhcfl2_%9X1n5pHcFU;TZ^{M;kqY`4e+D=5zLF7mAemFwe}eY6PQ%fT@~m~^ zt6DSzudRnQZd(ugUVZ?%TXv%*_=N0IdC*^TvAD6dhjR!QgM-6Th}=X2cW~Vgz%UV` zY;|HDb6~rFAL)c8^0N$`RmnXQB>%Xhravd_t*H>&>8mCnc+0+&qi@chu6hZX5A8^6s)MjfzM+={|T z@oM0`a)o<$g~9jwS&Ky+RmEYoIR{YC>-8i75u7r1?UK`)O78$iUicnQZCgUpI)tUF z=^kvhhp^~0me!#{qi&_^Hyx-4$cb^owZ#e)upPBb8e~=4N|g*hmF0C1Pa5PHR+1 zD(P8i!ZDK7rUQd$>v?e^EP-0V&6SZ{$&z77&n;+!h0(am{1o)9u&E)w5U-w48LyUR z<-DnHRxRi5S#2-uVN81qTlBQK*vNj~kBn-bQ~nj}z2S5n=U>i!*;a{qSh7~|iUBK! zoKei$uGR+R80a3XeeuqIsIRC@QR_u4G!w~TWrw>U$U&Y*f)D5)aY~}Uz9;Xpee?z( z7xR;OnS!ptU-1KE(`FmI`FUKubyCq6_pnQ9qyYOK!;YF+IPQb~!Jh=t}`NTSC1w#{=o;-4#BPh(o-GI;4?Y zW>YhgbV9E18=`>udRZrrWWgrcc`p4tke1m5>kKIp|3DxDO7I zln@P_e*x1m@a`97OMGOVD@YP-Qx(1(GQNI=k7yv378qOHK%@MivXNP1kTt*KN(S~}Nfm%%3D|GWYrQ5UIJ)~%s*g}i)#bStEk z^-T`Uh;7#jM$<$mICHp}QtU(AM|f4^F|t;>HYyztPCFTJ3uA|=^dPZY7k4QSsoYMU znU530&-0V4oRJx&m?I>3c?{Z{LIF@Dkq_Xe?-JO-D7`qDkCI6??d?Be)0JIcm9=Fp z?BNRV0N}oLktWMczovBe8XGKjz&GtNSr{bjltwt7f;+b1egM>FO`6x=VnB{y$%LT; zR3rlUQA03IBj1_WTc_9KP$-2gLoqnUj9LMn>;&zXn6nC&;`NylVR1wU7ZRn09Ih^h z3=+_h-SM|PR4fgDg$KgI*pTj81^=pIZ$>0L36kkn7rq{T6q~?itJZ)7Q6rzT1_r~8 z@3e*$ag9xtB!jv|LbyFZ8306>odJiD0bo`KL{*?LUNPb{E*-acWce@!#YjokP^>o$ zoIuqT6$sHx;P=ky=`=evqT6-lE!0R-sU;9&fj8TCm~@+f_{}MlP4QNPYPxIrmUOw*O zK1>h=bqPv=z}r(J{b*FuDb3F_qfX^RA=ghk|MmK(z2`se>_2+_CxQ{`=rB9 zT-^h%`@VhhFRAFRee@T6l%7xQlW*|J$c^J$d~oU>yn4koZ@NcQuG;nb)tDcdJ_=M7 zgys^BhZtoXTumLHrLf2h&lG$DVd?VGR}Vb;zqDUqY7zTaV5H%%eLt=A_$(i1FN!zW z*d~65{>|VC^ltpx^{*zT*sS;Zuwts{D@+~_J%d%dGvmnM{;Xgt{_Xo6!`p@jkdV54 z*Bq}K6)=3P$zQ0$(+tAy;a_jrzl0}!K(XjzAbS>%No(`AXdPzZ!k&XE4u#NqCc=b9gQOmJ>=2=lI#DF zs%t}Y99Z$4$~ejlQg6g~A(FpR>FC6>B1Q{`gJ-~sbuq^mrDJNRd@sx- z9L@0+&{JLsQK=mQfgX$JVTB4*%J;?tuKGP-J0b8b!d*UrF7fX@bH2)Nw?8y7Z~#Cj zI81mexN68Jf{v^Q-zG1;bMMeYV;B<5r)$=a3nS6M)B!!MIgG7@Ag+U>!YIiv3d$o) zG6TNCI?Q_BO00b0JqLJ)YH{#oTo$-`vn?_W!;Z+G3}&KTRZB!;llsSvm(-1M$j}|uVBscGOy`qRZU&3qm}O?9j%n1BDz=HQFV>( zcsKH z1$S_2`ZRe_WIEW=27Op`9 z@_0uuplZ!97U8g05G(DpFNX}(+ET5qIgZ8Xqob}F%Nvo>8P@T+4{7?@-U0`z(UQksR zrXVv|`+n=oFQ4yy|MS7#qc6V<^6_{r1<7e%oMl#;&P%*iJj+JIezHIA;g*)SWm3-a z(MZ7O`w4uh(v6KVF;JPCtvMTAf_w8ATuIHoE6r9h=M}(~B4mCgh`=H$Mh|k8e;q^8M=WVP&cU1`*-8xE^s7w=Y!^^;w2KvOT`%zBr_ELx$VDo z5?r%5iG};)h&EystZnaV7wS{$9}ZquB3^)gJ#{v;6*PuO3N0bI^I7;Hy@P}9Lv{?v zb^x3i^Psz3WjkT@Oj^gP!}3QK*EECC+eXx$`Jj!^!c@VQ9upKj+zywKn@G|iorv@y zcTOo;)t3^kI`+od4ebL}Nc)DoI=no7sud?Hbv%9*FMm-Go2hu7PbqQO^BFw?p}gzLIgk2l87p z14wmKn@{S#j=+G631l1Gadn<+P`CCw7t{i;=xR-;)7Wx4BRM-$Rw?BH>hfkx3ryTF z0d=q!g7sn|DvUPLrfE!bGkl?23{&<^T#hOI(z)NnG-RQGvsU5+u=o-r455cMP02g+ zz-&OofTols-Q;AH!e1A^wN%oRXzxkzi?mah(Y~S2Zj7wUzG)hOn;(_3FXr^)hxB<7 zm8jw%#o1}o1$d%^c6nKvw#h>jbgv$+Uv}Ps94e8dC4%D`P5a}|u1CD;a9ql$`4sbD zdC8yRw4pK{46#%Y2O*B65v!&Wv+2ZW6KsKx;|LPUMEYPRp_q?`iOot59U20$xFc5` zn^C(+Y!v4l*j4VJ3&kbMsU2V^fvbIJ6)X#RFdCFqNFYY*~lCDy;+kI2UHL! z2mgK@Cc~-s#JTffJ#joIaq-ZbSnu_^FpsUJ-OaBZ3bIAsppsqENG!mBj09sg3=_s{q14LtNxRo(trU32#$|DrF$HgOsn}O_jX0y9; zk9A^LE+Pj`L-yOdD`vl4ER)}<&wbmevw8=4Zx<%9<-`_yzahfF@KIh;vOiZ?rN-4K zKppLH)7GTc)#MD%IGD(MOpIBcRMkE0AbCnZS@k~sIs(7Z-#w~9MCA$+B@SqK(S zre^CFrX(gGMb>g=KdEtZHe>P^Zw}vKCESgY=EQ5I;xM4yrm1{APu8_~KH+Xn`Dqky zEXeJAjfU%*lTda@zX(KDRAAq|wdOrVI<@-Fo0)2TXfmSq>W36(^P${SBO8BkAt{Ni zXugx;)Ef>AiN&Qs;4=|yLmu8D{~xtm93}C-P0^bN4$eQYN6PKWM#9J57INQPf0#c7 zFu-7PN_`e|~#0|tS5hJQUY^;4Tjm< zEvxp^SLRXYYRh~ZzA%qG1ezP++D1PK>4iS}!g3{gcu={ndtKvtwH7dI%HLI~6#b*i zc5NP>I~|e0bR=11LPRiY&cLZ$Yo}#K$MVkfv}_w4xD=(wOElpfr?7a3)63^`^kos< z2cBY&Fc-(@QomE2!8Ae00A>+FbDsN`_q`ENY+P_ck z)ruYFd({v4tkW5v=rD@FPSm8*&MC7N$1g%21+LWTxDh-&>DI(a2$B=k8qSU{hHWEA zN`0Mv2o>*x7I(?NKv*EnrH~7;0O( zmwQ;j=c$Ebzf~!X&6g^rv9ha6-~14NTSYAXA1aGI_fUw&1U(d}S(pi4Yg_tKk*xI| zV+SK4K0>3F6?6%nlmEPfTDJVrmtDayPPj1;a}TSCi486eHaH!mP73x`9cbb{xJhm3 zr|o0R159kOQhlUzO)Uk+Mlqv^wN%}6)>%=vsoK^hJ$-R`lcdAn`qP_YETE`OG zuu1t?3sqaWk;%}}U5FJEbXbVE?TbaoPf0N8G~EbN#Z^JijKPfq+Kb$GLO<5zxkU;O zpewO+UV7FW%iSW^jco89F6 zjk+DNf86Uf-mBd08d=(1-8bLU->*d42F~Z};`z_Z~lc{bKLGUVzIa z> z-KRh8t*sphE}aoC$hiY_^%T^k)5Mbl`_yP&CPuO7x#0pr0AHW1<>Q0_C$>TN1U@5X z`Em}%KhCnD*=*>ai`Oua{u6lYnv$9O$#X%?g!k#_0?=QekJ}0n7HZ~K2na%z z0$FaAYv9s76r4J&#LTn#fC2dF(q~-2J(lUQDau>2ud{q0y!4vH{C5chn8awx(UgFj zVb@lMkki~|f3VHTE>UwDem_d-sBXa&0zN-YA^nmGq`$Bo`YE~R4z(nV^1R)w%yMZz z*RobwM!;P83);+{8uliGe*PzzF52L*z~PKwjSlMxZj)Txll&O8q`) zQW|XwwOV#vI~1yFo9QN}Mk90R?TZyvEE%|VV%HB4Zy(@im!M34HqFo5otiUfA&JIj zSHhC!)DDC|y%OE3VA+-D)5X-pO>Xqrlskf6u>I?i5s%p?*#+>G8p9NHAD*gS_IhX8 zXySSrJ*~cYS7o2tT_Dm;P>V$DRZ!WaMlOOCz&_Rk3j{{72UwnSkvnsxXQ-+MqsGlq z9ybxe)%+%*)%?KPocSkEL#Tv(?~8bX6&~XPZUhjgZk;H+o0dA3P-D#Ug>j<(OK9z| zHnn%nB26!0je-Z!C^wuOc(VDQW4BNj_P}fXfh=C`ot@uBw!$S$gW(wJErClI0>!2m zrB~2W3ud(h0N>*ok|)EXz292S-WV(zZBbl&2(%Pu^W+GY8~mO`x2skQVGSEG*4ql& z;_Of6V$#@!l$W;B{zCF!sc=_WG9@4GhZVeO_ZrW9RltgFx{wtI4y&mhTqzP04r2+4 zT_Ghv5P9-YS+&r_?vd-1uhs^cAXHM~RaODesLK*;S4pp35nV~dvVCt}8afBk3#L)^ z$W~GnH=#I~uHvbsVYCvL3z&a-72$=m?ukdLpn*Ctz1Z-;panq3Khko-qYh;M1GM)v z=h(5>=6Ha36)hCsSk2&gH5As3JeAu1khK`gw7+<#xPk|%=|M(1zSvr;JWP-VoiBpMycUUhiq$S zP=vV2raE2uFo}E6E+e$Lm_~-0=kRDsl%SUmJ$LC5LQ1n6IBbF~y*K%ileWN?zay%# zh2@iC_C17oZt7u+pDLw7CVLcG=L$?7N7xAX6wbx*d^Cb5n0=>ZPIG=Ih5E-5;@sMM z@^tUXi&h}D&d%80=^XvsB#ojzK}&hkA}_9tu!50j?^_$N19cWl@b}AxAbaHFO}AaT z7tbZ{qB0kAXY!wdsIWjNelYh=3Is^fSIn607#Wf_pw_8rV>I=y7iGT0A5 zl$aAm#-G5QZR3)aBguWRP+oc;nuH>g@@Cf)>JI`2NnX2ZdgWzDJKBV7M%Um7R#mgG-?AbrfG1!WjCY!pkGc#`K%4^lB_WtMQg+m zD$f-u9RDTc47{Gz)rzEIUewATpMIt-A(`)T62I2`MT1Iu9>uN1RxPuTOo+lC&ZL--Vn*TMFoIE8#2G+$Iqq4TB%Qu?mJ(G5BTbX&4k3&WYDr za6@F#OIZ2f&t^{ha5(}I-@I$>d~|pI&Z#H-t(Z92>05N8$}l9B#=7TpEr8Hga$7KV z1@pEx@#i~BV;dOb%|Lp5oK0p2;XFvDqi*8+NBQCkMn?0-%ug<*2a-o4tfW8jcPj*J z(uMy6SDEuDA{~7NPYPMquHGBo!gg&`@lR?(5>*#9W();|vA2f3j-c@8xQ3uwA2|%VMgyQa9~HoyAJP&Se2))AvFDOQctfd(-rM^0B=L`3`DHH^R_ysv?W&{T|u^ z8~uPnUkxXgi)p>d(JC5a97Y&dZho~x%JM#}E_65)xo*g6_1$fKbLaL$ zRhzMU`9U40tUJOgoKs!a*-E4L2_Y>Koh(nj-Ts6`(%1;k#Lz&#sLs*m;X~zUqhV>F zJg<0boCsp+71dQEZTD>#L!yoTR2o4^9b})J2Jb0e)$LY4Q79l|LzYr@B?_rUu*hHz z$aXJ=+ksIz45mX#l^oPA~{L{a(AZf}V&H=qT8_yL`(QBv}zffjXUIe)+rX86&y z`$qm)XFHJ*TN(XRn@zkv5|1dx-(h^Du+Cp#b3W|1JJksb&MLhjI@ia<_>gConw4t^WRcGEYy z*H#^C1214up8%CKa+%>D3GNgLmS7wR$p2UtLWueEu7VO1f}t?>V$9VSlE=EpnY2`Y z-G}*!JN)7+FItDeQtaN80&y^vd-NI(VfR-4qL%@_*Vo;(WP#`K*K2Xl;i|vz*If^v zHH!!?*0F>r_)ECnQ#5B9)N56#FDNOTSf zQRko+JI95P?mF6 z!!!j@zU6#+k{)MEnviq{K9KcDdOfY$j|Aj5YCrPr;D7|GVo()CFa@Ei2l_^YK!%>5 z*8(+u?Mn05pJ|rFCMnwaErCGBPy@kjS2kS_X%3=JAV9!YN~nvX#9A;l(ht6y=c7QK zjg=r51n3f?e(sL4beuel9!9EVmp$Rn07u6iOL~l4dJKcu5*-?YjV+<=N^e^$Z>L`m zU#G_0^=Ct))oH|iSs;y;4*^G|sMG)CzbeaCRqSGk*^d^#=reY8#3b^O24Y(_vd9d$ zr9UtT^%Dvk`NGD(Sm`1*iBjs5%t6d9DMwLoW)Tx;lNIebq8ta5?{stut8gEMvI(U% zd#`rn4q6>MR4XADmoZN#H78oVZ#8V4*+qfQ^%LmXSlA_q(uT07W*71GicB@%)tC)s z9^_-V>O2PYiF#yEBv_Om`M0Nfq_OfJcHC7qG0aa+VB{9$UUXEK!J=uP96d@WLpuO3 ztyp0(Ncz|}$p)xslu?Do94s%!zmStAXv|_<+a5Z_t}QAO8%I0!7UGIQM!xZ(v#mtB z9U+6ap_e3r(iFpy>2qm&v0|?eP;?4reB;#R2kKlgg)4zdQSSF?j=#vN)~8<;jWsj~ z{2Gn=ZBppJt_jP{jodf8v@gwX@9h|5z?pqLpXDPCrR7&oCo|5a0JJh}2GpXvXn9C~ zLp|Uz&cjx+xv{~IX`1Bu-RurLKQg_2BhPMAStBwQQzMX~2iKb6_h|`3Qx1jZ&+m%i z5D)PnXkoAhW8-osyiN|YlXO0s?U!cx=i?W% z%eJSB(9E?rq94K0gP-}|cq;-jtJ{R6nhYaK~~U5)y^R!6eR?&4EsZdPd3fi`+=%K2Qc+njPNTF9c!^;(X_8^ zoO7;)5tf*Zok;8}6#P&N`7#x4H7%Xy;FF59uum|q{5i-jdrMwl8S*m*Y+|_vSxH-b zb%IjiRco24s06r#UZu}zdGeoo+!6;NYk2~#7%&#Kq3((>T92c|> zZ5%aRu9i?C!Do=xm5$7kewLPWmljApwDi$q%t1mpLJfpC5q2-QFHvd?O@-KCW=Z{0O_=^luBp z(2Yona>ND+2Cap-oMsimOkpEAd^jzy~X1dURWg+a^ z0*i>%5hf!3?6ie>dIo6bo%X4m4-wOYhJ0fTGg@E$DgfN-@NXJMBUbn7Kyb^52wQ4T z4f7$}uwb{zgxQ(ANXf)y)@Dp_@car~LO~pgown84*){wxtz=kTBtX$k5+2ct@dI>> zau#xhR(n8oSS!3hgpO~bqz}8oak&1@CmCtwRKdER<8J~-VF(~z*dP^nzM~(xhwKY3 zcYFWIboFoi)ZJBG_q~2EM0i??Cs9W;TVY!8UprMo&7E9*wdl*{I2F6ah8VpjKXu%|xz03TsxE z>x-|75Xegi32Nmo*7Y~_WKEy#6rFi8BfsN%j1zD zVh-7Joq4p(X0wq6_cwaL9GQhRi+WHX7wH=@UfX;s_rb-V5!aaDrsexb&mv^mhMT+I?aoJ;QbLwkYC4x#8KHb5U7nxBIEX`8-~!RR z%_mqM7ms!e9_8f>d_FwJbx~U?Sc{Lc^4PSV(xTzmFOAQn89t?ee4yBHwY+x)jOA%c z5uS;j1k0)wLO0!MQ@KtJUKb?a4M$4YO>9kuu#AH#@U_KQJcH^99z!l~t0uUQaS4In z(1ILpc#i~J=P@ra`w-|DK4htKPwrn3XA33O>h1Xn`JKp2TQLViDe;>yO16@~Qg

    @sB6ZGJ`jjmdDflD2tcs#yW!M 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%0D9zmY9RYNN(= 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 z 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
  1. >fWe`xK=bWlq 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 Y3k22g6;J($7CM z^+IwP<@_WU_5@)^m-P(V3GgDBhf#$g(<%TrpRMl@&qTm@=bexPwq33v%5S8G|=JOg`1Ni2?J9F6u zm1Sia*xHkTBJcg43qd(7C=`+fLp)nhft_BbF$~ROHw8>>^!I>o>cr%BheJzq7H6}7 z;R4-w4*wQ0LT2;g?As@AH<=?nNGGm+T#Ui@oNkc;L#eZ1i5leooQV1i2G+CK56Vog z#+UI~W#tQmIr>|a!}d#ow^Yo>BTMKwVFDM;qn{x;IybB-bP!eqU$)*e6Ea}V1ztQ% z9~!~OKaI`C%ovp`LEjIcKLRkjHa6CM42NVFy^STHvg? zlbW~GApkmUp&tW391(4x`5C0E{P%P~iWOZV*j~y$_<0)=#F;b6@tw{xPT&CAh#z?g<|#!7ZYIorDhX-ID%g?Y)cLi*4GkiF&F7d7~bUy zf+h=|A>CgMs>$CAU9=>mJ(&A`Fp28~oec7ryuF@gmnNdI`loa$m+NmgS16MHFC zG+6M;oz|<%x}KWfU)+#nU+09<#;8O-llC&(;69ae2ZRkk}1 zgH!x|PTT{X^QMdj=Bdl874+J%ml)j^x=Tl@l2t{kR>aw$Lt(fiXbn0!hpLL9>*tim z#=ezs>0p-t_q}y(j6g&0gcrWqX83!$c`oHwv^|yh0E@LG!&!2iX>)USJ_iR zV+-Y(yRu4UEba|DFCkZoB*F((2qvpR5=B5x>&&%u4 zAUXl(bOCW8ulk-;4MQn!K-H~^A}>sr2BK%hhPHnA`aZrMs52Gr9;jSo&*0=}PoX~4RKsr{nZ3yFc(2js z%GwL}2v6l8OeNS#4%l+15ST3+S%AoBDn$B{dN}DR)aHa!NoxxJB5~)U*LdlHntN6h%yMRqN zqCf-v;K)fxwGJF5wmI}GRnS%Plj~0RFw4K_s!P*d1Cvp~-T*Qc-aS@) z=-gd-ax!#|Idr-Pmx4~2?nNH7c*irhp(M4)0J*>x%IuRTpFMh%%}Qi{heubfO0h-q zt{LDCt1c?Okm`_JFpr#9awqn!{=t+(WE6*H(IOoXzHQ#IPR3D5GdhKyeJ?+_d+#8} z(A2$=HUSdQ<-S=Ko7pVaJx~mi5C_`?yxn2R5#e2_8jw8K8}%lEY|qLyx}z7|3~vef zJ4=AAeP_HcJA-eiMo6vD4DEuxKB}Rx#AlnqT2B5h_1p9JA-XD{I7B? z-4}H~Th9jUe(5?%y8w+uSz0JWEFecAapqi|iO=Ho0g3v`jx}zs#A8WpDk?9Ul~^Fm3A-9#vTO!}JXHf!(_yZo+rrb?cUGXdXBKP&ew}Y;t+&+xhfRRk4 z->ByZ{oqt!3>TkKA5X8pq-Tdbr$Z+6tijL?JXnZYpLONTL##o0d2?w;Y)4QNU?ad^ zh#@O6fU7FFYLd!K04FJ}gkPw8S)-TAu|*!Hn$HaWT&CM ziZlQeNnNHhbyQ7JDv8~?l!+|Wu_@COA`_9BQA7e+2!N?9mCX8a-sgP7nU{H=_wyxNK?Bv{A27W!{&Wcx5{xr|L%hKp?qUAyStuhsa*bSY>Lg zv4x(-xW$3;Xy|uf4%O7jm)-*d?)dQ5H_$bCUPH958kSEjVzi!xaYRs>6Y+cZ3I8C4 zj7 zNesQiw+vooXep%^_)G1A`KMbLK`ykT@}(F#R{>bHt}>*G^uvRX5QqTEnu#9Pzz_ee zdQq9q;N81bd$Bmo=`(co-Mau@a05eQ?oIV>uzr`NW-}JxApLw@eYc;^+w-bfGe&r% zy-9n~)X)6WG!L5vlj3Kab&Rvh8y&qGHYg&%v{MO~NG8?fuHf``o3RCCXC7i=64l_~ z9(rI8hiKdo?I^2ud_(z;3%Hi8WIA|%sh_cBpv8S z)n>l-S8FnqWtz;|`6TV{X>qL~0IB)8)hXC!C-@fgdx|<9+_1F@lnAm%iNwC;A_mh~ z1XG@n_`QkKyr{L?pCS10UENN4us@&VFa~JvWZ@Cp&bjg8eErKNEF`#yZ87PZbWY5g zG}q<|)Ge07phOF0->5sVECJh)tXL{M3Z#heu8C;denRutP>|_UN=w5nU5U?CDT0~o zq_B|ID>Rj+<%NEd-cxjnD~eMZf;6q?#q41Doj^Tl{lQ#%#OXiqg!tXNcy}`l)1NEl zFZR8DgDe&>4jJv!*=MB}W-hu>W_d4~TZ1&c&`4M;FoTI-wW6hXjby&0lcBwh#C8xe zP=M3-Ns!cyt3`b{Tdq}CI~d%(`)q6TN^=r{F9ZFu(qMA;Zg>{)HD#eUpqsqlkRPU* z3IEngq~XmCOohQ9A{Rs856@0k@Esa~$vnN5#;(Ad+PT`8{W5FX>Uae>^tzmnD+G@R z-Aiqm05OApGMqHJtI#yZIkY&Wq8r+Qkz$nACOmg;bWl2-UO+bh2Ebm?AFN+$9c<97 zqm2FHEeYjJo^Gb^8GmTW}P`FQ5u!dTKxnCBcsp0jI` zPO)-nWYa1N+i!}khjoBvIIu&gSDiM8i4_$zvdagy=L}yVzRsMQFpu=&m;*JGizUzD z&c&vMl@1$$0}fBTHCPL+`N>Txoi3?A8sH$5(dJR6PBl_nU1TeT>1C7z}ssT5^cQ^nEzKB*3xD*$YN^8_Vrk2XJDu+SGV0wo6cA<*`h?_I|(| zhsh2UvchV@Q%^8=nQq~^|8)s~?=+YN*uW&6Yv(3@oDJhN)f3K=>FPN5ztxMrLo^(| zHHG2v(ZyqhE`%JD|6zY;>vwubjrFw1BLcqDt?T-49&#=%FL&pFUiGSXKO8;xYR-9@ zxqnWh{AWfs#}JjLKVp*dfDK`8ua?rck4|9U^nfvl4=Wx4zYe+3$t`V;#1ob{l!#S3 z9{JARTk3_L|+ddKe^rRXi*0rga$RVATYgqjVXc6 za$KwvwOJUp0~l>Dy4#8Fkb%1c-;q%vR|7qEyhItfu6m#+OtW3EPQKL+=oqGe`NX-Y zBlG4oRZo*0G8ukF2e5+`%FdsI6FW`WxA~YJ@!)+%$SodqzQoB9i2Af2Y)%*5(L%Tf zmi$zOO#k_R{XfJ1_5bz<&my?aBH^$dbip5NM+{8TuuINsgrr49LDUI2CeSZw?C_3? zUNy<@n`6x;WIKFCm zAZl|R70^Ch?4E_&PXSAwQ0DxiXb`tA9;@2&J1-!XjBP+?yNwp(3+c+Qqa4ML2ff>E z?7X}L-L;SR=S{Y+KS}lzVie#owXh;_%V;xmz}(-4U(1H#SbKDq6U3~t&byfLTXoOd zp?##c!D6;E&Wl%wr=0CaX&QommWncT;Lsu}=_qQJj=DQBq=Qw=iBv|%@i#e1*QZ}| ziJ)9C4A^B+Gd%1c^;_t!(JNyN%Exp81=zS@@%f&DnKyuq9L>BaNK~{LVRTfcW?9|5 zc9g4-k%YfmD`9Y)U^2$4=X(RIufu7qIv_&8t;!|+9fd9o?C}Ez`r_YH&T##%+_KZZ zkrBmznGyxe+!CVrtcQ5S)m`+wF6zyHd`P1q4I-=t{JTp2E4UbVe?^DJrt^xgVb`Vq zNTll@lp*e_`fn%Y_%XHL*Vcc(_s;!??`+k7-@pIPoBHoxq5eBqI6Jl9k8JCuArZ`E2@wCC88D**)CZY z3QVaR54A)@Na8YPPbw}6B=}fWNEY!NWuq<=?hGF&c^4S8oJ~*wf^mjR4#-ZR0_W=0 zpt}9;Ay|Y*7=;No61yP+m_IqNPiJJ&X1uC`zvo1PTU{yR#`|d+o?Uq6%cJMA5^V^Q z9i$mq&;`QPoOr>|?jX-KQJo;sk-I0*sZ4_4jH4+q;1rl%3H%18q(FPWdMsyfbu1?b zpwr7gTKAbL%$6dSiID1P2H6{;yU4?qpwt36J%Km97B*>MGnfHZE8gTC{<^`ST#fy< zw2|=HDm}<00|o>p3fs*p&Cqn3u@~T=LT-e#jeaRN+L+p?5iQfbtyDr!cv{XiI>;hxO zd{mHC;UVTyoVsT4VB#ZzZ@(}y^VqHOc8PE&3x{l(rTzKI$LYU_a18(b$(Q)sIU$CR zK7W?}NpghYvnS6!|0Mm(NZ*EE{o&c;ufF&M^alm#G5k*28MvthxJAyPT$TU}6@^6# zldD~C4w%t!t*?>O=%q*4V>289_fC^s0dDcAI0~KY3Jd3{75S*l5Bl14AM2T$Vu)21 zCFtvj9XNOAVmV%)12pg*BD}Oia|?|*0yln=2BGU-%61Pz!n#RtpGJ0?F1MR!2uHkHStQz$A0kgwFiV7$kzPaVUi$ zTNf6hqoii~7*Mv|Mz<^nv&*46m!@t7`jiFVV_$O-$P(wVF-kz!#|pP13?kjPQ!Ra& za@};_s3c997|YDnaA+2EgpWY&mj(iX?$)+*oOjLQaBTrXMCsXSQChmCXJTzXTGy)% zrJ%z7qb{^IZ4&34nSa8r{cSIHhlk9U%dj}hL0&1qNyhLp zmoLNAR>LxHdcviQ45<>NBPGsuv zt*1{uee&hAJLrXUT)(Z2#9p3n?G1HU*31`2+R6^#4QgK=n>sIP{%vM@PZ*T~Z|$W` zGg4%vp2vTC-VVe3er15p!Dlog!rG+1Wl)Eb>@iVbf%usxEKt+<_zrs%H866?~Ymj zq@v|R%3bZCcHI7ug4r}ok>+jPdL8VJ3NSmqI!!y;1q=Iw$n^u==fiul-ran46r@}G z5j+`qQ|KU-xQ;UTZ7JcUh8c0`u8lX{Wtd?yp-5s-p9-zp82yMkFRgoZrVjYbe5waK zWu4njUBk%$`#2^BW(_eY<8Dq`6EJCEOquZ`Px5p&=+HlVcTGOP9{r(_J%51zd{|ID zf8c+9Sn@q{^b6LZ?|<+p)(4*<<~0t&VA^gUmVC`6sqqJ2r7bP(cS3ZzUW|SHVRlKU zc;M6m`gYU_3CAu3BQ|gHe z4}4EwVNI)pG?`AT=K;{=#?(pf(M$xb8CUloX}NdY8Y0rz`3!1OLaEfH$o-v12ZM!*@Upi&r zLRHxe={Bc%EWAz5j6U6J6N#tou1J=ozw4iOJiSd{ZvdCtF`op^wpNIgji^N$6F+a8 z{%9$q=?&V1>)57|c69H`pQ`)3O^+=-G<}Ww>64OBYFe}jjhG&vugAHVc&eSnt5AOO z*;VvYj`E5cM8s}>B$C;9iYs!dB@Fb5z?HjC!3oBGH0lv>bNf@I~H2HKS4uwwn;w4_73GjRklfmeABeMJBD5n2{&_qXwS(eUBhQO zbTQ!T+VqDf)7>W?M#qX52^aZ=PCT^fn?j72bLRsDYd)Or-VY98N39wwa})IbJbwM%TtWOv(d)kn)B2s$&v-J@Tr+v?K{( zWNWP5rmGHN*dXx0n#?0s)`caLYeJ`g@`CzrRiXYT1TXSutoNk2N)ZxjuN-tTB_$=#e zbSvMxKbiv0$u8CwJBlsU_fcA^t(h4}KX#*w*>oU3qo4dEp0}eo;bal}*)kb^ZWf;E zMKPLWV3Suqps8zFW6y(j&Hxny0ZT`BS-T(paE}{3yilx zy=vxh2V#7VQa+*OS8eF9Bs2WW4F5iL$-#a~%H#dAfLUE)@6LMhcA$ewq@UFS zgEw;Ytn?PgZhjuE7bRy@er!BOjvPkT!clLBC*7tLVDqrEGwBB^co-mjCNdoYyo%Sm z!K*bZ{~-pV!kD3|VqW~rgHiED6V2Wn?zQTP%Id4zVIE2Y1a%^b9AfRlTQe!OBIZ)A z^k!~BPf&%2p3DuNHiXD;;`s)dZ~N@yY3X2Ls8-dF(@Vx}zgRE%Kxw0&b2sI8v#tW& zeO`8ju2{Ly7;7D8FiB^xurfbt9w+#f` zE4DVK`7$&lbKPQceAIMlah+>qi)5GTXt%zoz=62Pg(YDWTT%k02`9_*wp3_gw9yq^ zdi7Sz(!A_;R)^@jFgdWn_wHilP})7B>csQ2QimZw1*&SmZ#moNe~taFnM=nw_3Gm% z6UTd^ZrO$AR#^^5hZY9uW0BleDuNkx$c+eJF??xzxV)TM%b4|4N8=EjE;(f90I^7I zkZz5F5bJh%wl~Qvk7IO%FQA!Ve-~DJN7*+Hghf=IE$F#rhyuj|K$Ub(!519DYO&(uoO#Ge<8% zhp|EW?!k$#Q`eZzDB>-v%(&UOPT|ZH4-u#Ty0+d6n-dA~;wc`A&#dUSFYFr%fyWX! zUe?P&uZtuP43Xn_=EbDnk7m(U!^fLLO(^Y3)Jb9o0hf!__vB+c$;>X;f!8+lu+>Bl zt^?8(>1bq4+$#v@EI=R2m6%#|XaN^MmJGoN9oSEPM$MNh=X<7iC%_&CQtY%^G)FiQ zxK$V4jW+`QPa4^&*JG1G#^MlzjtZUGi>C8HE?79x8Xsa&^Y%4r9KM};CnEDs^! zGIBY0s&M!I9^a2p~~=c{ znHU30w_WWL1^rucAwBBUmcO;7YE??d+_Bp8UVRR3fFABjjWjU+V<-ec0ip1|(^7fq zwrk9o-MB*{!x&h%i@NcIMHVfwMwGRS*>m!$p3C)0%Even4ST4RFnPz5c|1H6QU}qk4TGb z4Mez6@*G9HwdZ8G)$jK(KewyI@>Z4(^1g^mO39p{GSfhFEtV=SU@iFWjO<(iyKd8Y zlvey<>x`tGq3LN3*`aUE(r)SVJ?)^_=4^qo^7*JH^HCh-j#xHSJ5|Vl zCLBV3KSf*T5kb;k~s*p@7+ z_!ZZ#-C@8xXgTM5*orUjVykpN3{zmC#wcw#!EbDXYeyEMg` z{T{VQ7WL!Zs^N~`TKo@P1+gk;CeLgin*~z|v1mzrGj9x|564A>cT$~Xs%d4qIsHWq z?z$)?m@k2S1xR`C?sRB4Ws*I$<5Lu@7w+lsV6{9)?&e^#n9b_}9RlMdLkQ9N`0T+W zdtd<#w_TyYa{aAdEsF>mXzXG74yHFN6LMoiylaJ0ZJKiNFt^-fLzsou`PMBx5EdbY zLPEAfy7bXf+dw%`zPnkEx)8m7DWz zuA3Hf)10S!ShZs(QP8-GBUQXaV}X%D1Ddw4G%cw*nhB>0c3b-_Z1+KzGgavVny5j| z*(o4%+dLc<$wAR`R+oOIWBhTl&6kURdpZb0EvrTjk~}&h>XxzIiDbQv)fq7&9{myN~e2;LI|2e#SZ)#ewEJ~VA);3GhAKxj$lcj{SmpA=a z;``UY<%3t#+CZqGLR4|6rzZ`DcZXlsobvq&@!Z^+u>X^Wg29RjwxFFk70EAlj7ho? z?uCcjG2K0Gs+sCt#w$I|Fa8{7vAfU>bCHrD<6dGHJ@s9FSRRZCa?z1-}Qk!j29DXkCcAVkhIVt>4A$b*%mX4cvYmuc zlA*1m0O)5lRh(pySSH=Sl=g3AWZmMV&^@iXG$%Hkt<=>wEcdsoa1qzB4@E&c!(7xSw_mc5h z&6gT$j|PGbbu4=ejSCRG&xs-$ce_V3PfH+p9xY5zS}j@OVpwW)%1mu$5n^c;=6k~z z*WiY}UAnH*Kno^dtfLE8%e1uVLA|Ie7FmIgnGs~fT$e9u4=)rcR*ydNLCO&v zsQk1Dt_VMa*vbr>1By3!Pclmm%a|?iKyT6vN=-Q@?d@1lmM3r1E+EzI#x`y?X5zXO z-AQQSDuP(zHF13GDn*?}6=_i)s^_R&TRn($iN=uM`M%@qK;$0qot=~t-Gp80h`wYe zBWMPix}?ZhHyoGZ0v53Z$+qfEX%|{4Do_;`EUjk{<-}%?8G&Y9OWRB2PL^4<+L`<3 z7x0e@dPpfXMYTr0bJ9jpg97h+-zO+!b8h+o3?dOM5(RK!x-xHUOJ~ zrWOBv=7f({2eV%m&)VDJ!IoE%nxq3h6m5NPOb^!f0pU)L1x}4C-`0 z%v206@ZVG$RM-*p?u!jNf#s=I-n%CS()Cu)>NIk+>VTvQSq7$5I7_<%9Rbb#Xb4#h zjTf`0Z7eg3PD9*i5a^<-=eI}ZkAZ@j+O+&wAe^rDn3P!>^9B_5qhT1PNJkqA!IM(O z-Axozb1*5W^>S23O8TNDJR=K5J?wG9pACU4{Rq>DV5~@To}GYwpy*HeQ=2xNXt5tF zP75ZpVV*dF@4RrG;6k_qC#TNAuZ}w59n;Y+zT}oBiA3y8E^&`JD2aRa0qvbmA6Xj; zcrdwixc6a+*q-7KX2v30TEYSY8|^ynp@~TTqC)wuC};a(Gha7j3Y*w%O)f_%R32DAe~nHS|lA5Pe>co zG?Kb70T|4v*RH{0vlNpYqbVUJt6R*{R?q8$>OiVo!WC+gPXEt8RpY;Xi~slb_+Q4~ z-u>UEVZ?H1RN{7Ipjszobj6-l=8oMa>kbVT}5btaPw!?GvY(5f}O&2j||v-QeYd3pV8 zi79K3Q5?cuP-08{w&Dr5>w4NpXuic0m*>?A<~s{j(jvNOlU3$7X%nwa7>SdIr>mf{4{X$Fj-MEHW2S_WnI! zh(ng}<`x$-sZY^OK(kGA)3jgC{5P0MgW?c7xNrnpxfoRf=j}Zs#Rq>b!RyN#C0+%m_Rz_Tw!}vJ(x)R;8hvL~>!xU3@>Y@tFnP;uF%efP{_KMLSi1rGCn7i8 zv;_2O!0iigTFJ@UJU)|Kn&ynWqDIn2g}_$_;JkK&)29eU7X}Bl;wk>A{g#DbOoSi8 z8R&DvFS{aZS#31PDKMjfXqh1Q(`n`HHau?^JJANBB)|!ZeSB;ReH4Sj8FEw7rg-Ru zm;>Z-%*Eqwr)-FMRxU-tr#6egE@WB^0-=S&fs>%EDKKTWw8gq=tUR0$T$ba`X-}9{ zkE_OCbX+plrw6|fw$x6bnijbT3}D~4$tv)KmGOT1jS4B#x*KO?Pa=di$fisDs?46#b$|Un>`dIpx-%x#RK9)jMsUB zzmY2tj_q<#HR%L@zmdl%?vbsU;<~Ip^I(h-T7Vf3Kexi)!xf?+DxoVXEdnFbsoE%b zu`(}DQDA~!jzL2fm{d>4z6iNHL6>BVm`*IUSJIE}ydW2w47d12m6IG!3i3`6k}ORFwDYlHg!4z7 z8`j|Vp3*`0z*@Y%uqLzV&x}SjsG*u7`zwyYD4EX8rG+AIk7+hYPc0y}O@rTKLGATm zm)q1jpltBRO?A9bj62*Ema*A1n8xo2Hjv_5I%jJ_zT{^Xf_Lr~(b6ZSR@x}i=wyE> zx=D=@%a6+EYyv8AlCBpmjboh@Gnsxs(z<3gMr!LrtB+|=d^ER;yAImMqtNU3mx{UhqfnuPH$tf7B2O=eEUo#zL{qi$zbzl_NCWkd~8`G%CR56OecqD+gloDZ}5DJZnW&n4UXU7mVxNl_Fbv zlxD{Zx0&;zk3*-sO08&wS;_9OcGj#$UKD#C1}b1oRsc~{QKfx0L;P~LC_|&8(*J)5@O`1h( z_!V)ckCQE>ZU2;MVV|y;q2l>M0U5*0TOrw^nhejx?mu?o$jRWn3Gp$_I-icka0#F5 z?RF2tFH;mmnYZ+a=TSCb?_G9?2S2wS5!J4)lZlPzVqK5D1kD$k;B9&5ChhBH;WxC2 zWl$UOXEO4wUmO&Ir-fg-!@jc{j&lpg(Yk52)$(>O`a;PsFzgV9e`iJ%v!&9R z1-N5s4Oy$>kM;0W&s4Kb7ZHLWuI}x_tuSD#dMI{hOF)_e2txN#rJoh{SCC=Kvwl(X z)r25h>9lqQJs{fRJk3sw>EBr>DrDM3flSDqde6=bu-BuoH1t{Bg6L}(GQ)@P#y}*p zM;*C(oYlpgZdT!6!hQWZtEgyFN?^|Xdqz)FvN#B0;w8@B>5Uh+VsV=yoHM%kRlHrJM-li2T3KZRXo% zk}3XkKvSi}%~rD)O^Yx^X7|m6M}g?}Tt7(Q)5}eUPt}!fDx94lmFjh)WTR6W&8P^R zjL#~X5i3cD$yrBUOjPZ3SxlpfEFfejx?1?kQ+^U5A!FJo;jGB(;$vR`9 zP*C~Pu1F1gQR&fQ`*(dN%JWzhx!1h$IHaJaj*2>hsTqdWvaeAz7+A$b=#Y_9>!i!; zE%$Czl*B|_&%DejmOqge&M-1PRUmIVB0b#HxfS+HWT(IM?e?fP7%lqcLZTk3o~>Zs&zeKC z&kg;^C23n)-UhoG0{4buUDxh?xqd*Jn@5>A$lQKY3!tmPs>A}y>zD!xWv!`Z_;M;x z#>H>p7NbmKQqfYRL4XvY=0T}N5l^~*KhpPpPM9z=$@=?xwC4Qp;CdfquJ@q(Fjqo6 zIjw|3j*D1ksqL8=07*c$zb;OjMRQ7wgCsXesqZ2Pqn@gPiRo=)d?7274>b_hQq>BG zoWL8x9?;lcO~4w20F^EEIsN;5T8M=C##O=2QwUA$2_F{Vej8b`#vxXg_;W!#;ktX6L*Dn7+WV&{2yM|Ga5F~^$LSsC{zaBJj!z{L$wg-#hs2 zDkmv~kzAdQ1WXLfQNb}3EqriC=-hN(4vvyd)GY4dKQK1qnui_qmH<&YTYT!+W*&jY zXrH0lw9*G+Ya;2I+^h{XlQP0wl~#uHkE#BCv5hp;1Y!&96w3|;1DEuFgw4pcL9;7R zYQr8%ZBzlN>NV-j$#!Lz*cci#e&p#P=cyP z20<=7uZ&DA;q3+Jn}9{1Nm(e`W2}SNXS+wMI}njZj~KA|$i=;glO^Rmi`=?IGUQTG z2Di#&N5UCA36=z%FutEyqXr zT}}4nqAe_O$xU;f=fMAdCrw^+>8nBa);qS9VX>`nB(J&kvtvBG_v32wq@woB{N~6S0-i56* z$Tp>ul(!u=$I8~gQW!oACKCc>`o#|BKPp#*egTXqruC?Yvs|u9G((*G8lhrgly+6# z#ooE&AdEqAZ6H76x_9r4T+q+Uo8zJlT~zJb@q_p52W4XiK-tC>@81~}0_IjK)42kZ zBTwfDwHFdYJd+#jEnqyj$)>qS+>UR8TGINJ!!TR_xWr~^>lnDjR^`M;V*u|_5cMms zf0(AoX|8_VEO?bE;@ub>Tv%?M>YfbTD?z=Mcc?_~(4GO%a=uh$E0dtf=v}(_L{tPi z=!w5OuAn{EGJW9OeZ0!5BRyx`jqN$im_fjMIPg!i^->g<<&n^)^Kwht!xdQClfl#U zkW*8B4KTuAHnU^ukf0t0so3QK7_Zj-x`DC9%V?gM>Z*<`OEeB#vkaN-O8RidTPR4Z z>TM<+QZ;Ee6VEztj%r%|Q^q6@80JX#CazhPE@@t+H)|m_*s##ETU1e~Q_KJUjLkSY zqJINTQL3nzsraQ6q?*dK#U{(`xtS67uKnA3USQ|Z)voIxX2^1NnV*r@vdQ3~?A{7r zk?psDCE_~x8j$8p9y`z}8+kPX(J=GI))RNjS&@ptPyS-cEd!s^DO~<($8_JfO0-b-#{4t3ZU_9h1SQ zWO|VHTqfyAzQ8`R(0&Ikei$69wv)(z1OSkG=L+3<1cwgbg~Q5a_xvr*8)JmvX$U@L z{SzZNdqI#_Cwi}F-#Xvv(Dckp0oXOFF;E^=zey$j?D;k4G;<&??S3M2ooQ7|_@-nphH)N{^-P*y53)tM_y3hUf9EzjlS;WcnQ2$^o87Ne|^}`?{1l})_;c2^f9z5H+jIz4v ziRt|x1E;e$y#E7xLk(^7Pvo|$^T1vmbd=xY|EH!#)#0rl;z%dEHt+r=bIZ3Dsj+cO zHmrRPY7F5$zxRLadh^~ZBN6gu+x|uO|CitKUuOS*_};@E_>Xtrd$a$)9{a!T_^^(D zlI=ct*CT3XoB300Ke0o(P|V2ra7y_w;KF$t?cTd7e4aN}ulk%>B^ygSYOx#t4f6q3A&Q8UbmY-^=mk=fAH{8r2V>lHhE$RE$7R{U!(QR1vPH549>T*9mQ`yTE6NDVVA;QDnBuI!EiF%z zJGvM(kotm=LI)w@=ED^KRElk_RMMvC?gmZ5hNVGfhOPM8U3--Vk#(kW zWh#Pv3$|2JDuI5qcs0=nD5HmTx4L!KoTdeDv-b1)JEC@Hb@HiaB{>Rfv-iSiq?RLa z22`e>b#?|{{aU=6GpAr>7~l{vHYDPiK@5CGdtNETQ4P=Q`Fw1I5P4=*>xhDgx$9Xc zcFCDq$e>L*6xf=B`ajLdr?w!c5~^Dr-t&E%rbC-cj5`vQX8jgb#Mc$Or6}wMJ~2<%^-tV9c>5@@^dcoq`YC{vh`p9;y{dtckkMZkUIK* zNCMkZ-GX$ot4Y7+-^J4l*zR~-o>L%Ju1Trn`Xi$Xl#%`w^kU9T?6;f7`Nf+QF(@v7#W8}3DF90_v{oINit_^hxc_!Q4y>mo8)^F-lE85W4mBZx?CNB+eQJqKc z>s5wE{!l=~O`Ckr^6UDsb=_s}C{bs_9@%};l*)L6;7qG=8;*vLT{Kxz#=0RlA;j%O zedYn07(ulvV9mODS`c%-aCB~Nj{46{+?Y_ktpe$$0C^kKL-8KhOB2tSt#O1TjnuXj zYg6n%0QV{?4zg^)-MfA_|3%&bJg5bALA7li>Yo*-vKStKIT4~UYcT9P!N#Qw0>0$7 zi3D=*SkXGR5^t7Q&~x_zOQt8|Tn`{4EQ_)gP7)51WBnbqVy~Y&tk~%P32+BJ|KC9` zW&@_fzFAH(vijAG!K>{**?PVF|NVF0d1L?m^8SBdo^}tv8G{}HzsmC`5NLL#>%Z$^ zv996}YgYs1DMC-)IVJ!B zC7A`&{#T`*)^UHFPp9PZsL2e|f0($~c0I8atPTz~>7uKyxbjDwQFN>_eR!j5zz1iW z`JC0O*p`cmZl!XPJtwL_>PG^N`Bev?m)`16V4Vv5-f!3eskcF{x2jItZ&eJG&gceq zBEJ@m@5-uMKX0DbkKakBhknoz{Ztniv+4>cQeAypjFv{XjBJ_R#T1YlFMI$D)XHUM zfaH=fC)ZYs=F^DcO33qURh?&&Wd!g~mSF^C#BXp{4{ zF)DTkwTS6GzNr!=EHo5V&2P8+IT?9aM4zaKy1krw$G*-zXc;B{yb&x@B7Owv z9agOw(NYgs@_R;^jpqh(QAW462S)f}8I4(pQFTTddHZm0npxw}jh_D` zQn7d`N7c6*YSR2xMWw#^j3w#gKR}%~Xf&}oCA-3~sj4qzI@#*$$j8f65?|csv}(sM zhMztA;&ZO3N&f-LcDeR}5wNgf2K^TqJnrt)UzcxPR;A`BSW~KxSJepV8O_Y=+Skb( zKG>|)G`dFCw%d~6!aYHCWz{gVv#}*%tp4&@?%%Lii+M#svQaR3Ca*G{NUsF%@VHvd z_H=K)Qu1nMQ-7csERi*SQLUOPDr&O3cGk@2#+9J;)(Z7XlC9wp_ABrzpJ1IAl|8J~ zj=DhQ-ag zzNg=O>LKN0Msj(Z(J<~1dOgKWHQlr1X3#03qzg?yMKq;ZUwl!WS=;@S^v9Vuo9) zW>j~eIg8FA&>kimd)4GUfg9oF+Y=gKyXQCQyt76?&GPUaD)o6o@Hbkqm(K|Ci;x8Y z9lYyA;Z(LJeKG_6gHLGta9s1#{*=k;vV0&%f28_VJ9HL9{gOMo2;Yq4Rd99WO4B)% z9G05eomN%Y*3Ny;A66{6Mk!osXmgqdeO+{eKIn9VH*n7!*4wT9EbU2)dTzzR=mOr6 zPx?K+@mng$!HfN#yq&YiiM70cvydeqoW|{yVm~2?qMzDn7g@{m&6JwIvxCFhk-r#w z{eU;;sF`O$hk}<^whmRotl+@iJB2$`ynrp#C~Z+#%*FTyQhsy)k1TUPA`Ni0|M$+r zcklP(|L?u`{u}@Ab@Bh`YW=dFUm2UvSIc58zbm*^c{u9)llFRfT|wgu@C*uPjuktm zJd{PP3qP{BF-RT(&uQAzE%$MFaxq&m%oinw$vbNdjh6ZFTs*g4rM*hR9as5}#xs%K zJMOt8=&PiN*cN5}rW0(8;3i%n7MSC@Fk96eR{tH7eZ<5y48|3eTv;wU?dfrH+{8hw znx{w-^c}H@0W&Q3-g~(29?Hs% zOW$lbjlB8J&AM*G2Wi7`iAR_}XM!=gk7KGz89wIdPy|+84RtR+PWAvCf_?uW&za$0 zl504UoZ+ai;ZyLaIGcx)C;QSlMa#bm-^!;oxQK+>`O}JOK!6FX~>*D*yy|qSQ zjHyB&)9~eBtN<2SDp1|~OAA0-2pKdpnI-ZcMh>xPq!_F0!}L6Di_7!LpZ}b${PUkD zel5dArH7W~F=9#DYgdL(rr+0b*T(7yXd3SA-dbGlgAQj18hFnYGfEK)zF^@}rEW>R zUVQ^SD@y;2ZH?teZY{r&SyE(joodeR zMevGrAIV5xQOI-@+1G38QB!j;<9??J=RiiB1Yf6vAU-Y#Or&6WP9eG;l}SlpQp7$A zYI;w}_#T!;BF3Z<+tCrKvF&z5acOkK(TbGsmR&7aKlEew|I9K!trpEu+O2OFgy`nw z#~Y}An=&=Il_JS{k~XIAibgI(%E33POHFvS7dQCm;<329rjCx@8$zZbSqpP+o}{&> zs?JEZdAv~!t8llTUG;owEA?oSca@9DLD=-U?Pwr*m}nL3>o?~9kFfts2k}+>fNSi3 z*824FKX33quaEs-4!`*U4*B@0`~Z7|1seV&TW8xoLYkem!vyk0Sd{5*R(v zNhg)_ZMC_Nif8UAuzO_h>Ali|$%5f=+U~_Ssk0lWsBL?htKasrOy5b*LD8jud-~Ov z>=71Qb$@8e!`DtVm!?e?Y_5KYKvJGA<}XdQ{T{aE^X2la=lG;P!_b@hALfBxkF7S1 z5fYhN@SoW8Kls67qxnUpqCN(BRXV27wyQ@Fl@b#bRmF+0{+s-|d++{blwAQjxR z6A2=>?8`-6Ho3p4WKmr4Y^B|?A^xpHniUa`V#f@_WXt(5}G& zf6nN3PT8cFmzPljwfF;dct&HU!O4g(&gDn)oA$sYr2L!H&=}tyPKT|n7(b5%6t{3T zYl^1V-vDCjuut*czr5&kq6k40?K z>dDm-pULun zxeUN1u(Vgm2uP}~a#=PchR4W5&nfhFU0s4jcvu*KFel!7_my3tZN&8mYfY#8c$FT} zj?Y%jX@jtbdnmsHf4%x#koO`e-tyFH`;?Bv5m?YsNdKESDNaSJdy_U_0k3q(>TrZF z(s|H9Pfbc>aCEvq}kTGWq5% z3NXVy@g@GRfR{TIj7)*RX^ee3#{{<H{KFmeSv(;CRK?q_SG7))9T>B6T)&BPY^%RJ9FpvI z!Q5=g7$apmd8M&OvfOpOqVq#m+DPr>-LPkTkv78&mNO3B9UY6c`1NM-HN_O#tq#>v<-Gx6GUsru zAg%Z;DL;l^@0YZpQM2k9Ecjme>vGziNzPRAl%~hH7(RYdAk(hi%BHGm=ywJhTr|(N zCr;VNPeT4P0+#EXwYP>&S{^>_6uy$+L7*%%JJ@>^3!h;Yx%yf2xqXS*Y-E1;Pv;S0MhYA8CLxp4l?&4K`^ z+Kax_XO}v##SUoXCA0ddf^f&&e7LUr`gq=`*Q;XgoA0*0x)n!ZwwYC5T{k%D$o%n` z0IZG*AL*IBUtJ&!iEEZ$-#-?V5NSWJ;Yes~#|IZb0=u?zgCFJmNr8WB7QKWA zo>acA9+(F@@O{^AQ+CE(vyW(x7#VW20GVc3oI%`z!^L34HmF_4XnG?%=r?}-q>t2Q z4vq`UdpbaOFNiJcW#mX-<0Sp11KY*==9P)q+183k&-59i$0}=0$5bAZM*tS|1p{r(A-HJT-( zU6DH7s8@qW^a;q#>4YbH?1zU$Nv45r2!OkF6;7um?v`EEWGrf^_dQmemFuXv-`pp^rYoGsl zNBKGGe;>U2_Wd38zYpJ>|F22>w>VIK*%Og@w)nMxmccFY@@NY-4{v5%Knv3 zndiy%>_$b?O;P*v2oA|?bGQavE-i(XWzmhe;6JHbzi3QgNZ1MNCr%o>r?1u()i+QS3Vv8l50sHk>cdQ6G8aYV-?1q~)wKREiE( zJW>j14%u_k5&Hr0AI5ukxXKGndnl9};Gt{zNx3p@{8qutQ5mrS^h6X0i zx|+?(g3+y4yd-Y&Nyhh>VUn$YJi8(P(x=oKbG?Cy=|1%_a zgL(Ec3Dr)GyG2T@?=0tuURB4pk@{2z78zBQP_$Mw`aNGdt}ccrXIQ%rIlSZn{{^_| zZgT$ry!`L)y^HVq{O@n@pRddLfBB)mg9Pqnj{R-N@>NQ}F2RGoL{ZoE>E7M(jF)iO zcU>xiiqg#;AFY;us~4qRQ@GSkfx;w90SF8Z(gu5y12Qw?2|TZ zmQlxC64cbsyOQ(!s4~uX@`MqHCZy72tCp=IU~IYAZAF#r>b;i|*6q8q`O*}#O7@Mg zqTCfPl4)Hgk7nV;VrHADvWZaKdKLgHz!tmM!VVMK!oYRcA!ltn{Vcuzx0a%H;dr-~ zviY$Wk^Zqk38()$Zw{)}I34l#+U3#uyrQI;>5rwUvR80HMTlzpkiu2teSgM zf8uYuJU1$cs{rO2o8}h>SHLRqm<2_+XWkm*Il;nGSF1VljG@uXs_$88Oj#XU(UNZM zo$;g*MOJhfxcQQiHT#-N``e&ZAx2@=Ey*)`Z0*6EJbAt_RS6eYHmO3_RZw4u)V7)} z&rk>MKW@FqQ4@y7LQ#*{xnZWqD05BP0FS-4hL)2k31t+CPK79MnqUHUf5%+!aSkJO zWj)y#Ly5QR&=*%8rl;A>MuiSH5SgP4Gw;5EfhhEvQt2+=Ch9KB`k=|>>Bw?(DuES8 z-Ti2UUJc^=!St#vXarNEK?U2R~#njmH=a!c7-E$a@m-0qg2E?d;m+3sq> z1Pbcq0>P1Dab&uyT1obzLTZ9@VcLxWR;^LN@ZV{$Yq>w1zpI@M5g*O+=m^o#z3hmn zNR$H}9YJKh02W#C9Ut!9OWlWLp1`=&U|v`c0%L7&m<(wl+${urSIc$!;H6;YJ#n(J@Eo#XRSQ0*9A6#ju1@cb`KTIGAthqs^RZ8C_ubE~LGSGkX<4urE~$ zf*mSDDpyxkp6p~6DiQly7(3f-YOI*Rv?J1{znJ;jlqY#r`Ry!0)Gr zW`8_R4m~={X7h{h`S zYYXMuyzU`_8~OisNW5ws;JWz#yKisdzu&q42LJuK#Q!}_{3{3lRUHSOUTl77&?`{4 zJn{`Gr&ZT!L$r{#(QC_EDs81J;nby5O*5_7_lQ{R@NnAAfq5EPGFb$I0;~<6FOq|B zZs1;z#p>Tq`cZctiGIJ{G39Tc;$63E6i?4~(Vm2(gSs_oa>uc3Eg?VWj$MA2S(u^W zX2s`>@a_@wBMgF8<3qd%A8766dAV8mfqCfcCNS<&r)TFuuvBCXklqe|lD8So8TN0E zg4Oks1j3_!8Xh3TO)?j&nb&Q_3FV~ZK6i4#*3*Zh;Wx=)ugP-wX|w)pb1?k9bGBHj z0$yTg!hqQOY;%xYHL-R$v8+5Uni*vUU4J$j}e}H?l7BRhH*CT$uG`aHD#EDGv)RcQOT%3EuVh&h-P@zG5k_Pr<(=V z(_(7Odh&`mmZKe$nUjKv7xnA!tM$oVZvlhYPTz`h6rqbD=pH}7V1IbezP$Ir*=nqO z!H4&zuP=(>X6JuBpZ|y~z%~32_ut*pe|i7yH~7ET===xl?$qW-H)jb<*($v^p4ks?G!flEd=4QWE4Sb5 zA^{iG(X;A!yHkt>iNQy-C0(3Rj)qgLV*J;aFaD0D8+6UKa0@cD z&+apn;4DrI>L&-jroJdz(34+fHP*T|w1%5lrX4HnM)4Aew`CUD^g7q$I9!uXGPzj! zdjv?F^;UYGKw9q99MPK3R?|~!OOP8FV_V)t_MN03g-^xe3ZiIdxAWrpOvu-bAE7A_ z9RLvk-Zq%jY=*`c*D>9WETmW2Pa;ZUgnXTfoHO!*+g;gPBlcCA7zfMsdUT2=W$L2)HmUU&Ob=!-b z!+1tDhi!3_tu6Ur!T#v`d66p;r<#>s?Oz$f*zmAguU$Pb1w(-X!)5pl?<8<8~;nivGE5En{TDz7HtMt;?1J~;{~)zwc4Yf6^g$1w~4jfJ!VXnP`ES& z32#e3WRqG)ZG`M=+TKQ6ymjXuDIjfGJhIb8V5A~dgfD2Vj~SiuV)8QFzH7o_T|dtJ zj9dP%mxk+62h=pLhQCV-sX4kBrtyYqyKq0Bh%_;+Rf6OZ30S;XJ~tZ5X?51@{r;<` z&-U(dPfe@ezDC=7zm*cn*Terde4IviU4MmN{GqKMS8biFg(Rtc7zZ=;|$uj~}O_d(Q z>EZV4YWqGtoA2ri4PE=C=Wl3ztvP9TVC z^wqJNnBhw20isTp&uq)$`T1Rh&$Sz!r7es>z!ia5CEdvuEy<7+ zL1_j*PX}QyRw?;IYpju(wjLYlL`KS&G&(rgY1t9qLm-N23Y%XsQ!k%n zgi$z=8#OS~aPG_Mff>JF1P5XG)D$>R4v0>a;Kq6Q-9qo4jmjV6Z0TVlo_6}CEb>pXJgN* zsEyv%7Hc#saGYV{#uj=dEp6D05!buKU{rTM2e{DYmXTfYZ+w1i{JR+ud}s{2nG`mp z?+o@zyDfbkR7UB&J>XEhIp2`kA2I5Qw!ri5q(<1trL3sGnX3j6?m=S6}>Otx@fI(Jh;^G}G#|e9x*?u*;!f$v!?j zN$p)hQ8ZTraTMgQi1xo>#AdX6bu??2nRU0$?!cyA47+6WGdUz-PVo#y%QsEY>e4iL zlf3z7&HwC}>o1iFx~Bg7{`-CW_k;WIKX`-xdR_8AyC~3p_DoQRp>20gsDKUUSn=2; zO50z9?YrAm%NE!N{!G>xKQEwb<_$6SZU*egtjKoMJ4vr$_I|2(f#b}Ckx3t+Qk$kh zh$L(YB6Jn)j+Y*XVc5ct%%FaCqG1>kI46m8PA*S3T;*kgJeqEZY`cUsc?VB&x|DgM z!Y2XevAck?%_`HAGgxiB%BF2`#6nR3T{er7%a;{p``hi`B3t$-f%-y0D+A-iQ@V;t z>Eoymj5t;i?7N0l`D!fLb#%*afIX#Q-s@cz^oNaRZmMDVWYmThhD1MMzrYeK%{aePPrq#$`ypnkMiV!*I6V1^4n#z z9c}fgW9$Z*w7ay7RbBi^Y-%PoTVxG80a93YHvd|`fcMv;xP-$w&pwMwZ!Pt$g-}vJ z6hSX5HD4^dRim+d5Qr!?;BFAp91+P{wXr8gc%WMj%S^QCEuoycs4eJ3m~I>7Z7a}( zCx4!LJ)$)de)3=qd>$k%=E+A@l}9-)j4aUE&+-oL+iF{*2Waf%v?m8{0e8eCQsVvRIcEp&KI13R7i_@r8pjna*(39 zgHk&xiQX(si};hW6N+urMZT_R_XQZJ5cF!7{XMz&Z0Yp4G*ves^Nh#W6#v~qionJqvZ&IHyfk@)oYqylL9kUd&7^Q(5O*KoaEDvqPW|W>UQDIm z67$JIM0{8p9o^EGV*&PKZYh&F*bUFCW*tDp9?PgkDQ$<|LDg38q~ZDNrb6~glB?Dq zFFPj2f9G3Vv9My-i^1@CuI+%MIGrzvRcNerEPc9yjhYWZLRZe|y!XQiSdFW6qMoVJ z+|MrJ8gQQY@o-wLuyr~2zU#K_JeBYgc8*vPoGV39?CQKh%ym~}r9TaF&vkUC2&%L@ zu1Nm370-w{XqxZdt4}|F`e<0Kv6?MR6jv5R>2Z0zc+squ3oQg(*(F^svl_I9+I2Bu zon6k87b5gu&P$e)GRpAy;t-JekN>-9-qSA-@IcYrn^?l@>HibvcCVEu)uglTw3-9q z&m`c{rmcPk{ongaxvVTrS1K&YAtV1AA<}qsgd=p14#$<7%rM!;yBCX(%A~5kGCD?+ZvIR#jc-x z42u}7m&xc9dq$!C7s*&5LwNpupa0$)-g?St1hGaF!CsU>z4b$;%qV`0ij-=VUP*Km z_#0=$_tE-W`K@mioE0`&rGSol;(Pr!{V>1bDTERainqV@!+!;4%Qye~3HJY(C20qM zJv3ggnzNTZ1FqTs?{D#cKG2!)X8-@S_y3*4|5}^@dE-YK4W)+Aj6QJ_wcQ+ysVANM zwHJgT_};l$$Pv5Ad60K|cgc=6^EtvR=kAQ1Ru%_egO(6* zvP<^sf3NGapsnf3((9+>@u~31mSA@82T*Vm7iGf zT7-O|cnJh8$#EJlr0=#~84La%ELn?y)1#*6s798lspeyJ&N0fNhleLMfSaotWmm&+ zO_2fHEbLgD`EL(}!@=AFKKp_U7Lp6xV|g3dMH`j6Ir3j&?jS@yxKQm&K?KbymBzJY zV}}RJ<#Vu98HMUIXA=^%T4cq`MLBL~Mfxxx&cpxwkN;t4BWEfK5^E-hqfR@&-e@?b zX4^C(h}H4&sy=3wjfxkh!~gaFsm4Wr1wJjFV%UA;lG2Y5M2xSxnS!{8I6;BW{89u> z&$zb6wkkb6h1bfFYd58mV_wgXT(B2hDLW>3h;hU;LVC|g615LN zLvL))2!-uFdcEU%u}M2rS_VLfR2MYw;UExU9U_b&(KaGb>ec@9d%=#y-e(nU( z3)xN#&>K(|%KrJpieD?PV34!UXedC;#lz4_!7W~rrc;qNeH(-7YeZ-WhQYCCFvhNa znsV@-Sbfq|rYZi}Km>Jlcn?O&8hWNTCo{c?4Q_s0Hv4gCKrhX3YKfEjJU+0PUQ z=olgnN@B*{&eoqGF04`)FK@UkA}sh-w58BdAo05uGySAd0eae?B47XV0pyOk7eV9? z>_tDEe2{GR57p&96fQEdX^2~LFxZZzis?}?bUivHw+C}LCp>d$ZJrz9!Q8H9`ihMYj^MNU&~~( z@_SQk2BBS95ERWmY0lcxS4!Jmb>U>Ve&%pvmb{UvD^vvonxsmc1=qT6?9xPn=8?3x zIfSD&s~_=6$qt^g56y8eaKs`Srh^g^AZ_}lJ@SfWcf7I-l}9x?C>Q*h3PrABGEJED z_NrFl&?FZ@1Z;|3ggj(X>Xg0l$?(&9F}|N(BKZ$If~Wr)y)uphr=^DHDjh9yFW_8b`eTl==irKnj=p9uJ4_3=+M&d%_BDhe=ojY<* z7Eb3zX1Yp8AJ6> zm|EFEq(`J%C`6&y z;PJ?xGcq29O_HgUqceL&lYYB5eC&U#33U0yPa_z0HK&i7tQrOdi!eyM&2P2cu&s~d zWuDCb^zF11PwU;ON`C7FjJe#jeUt*yk5z|OhllkUnLV{X2y3m#$6^Cle=QyvQGYV( z=)tVX@OR72$~87Sn~Oir7#j-}R9{n5t-!C2w(B!3K+tE2WEnOqEYpLVBY&<`NYXMq zXQi;Y%pJv9BS2qxuK@aXqX_y8yCl(1;YK$?EOJk79kq3m3V z$NDR6<0EW-sygNU3dQ;16TV)%S)Hw#)}t;GZRM8j06$wO<)ZiPp|c%Z4MA+8Y16ns z1t(@E=T{w+R&dZ&;h6BA}tKmk8qXyX`Ld@N(-o+0M%Fspg>*H%xd~rupIS-7(G>6#M#2o+Z~&uvdr~r8j@~ZLx@*lMi9F zvP{6z=+GX#XYbc6Fu{!g)(ZbMn(6YlrY4to@BTaEqT;Ai^dlE%Y`pxZv!M7nY@BzW z&E+16a~OO4QLe(o&+hCO`USRhtqw#1P{x!pP(RTB3&K%5CmP-d#P#Vi=cKsgC@_pC z9XS>z2#Pz!R{CZ7KQQ_XXK4(m5~v|jA_V&&s1hb{$McrOMajY!?rg@49kFTfcqulW zA0eBj6R6H#+CdL=v6Yy!{9{e^Hls4L-;L77oVw`HFv{b3>YsUG&+PS|LY|JpY60WI z;?oBp?$A&8VtMn`OSuJ9v_7qDi)AVqgY1LvV)oi2duckr-6oV#($26w3ObUY6T+G0 zE;ovO>eI9Jh3nv9r?sq78TBIF%BJ{&J2ZlRC{lzBP{bTlni9R_>b0;FJRU(idC{e$@+J$@k>n+WDCt z5wTS^53!#2wGq+EOQ%vgiwn>ss4K;yqB14R*IfE64JOIg!=J#`-CFsB_P5Xx*LV9e zWcZxY(-QB+sk%Lfw??H=(bnZNW2#d1-gp5T(Ns;6yOy5PJ=w7_07lfbri%{m|ZBh-9( zRjN?QHAQTbm+k-tA)AA?r4&kR+=Ni) zbOirJ_n}#`^K2WHc4Tmc`e2%m;{5QQR_?nxkq^sK#CFFr>2-li6$L;P7{*mGt1g)g zW8?N?3Cubg1}-8yxLCXzUd2?$;!?WgSGtUKl*e$#;6=fIWgPKxa)EYek z4GYr6XjC<45)?aYYSe7jH}TRhHglA{kP=B2jFg&|^X2h{HYQy&+ek6B?zqf606HG8 zolGjHsh-!DJJHqYL36xWZrZJue(W1SCpOX90Mw|ofg^BTkde4K&of_3zI+SFMB`WV z3qGS~_w_p`NIv&Qy=&(hF>Ev3U%wR`~ys_%0 znOW2?md%^`o_}!sUxW!Q0Qcj7fY<3iLhG@M|9kJfci+VSf4%(g*6>@*U*Nqf1O7Ko z_Ld?4O9|BTmdZqg@6?|BEx!h_YBCw*)MSf8snG?~=xe1Jf;R4ko((z(vW)W&V^PrP1-Gs){I>;hfnVMsY z0od^nUVAP9+~SPNynqq#b6%+A_f5LpTfFZfnf{p7=24Bg0as2=H24~V$F&H_<)8$* z`wPyb)Z2IOUe~dA?-ED$C}$Xq>g_um@IcZ)9PtpLx+6*mB|~GiY}>5lEOILi!#R9s zc<2gAzi7m=zwHL@?R51<^7A^50!$lCwz9uUi-eM6OOK0A^Ds@ljJ6m=Qy5>@QGz>R zKNU?(t8&#GKoZ+JXNtQ|2|!p}l$ol1BXyoSJ29t`uIz>%{Q5KoNR!lT(_wl{9g1b@ z{3fJ_w4R!^sbLrNVp|S(8E5W>m-TWU0tL#?-s#y%P$-N{ zd>5YXn2V(1;h+1ZX{cnz#vlrf_~Vwng!3X25m& zk8j`Ks{g%z|Lr&D|1W<2`|wXL8UB}`{knl2ke`M}Ks{BW&aZ3_klto-oE`y@yj~d7 zLDyWf?e>PfYg@U@GEf}-s-LSF+Ay6i{)Xp?(?{vR5cJz_m+zn-7~@hl7s5>Nomji0 za!*!bVdT=D#-c*Cu}XCj=Co9j8PQ2v9yVun+u!JAUR-8fD95sn!EpnlOR3Z$De4#- z=@3drCTtHwg&n{-Pf9TO&eSxmYOd~-EfvQz<*yo+yOw?wiKoP0~!s` zpEE@*gOTAg9Ec7(?{d+e)blf^SwW41*wYInfzmpZ7!}76?p3y9QDY|gle>`@HPKU@ zpy_K#cLN#}U^@I|cUwh9%;WulAN9J~;66hGH0+#eoLfcS^ae94%VEdUEs)l4s5qrfW>4Tnl4NL*-U&9K<&^r}+B~nA)^$j4kV|?$Rps zH|T7f&J%GZMeG};W zFN^=hY#N`ePm>9#v-Fi?fYqC3|7vKC|RF;#Lx|4keKS@UA z`4V;;^#qalYoqnIV;azWOy7CkbUH$h=jpBpD6W^!YaG$7>$#-PIX%Pae|X~hGN;Xa z4$PRYO#_l{-)2d;=FnJzkBLMgw+JGGwRm`QXEz>dQ_V8Nf88J(jq4DYN*;jV7U%6&67|58HVz1MBoXJn z=y&NXK;J^DFzv{6o?y;atEP2ji!6*oHyAh|Rg$-p+>?jZSu4>CpZ--^(uE|v$&*@d;Ev7Ce)oYs(15TTsI@iZk1Mo*Wgr%T%&|NlX*+!!K(=kOVbvX6yA*56HVz8ma(;aXZ?^K!H z#bRB3H#|wJm#VE~S%otMiO$T0Jz~C|hw2M(TsP>*v_qu-jt?%zChFInMyUk{;JpR> zRavz;iUY+RyEJCt{`&wwot|2w^*~%|H`$y4iXyPU(}%**UpQGhT+6JGHj1!@h8yKS z=1QG5EoJBfhN*+Jy`&w*8}DUx<20Zk?uAc2{PK5SN34W(oa~o$xGaysfC1IPdXc(h z=^Z%|_)xlQlK;ixmGg;xc($sv&(BuNvym`D#icIIBQuh}eYCop$#Yva(A zY7Z6^WMbF#8933)B8eMpa$C*GyKul7-QtTK^o@W2 zPwoGo*9SRr{;DXTYw$l0@4vU@|G)o+|M7M3|GUHgi$nmnyn2^9kpXp>#w-1&Hejks z2-3a<33{MfU(&ayNkT3z6G2bA?jP%eT#ndwocuy`k$JOt?A3+6@i^H}th~Ul(#9Tc zvaT5kOHqM0ouGzf8o6!A0y?8$3ahSJ7?Rry4U(z8na`;fP8nT-IL@-v9qk$q%4ZUO zD22dqJ|Ps8c5gDU=5ssU4uN^D=krVL@$M*fyKvMWwE(y{2>0unX3ICILwWk5PA9kQ zLS!hT&B9Qw>4WRKcZV4iqvw6JqjSbb$sJtGnA9afG@G?;52^Ae6mI)+bzxHHpG7 z^UR*jl09zdO6zgNaunDZmAy3*sI>fHMX4GmPh`t!rHQ-&YOWnl|8?H1@A+@W)+E+{ zRZNmp^ENI13o1`8PqVUA6M@xA63aJhXCZy z6aRns-rMhP$N%rY!Tk-n`p+(u2*S#q!w1=g6Z%mO!Xoh+78$0<9(Z@%64={uBrkdqG?Te%6@g|>$<*|3o9qCyd&v# zI^)YV{<#wJVM)e>C5W$FQk^2Tp-+B#YLYhTcc~%2Ey+@q63?ZbS!#V~rHdBsk8b2N zyNGIOK?6`iKDH=GcT5?5;pt^v-~GLcLfc%8hC~H`U+Nn7l8uyQTuvjEma*6+lTGdq zj}Zru^72_S1*0gf(JLsHrqirrGJ3&XntRJbOvYo^2!2M%Jk5s=0-1#3=>Scga9VjM z)&^NlN8bg4G98ZFqF&bTC)5*1_>$SW4^s(Ngz#hS=AgwmuM1Hk+Fxw!qjc_fo+Y}8 zMcaWA;cniy-rDuaUW7_>GH>LG395o=xSbvn;UwR6Xpxt-YfNRJX3E)4&F}>Y0c3bND^}|C6AR9IEud3Oc{f+w`rp)mFFuev7;Htsjb;@-~5isd7d( z%9|av&N{@95&d5O&Ckw^bjFDiRm#ps*P*SAfxLX^@~^hHj;OT$zWA=&5iQ0X`*3;5 zQ~Pl57V0h2rKwZ62b6qx-CZU>%09pBG4}OUkNB0D?_SFOJ4=VySnvKa#^5#apSRz8 ze_Q|gz58$Mzt_wD>kR)-r~z`d(YZwgdiCWp3cp&!X5wf&9t!zTSp>m=Qz=;H5Sz^P zgrK$!ut%&621j2y;t#Uv2*RZKE3pL=ehVWd z=sC-xefN{a9mjS>NtiVr(TtViLR1_U|1_c?i}V;rS?(2jArb@@3o{8>(* zPJ49GI75hUy(UM~@K*8fdplY0Z{6VF8otVTHN0hi--Bg)>zadW7$?^ouGW8&_z!fq zi#0RmzA`bH(y{Xj-NX#IuKxSoE&Z>D58ru{|M_*#{~HbePf7xQ?bEL|26q2M2Ei95 zuIrp5bnfFUAv4CtWXO}pwfp>kj1#St>h(?-rbB$yeAjV=d&e=e0&TlFWg(C|GzlPNixb6*cM5nOfI@Pb^NyDQP}U=oxV|eQQBA{KLD? zxYVZY2H=r;mOhzCj@_DI{%{qt#Clh%OW0vc43sO_i;UD&q;*PGhz}eO%Yuq32p+xj zc}IWfiIlh-R6IPc>n!3_1~}K`QIJ>f0W~2*@)u2 zuV!uDzbq$U+k#%~IuoGV4?o%hc<_!Xt&MXdU&0_btHet7vls?m+)y0uVuzd66@Dt9 zkM5`wL)@ln>BKtUd)K6rCjACwI=GdwOyet*jTQ~vZd>`QNEhzs+(qXCvSaf|r|t5x z)&_$KFK=sjyr*k!OqeMvEEtk(&x5elz$`s`WWVT|tt&Z?PhCk+-|lCgw*KXg!SM^s z0MrO&lOY>##e5nPBTC?R>+kT|*-FnYH&C=}=mp%=2$IFqtZd@jRMgz}z8!(mn&}}H z(DV!qb_8w^H#IgOtP_>sRE$-grMH+AYjS(q5v|(7Coz>N<&C+*Elc=-Z5*^|g za&a1*mtSKDm^%#Y`Hp+oMVH;f9sx60(d4pD-o%-P&uo#UHCyNC?Q?2(5Vz;loQ6a1 z@A|&SEW8ZA-nr~F6Jz0Ni|T0m*x7`Oy&MtH)ohNFES)b~Fa1ike)stN znN0l$@4SSq|MowDt^ZTl|F41pyT<;1@8LH8(}M>O-q`=IpZ$MBLFkvW_Iro^jv8<= zM#kMj`%l@e4&#M%joW&?p4VN;qOMJkjdot2f^@@A;A}quD9aR=-R7Wbo2a0?v4zc3 zyK@pcOEqA}g6l6$JLaTJ~f^=4SLK-QhfzFfHMKT8Vxh` zc__bX^EA1+~H>J^m$W?Elv={@)+|f0PWsGh5E3-4)tWuqGI>4hWV6|9A&C3|~8%Ie@AEF@VCvN6()PfXYm!HwM-LHw5YADRawFisve(I5V z^qtr8;BQ+D_!Fbo>Do2^MR(RyFtEtC z|MH;7Va(?}gUPN^Co(3wSY9$++Fqu}qpZ|HYhONbG@(b z*oe;_1;I1*Mx)a&$rIIXtaYygtr}|JhBVejG_G}L8c1LkX*)@#t>^5{GO0#u>taYm z6)C8#@3(VM&pKJEFk~Zcp7StRh21^rA2w6<$=3Gr|Fie5+ihG)n&|mmPmzZ+s|B(W zlqkt^HCVQWk|35a6JTC0Ec1N53_n0bWx-;YvHaw5Kn z*q6)%2vYQ|Mqaf_L|%68Yuw|DtC{b4QkJ--jIAw;*bzI;DxN8&1K09S1>s}F7gXrK zmIvYI(FT$SKb;TZ{;xs>xT^dgt7SJ4|8wsXw)NNJf9`+G|M@k_|MBwwR;2&Po)s`R zP_|0l2yFhDa7ja;jZ1egll|lA_~0-gsk;-2{HX|O!rHXLW$bPrJ9CydaWKU|2G8f%&+(?_=X`u(zTeeiZ>M+}P%b0mRVd zIxS?khUQLc0Fu~kdrF{9U97XQdJWCHPoy(fRgV4jTV7MXS;4Jl*Zpb4wymE`YTNpU ziTr4j|2+O5EhO(&Ix8Pk`f~;OZ|hzo|9k6`PaZt@DF6NJ@}CFX@ymZD(7#KQy|uz9 z@csn7+@d+2@(G7Nm)IRK=}7ToAuR9$FEYt~fhx?3Lwz#Oro$=7FNvoEE~q4V+McF_ zz&%QIJjl29!4P~FE_9tI5*pE3>j&{ALVT`V(gW-{EY9X^{iPYor5v?jm9Q%6D&hN5}T1L z874x7%-Xd48_hni(?_7V%k}^H7}`-+mAmewta#ZrN98#ei&{PV=hFP&2M-$Ye|JB< z_c8zH7uEk)SpJ_%`(N^K7{mepc5^6A8s`vW>xtI${ z7;^M2A7@8O78C81eR37u-)VXh^3m$lgX#y3phQiv=p%yBmM%%tDW{>H@v^k&5@spD zcN2~><2WHJu*iTSDE4MoK3pMI_?1>|*yH|dVt~?m^8%*AX?o|T|iI>;So3y-K(-_?!|5GvQx5~F=*&XyMIEa+hfJs zQZj6P#gzg4DWd67SRHw3>~^$QNokvP?RnXV+Ra3vM%*xIbZM{!6-7rfLRxfCX>_0o z6+#G_dT2n%T9i=hWurZX_*<-sYUf3UXj0!svsr)ktVHT2cIpRn| z!myZ)r_iIPUKml_({V0L(>v>*vNJgnJf``$9&p>kn>E1(y$I(ARpcZg7vhX}2)IZF znZNK+ox4y}@gW>;5?jBxnH-*%3;Qlp(X%m|jHOlWR_J3KM{?@HWV}tYs0)X-4ww&2)h@W;G^w&BqP7Og>kqTPp9h zQn}fJ?wJ#dD_X}r&v%7HGbea=y`_DYK>?~LW{7028|deec6!yoOz_B@T|e=swd5m6EEo@ zcPE=U-SB*josfqq01i;ngj9@)Nv25XI(fkpne!z2+TDISqp7^ESRctJKapU+wOp{@ zx>T^=`WXcKpGy9}hBxRE`G4!dCyo5y`}aTke}0Yf|4)(t9G*kttzqO&Y~Yg2FA;{h z;9WM$tO}H##)X-_gK|2VSLzNy0li}`waH`)#WV%YF4643JgG|xj(2czPV0}9Ru;h# z6pcD1as+c5ke<1cK}SBddNOh$8C2die9GnhlI*OMH_kR&i&NN?$Va&n)!4QDrl?RB zF|({m2#>U;f?23au>0X7b;UC3V7j6OY$LaT$?c$Z!3ZPP63G| zR`GL+N;5dk#wSu0lIMqbmBCL-Vuc|<+T@~(CM7f_NtMdcZJ*e%>9X`ql4y+44~4rR z5iBiVaC?RG5lPSjV2LzikJ>iDfedv+-F>bFsUXGuNn7mnmRqXhW@za6Oi6IhW=Ndu zVQaz`J6oy#e;L^9K4!hLU zvbxH$e|!VW_qz~ahZW#8g=g5Iqt_lrAoNu5UPS#}h2-Ia*YlAk#On{#tF0`lHD{_m z0L|;K!bbX9`7FqA9a}25P$x{)sGM`{wuMDLR1WW>%U|niKDSTYa8Zv{1l>l3jhhp1 zEkAXMh-;557jx~YUyG>w@xPmp|8+Zb2U&G9_Wyf#?|<5~|KIs2|NkoO|IzaQcI^NA zvF~3*x^dSD&CbGxr~o5*%i{n%_m3hA6z9!YjgtrfM-mEY%T4rczWsXoFMsLoAEM8g zIdL&U=+VLiLmy6_N`}GsLy1RTIaf5WE(cPa$VPQLR7))M#~6i=HucM66#Q(j z6rvEAxcQ`n)?bs(&t*2$Vp)h(C7%F}ByNXRO91sayq4<)L3o+!#zP(=+WiyRM(_Uf zZz1a8Ujuzh6}TYhV7AYXDy{-*ZtRw|W`b z>XeJBIWPc+#0y&wk_ncS_058YU=@%^h!H)DWUz9=5#+}rC?Wk!1_Wzh2AHt1RD+ES zqhLH&=wi=f3`!OH3D-KGC1(gv>%naz9 zhem|k8HT3$32}MB0Oxx|yk{)x0%z^-|NcLl6T?2=a(n_VJVl~_(0MjWIj64vP;j~e z`(s{Ir_5$$`fSdm#M*oe4B?6vL|&8vbk;{2cQ&ex3qS%GmuBkDESay@?6gdsT6tX8 zXzA!GzN|uZ^l&sHh&3!wVUAHjnb*eGm7Ym)T4$dsf`z6T7!(s?eK`sZ+p}urvVHA= z0_D1|9|z{|hcqci1?Om-pXO4Ya9qoU^trE$eA<&?2|%N~t7bc?KAc$f;jlDuDDzN* zDyUfrWyLlUNz|p&uu5@M3?1-dFl?F)8WhPbQb|w>8uPA`JtoBwMZsbJi8~Q;U(Dnl zXAsFc>R@gZ1cnrvRX$gc#?IH-WkRdXLJV%PdHW-ezaIZ@v8G-#74Q=K5Apqa{@z6$Su5~pSif?91*QrLG&bc89GGvqI0|FvecZ{XHv#HFYW zPF*|VIx#=YMF?<)0QDkSaHV_4~f$+kM5BikDK)$06YBUUk<%kuGO^ecYI;UZ&76q6RAO$u_*)y-wO zj%9=ssAJ#m;S!?_-+F~!|5UE8xWcem1W{;Megwtk<*oYKy)$ddpO{vy z`DMrlYd@}892zWOYwtA}!Mzidakn{P(LCs2-C%5cS18^}MTNDLux#*mYUWy0K)za~ zIK9qOPES;^)Q42v(8ko03c}PxKI|QpCCld@EBbzv|5lX$YEG6F<-tqvA3nL$tp9iC zqy6XCC;!!#e|7iYRRqFT$#a?KZ&~q)>h++Nz4}8*x(|?cuw#xGV^vH0{N`StHYBxit_^hKEiO~G7L)#{|Yx1WKB-KJ#ek9Ah#tM5D zTTBay1rxU?S6gL&r^L?$MP9`(<;7shFIt8r2NNe75?%Gz@Uxpd7-qN3gxJj7Hxn=C zRJ5nu$Tvf1P$AUWNTL=k=tu3=j!uU2Bg69+?GU7{*}nRu5gb)wDj|2K8HV17mW@i4LP zf*D=ozh9SQi{*mbabqhgUV*mT}!JS6@ z=e@Q#Uua@WgLMqc3P3D+LXN?nzZ>)f+{$hH6Ae9J| z1ajnFA^DS%ACWUG3|Foc!;v=0<{hLRh>(o0J4b}hV$IOQRfppc(N_?wHKDLl^d4p_ z@_Up??U^ty)TcB~ebSv6IsH^C0d0YM$={+*Q&q=q=>=GyjPp@WhquDamP+$iPl{^B zVV5)haIq{h}#`9*VfE#WJ z+X+(Qlq-{=fQUjO?M=&BIVeY(V-wi+WW)%1?#}Y;48_clyi%3%W&Jegp-eezR$(9o z^{RUeoIv(~@iYecAQ|m0m?a0Xa4@Qp`wxC6hu_<{7EFI>&JgCl$#8JWr^$*^Z$XFdvBjpYk8H8@-AZo5xwP7z4<26-@3)v z##Q0=C6d7<`rm`Q4gK%_Cm-=YegXdPmVfg~%YTE4;AK5%>VlWPVd^0IZv6WV)G~p( z61cNj_F7$5CBsxOAl9%vAFrSf&L>@BC;;vn9is#k{9Xa;RWdp5MJ*k&dxyvyo&K1R;(feIRB%Fkh4tfi`Ukb4eoKW% z3~A>(ohW{YmyG&kQ%6r$0;JJcYNo- z{nUsM_g*lP;2m6Te~Dp9&WIpqoVm;&HAv*(b@xQ0iJx1)y(0Z*shP`e&&PIMcHdG4 za2fq)TVIX-Ke+R;{==`3{x4Ym-v$F<5;2qH_%Z87M8Sr0hLKDL^C{xTa9oj5*Tb9DH#P$h&P886^&IQVSiNWuzS_Oo>RW=OvV zZsR>D8%U7<`4~cWJX0M^7&U4pI6-6RX!rtFA-As0DYpJ^|BQ9i#gMv_l@r1* zq5q%WYv6z1+xjT~{~GCkZTWv2bRQ?u5tdt3ESswVhbXk@0mD*YLF^F9(LT>6E3g25 zEXhtdXl;i0?UR~@5PezM5K7N0BXy=RqU)Rp3}YeDNHMno*(HBd3;-?tTa);ISpt6@ zRbV!q=k?db$O0fZ6&hr=^q0;T9gF;}%+Rl#JzSCgU&{q_N&Sa=_wF_Dzqamu`jP(s z>gfN?xq$qa#4O#N0)xCI;@i_SdXy;0SurlEvlt(Y4+o!m?PleVs~g9nn&Iv=WYUqF|~-IP?980lT;_4g|{RL{-kG$odK4KvwB`k985y4Ss}1 zfO^(r&UP6UQh?Tx1laJI&Jv+lzd+?sGe-IGOc69u2g7SRX#FTZRaXmBF|p~}7lF3o z$&pba)og~{XAmG) z08Sq6!+erJYOy*ct-7oKyxUEJy(YU!v1fQ7U-5%UzpMUUK*RO@_L1eMM_3d%XZ$kf zr2{64W-W~UKn%mp)lcAr05j?i*(G>F8wTSuMOwbZ)i~xODe5uEr?cW1ey*n$vo0bb zdv%%HyB9Zgn+Wc!LXWBMB|xiXAu>42(e@E}%7nCt57-eTZ{+inK4!Oaoa85ZP_bOzuTQ0TQ42z^#ZiSkB#Ct4m zQ=A1sTUT-Mtsu>|2(v%lq+KHhnpr`{tsAv}{4kkUMBX1i)C#Unz$=Tt4jty|0$sDU&;R8jQ_p&;3NLuuhIU~T>jsX2}m$$W4XE2+A}70 z!E)US79aOr6X2cs2NW`^VBOccavXT0Sg4TZBY63yst~~Ng6RH3x_CdDb$(g@u+e|c zWWKGHA-a#B-mfNmk6vxE*!JPySW5r5?%n&Oj{mZC@6&r9^Z$RA|7I7HJb5&wv-ihC z{KGVb4KRraai1rj>0ik|CGUs?Cm`g&@BHq&qbW|Yyt)0m_uId_y|MATWJ5zBC5<11 zigl1A8x9$X90~5M&U1w6>->UK=5e2^x`{og&neLTc|rOIs`<%NB`Ln#`VVu4qbH)* z=?B;We79@2y7WfXU*Dw1Z~xAc>48d}?7lqQ|I2qfPoC`W9vpmku>1J%*{hcaJwL8* z*Q66`X|gsi`2VfdwZCrv4l}mP{oRq_9B2ynXGw?e(IDEtu>P%x;?~9iq7~^inf^8T zz4p1@-lLNl-j?6)wiJO0AFwO#5hjtrWA4wEg_M*3bd= zBV;-AeQX0mnM^<6J~lX~z|)T4XwZC2a?2okB;_x>c+&mDdJm=-G&m|1A3>x9+O$=b zCdczJHdsmwk>n1X2-@)+)6CCJ^OI~k1j0RSz0>mCxaF)k%lRv8JRq((6ii$zBIG(R z@z_Y&1yKadlHu3NQRKDkucxTLd3>CMliCvw?7+(P z9+Q|eJC&i!%(flZ$FH93ez)`T@t3dmzk9j!V)tNg=kacQTzQrFm}V24R=>&Us4>=p z#PUBI?q#S}6K{pF-=0F~w&VMgY<9Zf7RhdW_o2W2-gVwqjj@TU{MoQWTL0XAgH~O; zv)z0{LdEG77Q8C=;U^eG$fl+pW;;>B0bO61+(T5PW26Qia zmz#%aT_~I{EZ48)_(X4Y{VVSTaBjZVa;t(HZ`;7#~kFDSk1Z=1yYp zTjn`WVjwLvza2;l!NM3D83^hM=Dfo!gjfWrFIqE$R+n`?7!BDEWNxTsoQ%H^Ftbjd zAMPi&lRi;Y{OgvRiMyGn!$NY_xs9WXAe(0c9Ev_4ath@mT6l#f>n!Jds4j?uvB2&) zpU-&9b^3Si_j%3Nz0>H~6LtrX#yB+?BW@owMI0HU@;skH`*y?HO!o3=*K406@MPQJEHr3hRqSfW}t69NyTDVxiM3bgSeggh!< zT=Vw;xeEz{{0;HNp_sjt5j^w=O1yT3lih=ZkGbg@&Jv#L(}2Tq6cxAbM$J8(jJR9k zq#C=~>1r__lUzpGIhS|f7tSPO2`BO;WDhReWCxb1Lp&c9mwrZZYMeY4r_}T4Z9S+- zfMVKOCo{y7+@$tOMqOgs#LXX1bCla;8%?)7=WIXk0NGCZAhUf}Dv{kfeN-i9H&)q3 zd@F1qp=@5_@ieC{^svbJ6mhtDur~`iG<{58MVXtyC~C=tH6Sq zWK-%U8v}W}bomCiFOJ|E)5cq);x$_x^N9!K6Y-#R(RJXq)I4;dp)wWgUI3ScXJXe2 z;BCD~S(sy7C8^w}_Gq_=`?$Ozg?#v~oOg2Jcrg?_@S>PU1C6iMmwhGr1CY`Tt# z1(*{WfOO}(&z7L+#b)x1Yp7}6ljE$Iof56bR^{Tc#DeBD{TgD#-9EZNNPb6s_*yS5 z05_5^41Gy7!x)S(`C9jXC|b9jfV$|t`WcWN=T)5dp&=-;$k6Gi9mO9TeIud2Rj1;Y zIx@SxS}W`I3)}5Y$Y-KP!Y{A)+B!qWg##(xCE=jxc2=!Fefjz* zbw&;Td6t@0gnx0Z^2UmkscP)}W0D5@iZA?-y1fb%&s5C;kjB$UbLLC4SWpy*NWM{=pr&r;;SxStbHJnd&CAjQY} zSEW7v!G1`O(`0HF4iQTVsu)qh%a(JQ0n~AFzW|X9H00j?YRDZv(%;_%{U7AxYF>4} zel-}7sJnMld|(;<-@1SQP6Pjc>)xlIe#HO!dFg*Ug}o|QsF~Fd_I4kC_ortspTy?$ zqx>{`Q6M!4ERf$>B4^^ye<0Tj)uO~zv`M?{^kAMohQ#;k`@ztHW{gi zKQ|~R`A|mAF?0A+@QcDe>^r!lS|?oV%R9j{^xczZ2YbY)iB~_`eNNq}DY3SAy=3jH ziqsFbvfoY~*^<_jR$E?r`Wsv6+9SH^^n`_m-%bvQ6lK$*tUt@!f*yP{uVk27 z(dm|p)Keb`xAK8>v?AC_I|;}dLO zJ`r2}b5{1-_GoPd*1xqE|Jr`QRP7ZRD&9V@SMXj5kDQ;Ns&=R>>Lom0Vc`aihzYlx zYLy)1Q6EdxuXdjnJ&xQFw#K}8(%oVQhg9*Uox;w5JcEOx3QENzq|qaLb@3zzOR!H$ zLDDL5LMT+7x*7u9L5^DO+Wo#*nP7a)%;UiW879?fM&o3Q6=MGcyNzkU`eyQ2T_gO6 zW=kPz5uPD)v=n12XJW>rvbN( zVS=FO+Z^6}8zH_D6=N;|w-ve$8k3D-h_3L3!a@G-$Y${?g_gNtv|C%L6TW%*`1nL# z{?u&IQ}69)XiqC0-Wlj1a$}LI+0zi8zyHU7MsxGcAue_3?pZm@hwDsZPdOW^uPyeW zx%y*bvV@5P!5N9>BjO}+S-*uIp7mZ(FzyyB+8lqtWbSWpa}zc6u2?J~7j^(Qkx-{f z9%3h;M)3FFA(oZ9{=T1_Ow0MCa)B_)Mn)w&_Tb{6Ka;a!FfF?l*#fUT(&p^SZM?ua zbIfNjS#I_bSE#U?$V=ufVbI9b)85EIa{WPM3tQ3MbFUgQDrqf^1}KoMe@0=mtuyi(uKeC(=K;pFkA?g#x}mwN~{ue1FOuw2=5Vd_$91`VJqId#Lhh-9e-~`hW-hwV&0tbNz6&gZ*%|ll^e< z(dJ=44(GwaBOX_N23YVGCXG|Royc)UoLVW_B;#Q=;_cGsXZyF^>E;h06VsPWJFEg-p>6DyhrI<` zhu1KS_b|bJ!O$h@Yhhpq;~k$NO}+KLxVjg*C-aP?PnL=vMS@4rKWJCiUlm4w;F;Uk z3xBK$bDFX6xpR#^fe7s5^IIgse_E{{5*5z1*7`h4bJ~57TfNo-=l@V7SdM(O9c+<^ zvWZn^>2Gu5ICD)z8gN>6HJ{{D(kEzR*JJ?GIj=u)&7hT5{dVDLuxfg%h+ZS=_85@> zt8DV1*j%-UMqw$#nvT4UXf@Z)vhh3{t&v!;X1;y=a0Vg%;j7-Qg(7g+-t{MzRcE?a z?_7P5qDN&*2l!QSL;ExiM>wz~oO&n%nx!`*U0}Q2)I*QeXzD_fODz_wMvofn58DI1 z5>kf7?&L#E&qSwr@fNNfm)1ZcS*qH~wZAYg=rOlAyj(RCOf@*o&oXLAO+K~U@7k=5ofS%IXL{d;Ai38+NJ{#FX=y!Qk<Ql$_3bRxO&o2lRYb6Zi`t22diO7GLo3vT=FznQj_?yAm%oX^2&$X z0-&;La2II=FTUP`T_&Lcu$~)>YwhcNk z85tXR#GaX!2*g%NW~_Xp7qgc-pJxK!3phY5-@84JQ(%e2OFQJh8}PxpUZU=gp7WqI zg-%7C2pw^a2y_QU5xL6bF($81a++R1cJ(y)nq~cBkWhOg$&;Lx6BxPK(vn%N9be++ zG@A}3C@xgj$+prb6>3F@V9F6CU@@DxfKO64g5tmea$5bTnZo2<)eIdo+~oJ zms{F#JKo2|ln%s~cbgv_QwxyUTRyz&y540#hOTJc%u4oN9X$K9Rd_C^C^^J1V4!gQ z&D(uR5Rth#s>%_gW_14Lp!@h<%fOF|QQr8vO`{-M@wpp1zk?YOB+W#!T83)+a|Kvn zV=8&|#*_I>eM^QLqTV9vrG01bu4GwSvddXMqa88JG?19|XQGcsL_W9O=ed9nA6`kn zO4-cjg1|{T&8M5mD`T(n5eHZXtB9>0&7Eb;Z|ak^8M51&cVVJ^LlpMHPb7`k1tw8G zg40W)=k*RQ%dFd%Z)3mI)9g%K7Ymjf-QanbRAJ_z8kOF1oR|@GvEY5-wa%KTRnA3h z+Ru+GeE=lZWv0m|IS{5hC{KkF3o@H4GDU0Lk*yn;j&4aGRyckD$*!Tz+a=9n3mt{G&QH&mA^ z;cj|XP}t*B8YNr==`Odb;4B6fyLfq~92T%+DH-(k`a)q9($^yup15f%pVj9M^^@Nx z{Si@fO=0FglZ~Rr?SoFW8(H4MZ$TSNGM#GPYCZ)TS{T7uOGezr)ZL`Bz&UVZ3w<<6CawoW$uN>v5;wM7st9Fp^FxX^jQ z3@RTkexQcnQjg2A#vl%`Qf67c~>d!A$@4f6Q*t5&%Otg9sS@f^<&} zq+XnIAx{V;3u0nY*=|`fnMV*p$02k!wdCY6{>XFM*`q{!;gI4V-Q9dZjROaU39inP z%B-}a+95_{mxqoxaY=yvj>O29JbQvD97#$*faQjQ&1|rB3w4Z%>V6+Y1MBQrZB3?m1hQwKR;^s87X%o>B`8fyc-6GATE_Dq0o>qt-b6GM47QA zit#ZtuC1eyH-o7K%#O12bxe4o1qW*Jiqkm*QXpuNr@WX+tTbD!!h^Cc!wWEe zL<*8Gm^0bX--fWZS`7vn;@D;Jzafg7VY~L(tm2$4*u4DJTOfvfvR>z-dBbnQr|?tH4uXqrAGi;JoUaA$HlSAu9sr!6XM%DoxCDta>{Sv^ zv!;AJOZu~F&{seztQSy%?3`AkIWf4-WXeUoscnT=Qvh9sJCZL{JSvVeqprc`a(;t>u@faJ~ah`vt!V&u6uuY7>(A>-l_#D+w$IPCk zuev{rw>HX((4o>&7({T}P{15*eri>@D@%Wom|uxoRa!6ok~&?p%G1}Fc*m30G<2|b zEi-mN&GmfrN_E@c>hh=7wu7F?3d!U<5bNVY){CFMRr#fW4$vu&k9~TBF3b6pF@>rD z`}|t0F!ah3V@_WShFs7;y4!WUtBbw_ePm(Irb1@S)$#z<@aGoQK5!yDXe3$_xlG&^ z=fqf>9Sk;k~C%QBo-eRmCnm!^bEAZxA`9UvT&)BjE1lif? zDF-}$^X04OyQ<(Sx~C(=h?y95%V}4U&)hc*_MV<3u@Q}0HjuB5q~&doa#M8}_(u&X z>yD_aZ9^Gkphr`$N2D~!A{Eo^gmf=NvxEQkP1S%B)4#=CV7wYUcm z*znx)Y`PD2d1-=Wdl7AVFI&#JLI9+ON~Oq?fJ|)}GUeEgyZFOW7vJc5nMn^ z_~fM8Y@42Z5k%_n>T*Fo`^qBD<~ShZS9=pvO8=rwt}e(No3OOV(h zhD>R%aco0=paGLM&CiCrJP|DA?=(<#w%ZB+vIiZz(Pul7f#N%*ykNc8IOh#MBet@p z?i+%*lA6JA3G(P|y|C6oioP0G^T`C#fPWrAHgkVxtu@1F7g&}4ExFni2+R5_L2Ht3 zFbDjCz8c)^4(xWl39ZN{t{#>2^nJb66=oEQd4ao8UJN=sF7<^*Z-M6OAH>hPWcCdA z+G(*8riZpPmsBcf`jqR*UGG0s%#o3>FZclYC>)vAkCNJpux%r4jODiCmYYLR+YxU_#Pg711iO`KY|0fG&E)23+_ zrS1kbU#X3w3ot0QZ4z@e+a{MW1?pM$+6Q@QLNfHaPc<*kLL$51<)Szu{tAa~oQ<{( zxuHF+QLeF|DsLtS zGu2=W!^gU#aKTb-%%X%w7bL1?Y(A((@pIE!{gwk6kBFV3j`dVSbSzNK>DIn5i#a&M z>fG4UU5~aR?OA0dJ+A+QhW508-{6FLw4lN?0OS)>@pOT-M*&*!C6-}B zV)lbULbr^EXQI690%B3~sbo4FSBR+XX$4Loi4#wkoGIm`QZ58Mo?pT3_Hv%EvolB% zie#Z?yg2v3sjS+&F9KPuFQ``}YZj7)j&xm&P&q?t2BG>f^`2x7$)tu1q(Q-D)6USf+kq+oOEEr}EnSF4Xy-og5moGPjOc{>Eyp4!!&M&&CwzbZx)r|2nEqh@kl9*FSHJd6D zVe5gw=-4v|=q*9N)uRiJGix*Nx^U3X8^Bc>PP^pgDCG9@ws6u%7f%sE+xB)_py`4} z4$CVw(W02aJmqI;f%Vzlk2eu(Sh6y~W?3oxO=`aZ?d@1J7YP7cw^*N9S=*AP*&$79 zGCvv>gU}9R!oxEAOwY6#b_OVm7sr5nf&P+O51Yv@+x#l75+NlgFiqPM%g{f`CQ^B{ zoK8-&ai0#89C1*%2m8Ea$%po)t zNw(MgqbL+nf*44}y~8T*{WR&{`IP^bYDBy>5q@6-8V&v09(@Tcshm>v>|~+mb2eS-tn!< zMa&Yj+2xoI($s5UQV1C`kCVtxnC1OE+5(mRusmJEUibb%~q zqSHa`2r{!?-~?{7wZ_5Dwl|aCI~-ZsxL6^kx6_ZLyft8}g#_-yxV%g5Y(#EuVc%aQkdGeP`ihd;6PU*t*G- z&Z?lnf;EaWB7WrFdcfwBhL}`4s(mXjbqOr7!sm8r?Yr_P*f$>H0Enn8qddSuT1+vj z{<`=Ud9m>-3)O`dP;?N<0erGlD72{Yd@6a(?n#Nu?jS68*Sad(=B@w>sqkRHY1`1L;sd$- zq&X-6#J2}Y!%$^XF~^UTV)16@L*Sw*pfIG`3B_cz>Z$O)3WOs`ucOxikfP?06DcSS ztJ?4_HF>r&!PHhc93(;{%NcDU(4TC2RB%YmMID`i{V*~I+~lpwff#TLvOpP(`mkq< zUs|JDCH-GTZH_zyJwc{5M|=##eUSMuM@8!nA;7bv3ekEt0vu+6WVL=Mf}c19yziLV zI0W94c{UwRiBF`e*p?<*%e)bLsshw$hbyvYlf_AQJosL$J*J|mhdS7L^4aGe&Dj_= zmr2)73rr1-q{tomXf`CuiC)p{YBjg4IW22&5^$nDeC%bu3fRGG2Zy=6$VfPLfnrC+o3%9t}REkWl-D8)0J$p z<@>iZcpu3LC)>7-9B_yBGKPUb!nx$3RGQ;(V7SIjoXw#d&BF#D&HJ`NKbAFJHSH?E z2V4l$tsAu0vT6OS9OQxvi^T8xvUas-X_roO*XZ=NS{-fwv*@7Dbv8FQ*EdJ`_=H&J zXP!ICAL8EzDS~tQP0@ZaU-y^AV&I57(D>vdHT7@E3JJb9HDOd&1wV<9|r(*za zJ!D|!>%3jVYQ0Vq-v|<-wRGhsNb} zO7n8HW(fadez+KFF$Fd|b%Dc!CtBPi zFY*n~YT~NON-J-}OGTd*zeptEiLC$ij{stFV0fO2 z4NXH!>c`b2)P}vPOxUrpUXt-QH3lm$!1DNU^uK-?s$m zI`MV2E-UG-=T^Rx8X_q)RwZ5UYokjg8A7roJW9YZLRmePb?K0~Po8MYfxPC-TxtcW zP1gI?f`A{o^x`7W>K9CRY?E%n3;HWt^-FrI&QbnbSfjy|M(_O;V|u@&65|J-PKX8w zm=DVheEV0koQQy3)gEJZu6{l?E~YZl>co@4)>@?EV}Wchz$ZUcD||I~2vO7knGwP0G)WLY9Q+bDBECFwdEKwiW)keD1Od1UTuk9qJN%>m|gVqDT0n!jn%GD=T zY8-R$9$QMJl@FM()pzu)3(conLWsKZp72W_s!(p1yV8PJ+vN@O^_7T;i~Q&+>t1a< zhs!-UP7GKO%CWx67#BGRmu=-1cHg>}t)l&hZ{~Os&6ji|v*=3q{&ds0e1nY3uDKt& z?6v4Rr^Xd_y%t0`YW0q=CfVi|x!M_6;PkkByTCqv>1M%GH?UP0r^p4>bk$0}+DvlM z@&=)(9DdZSOi)wY*|%4pz7}7^>cZ0sp7|BoKh#%cere*OKhh)${Sd39i~TTLz48S| zR`t_Yn1#!1(+e8X@m|u*>I_CqqF3A+V~4fk=&m+!m2D7NV_Q#-#_>LBjav%}EpUmD zF(>)K@1e1Zo6TS)iB~|3t^tJC6qxmIqfm&ye!He8Ztbsz8vZRS8WDDQ?2mYw6(deL zc-Iz2VHr13cUFyQk*FhyQOQ<}Qh`x?KFveSDnZW^tj{6pRFrQx1Q7;QMjTljs{cvzMB=t4zpl*x%hU$WYUb>Y-aJ_ zsRMq`Sd+7mRTrEqlO5n5D7>J$a~&ZRlio$c&PG1MGmKv^M(p9<_V^w% z)<;1bg4T#)6l1n0O3s)sHRPj4U6v9;lYf|(9N{XyJ%OFhF0?}yB}h!Pssu@pL+6R5 zPOAkzJn5Y~!>c>-B6^Vgn79ojaq-EHbdJ+7T+EhP2o$x-kV}Scj!-nMR&9+&#JF6{ ztZI>+C}%cjgyV~q0~{9>$}`|A$?!>}9L|x1_Cg32yrI(K;$r3!^)DyEBDU9%phhC+rQxp&%P}4Xd?Ug=!7(s$yaEf_UO*IuAhM4v zqKD0hLTu?J@wyH`Fqg0bzu^Sbhhq~Y&3mrWnZvTNbXbdy7jhznYdxx$3q(lK$F71n zBUs?PsPeW>N6BVOivV6;h7qNOsMD3tRR~IQbnMVKO4PN23IL|?5+FqW-c1mMOG*x| zQs~K5$6L^8i+DE*=uC+DSn>0CDpK(5K2Am7XVpr$2R(_TEXM5Clg{+B5&kX>@6x;P zu3DL?r2tc$JINhsDb12R%@|qF2_bQZk+CAN@iCZR(g|{76PFuH15|##-iFHxeP`H< z{mXF|tuXDw<%MeT>|t#~)Jw%7cFTlJN$biP4dgfoNRqX)wVjpXM314fEaqon8MmvH zg|m`x0(f}gdzvn+74sN+%;x#C`pj?p z9W59>9)tjifWB6FvoDuc6c=&ncfN@6Wi`sf%Hz$-@VsT~g~yQ*iu^Vp6a+wLMKl4G zi51i}ec~+2xzd5IGEr{~yv^1EVND3x8?(|f>}pjT=WZrBvQj|DgyHz4xDyjSlFNtP zDFZBUP4`?#0BS1qtT2tMM;Vks<%AdmD(+ikuELN86-&1hACe|zYg|lf(3nkl|1_(* zHn_eBnT~8*s21l~=rCznvoMrb3$<;`<1=fewF{Nx z{Nlbs7Zxn7jO-U@0q4fgP?|#ZcD*%RL{TxikY;UksX)7%+w{Mm^|7LOg2LoAp#R8;8lwMm1-J*%p9X zd9~ScQCS*<1pRaJy-)FV*~`}UY610az|8#IK0S7gxf9Eu9H9@+f+VCr`eiwAoiTYvJ9Huw8o^$|mxTbM9+Tqo8zoojp+1wu1jcyH_*TXiW*XnuM z*DwoR%OGQ_h0Y-aR3gN0>afEA+t9qSavYS4n@o!m^?s`n*Vf`XhF{#Tvv6K^+tpuW zla=i(SDPm5O0cq?FEd?C1a?$((hP*4rz0n^KZw(%vmD@&xyfK;qn44?neh^fl71{$ zl*WlzNFu%f%u@7XFsCinwdIErg#9tYFivJKxH{C+f=f<(h8Rv3e{dW=16bcKjuy-b=I0yn{|tT z@AAqU$yaAzX3AN5^tCq;t7=SNo!&hq5t2VfeBg%r+9rTnUMLH$fB%pF6drIyf&t^A zInQM*{X-rVkQm$Vf;tPxZ=dJJ{Ch_-9?hO*#3D3AFrr~-3_!M6VFgM?q$U7WCFuk9 zMe!TpE8%;{*%WLPPBl>xk5k?Z)U+E&{oL*-J3pR}8VVuLJ4&|IXMG9KY`vI!uy&yw zA&#A4AhKmvx{@c+?PQm*dK_8!DwmR|l2n^uq{Vj@8iBt#y--IUaO!|71Y~s)kx)ce zQHf8pF(;JsmhdZV9kOELz;@S;MAadvC8D+!iE{5&vfZoO$?t$etrn9Z8t>Sj6M z$Yb{XPK)ZbzG7ZvBBSG6%9_gA5?cPj<9g!A1N{&Vx(>x_nipy$iHIutsJ-bdxgdBm=RH@=S zaV+#{IU)78I5|Bkr>A9!*cJ@BWuIzcTp>ZcSuGmE7gAE3xrtWbwL0XUCRj#uJk5si zoN-A&fqaL2*GH{1n)9#52$JkKst|Ma-wDeX@p@`u^I7WxN_{8sW~foQa)skKQl;_P zZ7nD6cpscAb6wazAjW9TtasWesdl1)byC>Q8dhh^xH`|LVRdMjZS%LM*}Oui6X-ez zrR0qEAed|{wM)=JfaWN*XBp5;h2HAo?5G^+K0z}|ePFe%CWT;Hvb#;_yQ|lJd948f z8}G`Cajk)4zd5y9O|(Z>F3}+`uT)$heso!tjYr&-ed$Tv2_>87snnZnVcK;Q22RyM zjmL-VWZ_GDHJA3%mogBq1~qGawzg|8ABJt<;K@3%as<=im7Ere2a$|QS>XJ%P?M08lx;&At48~kT#8ifkx-?5uJ&IkH(O_lUz1w0HGuVUf9^! z_W1jPXU|b^B=2Q~73-)Z5^b1sa%VB-pdW!7)UZ$Xv~N3t#R(I%U4<+lRaD_H$D9%B ztJedRp5fR9IRBVrtWyc<<4N31o=(fZk+=mls|e}|gqG+^;sQI88=MWZ$&4+||Mh>u zLl>Pkx@Dl8B4_5D7e%rrR%3lz=yOmJk46BmG_Xs%(Bnkzn^xI~<{rhQyGIwoLRg)e z!)`FjhP)Frt_S7og+d8|>YqqifS}|M0RP=WY$pAqivv)sz5r~FiX%iJ^AUheNM^E{ z&5w?F!xrA#kVoVUa25eYvxvE~oFx6BNXvr4=)f*sYeH)_$&LzuU@}9%X9u~DusbaR zkjs~{tWt8I2Gwarf_q8dc4lY2&q7_vM)hWCVMPrIYL;OY^6V^?k|d6^O!IC4XTrrT z0a+gVVZ32y>LZL`@aY82*W!$*x2;h|)vZgTjOzF%IAlO5aS@`1O`@fwT-YT_K*J=} zth`k@`2sV+L%vJxcAMD7 zn@?(LzB%88X!l}L1ZZoi%noCQZH(jj-~L84YQV~@)4RAMk1o`}(U}GH_0|^{K(5d| z2uz)PQPE{zS|;^!^{vX4Z1vuaqYLJ`ok?8i&uRZFcSu+`<9um|8zA6g6x6s`ahVHW|IOV&$z^II0!hQVDIP zdRuWri;8S5uB2r|Z*eKDxFA+GkzxlyL8@!j#ezsuuOlV%AX1EJBA5#B3J5VVm%Vg) zT0e6Yv2~S7a+}p@J{m=mu4`pgsl7G@UYd*MAtdKNove;sR4-!|a)7JNjzB=KScor} zxF+}^YUBy~Xvc)tI!|Ght;acivii^hTLZLmGxfDx9V=;crP5VWX8ozSw@j65+=(k+0mlbx~>Lcy8ey7-V$L+5B%9b;L9-6^}pD4!7B)ooB8g)MR#>PeB-+` zIstHUrp;Z=2+e%!j@|>3P|!@ar8nZhE537A?}U;CU%wYzkKOxx_kM8K4o~(;a4~%N zL2x~E8S}kQ?OvE^ggbu-);xqT=X?LG_v%4{e2>nsxp8a@$-L1Cu2nU|<;SVB4^_Ud z7H-iA4rxEG?WU14{-p#g(EpyM^&~1>{=!);;@;4?U0l{3PtfUYtyPGdbbQMX`s0uuo^`hQt$mG^_9_{ zy0U8Yzkh4rr8)^&{jOi4qt;uN&-pBBQ` zPtxRIZ};(cJI@cF9e(v>_W)N<_3EFVy?i29ir~t3Po5p@J>U7uch7eo?LL?L-|KxY zlKJfA?txr=tyd3rA0Iw@_42!yJ1_JLBctas??O1v0wN#Mrg3onPqoA~JWw{d!(&A< z}uWV!#C$f#cCCWaPv)kQ+LgI{VF!2 z^zdy&6h&8hVbt`ZsPk#QICSKNf916$;%l_$OtOsxh?C%1 z3$Ehpr$#Awk`G`&gx`j9c!O6Wdi%Y}b>7=ZS6@e0J)5^(w^L&neDAC#3kI`g`!94L z&}G|omL4k3nkhYZdMQV+ECkTt-;J%jY65+$(gZ`!>I|dz|r*UN~zV^n6 zt`P_y-#T}cU5HnPJvhnutN zM!#|A&YcJM?DFDkckh!2ceb`3Jh(%D-`Tpmb&vo3IVNDvG5yq)8yF=0 zm$-j_BmW6`COvx(>KpBbXT%1;(FMIRc`xSJTbs8H66f*L`_*Lc(W}kxt6SS%Q{RF9 zjb}(s_dmEnko?E5p6q_N^YZbRul7mM_{;7-35>(~4G0u_JCAqiCKP9%mq+X=zQ8R% zjxWL1m?p<^Rn1lY>0K!8FAw+s^4-ppC;KGTm?T4=15Jk}y)zs#(z+7BG!GM&_y~TT9I*kSNB8)CyD81;))diO{c?4rsY`@Y~t4T7t+JO*b=fRn{ zbnQ)`(S@zaGP?GmRH7@~5LD7+uGeE3B~8v{St3y+P2S4YND4`l3%ME#ASp>1?y_q@ zPHd|IE=|6ao1sNb4{P0+mL~raUlzkon*2%jo|@3osgw-!2W9(&eG&1Zp1b- zr4Es~EEVGFEoEu)uhE{CNjY@a6tC&4=pe{LUxN|_wyre!#$OUMSDO4;FEuS(Y4R7n z=Zsrv@^84*uxq8scm9T3kpB)dW6dB-wE9l{`hH1LXto6dV_?mqYj-^Xb=}JD83R&1 zkuKf0OOg4CZhT@lWKU-g?6-g9Q@a${tLX9{a5)CW$^O|+e4zi+<*em0)5h#5y75$U znX^Ij>QjRllVGtnI{@9wqkGN-KzEMiPOSaY^%J@76o0xT#4S?%>1yGwLh+|7-$z$! zia*_d?e06ppRSJF)kyKDJ0N1F^QTCatU`64E|nn}4mEwcH>pu=Rr2Z154Af&<+G`~ z?3NnDt3|6%5l3Hng`Vw-xKPvO>G~VkjB9EGBhi3mW!Mx&_)9+CS+Ucx}V}NjJWb8web61^}l&=1(yJ}Way14HyhE`I#0coUeB~@{-%_Ksvfc}RDRJ!(+NM}t0D&70K zd9PBLIrKQF=+-n;sF2<;8c`cyDUlI2O>jaY8w5T0=kQ{yVU`~HOYl%+n5BFF7TgOA zv#ZKoUPNxnpYo{7HA989`4R2cM3r8Mvywz6kc6@@lC1B8DqKBaIehGcZdSVA+kbWV z>hY`R-@SPC`6z z=afzcJ1mKXAwQ_MfrO%2)jcbxlT!u*)I=hlHZ8x#1)8N7hGy#HJbkp87Tzjm5xC#X zt|R^&!O^x(v5UDj^P)f=Tz>^@iqrR|JQnd-9l7{`Ef=9c2|4FFh3(2T#o2V7v$fWX(lX@B!r3Lzyd!9uWR%M z`#u2)g1uQzJgy?2Kt(>aC`uZxqVknor~WmK<~163bBC!BG%uN#N-Cgp(HyDCE-4MD z1O`~k%96);EOG`jf#P+UV-oN!nQOk9-8nVOXhc8Ei)qflCmi*P`9;k6fL%unb)sM- z5^}PRuxT2x)H+hPgb)}BN!FV_t2_*vI`o7l2q@biFiY>fRbyVx!N5P9>!oQ3YCP=83hf|5I!M>jI`@uGZlImo5#&}*KYSY&bwcX zaX!1nkbg^YP7}BEA}1+T`IICxreTwOI=kqv<5Zkx)1gG!1~^8D-|PY0|UD5_$+X;Xi0~Rj5Qw;@#GxlPd3X=S#oVftBc`k2R-lkA6iZsq#;*x(2a zB_Z1isiuORf{Bq{dPI_QPXE`|gWLcxg;Acp(Rh2?8uPJ>6GQ>Aq;(3XM6!JYKu^f@!WG^jB{-Z%XVgpo^w2P3$;hSmfeh^{T9sziIwGK($!xAE72{vI8(AP zL~gP>qh3vkXNZ*^y9(Rz=ps3p=TbdcYIA~2fpCxVe8|`^v-3P3+hD70bl-CW)R>mE zbJtfvc$jjn2G>n5tz(Levjz1e+j%gp+u2cZGDpr$1@euP)+V?s<@M@uuZasl!{6n8 zb5%uo{B|(+br84{QDP5x>fZ*h==Cnv z!$b;QTGQrQ%3DYsfPJJ^t6G{SnsW2`_KFw)OVZ&PFC~OaX$&5?)9-%SPBlZ?Y0s1B zNQ)0MSbIW&HQg2vUmRb&$fmD{)ZxcMs5=5LdKhGMrHQ3p?Zt^y`pUjn)Z?^;#_b09 zU@gfx*l3N6;yPS+urAjGHwwB(oA0w^^`Ud=;kLo6$|p@$&X&ZSFED%<{};4>L33pX z#b$CKKf)B5RQUJXfF)L`NV-E9L(a0v1l9r8nH?%Ei~6XhVOsMx1A2pdUkJwrmaNDM zhUJePCCxwjP&`L!5WzWH℞q>X+j6^T6)Nw=1q*a>852${|{Rw>k~ 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 D=(|E; literal 0 HcmV?d00001 diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz deleted file mode 100644 index b15fc40968c085c009f91a1795f9be9a858798f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 434119 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

    SW%NB{0WPLHI5Q6uy)<+6{JjS` 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⁢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

    c<(7gM{-Cs?=KtDIy!YysUSIE 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

      @sB6ZGJ`jjmdDflD2tcs#yW!M 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%0D9zmY9RYNN(= zF6);7B1ceMHPgmkAt-NDt6t)Mr{k6AzijTwW9b`VgyhGJ79Ok0eXdn8Y$ycymgCFL z*iRh9A1m0+fczGvG04P4No7-P; z8*$$mSKWkqFGuHH>nTi=t661%;rc49)ml>G*!H2C%~$q75(CWG!ls_Q(xH+#;*RKu zhy))9SJ5ya1mbA5Oy5-d2|_0jRgdYVGLCFELA-J2QGlzo_cv2|S=)2|mLpvbvc=ksWAd}YVgi`fMnbF1aRfYpQv)OOz+S=;h3D~=i! zSv5<}JH{a({CCy}K~wO39Kb@4>}iR!aJo8*!~b0&C(nwYVOcdX;Q%<-uYWJQ)O=Si z9vi{=EPHUz5yOkuUt+0Szuvy{E3K@e_Y&m>CPb#Mi7zFqsD&TEMk?KU?KapDwMgyp zG3V?=&bG3Bm_3F^Z)pte(dOI&OyKki3H7U4Y){@7vNK<~a^aCZD1$?@52)S#7FwuF zinI;kMl(HiMH zHZ9NUz#xT0G_-O766b>NE$&iS)o>j(9)0Qz(v`#P$NsQ>FBU+s5gaF1Q`2|lcbjP++>4+y5a_E zsK_JbpS73@5_tRJZqv<3+q*vAH%)#z*Mrj1nSJj#tfcbZnY}&CzNuJ?3c-IU2?{F7 zRS~wZLV3|yJ^O39sJ)yP*I|5U<`sKbf1qKXcd{uQ6rv;7d5M6qB!6P@qY(JmtVC8U z$EZ@~YJcJrbvv|Lm{IZ2<%kYBV(F42;%_7_po9|fgmRL)EH=@kHxM!9_#HtsX=Ka@ zMjJ;o4x6M*!B>as%0gphTC9ly6O=>>s%Q1|+^f;iJadc#;dMI!55kKRLMY#^2m)8r z@HNn)TH^Z*?C%Hm81%Nj=R=s}K@mku`#^l~vLY?LC8?ogrEJL)W4NhrS+a`p=#N`_ zxTserr)|pXm&X8hK#9Nj3|$sMnWuVTn?|rj&r066#QhELZ&C@OuY|%Q#eXtO zXFV-u3zo*0+G4j$F;T*YK#!EDAnEh9Q=DLz%45x(CJ-CMB&*D)75Ul{Hk;VAo!cbN zM9j38DT&ZsqLPUgvNN|DKs024qK4>zd;E^f2PR%+)-w2`(K>kt(g$!fd~pG z0}-L>#n5Z84ZP^n)vbaT`+x3et@jT8@7-(smtVmCmlQ&}bo)PO+Q;^e*F%9Xcs8KD zkLr0$;hQLRu~MlZVWDgp=!DiKW9*9%qAMhTpi@ZDCpSR!tpK=Ym9Q$dritY?={(bs zsYu!IsW6OI2{q_k<$^u9FiR0yNCwF@B#~HTmR$r~D!rTP*ADM_8Z6r>F7(Xlp#RX*hR!+=(B$noY~4-4|_u zf9mSZ>QJn6fT;y?(Zn`^kJ>unswCQuzOg@~t#lM7Q2IE+om#1itnnl=4zl{M?0bZ6 zUuPA4DE|K*KER9lzwrD!YyQ87x3BAeeN6n{xIGBwhhz2O#lY&j;or%_8cH#6NquzQ zV)@Sl86-tH1Cdce)U=7%me}w3J|uBOT^F<(17Tv>r9f(Nl6R-Ig?5(56VWRX#L=8l zZEq9FV^x<_Jn$;^${vG|pgKQwIsL88ISWS|GJ|3iV zSMyl7T;uwPf#O!K?z;MzBWboTSY>u;m00cZ%B$*9^MskUsUtjvjt^YV+yj&joYpI< zNCs$tju*J!+>aiA&u#jO_&Q}1Qpg2*Z{&}_R^fOvbSChh= zEu1181FAdw)-TO`mxMbOZ2K^Hlh<44i)+WeaP#ZXGpgY@QOkl1;~1FMx7-z@uEx;6N(03NI9JhfqQ3_JRl(&%5#s^B3R; zN0DO3VagJ!m5UHxNQO&3p+fTKD#tBiJT(KzQcHXet%{IdFEmTB$MJp6I(DF@QEH5eauCP(w=j1Sv5Ik@J+@ z3tdBzsTzhb5E`kTwP9I+Ka@_v-F&o?tN1PC}k}mEUsW1 zPw*`UD+zMC8$K<7pEgD;Z%`Mt+OsistpV+2(-G*CE49c&;7{)KFXfa4=g?sl`lg2& zaO<$0Ry{p1z2I-hw5Y9CVN09zEb=r}OCB1uC5OnF6+-#tShiXVMV=WEV7oWNbCsfL zbz%lo!=;O^v!u41*pBZuoFishajAKjt7Y(r=&cx!FSvT`W5`{e+B&s#>ttucVw@If zaLeWTVBv`m(eq!#%W)9&Y3JPm7EGgKVO1Gd%Y@cgmFhr8XgzVIsW{vL^f{Ra=fZPLkQ=7&&-`f`(lYxO@QO8a)(!;W1* znxOPo?<2JHi&!T%Oye>$MR*cJ7RLLo){0K*&DG2jYxz3wWSMx|D%~G}{=cSwImNo% zFmQ?e|Neu!YxwUE?%clC|34=C|F-S_nB4%@BgIry+)$FH1dtAbghRM1fEudEQycp^A+J{p+c9TQRL@j&vYj+OHEZ)HQ`I(m5KO3SI}F}ZI;>{q<`5mOY~I_w zU@Lr855ra1e0DjX|7lzdS7zSX`|<2-XB#0J$j%Jb{1;dCHH5RBB^$)!y~~BW`Sz)36#wP+-L?9^*Z42LbpB^+`#)>~DD(e>gqN+XPhfZ@Wv)CGUmmDb z>mAjMP!~>eSpulC&DA0S3qUld&&EQGriE%a$HlaoRK+58#1M619WvVsvOXXC^8pi~ z$zExJ_j60ML2&blFylT+uR-@?!5mTq##fkrlsuOJeHO_ALD0tq&|DDd-p&Ixt1Fxo zvqeQ>JY&2T**ndzzCrzvHmRF)xM8-ldS!VgT<>I=$>ob>T)IxS=rbQOWAf*k2;i^7 zmUo1|H0N_ABbran5!5_4djvfOoX4P=4LA#j5?)IXeOxoeldh6^aU>H_IE`XawlZoh z#NWUx7<}yu(p+bNz6Je{BKAN5iQbh9TuT4f>%ZK+drkj;Y5L#U{twFqQqS&LZQ<}F zPeS0y68;#&Exn*FNIT(aH}imhDa(1wO{7`(nhkJn@K-_%G)Fu}#k15vBESpvT_I=} zhD@pu&2~mWAYQm{Q6+?^LH06TCr;@VC#zB`bFpN=Ep$oE(qhd6BCfl2vrYQ{=y*+y zyB*CtMpu&;A76DAP z(B4-ik;)ooTr7!;mV~NzX!&!(B7`bB$HD`TJkmNz2yh%050nm025o;mLm)}>NOF43 z4I2Qju6e*#`mX}ntybXH0QDJ$@;{<=h3_noytx`nxS0Omy}Q3&|4}%=HU0nD=|4sD zt8f1YHU4eueBJc7^+`AU>2Oipg3bpS3Bc z)u^7B-LIhc&1{#X_*YyAi~hLWI(n!O&cTf2dyWjAWs}t3Y1=o~&8E6d9H~`44jKKM zm>(1zOuw`^_Kg$o#759f6(h*4u|q$}Nu&@p%G7?@?NAf0TC04;O4XN`J%&Z105F@k@_qKieB}r)k)AATPvlJuCEL`@L~CpM)6p_5fv;7axykcuWt+Mb)|67=!Jy3RUA`PB~7jw@MaT z1-z9S9-z*){k2@I%EZ9A=^W~6y|G`u;lb^MX?F|h1PZ7}?hXDI6)QSRv{q`u%9m@2 zu6p*RrdlZww*o^9?0d_>x(@OF8RS3abC2<1poW{~Evx~T_-?{eivO=~ z|Hmr?k^lcXVOV_LSwXW)*DKv=k{|7WM4rv_2z$Nja(-)X8uPmlhaB{=pdi zS)FjwjcneMVOq82QF1Ub5Vg1o;WreNBIIs$YV@@hvLi-#7D(l`|G#nDzy+;@A2b@@ z1cT|d_;FlJns<~x+VOiTXiSA5!;!|T_x1wHwMg<)@c;J;0K1s~KYVa^9sl|6!|VFL z9}oZkaM|DNLF))xWt`@Ms$Zc*7>bg63H1w6qSc)({L}7qkP5n?!qej1m}FsU`i1s@ zkSM;^kd>#270_2Kc{Q(_Dg-5KR+T0g3WG&@)CsWi7lxu`gE!7yEe&mjc9w{jX$6L( z%SjXZkd#X=M^LXNT)L>)7cWo2~8tkm^sHU2y@t54;} z&vRpNNL_SSn#I>uOXhcbjTAM(B+h#JcPaxAq}@VUm4Xbm5~kM{y|Qveo@iV%R9!`+ z;8W5}t~i(6IXt55i<96li4Vwx6nhotfi=yVEdM`W6obEh|Kic$|B(Og5B~A{z5kT= zogJw!Q1fIB&{G%8;1bEevSM0$A<(uk1AI`6c^ncUxZ^csTHK^KJ6=r~$HKE_#}qsJ zWJ}E+Hwbyy3}d*96UQG_bC$fMY4FE-6la#d#`L#Oa?SRJkM4a%tX%Uu*TgJjxc*K~ z<@bPrl#?*_mNY9C(TTs--QX}y9@MLfaB&4pgQE*JxZ~s2hNNPxo`?&i44}g<1|vCr zlkCy6FP=Pc$c0E1s80}Gs8~#}yjn;6ILg;90bjXWo{iixFbfO5_b~oYEo!Z9Tp)sh*sF}L@M>)&77fVA$`C6)28h@rj}ExW#W=Aq56COwa^2_Ik^=#RL@(CEI5UJ%XxA1%M-atD z?6^%*QA~m4L{5JG;!}{s&$CaIm3^NZcjha}i4TKc0E}`Vr*+;CjMeF`F91CQZVosp zEMy@R0gMwoxQM4JVt&&)(ACT_F~^LDC_Edy-DlN!%y(eMMv!&44CTRt8srWsDomR( zMIeV_Nz=ij;5XUe;Si40K7Iiuz#*a&CClJ@4QIk_Bu1~Anv#H_600b{5WeWdNhFA{ zCQ;o^B{<)dmN*+_uK*_u3Y;7eW#Ir4LTv>?%&f6ykKN#!6svK?WOwdGBV=lH8X+6v zu7_wSQSFhP#qpPTFJA{A2mz_h+d>IkW>a$* zfh!r&Jfr=pHY{)aZ^AfrRM)`xeHZK0TBiS1>`!YiU1WmtI+(wt8LDmniHk!cP~$-5 z3SRQlBRx{>Q!B*YUqUzx^j}|8RZ#Kb#RL>4xbGM8h^)%`>Cdg+t(IQeP7@ z`N$7Brp;EG->^nRBP#qTwMa$ote5p`vMB0ZN# z5Ij0(!E=E7L?O9V*du9pDhhE?%}m5xVr`e@JoA(Y69kZMF5lkn+kf}%k2`G`z#HH` z^=huUB=XXvZk8=O&lkb{6BdmUHf#>b#)g<&%}mr9nVejTzrQBcZ=5S7Cog=|MZ1eT zcD2Q=lI`}g5yBe-mkk5o$)^^{Y(coR4E8?KDzlXl+F z;VOn!d!dOswwiIcrmG^3mer~}D+m6zvzkdfMawM2XH~uGK+zAgKbiV`q8xiQ$KS9J z$SUA0trWsul*s97Ss%VkF-pF-DtYHi2b#0u z%ExT62^tS-CKRp&b-D@Pg<@Hc+@PSPPDMPNR4>Z_LlsSOyZb-9xIOsC?_a1r?&g2W z+eO5Z%GLDw7PEGX--MH%U*i$~h z2Wj5Miw47J<1Gv9Ukx)tGykNheQP^!dx(NP^9fQX%|&92bJn0dRc+%AaUbo0J1$>% z+3j|SmX?1Gk1(x+8%L6Co0jNxSt7fm7&vE;w&k8ILf$MZDDKJp{!hbEvDLj z&}pMGBs#)c15#mP77H}uxqc{k7X_3!C)UrL&{VYaainbqlPyK$S18}DwYl+%X4eWi zy)RO;mV$EudR&iIQ!OXS`^Mc@4_KfuaQHRV%<`%8Pf#Q8XrKpywMS{mPpy_lK90E@ z1jCpXkaij~TZcJz!RzSQVub%pJ%rwZT|UrNwBZgGJI3%$l2 zBb+XhRVb#maCr-^!nzi*gpA{fg-o-gnOoGX?)`nLUAci;PYq7J()cPl{|1%4u4k}_ zmt|3sd5GGWcVZU2TP7Az+0G9mtC9;ep92;lx@UOQ==O_h%)2DEZ^eJCWgjP{p=%Aw zNp(^wGY-<>nN{A4!o3dDZ0j6^BG?P{ZH-_P zwjf6m!0QT!ulpBW`5kwq08UVvPhLzr>Q40_dxP)I?eL6WSwN@S>aADQID`gLg_L=- z!*_mnui6_^7QU!gv!%vb#&qW3o}_$LvPSD0w)7nZ&@hPW1d*T9{(mL<51wSV-^IR* zT?3cV|GR7S|K9!U{Ev^7{%_d+zb)#oGL=w03ngijeopD?q#rXM%*vIBy%Q&fO5Ik5 zTeWZ?Sk?(RGizw{>Cz;^H&yU&-huj~hYvvcnMwEo3IG1v6Ml~2n(lwJ^#85hz?bCz z?LSzV_9p=5l)Lub^EtcnKQ z=Cqn`q30GFU%r-}km%_6KPh3>iX|Or_epVPF7I^`iy%YOLx6Cc~*{vkgM@ee$F}bgFJgg zJatqOOQM1{G8OdrjRo~Z5coyyP(*kJ<~~Mmwq7+WASytW1nSrR1NPqr{Yo9L2`(bu zrwNeeur^X6{g27=%EGKB%eO7zav>v*TG$UCh$V*rrVq!IJ?!W$8FLuPHEaGm&;P@B zgOI@Sp5X77>wov}clE#9_wU`mj{o|l^8eb~Z~UH6?eD|z*Kpr2%Hz{9SP*AW+_Y$( z8r~IPeQ=C=CkuD@`FOYUcRmWfpy5+2{bBWCnqUpAX3IrAUX5DdvFz}uEYuy~5bfk0 z-w?$<+uOqc_x7@X|G)kh61svrAtsJ1=hV)dPVZ0@0Yn%wENos(rgN;qS)DcK&9a;t z#JmUaGX-I9?|7ln^F9Xi{RYS1EA@FH23CKdGao6Cy0T0TIJBHRNEHSRsE!kDpN@Tq zBB6@_3OOxi)v*@0EHzAMWYe`unku3I|EPIhtE6%0;skOr`4eP}DTFKqaJMe8x=+jF z#(I3}t(%|H1}|@Fx?wRvr~<_`u51E`(46W>BVT71Jg0DMhFP`un^j*1BiV~_C>Yc4 zz!7Ws&!TRc!Dz)i6&+ZlqrH!x{wMmM-oR0P%EcbaJo)$X?K#6``0sc3*YIDoCfGIo z|K;?*D{TKyWA$rye4(kY^XM7?jD;atL#ZtaGHK69<0`~>v>eUyO9@V{>Fui<~(-@kKB|34o3{}UMf zwpRU6*-vTnIw5T?D*MsZ1e(}@%l1o9%ZhjmQ;pqf$$6nFk_-4v%TlNEToi$0P&heG zC_k-9o7zrbHTtO8YG_H*pJ=Reh_G*B(;5!Cnz6QbtI$VVh&EKyD0&Y>wr2`#02^^` z=npZTtnvz5HE8FY8L=tfwD`ABSbe;jPhg}i#{;SaG%~W%AeQF9WpS(b*i}}RNgD>E zW?_CBMms6y29^Pp#+KQve+_FxYjpVuy0*PeD}ID@%Iwdp@yS$EMl|?sLOWeJ3{?IQ z5C-LFQlAaRrTjVR=z+_XMq$TP8%_DHAnQy+i0l|M7_TSP#=+=n&ue*EqtbQFuu5O} z-TJ_pp)JY6b2Ya}68>{bYH;)5FCsbkh&GD|I~Ezg^TS)o3L($(T3)z>|Ht}Yx>g}& z+X0#0O$xZA{>y{Ach>ShA6(o2egXd9vA=b<|HD=QOF+BW{6NGDxsNR|0E$(b?jD%f z#TcHTTE>EvBWVQ>8IY#%#Wc`ZfvQ<8j=hK?i2tN+OiV~~t3vOL112()u+G7g$A%-d zy-e8i1c-+dCFVBgDXb*vM~IfNqeA(K7Kns-a8zpjjdNi=udM~<)*!i$Y*KBLZgr%z zVk2%W=(%9QNl!U2>t?e$KCWIfcT3S3G^#j}bXb_In!QqK%wHQ<&8XHzJ}V|KE%l2( zCGV>DvRlRygS*kJr|hY9H#a(y3yDTJjcf=br!}KMb>&?6>MN0i01+{czC}Yp8*A1= zB@O)B|7N&#!#{&DF;9@we|K9Y!D=}v&GPDN$vg_6B+;&V*gX(BnBAK>YbeY3EoElo z*$AmB23Er)&`#;K$6-x9GXZPc#5EyIO3k`)vL<2fGHwl8bv#+!6PP8CT3m|=Dk2DN z+PPkDU109~F#94o@L^>wuDxNEl+tkzHeLuDtok*X>4Gun8Jrw`~Lf*Z@y;qJG*Pi!AxJ6c-|Irj)UBsx1>hd z;%Uvbl!I?OPDyWDCDL$cv7Z|jqiJDN=@M85t!}>O@y5krYEzEGo?C)T0hl&}k_#`S zb5P-by|7-Z*J>Q8fsoNQz=jLfR?eD{0YN?=RO1u|tkp>_C(+JuZU-Kc^FXr`G#$1s z=|7Oy12jiGzI^fc)4;s6vZ(Nxob=d^SnwB!^pFD@*>X<^7H={zD@WVt*mkxb@S zj`OOUpUqpa75{@0fUb(cfA|LSc3SeBBLj;nVI3@FCxDdx9lS2@!b3jP}_wMLc%~&G4bCl!QrJWn3{RP2fX}6D!uR zAvCFZ9PtOE!}8hB2Nl-hvd2Dg#Wgt4tgpr&`*lbed;dGylT7Rb{CMBCV5_I2g* zW`Yt>iSY2QHRalK=9((K$}HWwP;4c8;9D$e+ez}*a#{4VNFu9d}KFi`9%S={NYy`ox|7Ha6e-j1jf% zE4UMKlXRM<)@+(7AN)YGoEPVlx=3)vmg`B&Z}|C-{3t!{4}Ue>-?t_-B(;vTbP*I;fBP)^TVcxdDS(XkEx1l?9=fKA0w5o&MRqc&j{p=W zYt_c0PtK1cvg9@y!wF61;U!m#MX z+fXk!8DZ5_6rG&Gj$rUJ(WhwkkydTv)~yTSh2Gpj_Tu||4H+a((1dDCY9j`91ruA2 zN1@a!&g`V9ruaimg!seEf%<2~ui_DC85uWWR(rt#?H()fdwHRC`222HlsnfB=k~jw z0P(bR6ZI#X;7;RIy1JXe6+17{yM3eSqU5~`h8;(HRwp(yC3w1{;S47<;&M#7FrTIk z+_G6>)gVzW(4szz*F#N(aWAV`LWuhTz{+${p%TSBps{rD>~siQX-`HNlayx|z~H7n z0{w`Cxe|cSg9zaBa3g?^85@BW*cva~R4^n{d8D`(2vWe)r znQ{?B{gpN=Dvy@2)DGaQaQNp-!k=sI8V!de?03sz?W1I@NQ*>D2*#be- zDeNbjT~-NbmOIQ7cQb*{8C<=r$HjTS8{)BU-@OFaaKm(*Zic}c@L9Z`RtTV5T0+ju zY&k7}g_o}b&jrJ?f#)rxL!H)z=;FM#7$JyW+EFmSPU?ETh9|`LA{IBVbkQjI zRD>mBqnCgYDU8ruLok#i#22{j_Mi6v<$f1~g(FA*oF<4hwCcAuDr~^JekU`*T08Hc z_DZDV(E6uJt@;osWT~12%|87k9ni0|QqI|DS(H)OHa`dcTywng24LNM3 z19j5CK-pUfL@^C%Q?x{+gbA=Fh*7SdgXoF&e6p5T`DuH@-90T!G_M<#j5$GdO@#9$e`yqFh$KA~ z0SQ2f=fi6r@Lu#E34()(NbM{6c@T2?-lY`iCG>y);r%uIk9!ZVdCMvC&vSklb107@bPM)*FN^GpuD6efR)Fi7o-Ca2Q*T(7y#&mUnXGyomvzM zD&j>H-pX{2)LH{=MyMQuyhLGnDI802mr?$6Ue}8>8P(!BQj&h*+}dmJQ$37@LOB96 zJCN$0mTFh=GNBw0LeA;T2?~lzhDs&m{4^-t0%s?~UVA&mr>LQF< zZL%<1_SG+>);eKrCnqxUegY-MNJ-f5%ZUZsstXDD^rz)&0o7#Gc%ByPE=g+Mt4Nlq@S>TvTAKd2mFVA=Yf$*b{p}!@||0Gm2$*Ve!`Wl3|V+ zi8?=B6i|lf5_2VJ7{v)@D(VrhwGsip&tqz!^bSBL0}l_FDY-PVw&@mNdUUQ;I#^^< z7xh3DxMEzQTC(F42SEOf{aP?Q+78g;^u;2+9d6=w>GHf;&E;^FvVu8G!mK!hg?aS& zDZ|uQ2S6sg1p3E9y(U`X*HQ)}j9Dha&q7qXvJ8Q|*t{`agW;T5m+h{+(wR(JGx(F_x{W;mDH%+Yj`!XyVCQ=%J_+x-?*| z6(=GbWUcNLnOCKyCZ0ta$V(=7t(4;|=N26mYU_F1PONw+?<54vh z+H+QVg)Njt(h^vT%+dJBJlo4QP5ly(MEWefyyzz+qaSm5!9NY*w?++Nbp1rc{X4*^a~qs+=wkLyJMLDYB~ui4~P zVZx7v`u<$3lNOPE13Mv)^8m+Lo7~ij6P0)=LdrV`1+tr5G_Z`MH6`-9s|r&c0mjQT zTM-*>RGX1E2WuRSu>wvUjd|Kh9*}hOmBUX91O?A1(v};Q+?P5_Mxz~nu*DdT@|6l4kg=#uZ`CMbQ90dtg{sI zX|$Z2$0a$ms3A)WhI>aCw(1~S2Tx6cs#-PGk&-BD&{1C@qk|0NO{=2hk6O7S?Vuw+ ze5ZI84S+SK#Y?RBY^2$ETHJm%4pR<=ys{u3784J=JaRRkQ&^o82!eX8dVsUjNpa3p zO+@p|K=5Y`$f*!t=|I+EV-6%KHpOX#D8p;Ek`p^15Jy;p5`i16(vk>F$66(of>1mL zf1l>gHvJExcUnZT}V+*bT)03K;;K-98uL z!A?i>f$OSnC5%JNjuDKwGCw+qqeY@`j2bYCa1nHbiu9yp3Op2$#6{qhfdQ?aTw$Gk zI2KJ)AvMBd2UQ?U>W^FMzYO7%?Aw-_En|5B72l=I@3Y6X34f>^Ify&sc<#|vq`D~! z_`xTBQDMB{veEclAQ>&rEe#&p^g>TxkuSk@^GzL*+fB&OAX=EHJb+jZ&|k|%%_)yo3q2A#8k^zsv^G5A zC8}kK%G7c;HI|=9nX+^N-q$d{7!+)k1MC1ceUrgr}FoG15HB%jya+?OsirQK)9OsyRS#COVT}`Ih||6$L$=BpVoS5)0=}s-qGs7ee4iWq=bP&=*V@S!?ryV!L^bQ|M6YZkaF`W!twW-O=gK>2t9b(~+aDzd&|03G?l2$85i^3+WB(tT9 zCnyfM(#@!v!>|yJ)kKx>MS54Q;Pym~4zMp1h1=r8&b2NF%YlzrwK=YZ-1*ajSzA!W zU9tBgGLa>ST`!9h)TtHO*hgswIhpG~eoV&129D(I*5C=tSIp%>+=pgX%$w6X#1RV( z$FgGOiW9G)&Zm)BVRX?v7UBB{Y9mVxa1p*1l0{U+Bjwh)-jey3+-~`MDojqeK^WxY z1W`P(8RD*mbb&=(jHkssnQzm#Ye%1lg5w#mk&ExwK?T34{GZ~#!b&>;lUD)kC&Pce zef#$P`)l#P5AIy!zy193e~SOw+Wrrh{F`)P!B0yO6%NbI2A*o6Vc1@X9FQ}8OJ$DIN5+x-yh4I?(qQb1zQFaQRj3dU{ zCi$e#qnM`^AP5qgqGz`@!gJEpcC!(A6s>*Zja`O3s)m};X_5}C z>=)S`AqsfLaJZ1BNbyspm#myH@QsOT#SDx~qkChK^op|ctXM1*i75fkWj+VxI8!_5 zb#rD?zDBJ^rcSj}a&l2j)knWXQWaft!!oI>6f=+Traf*+h??1Yq?RzR`%M6`b~}w_ znG!h8Ly#x!U6Wto7eulS%UcVBesmTL~3 z9T=#C&@j|JkIR&&33R6g6dW0%C5a)WtwM=0IpHq*%(6$%zIgHkD7s7LK-w27z0vbF z$l+Pi!!5%2sW->x=1}ZbJpbyXEXLG|q1naXG?6T1Q1QeemY zGf3=){Z~+iG}+NcDYDhHQlT%;vt0jYNB-TAf4lPUru=&$|Gt-hZ{**P^6yjm_qqK0 zfsRE*c8+W1@)O(lQ2ulrfA}x^`@gy$a=QDiC8#6zoLu3VY(3=E);eU3#uxMrQIU;8 zMAUDfFu72z%2T~iPb@FZSk_-|#$-~>MU&9v;98#+h4(M3+L4##EY@dSO8C`DK{>QI z(^hbSE`HyRL4(}I=@A7=pfex>3Fkq7*f=Yg%NO+|Hs7R6(b~qDYHia(PS;$s7R!N9 zX#TL8i3Cm&IBAKv(Lhs>ld>o(wRGo0*~7m4JCuKN@biC=f4`Q0d-CsJ<=_9zJq`i~ zZmQCDp{l=HTfn$p8;Uk~K&kp$;i>ftq@#G0>O*Qm6IAFU$#3Gm-Ns8sQUz zkd%QcO>Iz-Ne|sbkB&hz@sG}y@kGwfFTM@o*i_4qs=DlqslcL5u*>E6FrKd%1T$Iz zN)P{oKGh~Z-@yv)e2Pt!zoofP=f(2$ z^Qd#WJmW$KvZNO(W_>EuQS|K3l|SPQ<>4D=Hge@<6E%a`V!c8d74aONFzq*c@;Hv@ zK!%t->@{aT^TcCS^ zJ&+~)QjL~MK`9BRwFFwXsn5fQE_qKw-kUD^AtDD=-m+V?b{+d!Zuxw8B2o*XA|~zk zaSxZL_G7y@16IW^cDEf@h*7u2Qq!#SAfV~?C4!kfVn{W%pv7uj!HEkR){jKlvfHq6 z|J7}gFZRD5`X(Z1DM*qUB=+LY_xO@0XV@&u`5g;rqEQA2M$Pb3{O9xB&MNOj3?NC) zs@6DbTIxq`Dj2)*@V$N#T%_@&{WQ2#J~-l{jV6um)JWHG*gAV93sqLi+Q-$x&%Z^r z7=Zu!88K67oEJ#7AtdOzR0(BLo4uZN53GnMAt_1Vnwp7%pmruPbHDv+V9Wh>v`+Wh zU739zI+pv!Furhy0_?>mbuZdur-#xkr5c9%PR=z5c;b^>l=!j0DT(AdeV+-X!^G#YK;m)lvp85CH3(GJRa;vc}W zmZ7|dFLLF+p0G5!?2RFH3Hyw}eY(By7xdLwK8sr%W9T&y9em*kT3r*s!?DYK2iP?H zu#g2@Bqs*Z9TPJ>I5id-l*4t23gQZ}n_b(_57#N01-wSrRQuk^crCA@fa2Mx?;^8! z6T>|@L#$sNuzaS}%SPq3Y4_ug|KKGuqf-dpMrDTbr^0`{b7y}&{_oDc>-^teApXN> z=%(%eP$j_DFdb7k#|sJqw};fS{E{82Od|R?89yGpC|*#*&mHYQ1uwL4f*2rJESJUT zl&}nm;r92zoW~I5pq4s6{M{W->%d^fCJar^U1fn$PQf_BYeu`PF0o2GaU8nZ zYE@7sit56%Lc?DyrHxoZSm|g5)%*&LDX=0HnBN~}oDkoGtC4?&3I&{m^iL-|>pS4N zDu%C5>eX1*BQ5j5O{B(nvQpVVcY}95|>sBJ!1B47G3)e zeKu~HGv`8udpxWA~B0A~T^vS~5@7RzzT3wD!wn(9`|$R<|M%`S|Nlkf|2ypVgGT>fC}xD<&V+9)o!pZq@{KLr{W~iqlydmv zRwz&`@i;9sk4NE|1D8)&zr2R{6lMi@QlerY4;WnqI)4#nh|^;Z!(pKs2E4~acIuJN zU?cG^U#a7|ofPm@BDthYs%Z1pqRpXaU4C^atTg4dk$-k#{l7|hS;InPDd%#wvQZr=>CrjbNLkH?!AMIJjmy8|lAV9B+Ae_F!CN(cc&T z?^67y+iUoL_aE+GyQ=!Mwof9`$ggV zY2yaG8qk^H?o479hn=`}Xktm6t!83+cm+WL0{|YwC4r9@LN^2C9pi)A^{9h)bVG4u zw#C3|Zw*eHfrfm?dSMK>?zR*m_4f8c4QoV!hJkq^vIkjH_NPq`eg~9!yC#O$@_#D- zlL*WdUGgWD{~xT&|JV3WzqtILZvW4R`bQ7lvS8MkRVk~FmuCbrFxuuVY+(Yw2cc&S z4>E_A0aRaGW=d&5f1S=Jn)?s9ien(^S=h_PrF@f?T&$n5SA?b1)9Grac4GB90|2@p zeg{|&9sIxB``7iqeo6YjdHX-G87O2Mw=z>V)B&Sjf|!~?IWo{luGLkXXK<=1r(` zv)(hA597O;7Le3rKLdtY0NP>TY=XQK;!sqr<36`6eBg@Q>-L&kY`B)-K~xAr_Dk*n zrmqe#5AXw9=aeku$BLtkLIJ4`K$>n<#B7ToMucgXADQlqNI8t4S?BXtTs*_W@TxW# zdRRJqz~asjF|L`O{Ve~4JESr4R`GkW^zbM^A@)-TW^x#@FNbMlVsMaZM`48S0JQ~M zl;vMbkH0ytSBs6i#IPBr=t6#JXN`35%Jg`~^7eC^K)PjNYsVGgB5|MNLCHU{Xd;3% zRm)g?PLF%|x}GIBu2U%dsT0E_rrG;HD%BjRh+|>FSfi&2K3|RLomm)78r!KS3b0z6 zy8XH=0=xhtPLq>NfVE{@cpH`mh!w9a{yMBu-724?zDn9FH1g-p{yGwLw5Zt8O#@}s z$eWxHgHb%R9FubNQqIfZ)$QyA0qnDen23y=mF5y!1oN=Le4>eKVeRLZ|C0RAz{v-q z6xEBN)80XgyIe^iybS;A-kr7j?|1K9yv2CS-OE4~vROgdxpK++kB(740Fw?GYB)7V%N-NQ%6 zY1J=Hg{2Pu#^6bG0<;O7cgcy2Uc->EvCDJRCgWf7hGsIPHNdU85aW$x&}q5Mw4rP? zQK-r{{IB*os|TBpYtt@hu4CrHztLX5KwR`ecKb&|Wcd$JO6?=_NY@z`d=k!8`YT(Se@G>;iag0KH`P%p(2{_Shp>uqN z&(z&VtLbWDs!!pVX3BSytc~IXAtB44II*K9fe=8J;6mTK(U>71CQa#vg7=+PC#Uw9 zMz`t@*dRxaJ`%NEQ^1xUJDJPY6}inI!Xt!$UB~`ChCABEbr4m+sJdG$P^I}HiZwR~ zb&3>OpdaUtqwR^V_Lbj7uTAWkSLPd5?H*@T1r)>6#+;k3(Ir%$qtvub#wEk3O>m4g$Z)qGP%B?X>~tEq+Jx9o}8OCLRzuKk0i#=%X~gz zMs2H{gzuv*3FlWF)vqjUFSP5+WH0zRuyrvi7|(%&=S9#FJI^Vh3drQh0P}{FY{^|m zXom{OI(&woj{&$#iQdF!_!pTw#>jnyJ&x7Dq|4IAp{Ie0yB>%H(*-SyzLl$JhxIV6 zNvYT_S~W7MT^y{~p(=7rvNJ27@CPj@FC zr2IIpr_52|@bDUOf*jt(?4V|74y-$FIpDdGYpN_N46K+nXBK0sxYK&y>`hspVqy>~ zst7tZkJ)GJ8`IZLEG3c~Pn+#TIO)=Am}=SixO=-GwAKrkXE!bVgVYwd(S= z771?0vMiD2%%@|ttqwK?7DxXb(X3Gm)6MN>^wj+btJ6z`dI^A=%{rWGbH}{tu2u- zuh^3lIR=w1LTecDrp%O~6)oZ6O9?=D3%)zYNZ=rS(;ye?$y}aQBXh&abjMXwoCwoZ zZj&Z!E9n9PCZoNTe`PgsBXG1svX5iUa>{Q}E&dYAkJU22*u=9#iEQVG%S}Byftb(g zKvw0&pV|QA^Vn?c*|Cgj8OZxueKr)L-(udGt-z}O1DSX}jQwXdvvmCdPn`l`U(G6X znf?FHTKvb|+jp+>e?BVv|HkeAc+LMDBx#`Ia|Ee1l9Y}hdj%hWHJrErT1E~ON8He` ziih$=gAn%jaRPL=;c_p4Keycpu#q+VO&b1-To(!+d38v& znwg%!0l=~aa`s!{DZ*7_t&j<;WJ+7RGK$_P4quhLZypbB|B8tFYICtdP|44C?nhNH zwr;hKYZ2$lP^%xshlsr-$g;gTlOiEiJR>6#p@f{BO_snDyOzk%j`D6_b}{_xyg>0d;RBPb582t$L=5Jn%bVXd;mj0yuX@_D*cb}bv~qQfQ&o)l%)yv6*0b$UTsO_OUS!u#HR^>%n@1uPpHw?d39E5WK z2xUXSy>T|LCzbTx<1UjJj0+7I71?So3s|WYrz(>IlbYEW>#amjfDtttsoE2f$Ni~ zA5P23eB*(~akrn>-*b608_M@O3Itcao=@t9nXJ>Vt)yH03dJ#R*(91{EBaZ8%Gg$bHHwZ|-Z0tUWjofvK5fb#KyFh=3{H{_KYPA!`3 zzu`fP|8|gm;O}Ea%pRE)lcw&$;&y~>(w}bMzR{#L*oFPq1Fa-IlB+@miluHtJuRNP zCe$7dRJOb!f_Xk9&cfZ`klBUIccNZUSW}kho3h1yJ-!vALYp=P9bV;EB zlatcaGfg*ZfKKWlhV=7xL_W(!JMYmog6CzZc?iH~C#`6ERFhU3k)tu8k+K!fMW%g5 zI+ytE2?FBMVZW!&Q#ohmqENRw5ECcaKMS?C_bEjH`zXXM6bRRDPLtYKB>LIY)r?4u z+@rkbxpMBIHo+|{$S`}v!$+dTKoceGTtOq?#-w<(JF;M}_nXV5(;~~&?^sOPNEM_Ig?NPpz`D z^2M`J2`XM6WPgkneZ&^gx)N$WywU$8c4<5lEGnTc1jh;Lh2NjA{a%b9bt5=c#9Fyz((kCfxWfM9k?G zo2pE#ithtXIcBNKttCf;ck)zvns^2BA_w0VRff@$N^5;fc?`gb9Xqz+6J_`%6`$qN}X5@4|c6adUU~>mMH~aF6 zR!WpJm7YXC0YbjhZ`poj>36%cQwAeV{dn`R_o}YOogvD|leJxYyPu8Zjx5VR)r-lv zA5Mg{rROP-AhIBH-hyHwj zqhw>JH9`4$$49p#zyH|#(YC0bpGUnVUvDtC>_rxMj6zyIeAQq>Zkc%63^6P#_#&dR zw%UVyD`!&!lwzZ-^TFyRtagd5iq%4k$r)JLr1nrBnLF|Z!g*5gFpbL?y~Nf9rndmv z`Lv88A&U?7@+(n;yx%TpT`%S<4YYDmWdL`-Y{DSR|H+s0RyafXy*tDG;qAQrv%#gy zLgshx4e#LhU~Xv%wl09eQgrAiR%A2A7((8igfnUjP!m8*Zvdi9tcgbD9k)@%pxEb$ zm}@e$hajr1E?o~6a?{l|mp}WLCtrUpnmUCPgFo#kP*)?eLzV-+)x4~v$6GlqArR08 zEgM13Xn|tf3+$|Kk2%JzK4MnR%HUpAe8f|YEH%%pM!<|;RSm9F7?Axg8vDvGo*n$S zDysVO)U~WMmfR=uXT?aq{6Z7WH7e(SF#pemr{O2`|J=Fr;Qqrk|IfXL*ZF@xm;dKc zy6JAg?e#Ce~_xW=k-c)4m3~@c1K~LQ=x%9 zRd4?y9BVaWvM-dtwuR08DsE!yvlS?r7G9iMT7=rp6YKg$OZlf5)8{uX{87GF0Y$}& zy}d`vO;&Pf))d-;X%spxIG)2P4EOeE4kH)#n9o?axi?;n*;&esTuSZ=<_qtl4aCX>D?dL)6fM!ID;sB+w96 z%TV#FR%5S5I;+uRiHK2)&n3^+80tbT%*AMFBA4LHo6^}WR{PS@pu_BOZP`0V4ODR1 z+SC@T(hbz&_Gv!A9;UY9Y@@B1j>C0pac`T6INN9<)@pCTFih_N?j>!zG#{tN;U0~U zCUof{!vGo!-Ycd<8o;k^3|tI19;?9(sRre&S!o8sv=p78@~i>3+=!_0G~Q#|JVc;z zYs}yq4wF>`OiOz=D;RVU(+L-#f=$p#Yo!j$-l$v{eB`n|DIvIGP>SZDvi;;Mz<%f1_OLW4KnzJb#q(egB*DI^DS147WL6~zI*iicUO8S@po+a zX!h0QdASFb$BLIxWzpYvO>aDK2o{Y8W!(bVo15IW&;#y3kLVV@7TS(Q-n_EXTC6CC z>PtBXpxhy;XxO)ccN48RK8YQwzy29=h>R;SHkF0VRjHVk@(L*JQ+wcUKYP&6{;{9k zz9;|WzjtoSzdQ0zesNFuorl@7cv<#nw6r=!4*G#EG<8Nz9=X=t+-+_i#EN{Hkwu3h zigH=W#JTV#AQF$gL?rY!d!tFdYoqCujaB(%!i458fH1_JXc0?WEs}bdA5Y77RH-m8QrkdJMb| zs+v5CtJPi{nXS#$=x47}@qoSqQQ(eY2RX=&i%BDAEsc#oW`$2ZAKdxuo`!5!$1DUG zkA(aH_0K}c76ro2UsZ*uhmXJe*Drqe==Z<<^6|fZ_2la>pZ)7UKl}FgLMjn+0kfb+ zc&C$(?I^v)h!gw1RuCStxClsbV(-@oJytkV3C08-7TxN}j-h8(Qi?uYRCSxZszlDx z==4{@4;WNaGzx1oi$O7%=ir{I#K6>6%A5p zYUJ)r3oi@3t3|K-%-`!3JAswhulNoI9$blu81_Z%d+7oA;dC$dl? z_07QllNV=2waihqjuBF}w^c)nCFF{g@X(>0L%I4(xk@=@X;c+OZIND%gFd87q&n83 zB3k*SAM=Ma;i_=F;s`V^M}9S7vXY+a?-nJC)Yw75sq^!!awxlGdpM!ylI)fz*Ztsc zYTAUQ+r4F@T8k>m{V*;m)H``J8?UBwubte|f1HFdajb6~Km^Zm37ex%qrojri5fAR z^knhgE|7KJs3jaTGmR;^f%Gv7!_p$q1B=9Wu^CqcDg9a^pzB12;%~`EG^omo zVZdG~UQ7Ed$=iHNJtIh{zKO^fv#wcypPYauN(`=+O^P!+9_M68jAg?2G4qjX+Ii4u z&WX>L>{1UEWzC*GwR(T1IlC<0WH0g#zG2%+`2Fs1cuW4@O0M}+ZR?9=R@_wQ@>+u= zd|O-M|Z=AprZ1xhcnn>8Ep5I6#TXn==09Yl1{?t?yBs&`4U(^5CXObF6S@ltn` z6tkbTz{(NS!L%;qmR48?wSG(rCHLOw$>QTMToWw4rQ9yBt{2aBqC87e|KYP^uf z7kLaz3=>Nt6%%P9CX1dd>N7cXa^+s>CHxaj>nY5S3a^^Ei1Jdn|9y{*s+Nb*byFa? zMrFNOd1m4PBrja5Ki9|_RqVDzx^VUu@DxJ2*&2By2646Q?a6uBQwNjC{ERUXVQ>l! ziV58!9@Z*4Ayoo#0Jphm^rTu)o-BpV6!+Ug!>Z~3rQ%PTu!*X_RP&> zUP}(@vm_ctBsr1Xy8$UYd@)1)v(G*QLXy0^bMw&Jvh|VH^apRLmt~FwlFfN1`_KP*+ataL;hBHXhy0d&g-bGY8~^T3SZBIZ!yrvRbGK)6(P%rv_^dP1 z_Z)#EmA>^5(v^6}F&xR0(`tg9|5nAeAw|I5neYsGN-yIspVf>QVUf1IH`NKrpN_o| z3tAdBlWJ7%GAU=rVr_5A@I`&y-5KuOe6j!ip}g(gzhDF3OABjX{rcD0i;WKtg*~3` z(i7_0S<-i3zhKf;Yti^al7EFC12%~Mcv>`nvAg zsZcE#rAQ#8^Ffh~=EaF=XjCR6q{dJIIL>3V>)kJoqk9>>_;HNzO&Qsokr`F@EQ=n zoIUq8-O{VG0C0?r{QMshe%@QV#U!>ImZ53~nc)k5-u0V)m^{mr#Lwb8(hIa1KHCZVbu$$ge}CUUTGdj7C>@wC)xr-9I`9359e_|6X0x}ES6 zyc>VOOuo=;$^%ZzsI1OuU*-bNnb~i`=7yen>CLq7t(kI~gRN_`pDa!L-ITx!|2b49 zq-R8~)b8%2M8?Phkqx?edisWNN4);_Sbyy<&&_Pmc}m}2dklhs?}&3bo>Cu?AKF0d z(-qHC(3>kEtE9=SjoJsH5S&6#XWnuzg)#|<8mDD37s86IBFu_c(*w7ekQ^>s@E9Es zAXBxVPGdCQ=^lFBqrYgqTcM`qtg*a1lBl~wTI$p>rBqbO%E_u&2t6uG$I+=nBp=k2 zi}j1*NZpimJWvc3(r|N_BeaX4byTrBv0Q_YWX_(0snIN-LK@dJgi54NOSA6k*gH&aFj5UG_S&&ZFuF$Z2gT6o!m}9b(VJe<59{~3P2#Y{WRof z5?VVz;U_;tnL0n>4;uFWYcd4>4ku9jU0p)S??2wWnZ)ugl2M1RwvN}INXHz%WACr3 zBKff@E}KoMp)E;+_Qh4^+L?=Sxo^q>o3WDyk_Wkv*3-kpt3p}b1!TsxEc6`eQ9kan z&Y^!}hj+s=IW82|>DZSde#xmtxCMX2zv1r|?HPZzFT%u~>$%n2VJZC{YWKzr&(E)|=JTZr2Mq{f+yI#Ox zPYVP_sIOF099s-mYxN32y&1V{G>%th#)R{Ufg$vjX2r>K+;lFJX&HuTS-nOEFn-BoVh z7$32x@u5#frE1iVqWf%rWMdaPMEIPat30^*8UMZS>~Hg9B+5VDgl*53saQU(nwM8u zCY&*jLBH~kS6x484#YdoTRv=zTynyfy^I}`;9-9A_68>8?{|{Gb-koND zpwFzcKp9`+){iPh=_VbvLu{X)mT9bv;iy`; z3?VLShwoJ)(2k0ktV(#CD>EKKzboZ-%`95kTxg3jdd&mX7hxchAH-pfN{xLXe`;zO zR;{?HY!cu#a()mCpmBhj5-R_dm0^)B4Ud@~m1CIsoNbuZG2u0-p)(2B0CK1H<6#%i z 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
    1. >fWe`xK=bWlq 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 Y3k22g6;J($7CM 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℞q>X+j6^T6)Nw=1q*a>852${|{Rw>k~ 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 D=(|E; diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bab4e012101f341727a089bab6c2d0e104a36ec3 GIT binary patch literal 467647 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
      A)tz+ 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%0D^y`LE>P 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 Vv0kma!T8=2y{C;F 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 a+H^g=T>oAFUH|=`{{0tD{_W5JL?Hkk4tr<- literal 0 HcmV?d00001 From ecba3938f1d81154ff6bfc3e6579563464844994 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 10:17:52 +0200 Subject: [PATCH 50/60] design: apply the rulings of 2026-10-10 to the anchors A reference now runs one way: code answers to a design it follows or realizes in part. The online rebuild's reference to the history rebuild comes out; the history rebuild already depends on the rebuild's Spec. src/kernel/outcome.ts drops its byFile-only reference to the decider contract and, as impl:kernel.outcome-model, satisfies the outcome model with a new anchor on the validators in src/context/outcome.ts. The read-model tables keep their reference to the aggregate form, whose marker table they hold. Anchor targets name whole Specs. The pass over the twelve Specs the anchor check named, and spec:command.receipt-table, which promises a tombstone row and horizon no code writes, found in each a part no unit builds that runs through entries the code realizes, so no verbatim move leaves the parent whole: their units reference them. The four components that referenced a Spec their members bind, and the two context components that satisfied the example, bind nothing; their members carry the references. PLAN 6.7 item 7 no longer exempts a pinned declaration that is ahead of its code. PLAN 2.1 records the code's components with the owner's layer rule and context rule, and check.py fails when a platform component uses a component of another context (0 of 21 uses edges do). CONTEXT.md adds architectural layer. The byFile coverage test reads its pairs from the anchors in the tree. The page says the one direction. Co-Authored-By: Claude Opus 5.5 --- CONTEXT.md | 3 +- design/PLAN.md | 27 ++- design/README.md | 2 +- design/pages/history-view.md | 76 +++---- design/tools/check.py | 36 ++- example/convex/convex.config.ts | 1 - example/convex/inventory/convex.config.ts | 1 - example/convex/inventory/operations.ts | 2 +- example/convex/inventory/queries/stockItem.ts | 2 +- example/convex/inventory/schema.ts | 2 +- example/convex/inventory/streams.ts | 2 +- example/convex/orderSummary.ts | 2 +- example/convex/ordering.ts | 3 +- example/convex/orders/convex.config.ts | 1 - example/convex/orders/operations.ts | 2 +- example/convex/orders/queries/order.ts | 2 +- example/convex/orders/schema.ts | 2 +- example/convex/orders/streams.ts | 2 +- example/convex/receiving.ts | 3 +- example/domain/order.ts | 2 +- example/domain/orderAllocationHistory.ts | 2 +- example/domain/stockItem.ts | 2 +- scripts/pack-page.mjs | 4 +- src/command/declaration.ts | 2 +- src/command/index.ts | 1 - src/command/pipeline.ts | 2 +- src/command/receipts.ts | 2 +- src/command/tables.ts | 3 +- src/context/adapter.ts | 2 +- src/context/index.ts | 1 - src/context/journal.ts | 2 +- src/context/operation.ts | 2 +- src/context/outcome.ts | 8 + src/context/queries.ts | 2 +- src/context/tables.ts | 2 +- src/kernel/outcome.ts | 6 +- src/read-model/generations.ts | 2 +- src/read-model/index.ts | 1 - src/read-model/queries.ts | 2 +- src/read-model/rebuild.ts | 3 +- src/read-model/tables.ts | 4 +- src/read-model/write.ts | 2 +- tests/pure/byfile-coverage.test.ts | 210 +++++++++--------- tests/pure/pack-page.test.ts | 2 +- 44 files changed, 249 insertions(+), 193 deletions(-) diff --git a/CONTEXT.md b/CONTEXT.md index a877d38..af265f0 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -272,7 +272,8 @@ _Avoid_: failed, dead letter, stuck Words for how the platform is specified and proven. They are lasting and may appear in a Spec. They do not name things inside the platform, so no type, table, event or error code is named after them. -- **Layer**: one of the seven steps of capability, each usable before the next exists. +- **Layer**: one of the seven steps of capability, each usable before the next exists. _Avoid_: architectural layer. +- **Architectural layer**: the Protocol's `layer` on a component anchor, one of edge, application, domain, adapter or infrastructure, always written in full; a bare numbered Layer n is a step of capability. - **Profile**: a group of layers an application takes together: transactional, durable, workflow or agent. - **Trigger**: the concrete need that activates a later capability. A possible future need is not one. - **Law**: one of the twelve rules every decision is reviewed against. diff --git a/design/PLAN.md b/design/PLAN.md index 72298c3..74d1eac 100644 --- a/design/PLAN.md +++ b/design/PLAN.md @@ -92,6 +92,31 @@ Detail levels follow the doc's rule "Detail follows the build" (decision method, Merges and splits against the task's list: idempotency and receipts stay one component because D6 defines both together; the rejection boundary is folded into the outcome model's boundary contract because D4 and D7 describe one mapping; tenancy and authority stay one component (D11); operations are split between Package D (what applies from Layer 1) and Package E (what applies to obligations), following the doc's sentence that security, bounded resource use and useful errors start in Layer 1. +### 2.1 The code's components + +The code declares its architecture where it is realized: twelve `component:` anchors, each with an architectural layer and a bounded context, and the `uses` between them. Recipe 28 reads them from the graph and `design/tools/check.py` prints them. An architectural layer is the Protocol's `layer` on a component anchor, and a numbered Layer of the table above is a step of capability; the two are different things (`CONTEXT.md`). + +| Component | Code | Architectural layer | Context | +|---|---|---|---| +| `component:platform.kernel` | `src/kernel/` | domain | platform | +| `component:platform.context` | `src/context/` | adapter | platform | +| `component:platform.command` | `src/command/` | application | platform | +| `component:platform.read-model` | `src/read-model/` | application | platform | +| `component:platform.gate` | `src/gate/` | infrastructure | platform | +| `component:platform.audit` | `src/audit/` | infrastructure | platform | +| `component:platform.operations` | `src/operations/` | infrastructure | platform | +| `component:example.orders-domain` | `example/domain/order.ts` | domain | orders | +| `component:example.inventory-domain` | `example/domain/stockItem.ts` | domain | inventory | +| `component:example.orders-context` | `example/convex/orders/` | adapter | orders | +| `component:example.inventory-context` | `example/convex/inventory/` | adapter | inventory | +| `component:example.parent` | `example/convex/` | application | orders-inventory | + +The layer rule, from the owner's rulings of 2026-10-10: `domain` is business meaning with no runtime import; `application` coordinates a use case; `adapter` realizes a kernel or command contract against Convex; `edge` is transport in; `infrastructure` is a shared mechanism that owns no use case. The gate supplies a pause and owns no use case, so it is `infrastructure`. The context library and the two context components realize the kernel's contract against Convex, so they are `adapter`. + +The context rule, from the same rulings: `platform` stays on the seven platform components, because the platform is the key bounded context, with its own language (`CONTEXT.md`). The example keeps `orders` and `inventory` on its domain and context components and `orders-inventory` on the parent composition: orders-inventory is the supporting context and development tool, the composition of the two business contexts it models. Nothing in the platform's core carries orders-inventory specifics, and that is read from the graph: `design/tools/check.py` fails when a component in the context `platform` has a `uses` edge to a component in any other context, each end of the edge resolved to its component directly or through `memberOf`. The check reads the declared `uses`, not the imports. + +`example/` is architecture: it is the production composition and the only place a composition and contexts exist as code, so it keeps its five components. `fixture/` has none. + ## 3. SDP mapping ### 3.1 IDs, files, families @@ -582,7 +607,7 @@ A capability is designed in its Specs before anyone writes its code, at the rung - Convex: what one transaction reads and writes, whether the stated bounds hold on the pinned release, what changes atomically and what across transactions; - operator: what an interruption, a resume and an abort leave, who closes and opens a pause, what a deploy or a restore does to work in flight; - implementation and verification: the pinned module compiles and the code agrees with it, each dependency stands at its rung (recipe 21), and each example names its tier and has a planned verifier. -7. **A realized Spec claims only what its code does.** A Spec whose code realizes it may pin a type that a designed form widens, and the pinned module lists that pair ahead until the code catches up (item 3): `typeReadModelBinding` takes a history projection beside a per-entity read model while the code takes the per-entity form alone. A behavior the code does not have lives in a Spec of its own (item 1), so that an implementation anchor on the realized Spec claims only what its code does. The rebuild shows it: `spec:application.rebuild` holds the online path and what both paths share, and its anchor binds them; `spec:application.history-rebuild` holds the paused path of a history view, designed and not realized. A deferred form states in its own Spec how it extends the Specs it would widen when its trigger comes, and those Specs do not depend on it: `spec:application.aggregate-projection` says what the declaration's binding, the pipeline's step 9 and the registry's tables take when OD-075's trigger comes. +7. **A Spec is satisfied only when its code realizes all of it.** Anchor targets name whole Specs, as `spec:decisions.anchor-binding-grain` rules, so the units that satisfy a Spec together realize every entry it promises. A pinned declaration is no exception: a pin that a designed form widens, which the pinned module lists as ahead (item 3), is a promise the code has not built, and the Spec that holds it is not satisfied while the pair is ahead. `typeReadModelBinding` takes a history projection beside a per-entity read model while the code takes the per-entity form alone, so the code references `spec:command.command-declaration` and does not satisfy it. For a Spec with a part no unit builds, a coherent part with its own trigger or step moves into a child Spec that refines it, its entries moved verbatim and its readiness stated on its own, and the parent keeps `satisfies` (item 1); otherwise the code references the Spec until it realizes what the Spec promises. A reference runs one way: the code answers to the design, because it follows it or realizes part of it. A design that builds on existing code says so by its own `dependsOn` or `refines` to the Spec that code satisfies, never by a reference from the code: `spec:application.history-rebuild` holds the paused path of a history view and depends on `spec:application.rebuild`, the online path's Spec, and the online rebuild's code carries no reference to it. A deferred form states in its own Spec how it extends the Specs it would widen when its trigger comes, and those Specs do not depend on it: `spec:application.aggregate-projection` says what the declaration's binding, the pipeline's step 9 and the registry's tables take when OD-075's trigger comes. 8. **`ready` states approved to build.** This is the Protocol's reading. The owner states `ready` on a Spec when its design is approved for its build, so recipe 1, the Specs that state `ready` and have no implementation binding, is the build backlog, and a Spec leaves it when an anchor binds its code. A designed Spec states `ready` after the passes of item 6 have read its Pack, as the history projection may once the domain and operator passes have run. No agent states `ready` (section 3.2). ## 7. Review rubric diff --git a/design/README.md b/design/README.md index 3440f22..5f5c84a 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` diff --git a/design/pages/history-view.md b/design/pages/history-view.md index ad95f64..67966bd 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -15,7 +15,7 @@ Start with the members and with what holds a member below its next rung: togethe - The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. - The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. - An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries. -- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec names its design without realizing it, in either direction: code written against the design, or code the design rests on. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them. +- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec answers to its design without claiming to realize it: the unit follows the design or realizes part of it, so a change to the design asks the code to follow. A design that builds on existing code says so by its own relation to the Spec that code satisfies. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them. - A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [`generated/pinned/history-view.ts`](../../generated/pinned/history-view.ts), which `npm run sdp:build` emits and git does not keep. ## Members @@ -26,22 +26,22 @@ Start with the members and with what holds a member below its next rung: togethe |---|---|---|---|---|---|---|---|---|---| | [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 1 unit | none | 2 bound, 3 ahead, 3 without a pair | 4, none blocking | | [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | none | 11 bound | 5, none blocking | -| [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 2 anchors, referenced by 1 unit | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | -| [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | -| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | referenced by 1 unit | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | +| [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | referenced by 2 units | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | +| [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | referenced by 1 unit | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | +| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | | [6](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume) | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [7](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort) | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [8](#8-deploy-a-changed-history-projection-version-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [9](#9-install-a-history-view-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [10](#10-reorder-a-history-views-sources-while-its-generation-is-interrupted) | [`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 4 anchors | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | -| [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | -| [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 15 anchors, referenced by 1 unit | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | -| [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor, referenced by 1 unit | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | -| [15](#15-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 2 anchors, referenced by 1 unit | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | +| [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 2 units | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | +| [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | referenced by 14 units | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | +| [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 2 units | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | +| [15](#15-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | referenced by 2 units | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | | [16](#16-the-event-envelope) | [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 7 bound, 3 without a pair | 2, none blocking | -| [17](#17-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | -| [18](#18-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | +| [17](#17-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | referenced by 1 unit | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | +| [18](#18-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 1 unit | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | | [19](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) | [`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) | decision | defined | ready | ready, which its floor holds | none | none | no pinned declaration | 1, none blocking | ## What holds a member below its next rung @@ -292,7 +292,7 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio **Code.** No implementation anchor binds it. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.order-allocation-history` at [`example/domain/orderAllocationHistory.ts` line 8](../../example/domain/orderAllocationHistory.ts#L8): the order allocation history's keyOf and project rules. Its role is projection. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. @@ -577,15 +577,13 @@ orderSummaries: defineTable({ ...rowConventions, ...orderSummaryFields }) Inside the Pack it rests on [The context queries](#18-the-context-queries) by dependsOn. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 2 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:application.read-models.queries` at [`src/read-model/queries.ts` line 3](../../src/read-model/queries.ts#L3): readModelView, pageInGeneration and limitReadModelList. Its role is query. It belongs to `component:platform.read-model`, in the application layer and the platform context. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - -- `component:platform.read-model` at [`src/read-model/index.ts` line 2](../../src/read-model/index.ts#L2): the read-model library: declare, rebuild, write and read a read model. It is a component in the application layer and the platform context. - **Examples.** | Example | Tier | Verifier | Title | @@ -747,7 +745,9 @@ limitReadModelList(readModel) = { Inside the Pack it rests on [Read models](#3-read-models) by refines, [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#11-write-pause) by dependsOn, [Generation registry](#12-generation-registry) by dependsOn, [The context queries](#18-the-context-queries) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 1 unit references this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.rebuild` at [`src/read-model/rebuild.ts` line 2](../../src/read-model/rebuild.ts#L2): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. @@ -1074,10 +1074,6 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p **Code.** No implementation anchor binds it. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - -- `impl:application.rebuild` at [`src/read-model/rebuild.ts` line 2](../../src/read-model/rebuild.ts#L2): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. - **Examples.** | Example | Tier | Verifier | Title | @@ -1371,7 +1367,9 @@ export const getGateAudit = internalQuery({ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause) by refines, [Projection contract](#2-projection-contract) by dependsOn and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 2 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.generation-registry` at [`src/read-model/generations.ts` line 2](../../src/read-model/generations.ts#L2): generationsToWrite and activeGeneration. Its role is query. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:application.generation-registry.tables` at [`src/read-model/tables.ts` line 5](../../src/read-model/tables.ts#L5): the generations, progress, marker and tenant fill tables and rowConventions. Its role is schema. It belongs to `component:platform.read-model`, in the application layer and the platform context. @@ -1544,10 +1542,11 @@ activeGeneration( Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn. -**Code.** +**Code.** No implementation anchor binds it. -- `component:example.inventory-context` at [`example/convex/inventory/convex.config.ts` line 1](../../example/convex/inventory/convex.config.ts#L1): the Inventory context component. It is a component in the adapter layer and the inventory context. -- `component:example.orders-context` at [`example/convex/orders/convex.config.ts` line 1](../../example/convex/orders/convex.config.ts#L1): the Orders context component. It is a component in the adapter layer and the orders context. +**References.** 14 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. + +- `impl:application.order-allocation-history` at [`example/domain/orderAllocationHistory.ts` line 8](../../example/domain/orderAllocationHistory.ts#L8): the order allocation history's keyOf and project rules. Its role is projection. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. - `impl:application.orders-inventory-example` at [`example/domain/order.ts` line 10](../../example/domain/order.ts#L10): the order decider. Its role is decider. It belongs to `component:example.orders-domain`, in the domain layer and the orders context. - `impl:application.orders-inventory-example.inventory-operations` at [`example/convex/inventory/operations.ts` line 2](../../example/convex/inventory/operations.ts#L2): the Inventory sanctioned operations. Its role is service. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. - `impl:application.orders-inventory-example.inventory-schema` at [`example/convex/inventory/schema.ts` line 1](../../example/convex/inventory/schema.ts#L1): the Inventory context schema. Its role is schema. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. @@ -1562,10 +1561,6 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen - `impl:application.parent-use-cases` at [`example/convex/ordering.ts` line 8](../../example/convex/ordering.ts#L8): PlaceOrder and CancelOrder over Orders and then Inventory. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. - `impl:application.parent-use-cases.receiving` at [`example/convex/receiving.ts` line 4](../../example/convex/receiving.ts#L4): ReceiveStock. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - -- `component:example.parent` at [`example/convex/convex.config.ts` line 1](../../example/convex/convex.config.ts#L1): the production composition's parent deployment over Orders and Inventory. It is a component in the application layer and the orders-inventory context. - **Examples.** | Example | Tier | Verifier | Title | @@ -1585,12 +1580,11 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn and [The command pipeline](#15-the-command-pipeline) by dependsOn. -**Code.** - -- `impl:command.command-declaration` at [`src/command/declaration.ts` line 3](../../src/command/declaration.ts#L3): CommandDeclaration, publicCommand and internalCommand. Its role is contract. It belongs to `component:platform.command`, in the application layer and the platform context. +**Code.** No implementation anchor binds it. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. +**References.** 2 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. +- `impl:command.command-declaration` at [`src/command/declaration.ts` line 3](../../src/command/declaration.ts#L3): CommandDeclaration, publicCommand and internalCommand. Its role is contract. It belongs to `component:platform.command`, in the application layer and the platform context. - `impl:command.command-declaration.depot-commands` at [`fixture/convex/depotCommands.ts` line 3](../../fixture/convex/depotCommands.ts#L3): the depot fixture's command declarations. **Examples.** @@ -1801,15 +1795,13 @@ refine Inside the Pack it rests on [History projection](#1-history-projection) by dependsOn, [Projection contract](#2-projection-contract) by dependsOn, [Write pause](#11-write-pause) by dependsOn and [The event envelope](#16-the-event-envelope) by dependsOn. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 2 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:command.command-pipeline` at [`src/command/pipeline.ts` line 3](../../src/command/pipeline.ts#L3): runPipeline and the command response. Its role is service. It belongs to `component:platform.command`, in the application layer and the platform context. -**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - -- `component:platform.command` at [`src/command/index.ts` line 2](../../src/command/index.ts#L2): the command library that runs in the parent deployment. It is a component in the application layer and the platform context. - **Examples.** | Example | Tier | Verifier | Title | @@ -2207,7 +2199,9 @@ registration.eventValidators[event.eventType] Inside the Pack it rests on [Write pause](#11-write-pause) by dependsOn. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 1 unit references this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:context.journal` at [`src/context/journal.ts` line 2](../../src/context/journal.ts#L2): createJournal, load and append. Its role is event-store. It belongs to `component:platform.context`, in the adapter layer and the platform context. @@ -2466,7 +2460,9 @@ operationId Inside the Pack it rests on [The event envelope](#16-the-event-envelope) by dependsOn and [The journal](#17-the-journal) by dependsOn. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 1 unit references this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:context.queries` at [`src/context/queries.ts` line 3](../../src/context/queries.ts#L3): defineGet, defineList and boundedPage. Its role is query. It belongs to `component:platform.context`, in the adapter layer and the platform context. diff --git a/design/tools/check.py b/design/tools/check.py index 2ab9768..50e4a6a 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -15,7 +15,9 @@ mention with no relation is listed with its reason, an entry address outside the Specs resolves through the Protocol's address recipe, and no Specs rest on each other through `dependsOn`, as the Protocol's cycle recipe reports. It prints the roles, layers and contexts the code anchors state, as -the Protocol's roles-and-layers recipe reads them, and judges none of them. +the Protocol's roles-and-layers recipe reads them, and judges none of them. One rule it does judge, +from the graph: no component in the context `platform` uses a component in another context, so the +platform's core never depends on the orders-inventory example (design/PLAN.md section 2.1, the context rule). """ import collections import glob @@ -46,6 +48,22 @@ ".map((f) => [f.subjectId, f.relatedId, f.path]) }" ) PROSE_MENTIONS = os.path.join(DESIGN, "tools", "prose-mentions.json") +# The context rule of design/PLAN.md section 2.1: a component in the context `platform` has no `uses` edge to a +# component in another context. Each endpoint of a `uses` edge resolves to its component, directly or through +# its `memberOf` edge, before the two contexts are compared. The edges are the declared `uses`, not imports. +PLATFORM_ISOLATION = ( + "const byId = new Map(graph.nodes.map((n) => [n.id, n]));" + " const memberOf = new Map(graph.edges.filter((e) => e.type === \"memberOf\").map((e) => [e.from, e.to]));" + " const componentOf = (id) => (id.startsWith(\"component:\") ? id : memberOf.get(id));" + " const contextOf = (id) => (id === undefined ? undefined : byId.get(id)?.context);" + " const uses = graph.edges.filter((e) => e.type === \"uses\");" + " const crossings = uses.flatMap((e) => { const from = componentOf(e.from); const to = componentOf(e.to);" + " const context = contextOf(to);" + " return contextOf(from) === \"platform\" && context !== undefined && context !== \"platform\"" + " ? [{ from: e.from, to: e.to, fromComponent: from, toComponent: to, toContext: context }] : []; });" + " return { platformComponents: graph.nodes.filter((n) => n.id.startsWith(\"component:\") && n.context === \"platform\").length," + " platformUses: uses.filter((e) => contextOf(componentOf(e.from)) === \"platform\").length, crossings }" +) # An entry address, spec:#design., #ui. or #question.. A token runs from `spec:` to a # separator, loses trailing punctuation, and goes whole to the Protocol's address recipe (recipe 25), so a # malformed key is refused rather than read as its valid prefix. The recipe holds the grammar and the @@ -185,6 +203,20 @@ def main(): except (ValueError, KeyError) as error: fail(f"the roles-and-layers recipe did not answer: {str(error)[:200]}") + # 1e. The context rule, read from the graph: the platform's components use nothing in another context. + isolation = None + out = run(["q", PLATFORM_ISOLATION, "--root", ".", "--json"]) + try: + answer = json.loads(out.stdout) + isolation = (f"platform isolation: {answer['platformComponents']} platform components, " + f"{answer['platformUses']} uses edges from them, {len(answer['crossings'])} into another context") + for crossing in answer["crossings"]: + via = "" if crossing["from"] == crossing["fromComponent"] else f" (through {crossing['fromComponent']})" + fail(f"{crossing['from']}{via} uses {crossing['to']} in the context {crossing['toContext']}: " + "a platform component uses nothing in another context (design/PLAN.md section 2.1)") + except (ValueError, KeyError, TypeError) as error: + fail(f"the platform isolation query did not answer: {str(error)[:200]}") + out = run(["q", READINESS_DIVERGENCE, "--root", ".", "--json"]) try: diverging = json.loads(out.stdout.strip().splitlines()[-1]) @@ -311,7 +343,7 @@ def main(): print(expected_line) print(f"validate: {n_errors} errors · {n_warnings} warnings, {len(listed)} prose mentions listed; readiness divergence: {diverging}") print(f"entry addresses outside the Specs: {addresses}; dependsOn cycles: {cycles}") - print(f"architecture: {structure}") + print(f"architecture: {structure}; {isolation}") print(f"open questions: {len(questions)} Specs, {n_questions} questions, {n_blocking} blocking; extensions registered: {len(registered)}") print(f"stated readiness: {dict(sorted(readiness.items()))}") print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") diff --git a/example/convex/convex.config.ts b/example/convex/convex.config.ts index 6c092d9..bacaba3 100644 --- a/example/convex/convex.config.ts +++ b/example/convex/convex.config.ts @@ -1,7 +1,6 @@ /** * @sdpAnchor component:example.parent * @sdpLabel the production composition's parent deployment over Orders and Inventory - * @sdpReferences spec:application.orders-inventory-example * @sdpUses component:platform.command, component:platform.context, component:platform.read-model, component:platform.gate, component:platform.audit, component:example.orders-context, component:example.inventory-context, component:example.orders-domain, component:example.inventory-domain * @sdpLayer application * @sdpContext orders-inventory diff --git a/example/convex/inventory/convex.config.ts b/example/convex/inventory/convex.config.ts index b42d272..304aa63 100644 --- a/example/convex/inventory/convex.config.ts +++ b/example/convex/inventory/convex.config.ts @@ -1,7 +1,6 @@ /** * @sdpAnchor component:example.inventory-context * @sdpLabel the Inventory context component - * @sdpSatisfies spec:application.orders-inventory-example * @sdpUses component:platform.context, component:example.inventory-domain * @sdpLayer adapter * @sdpContext inventory diff --git a/example/convex/inventory/operations.ts b/example/convex/inventory/operations.ts index bb16939..c4bc57b 100644 --- a/example/convex/inventory/operations.ts +++ b/example/convex/inventory/operations.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.inventory-operations * @sdpLabel the Inventory sanctioned operations - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.inventory-context * @sdpRole service */ diff --git a/example/convex/inventory/queries/stockItem.ts b/example/convex/inventory/queries/stockItem.ts index 5405095..76a18fb 100644 --- a/example/convex/inventory/queries/stockItem.ts +++ b/example/convex/inventory/queries/stockItem.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.inventory-stock-item-query * @sdpLabel the stock item query - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.inventory-context * @sdpRole query */ diff --git a/example/convex/inventory/schema.ts b/example/convex/inventory/schema.ts index f9541a9..d254805 100644 --- a/example/convex/inventory/schema.ts +++ b/example/convex/inventory/schema.ts @@ -1,7 +1,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.inventory-schema * @sdpLabel the Inventory context schema - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.inventory-context * @sdpRole schema */ diff --git a/example/convex/inventory/streams.ts b/example/convex/inventory/streams.ts index 918bdb9..61df4a0 100644 --- a/example/convex/inventory/streams.ts +++ b/example/convex/inventory/streams.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.inventory-streams * @sdpLabel the stock item stream registration - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.inventory-context */ import { v, type Infer } from "convex/values"; diff --git a/example/convex/orderSummary.ts b/example/convex/orderSummary.ts index baa445a..17687a0 100644 --- a/example/convex/orderSummary.ts +++ b/example/convex/orderSummary.ts @@ -4,7 +4,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.order-summary * @sdpLabel the order summary read model - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole read-model */ diff --git a/example/convex/ordering.ts b/example/convex/ordering.ts index 3aa2600..c21cffa 100644 --- a/example/convex/ordering.ts +++ b/example/convex/ordering.ts @@ -8,7 +8,8 @@ /** * @sdpAnchor impl:application.parent-use-cases * @sdpLabel PlaceOrder and CancelOrder over Orders and then Inventory - * @sdpSatisfies spec:application.parent-use-cases, spec:application.orders-inventory-example + * @sdpSatisfies spec:application.parent-use-cases + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole use-case */ diff --git a/example/convex/orders/convex.config.ts b/example/convex/orders/convex.config.ts index 1602dca..9eb9ee3 100644 --- a/example/convex/orders/convex.config.ts +++ b/example/convex/orders/convex.config.ts @@ -1,7 +1,6 @@ /** * @sdpAnchor component:example.orders-context * @sdpLabel the Orders context component - * @sdpSatisfies spec:application.orders-inventory-example * @sdpUses component:platform.context, component:example.orders-domain * @sdpLayer adapter * @sdpContext orders diff --git a/example/convex/orders/operations.ts b/example/convex/orders/operations.ts index 26dcea6..d74eba9 100644 --- a/example/convex/orders/operations.ts +++ b/example/convex/orders/operations.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.orders-operations * @sdpLabel the Orders sanctioned operations - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.orders-context * @sdpRole service */ diff --git a/example/convex/orders/queries/order.ts b/example/convex/orders/queries/order.ts index 74d855b..972b1be 100644 --- a/example/convex/orders/queries/order.ts +++ b/example/convex/orders/queries/order.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.orders-order-query * @sdpLabel the order query - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.orders-context * @sdpRole query */ diff --git a/example/convex/orders/schema.ts b/example/convex/orders/schema.ts index 1d44719..cc7725d 100644 --- a/example/convex/orders/schema.ts +++ b/example/convex/orders/schema.ts @@ -1,7 +1,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.orders-schema * @sdpLabel the Orders context schema - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.orders-context * @sdpRole schema */ diff --git a/example/convex/orders/streams.ts b/example/convex/orders/streams.ts index 50c18e0..324a644 100644 --- a/example/convex/orders/streams.ts +++ b/example/convex/orders/streams.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.orders-streams * @sdpLabel the order stream registration - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.orders-context */ import { v, type Infer } from "convex/values"; diff --git a/example/convex/receiving.ts b/example/convex/receiving.ts index 2a62dec..55ac0ac 100644 --- a/example/convex/receiving.ts +++ b/example/convex/receiving.ts @@ -4,7 +4,8 @@ /** * @sdpAnchor impl:application.parent-use-cases.receiving * @sdpLabel ReceiveStock - * @sdpSatisfies spec:application.parent-use-cases, spec:application.orders-inventory-example + * @sdpSatisfies spec:application.parent-use-cases + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole use-case */ diff --git a/example/domain/order.ts b/example/domain/order.ts index 7820250..dcb2933 100644 --- a/example/domain/order.ts +++ b/example/domain/order.ts @@ -10,7 +10,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example * @sdpLabel the order decider - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.orders-domain * @sdpRole decider */ diff --git a/example/domain/orderAllocationHistory.ts b/example/domain/orderAllocationHistory.ts index 39110a0..bfd7b7f 100644 --- a/example/domain/orderAllocationHistory.ts +++ b/example/domain/orderAllocationHistory.ts @@ -8,7 +8,7 @@ /** * @sdpAnchor impl:application.order-allocation-history * @sdpLabel the order allocation history's keyOf and project rules - * @sdpReferences spec:application.history-projection + * @sdpReferences spec:application.history-projection, spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole projection */ diff --git a/example/domain/stockItem.ts b/example/domain/stockItem.ts index baca32d..b5c7796 100644 --- a/example/domain/stockItem.ts +++ b/example/domain/stockItem.ts @@ -11,7 +11,7 @@ /** * @sdpAnchor impl:application.orders-inventory-example.stock-item * @sdpLabel the stock item decider - * @sdpSatisfies spec:application.orders-inventory-example + * @sdpReferences spec:application.orders-inventory-example * @sdpComponent component:example.inventory-domain * @sdpRole decider */ diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index 97b24e4..ce9be66 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -660,7 +660,7 @@ export async function generate(pack, out, base = root) { "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", "- An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries.", - "- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec names its design without realizing it, in either direction: code written against the design, or code the design rests on. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them.", + "- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec answers to its design without claiming to realize it: the unit follows the design or realizes part of it, so a change to the design asks the code to follow. A design that builds on existing code says so by its own relation to the Spec that code satisfies. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them.", `- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [${span(pinned)}](${link(pinned)}), which ${span("npm run sdp:build")} emits and git does not keep.`, "", ); @@ -1002,7 +1002,7 @@ export async function generate(pack, out, base = root) { write("**Code.** No implementation anchor binds it.", ""); if (context.references.length > 0) { write( - `**References.** ${plural(context.references.length, "unit references", "units reference")} this design, in either direction. A reference confers no delivery fact and moves no floor.`, + `**References.** ${plural(context.references.length, "unit references", "units reference")} this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor.`, "", ); for (const binding of context.references) write(unitLine(binding)); diff --git a/src/command/declaration.ts b/src/command/declaration.ts index 202c837..1a69c4b 100644 --- a/src/command/declaration.ts +++ b/src/command/declaration.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:command.command-declaration * @sdpLabel CommandDeclaration, publicCommand and internalCommand - * @sdpSatisfies spec:command.command-declaration + * @sdpReferences spec:command.command-declaration * @sdpComponent component:platform.command * @sdpRole contract */ diff --git a/src/command/index.ts b/src/command/index.ts index 28a3bdd..d7ecaae 100644 --- a/src/command/index.ts +++ b/src/command/index.ts @@ -2,7 +2,6 @@ /** * @sdpAnchor component:platform.command * @sdpLabel the command library that runs in the parent deployment - * @sdpReferences spec:command.command-pipeline * @sdpUses component:platform.kernel, component:platform.context, component:platform.gate, component:platform.read-model, component:platform.operations, component:platform.audit * @sdpLayer application * @sdpContext platform diff --git a/src/command/pipeline.ts b/src/command/pipeline.ts index 3f212fc..da55169 100644 --- a/src/command/pipeline.ts +++ b/src/command/pipeline.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:command.command-pipeline * @sdpLabel runPipeline and the command response - * @sdpSatisfies spec:command.command-pipeline + * @sdpReferences spec:command.command-pipeline * @sdpComponent component:platform.command * @sdpRole service */ diff --git a/src/command/receipts.ts b/src/command/receipts.ts index 3339186..f375d20 100644 --- a/src/command/receipts.ts +++ b/src/command/receipts.ts @@ -4,7 +4,7 @@ /** * @sdpAnchor impl:command.idempotency-and-receipts * @sdpLabel the receipt key, fingerprint, lookup, classification, insert and sweep - * @sdpSatisfies spec:command.idempotency-and-receipts + * @sdpReferences spec:command.idempotency-and-receipts * @sdpComponent component:platform.command * @sdpRole service */ diff --git a/src/command/tables.ts b/src/command/tables.ts index a1e9e02..c378e10 100644 --- a/src/command/tables.ts +++ b/src/command/tables.ts @@ -4,7 +4,8 @@ /** * @sdpAnchor impl:command.receipt-table * @sdpLabel the receipts, grants and tenant tables fragment - * @sdpSatisfies spec:command.receipt-table, spec:command.actor-and-scope + * @sdpSatisfies spec:command.actor-and-scope + * @sdpReferences spec:command.receipt-table * @sdpComponent component:platform.command * @sdpRole schema */ diff --git a/src/context/adapter.ts b/src/context/adapter.ts index bc55ac8..234299d 100644 --- a/src/context/adapter.ts +++ b/src/context/adapter.ts @@ -111,7 +111,7 @@ function reject(rejection: Rejection): never { /** * @sdpAnchor impl:context.persistence-adapter * @sdpLabel execute: load, decide, fold, append and save one stream - * @sdpSatisfies spec:context.persistence-adapter + * @sdpReferences spec:context.persistence-adapter * @sdpComponent component:platform.context * @sdpRole service */ diff --git a/src/context/index.ts b/src/context/index.ts index a350de6..2249676 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -2,7 +2,6 @@ /** * @sdpAnchor component:platform.context * @sdpLabel the context library that runs inside every context component - * @sdpReferences spec:context.context-component * @sdpUses component:platform.kernel, component:platform.command * @sdpLayer adapter * @sdpContext platform diff --git a/src/context/journal.ts b/src/context/journal.ts index 3db402e..3627569 100644 --- a/src/context/journal.ts +++ b/src/context/journal.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:context.journal * @sdpLabel createJournal, load and append - * @sdpSatisfies spec:context.journal + * @sdpReferences spec:context.journal * @sdpComponent component:platform.context * @sdpRole event-store */ diff --git a/src/context/operation.ts b/src/context/operation.ts index 57f28d2..84d1500 100644 --- a/src/context/operation.ts +++ b/src/context/operation.ts @@ -32,7 +32,7 @@ const mutation: MutationBuilder = mutationGeneric; /** * @sdpAnchor impl:context.context-component * @sdpLabel defineOperation, one registered mutation per sanctioned operation - * @sdpSatisfies spec:context.context-component + * @sdpReferences spec:context.context-component * @sdpComponent component:platform.context * @sdpRole service */ diff --git a/src/context/outcome.ts b/src/context/outcome.ts index b8e1d87..36f8061 100644 --- a/src/context/outcome.ts +++ b/src/context/outcome.ts @@ -1,6 +1,14 @@ // The validators of the kernel's outcome model (spec:kernel.outcome-model), which the kernel may not // hold because it imports nothing from Convex at run time, and the operation outcome's validator of // spec:context.persistence-adapter. +/** + * @sdpAnchor impl:kernel.outcome-model.validators + * @sdpLabel the outcome model's validators at the context boundary, and the operation outcome's + * @sdpSatisfies spec:kernel.outcome-model + * @sdpReferences spec:context.persistence-adapter + * @sdpComponent component:platform.context + * @sdpRole contract + */ import { v, type Validator } from "convex/values"; import { eventEnvelopeValidator } from "./envelope.js"; export const affectedRefValidator = v.object({ diff --git a/src/context/queries.ts b/src/context/queries.ts index ab75e83..2c77fb4 100644 --- a/src/context/queries.ts +++ b/src/context/queries.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:context.queries * @sdpLabel defineGet, defineList and boundedPage - * @sdpSatisfies spec:context.queries + * @sdpReferences spec:context.queries * @sdpComponent component:platform.context * @sdpRole query */ diff --git a/src/context/tables.ts b/src/context/tables.ts index 891322b..5492043 100644 --- a/src/context/tables.ts +++ b/src/context/tables.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:context.tables * @sdpLabel the context tables fragment - * @sdpSatisfies spec:context.tables + * @sdpReferences spec:context.tables * @sdpComponent component:platform.context * @sdpRole schema */ diff --git a/src/kernel/outcome.ts b/src/kernel/outcome.ts index a59774f..4f7aeab 100644 --- a/src/kernel/outcome.ts +++ b/src/kernel/outcome.ts @@ -1,8 +1,8 @@ // The outcome model of spec:kernel.outcome-model. Types only; the validators belong to the context boundary. /** - * @sdpAnchor impl:kernel.decider-contract.outcome - * @sdpLabel the outcome model's types, which the decider contract reuses - * @sdpReferences spec:kernel.outcome-model, spec:kernel.decider-contract + * @sdpAnchor impl:kernel.outcome-model + * @sdpLabel the outcome model's types + * @sdpSatisfies spec:kernel.outcome-model * @sdpComponent component:platform.kernel * @sdpRole contract */ diff --git a/src/read-model/generations.ts b/src/read-model/generations.ts index 0f98368..058ca2c 100644 --- a/src/read-model/generations.ts +++ b/src/read-model/generations.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:application.generation-registry * @sdpLabel generationsToWrite and activeGeneration - * @sdpSatisfies spec:application.generation-registry + * @sdpReferences spec:application.generation-registry * @sdpComponent component:platform.read-model * @sdpRole query */ diff --git a/src/read-model/index.ts b/src/read-model/index.ts index 2ceed08..d6afbe9 100644 --- a/src/read-model/index.ts +++ b/src/read-model/index.ts @@ -2,7 +2,6 @@ /** * @sdpAnchor component:platform.read-model * @sdpLabel the read-model library: declare, rebuild, write and read a read model - * @sdpReferences spec:application.read-models * @sdpUses component:platform.kernel, component:platform.context, component:platform.command, component:platform.gate * @sdpLayer application * @sdpContext platform diff --git a/src/read-model/queries.ts b/src/read-model/queries.ts index 8c77636..51cb0a6 100644 --- a/src/read-model/queries.ts +++ b/src/read-model/queries.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:application.read-models.queries * @sdpLabel readModelView, pageInGeneration and limitReadModelList - * @sdpSatisfies spec:application.read-models + * @sdpReferences spec:application.read-models * @sdpComponent component:platform.read-model * @sdpRole query */ diff --git a/src/read-model/rebuild.ts b/src/read-model/rebuild.ts index 02ef1a5..2b8624f 100644 --- a/src/read-model/rebuild.ts +++ b/src/read-model/rebuild.ts @@ -2,8 +2,7 @@ /** * @sdpAnchor impl:application.rebuild * @sdpLabel the online rebuild's operator entries, batch chains, tenant fill and batch bounds - * @sdpSatisfies spec:application.rebuild - * @sdpReferences spec:application.history-rebuild + * @sdpReferences spec:application.rebuild * @sdpComponent component:platform.read-model * @sdpRole service */ diff --git a/src/read-model/tables.ts b/src/read-model/tables.ts index 162bc84..d23c0f9 100644 --- a/src/read-model/tables.ts +++ b/src/read-model/tables.ts @@ -5,8 +5,8 @@ /** * @sdpAnchor impl:application.generation-registry.tables * @sdpLabel the generations, progress, marker and tenant fill tables and rowConventions - * @sdpSatisfies spec:application.generation-registry, spec:application.projection-contract - * @sdpReferences spec:application.aggregate-projection + * @sdpSatisfies spec:application.projection-contract + * @sdpReferences spec:application.generation-registry, spec:application.aggregate-projection * @sdpComponent component:platform.read-model * @sdpRole schema */ diff --git a/src/read-model/write.ts b/src/read-model/write.ts index e21264e..c4a143c 100644 --- a/src/read-model/write.ts +++ b/src/read-model/write.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:application.read-models * @sdpLabel writeReadModels, step 9's read-model half - * @sdpSatisfies spec:application.read-models, spec:command.command-pipeline + * @sdpReferences spec:application.read-models, spec:command.command-pipeline * @sdpComponent component:platform.read-model * @sdpRole service */ diff --git a/tests/pure/byfile-coverage.test.ts b/tests/pure/byfile-coverage.test.ts index c1c920f..8f05c2c 100644 --- a/tests/pure/byfile-coverage.test.ts +++ b/tests/pure/byfile-coverage.test.ts @@ -2,122 +2,120 @@ import { createReader, type GraphSchema, } from "@libar-dev/software-delivery-protocol"; -import { readFile } from "node:fs/promises"; -import { join } from "node:path"; +import { readFile, readdir } from "node:fs/promises"; +import { join, relative } from "node:path"; import { expect, test } from "vitest"; -// Every source file and Spec the retired design/tools/anchor-sites.json joined by hand, when the -// anchors stood in tests. The source files now carry comment-form anchors at their own sites, so -// byFile on each file names each of its Specs through a satisfies or a references edge. The graph is -// the one `npm run sdp:build` derives before the tests run. -const associations: Record = { - "example/convex/inventory/convex.config.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/inventory/operations.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/inventory/queries/stockItem.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/inventory/schema.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/inventory/streams.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/orderSummary.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/ordering.ts": [ - "spec:application.orders-inventory-example", - "spec:application.parent-use-cases", - ], - "example/convex/orders/convex.config.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/orders/operations.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/orders/queries/order.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/orders/schema.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/orders/streams.ts": [ - "spec:application.orders-inventory-example", - ], - "example/convex/receiving.ts": [ - "spec:application.orders-inventory-example", - "spec:application.parent-use-cases", - ], - "example/domain/order.ts": ["spec:application.orders-inventory-example"], - "example/domain/stockItem.ts": ["spec:application.orders-inventory-example"], - "fixture/convex/depot/convex.config.ts": ["spec:context.context-component"], - "fixture/convex/depot/operations.ts": [ - "spec:context.batch-shaped-api", - "spec:context.context-component", - ], - "fixture/convex/depot/queries/document.ts": [ - "spec:context.context-component", - ], - "fixture/convex/depot/schema.ts": ["spec:context.context-component"], - "fixture/convex/depot/streams.ts": ["spec:context.context-component"], - "fixture/convex/depotCommands.ts": ["spec:command.command-declaration"], - "src/command/actor-and-scope.ts": ["spec:command.actor-and-scope"], - "src/command/authority.ts": ["spec:command.tenancy-and-authority"], - "src/command/declaration.ts": ["spec:command.command-declaration"], - "src/command/outcome-boundary.ts": ["spec:command.outcome-boundary"], - "src/command/pipeline.ts": ["spec:command.command-pipeline"], - "src/command/receipts.ts": ["spec:command.idempotency-and-receipts"], - "src/command/tables.ts": [ - "spec:command.actor-and-scope", - "spec:command.receipt-table", - ], - "src/context/adapter.ts": [ - "spec:context.batch-shaped-api", - "spec:context.persistence-adapter", - ], - "src/context/envelope.ts": ["spec:context.event-envelope"], - "src/context/journal.ts": ["spec:context.journal"], - "src/context/operation.ts": ["spec:context.context-component"], - "src/context/queries.ts": ["spec:context.queries"], - "src/context/tables.ts": ["spec:context.tables"], - "src/gate/entries.ts": ["spec:application.write-pause"], - "src/gate/gate.ts": ["spec:application.write-pause"], - "src/gate/tables.ts": ["spec:application.write-pause"], - "src/kernel/decider.ts": ["spec:kernel.decider-contract"], - "src/kernel/outcome.ts": ["spec:kernel.decider-contract"], - "src/read-model/generations.ts": ["spec:application.generation-registry"], - "src/read-model/projection.ts": ["spec:application.projection-contract"], - "src/read-model/queries.ts": ["spec:application.read-models"], - "src/read-model/rebuild.ts": ["spec:application.rebuild"], - "src/read-model/tables.ts": ["spec:application.generation-registry"], - "src/read-model/write.ts": ["spec:application.read-models"], -}; - +// The anchors as the source states them, read from the tree rather than from a list kept by hand. +// The comment form is a top-level /** … */ block with @sdpAnchor, @sdpSatisfies and @sdpReferences; +// the constant form, used under harness/, is a codeAnchor({ … }) call whose satisfies and references +// hold ref("spec:…") targets. The graph is the one `npm run sdp:build` derives before the tests run. const root = join(import.meta.dirname, "../.."); +const sourceRoots = ["src", "example", "fixture", "harness"]; -test("pure: byFile names every Spec the retired anchor sites joined to each source file", async () => { - const graph = JSON.parse( - await readFile(join(root, "generated/graph.json"), "utf8"), - ) as GraphSchema; - const reader = createReader(graph); - const pairs = Object.entries(associations).flatMap(([file, specs]) => - specs.map((spec) => [file, spec] as const), +type ScannedAnchor = { id: string; file: string; targets: string[] }; + +async function sourceFiles(directory: string): Promise { + const entries = await readdir(join(root, directory), { withFileTypes: true }); + const files = await Promise.all( + entries.map(async (entry) => { + const path = join(directory, entry.name); + if (entry.isDirectory()) + return entry.name === "_generated" ? [] : sourceFiles(path); + return /\.tsx?$/.test(entry.name) ? [path] : []; + }), ); - expect(pairs).toHaveLength(50); - const missing = pairs.filter( - ([file, spec]) => !reader.byFile(file).specs.includes(spec), + return files.flat(); +} + +const list = (value: string | undefined): string[] => + value === undefined ? [] : value.split(",").map((item) => item.trim()); + +function commentAnchors(file: string, text: string): ScannedAnchor[] { + const anchors: ScannedAnchor[] = []; + for (const [block] of text.matchAll(/\/\*\*[\s\S]*?\*\//g)) { + const tag = (name: string) => + new RegExp(`^\\s*\\*\\s*@${name}\\s+(.+?)\\s*$`, "m").exec(block)?.[1]; + const id = tag("sdpAnchor"); + if (id === undefined) continue; + anchors.push({ + id, + file, + targets: [...list(tag("sdpSatisfies")), ...list(tag("sdpReferences"))], + }); + } + return anchors; +} + +function constantAnchors(file: string, text: string): ScannedAnchor[] { + const anchors: ScannedAnchor[] = []; + for (const [call] of text.matchAll(/codeAnchor\(\{[\s\S]*?\n\}\);/g)) { + const id = /codeAnchorId\("([^"]+)"\)/.exec(call)?.[1]; + if (id === undefined) continue; + const field = (name: string) => + new RegExp(`${name}:\\s*(\\[[^\\]]*\\]|ref\\([^)]*\\))`).exec(call)?.[1]; + const targets = [field("satisfies"), field("references")].flatMap( + (value) => + value === undefined + ? [] + : [...value.matchAll(/ref\("([^"]+)"\)/g)].flatMap((match) => + match[1] === undefined ? [] : [match[1]], + ), + ); + anchors.push({ id, file, targets }); + } + return anchors; +} + +async function scanAnchors(): Promise { + const files = (await Promise.all(sourceRoots.map(sourceFiles))).flat(); + const anchors = await Promise.all( + files.map(async (path) => { + const text = await readFile(join(root, path), "utf8"); + const file = relative(root, join(root, path)); + return [...commentAnchors(file, text), ...constantAnchors(file, text)]; + }), ); + return anchors.flat(); +} + +async function loadGraph(): Promise { + return JSON.parse( + await readFile(join(root, "generated/graph.json"), "utf8"), + ) as GraphSchema; +} + +test("pure: the scan of the source finds the code units the graph holds there", async () => { + const graph = await loadGraph(); + const scanned = (await scanAnchors()).map(({ id, file }) => `${id} ${file}`); + const derived = graph.nodes + .filter( + (node) => + node.nodeType === "CodeNode" && + sourceRoots.some((top) => node.file.startsWith(`${top}/`)), + ) + .map((node) => `${node.id} ${node.file}`); + expect(scanned.length).toBeGreaterThan(0); + expect([...scanned].sort()).toEqual([...derived].sort()); +}); + +test("pure: byFile answers for every anchored source file with its units and their Specs", async () => { + const reader = createReader(await loadGraph()); + const missing = (await scanAnchors()).flatMap(({ id, file, targets }) => { + const answer = reader.byFile(file); + const ids = answer.nodes.map((node) => node.id); + return [ + ...(ids.includes(id) ? [] : [`${file}: ${id}`]), + ...targets + .filter((target) => !answer.specs.includes(target)) + .map((target) => `${file}: ${id} → ${target}`), + ]; + }); expect(missing).toEqual([]); }); test("pure: no implementation anchor sits in a test file", async () => { - const graph = JSON.parse( - await readFile(join(root, "generated/graph.json"), "utf8"), - ) as GraphSchema; + const graph = await loadGraph(); expect( graph.nodes .filter( diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index cabab94..95c4ee8 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -812,7 +812,7 @@ test("the page names each code unit at its own site, with its role and component /^\| \[1\]\(#1-the-alpha-decision\) .*\| referenced by 1 unit \|/m, ); expect(text).toContain( - "**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor.", + "**References.** 1 unit references this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor.", ); expect(text).toContain( "- `impl:sample.rules` at [`src/sample/rules.ts` line 2](../../src/sample/rules.ts#L2): the sample's rules. Its role is decider. It belongs to `component:sample.core`, in the domain layer and the sample context.", From ed4f97f6e99b031c3801ed617c2e84ac484be9af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 10:22:10 +0200 Subject: [PATCH 51/60] docs: the rulings of 2026-10-10 in the feedback, the state and the PR section The feedback file gains the dated section "2026-10-10, the rulings at f23e358": what the rulings changed in this corpus, the per-Spec table of the pass with what no unit builds and why each Spec went to references, the outcome model satisfied, the owner items that closed and the one that remains, the rename of the capability steps to "stage". The older section loses the sentence that kept a reference for a byFile pair. The state file's owner queue holds that one item, its measured block is re-measured at ecba393, decision 69 records the rulings, decisions 60 and 62 point to it, and lead 47 keeps what the pass found and did not fix: splits by narrowing, and the orders-inventory worked examples in the platform's own Specs. The PR section reads as the current state with its try-it output re-measured. Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 28 ++++---- docs/feedback/pr-12-annotations-section.md | 84 ++++++++++++---------- docs/feedback/sdp-feedback-01.md | 48 ++++++++++++- 3 files changed, 108 insertions(+), 52 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index bc8003c..2d63f5e 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -4,20 +4,20 @@ Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the ## Measured at close -Re-measured on 2026-10-09 with `python3 design/tools/check.py`, at the pin `da56a34`, after the fold-in of the anchor check: +Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`): ``` -243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 -architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 18 units +architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 43 references edges from 39 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 7002ed3ddfdc42e0 +corpus digest: 20466b9e5b2744ed Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz ``` `python3 design/tools/decisions.py`, after this unit, which adds OD-164 to OD-175 and decides OD-172 to OD-175: @@ -359,15 +359,16 @@ The owner accepted the first nine on the session's recommendation. The session t 57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. 58. A capability Pack has a committed page, `design/pages/.md`, written by `scripts/pack-page.mjs` from the graph in memory, with no commit, timestamp or absolute path; `check.py` keeps the list of pages (`PACK_PAGES`) and fails on one that is behind, missing or unlisted. An edit to a member Spec is followed by `npm run pages`. A pass reads the page first. 59. The pinned pairs are data, `tests/types/pinned-pairs.json`, beside the type test, which a pure test keeps in step; the page reads them and parses no test. The pinned module is formatted by Prettier. -60. An implementation anchor sits in the source file it binds, as a comment-form block of reserved `@sdp` tags that imports nothing from the Protocol (`57ed4f8`, at the pin `da56a34`). There is one identity per realizing unit. A unit satisfies a Spec its own code realizes and references a design it is written against, and a reference confers no delivery fact. A component anchor states its layer and context from the provisional mapping until the owner rules on it (Owner queue). No test file keeps an implementation anchor, and the harness keeps its 18 constant-form anchors. `design/tools/anchor-sites.json`, the join that stood in while anchors lived in tests, is deleted with its test, and `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. +60. Amended by decision 69, which rules the mapping and makes the coverage test read the anchors. An implementation anchor sits in the source file it binds, as a comment-form block of reserved `@sdp` tags that imports nothing from the Protocol (`57ed4f8`, at the pin `da56a34`). There is one identity per realizing unit. A unit satisfies a Spec its own code realizes and references a design it is written against, and a reference confers no delivery fact. A component anchor states its layer and context from the provisional mapping until the owner rules on it (Owner queue). No test file keeps an implementation anchor, and the harness keeps its 18 constant-form anchors. `design/tools/anchor-sites.json`, the join that stood in while anchors lived in tests, is deleted with its test, and `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. 61. Ended by decision 65. The register cited an open question by its Spec and the opening of its text, never by position, and `check.py` verified it. -62. A built Spec may pin a type that a designed form widens, listed ahead; a behavior the code lacks lives in a Spec of its own (`PLAN.md` 6.7). The rebuild is split by it. +62. Ended by decision 69. A built Spec may pin a type that a designed form widens, listed ahead; a behavior the code lacks lives in a Spec of its own (`PLAN.md` 6.7). The rebuild is split by it. 63. The owner, 2026-10-04, on the four worktree lanes and five review lanes of `pack-page`: "This approach is appropriate if for implementation of a large full-week epic. ... it is excessive, very."; on worktrees: "I would say no benefit at all."; and "situation dictates actions. And intelligence of the orchestrator decides. Guides are recommendations to consider (unless project has hard rules)." Until the owner rules on the proposal (Owner queue), the main thread sizes review and isolation to the work, and one review that runs things is the usual start. 64. An advisor runs on the model the owner names for it. For the passes over `pack:history-view` the owner chose "Opus domain, Astra operator", so the domain pass ran as Opus 5.5 on the `advisor-domain` definition and the operator pass as `gpt-6-astra` at high, briefed with the `advisor-operator` definition's three paths and `design/advisors/task-pass.md`. `design/advisors/protocol.md` bound both alike, and each memo and each set of leans was checked by the other family on a copy with one planted citation. With no model named, an advisor is a Fable agent (decision 33). 65. Every open question carries a key, and a tool cites it by its address. The owner's ruling of 2026-10-04 on the Protocol's model: "Key in the marker". So the marker reads `[blocking #key]` or `[non-blocking #key]`, the key unique among one Spec's open questions, and the question's entry address is its Spec's ID, then `#question.` and the key. `check.py` fails on an open question without a key. The register cites an open question by address; a source whose question left its Spec keeps its Spec and last text with `open: false`, on a decided or folded row only. `decisions.py`, `check.py` and their tests resolve an address through recipe 25, so a removed or renamed key fails the check. In prose a question is cited by its OD number. 66. One review per repository, by `gpt-6-astra` at xhigh, on a frozen copy with one plant, running what it reads, as decision 63 sizes it. In this unit the Protocol's branch had one (`job-mut8z07h-a0b05af1`, 22.4 min) and this repository's side one (`job-mut9wpn7-575a7c07`, 35.1 min), and both caught their plant. A second read of the history Specs (`job-mutbtzmh-06e6d440`) followed the fold-in, because the release procedure had been folded in piece by piece, and a short third read follows its own fold-in, round 5. What the plants showed: the builders' own tests caught every code plant tried, and two candidate plants for the Protocol's copy were withdrawn for that reason. The plants that tested a reviewer sat where no gate reads: in taught text (the authoring skill teaching the key outside the marker, with every test passing) and in Spec prose (the deploy moved before the close of `all` in `historyHandoff`, with `check.py` and every test passing). So a plant goes in taught text, Spec prose or a citation, and a code plant is first tried against the tests. 67. The Pack page and `check.py` read the Protocol's data, not this corpus's copies of it (A2, A4). The page takes member order from the reader's Pack context and the next rung's unmet clauses and typed-dependency targets from `SpecContext.nextRungFailures`. It keeps its own meaning of the next rung, the rung above the stated one, and says nothing blocks it when the floor is above the stated rung. `check.py` sends every entry address outside the Specs to recipe 25 in one call and fails on any set recipe 26 reports; finding the addresses in files and naming each one's line stay this corpus's. The adopter's joins stay: the pinned pairs and the register. The anchor sites went when the Protocol gave the comment form (decision 60). A workaround goes when the Protocol gives the thing, and what the Protocol still lacks goes to `docs/feedback/sdp-feedback-01.md`. 68. A worktree only where two builds would race. The rulings of 2026-10-04: "No worktree unless two lanes would break each other's gates." In this unit one package had one: Q, the question key, whose build would have raced package G's on the Protocol's `dist/`. The other packages ran in the main checkout, two lanes at once where their files were disjoint. Decision 39 says how a worktree is set up when one is made, not that every lane gets one. +69. The owner's rulings of 2026-10-10 on the annotations arc, applied at the pin `f23e358` (`ecba393`). A reference runs one way: code answers to a design it follows or realizes in part, and a design that builds on existing code says so by its own relation to the Spec that code satisfies; the online rebuild's reference to the history rebuild came out, and so did a reference kept only for a `byFile` pair. Anchor targets name whole Specs, so the units that satisfy a Spec together realize every entry it promises, a pinned declaration ahead of its code included (`PLAN.md` 6.7 item 7). The pass over the twelve Specs the anchor check named, and `spec:command.receipt-table`, found in each a part no unit builds running through entries the code realizes, so their units reference them; `spec:kernel.outcome-model`, which its types and validators realize whole, is satisfied. A component satisfies its seam's design Spec or binds nothing its members bind. The layer and context mapping stands, with the owner's rules in `PLAN.md` 2.1, and `check.py` fails when a platform component uses a component of another context. `tests/pure/byfile-coverage.test.ts` reads its pairs from the anchors in the tree. ## Owner queue @@ -389,13 +390,8 @@ What waits for the owner at this close: - The `ready` statements, each an approval to build (OD-163): `spec:application.history-projection` after round 5 and a short third read of the history Specs; `spec:application.history-rebuild` and its five examples after the same read and once OD-157 is ruled; the Protocol's four implemented Specs and their examples. No Spec of this corpus states `ready` yet. - OD-157, the verify pass under the write pause (convex lens). Under the pause no source changes, so the pass finds nothing over a covered generation and doubles the pause; the option kept is the pass, as D9 and Sc L2-6 read, and whether a paused generation is `verified` when its backfill ends is the owner's. The domain pass added what the pass can find: a missing or lagging row, never a fold that disagrees with itself (`spec:application.history-rebuild#design.historyVerify`). - OD-171, the terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events. -- Annotations. On 2026-10-09 the owner directed the Protocol to move closer to its original design and bring back annotating architecturally significant units and their relationships in code. Its branch `feature/annotations-v0` (plan 40) rules this through three decisions held at `defined` for the owner's `ready`: the comment form (MD-36, `spec:decisions.anchor-comment-form`), the binding grain (MD-37, `spec:decisions.anchor-binding-grain`) and architectural annotation (MD-38, `spec:decisions.architectural-annotation`). MD-36 supersedes `spec:decisions.jsdoc-graph-extraction-refused` and MD-38 supersedes `spec:decisions.architectural-significance-rides-primitives`, the two records the owner contested, with `spec:decisions.structural-anchor-semantics` beside it. This corpus adopted all three at the pin `da56a34` (decision 60). What the owner decides here, from `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`": - - The layers. The context library and the two context components are `adapter`, with `infrastructure` the alternative; the gate is `infrastructure`, with `application` the alternative. - - The contexts. Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. - - Whether `example/` is architecture. As the production composition it has five components; as a sample it would keep its units and lose them. - - The reference direction. `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. It is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. - - Whole-Spec satisfies on Specs with designed-but-unbuilt parts. The anchor check named twelve Specs satisfied by code that realizes only part of their Design, the same set the test-resident anchors satisfied (`PLAN.md` 6.7 item 7). Per Spec, the owner splits it again, moves its binding to references, or accepts the whole-Spec claim; the feedback section lists them, and the Protocol holds `#entryAddressTargets` on `spec:decisions.anchor-binding-grain`. - - The word layer. `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. One word now names two things. +- Annotations. The owner ruled on the annotations arc on 2026-10-10, and the Protocol's branch `feature/annotations-v0` carries the rulings at `f23e358`, the pin since `04a6aff`. Every item this queue held for it closed: the layers, the contexts, `example/` as architecture, the reference direction and the whole-Spec satisfies (decision 69; `docs/feedback/sdp-feedback-01.md`, section "2026-10-10, the rulings at `f23e358`", holds the per-Spec table). One item remains: + - The capability steps' name. "Layer" names one of the seven steps of capability in this corpus and, as the Protocol's `layer`, a component's architectural layer; `CONTEXT.md` now writes the second in full as "architectural layer". Renaming the capability steps, with "stage" as the candidate, is the one-word-one-meaning answer. It touches a Spec identity (`spec:platform.layers-and-profiles`), 143 numbered uses across 65 carriers and the decisions document the rubric binds this corpus to follow, so it is an adopter-language decision for the owner. - The 25 departures of `pack:spec-studio-v1`, each a keyed open question, five of them blocking, where a ruled record of the Protocol goes another way than the original design: among them the patch loop against `spec:consumers.edit-model`, HTML first against the Markdown Design Review, and seven rungs against four. The Protocol's pull request lists them. - Words this unit used that the language lacks. In this corpus's `CONTEXT.md`: handoff and protected abort (OD-174's procedure), question key, next rung, target rung, dependency cycle. In the Protocol's: the same four, and from the Studio slice Spec Studio, lens, panel, shell, custom element, gathered intent, hand-off, build stamp, hosted preview, harness. The history view's "handoff" and the Studio's "hand-off" name two different things. - Words the units `design-in-the-graph` and `pack-page` used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack, history rebuild (a Spec's ID), Pack page, stated rung, floor, pair with bound, ahead and not compared, an anchor's site, register row; and from the Convex pass, batch, source, consistent cut, history view. @@ -563,6 +559,10 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - Two of the Protocol's carrier checks, `check-carrier-rule.mjs` and `check-carrier-truth.mjs` at its root, fail on `feature/adopter-round-2` and fail identically at `5e29c03`. Neither is a `package.json` gate, and the Protocol's pull request says so; its maintainers rule whether they become gates or go. - Retracted: the gap the passes' first round listed, `defineList` mapping saved state through `toDto` without the schema-version checks of `spec:context.queries#design.fnList`. The adopter review showed that `defineList` refuses a newer saved schema version through `metaOf` (`convex-test`), so no lead stands for it. +47. From the rulings of 2026-10-10. Each is a gap the pass found and did not fix. + - Splits by narrowing. The journal (baseline migration, stream rebuild), the tables, the persistence adapter and the context component (derived mapping, migrate on load, maintenance writer), the queries (journal inspection), and the receipts with their table (tombstones) each hold a part with its own trigger or step, but the part runs through entries the code realizes, mostly pinned declarations. A split narrows those entries to the code and moves the widening into a child Spec, as `spec:application.aggregate-projection` does; it changes realized Spec text, so it waits for a pass the main thread rules. + - Worked examples in the platform's Specs. `check.py` now shows that no platform component uses the example's components, but the platform's own Specs carry orders-inventory worked examples in Design entries: `ordersExample`, `parentPassThrough` and `parentGet` in `spec:context.queries`, `operationExample` and `parentCall` in `spec:context.context-component`, `contextCall` in `spec:command.command-pipeline`. Moving them to `spec:application.orders-inventory-example` would make the platform's design read without its example, as its code does. + The reports behind leads 1 to 3 and 6 are outside the repository, because they quote a private repository. The project notes file named in `AGENTS.md` lists them, with the reports, briefs and rulings of S0. ## Inputs diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index 8ed9489..0980d3b 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -1,48 +1,60 @@ -## Now: anchors in the code they bind (2026-10-09) +## Now: anchors in the code they bind, under the rulings of 2026-10-10 -Until this unit, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design. An anchor can be written as a doc comment. Code can name a design it is written against without claiming to build it. An anchor can say what architectural part its code plays. This branch pins the Protocol at `da56a34` (`fd5b257`) and adopts the arc (`57ed4f8`). +Until this arc, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design: an anchor can be written as a doc comment, code can name a design it answers to without claiming to build it, and an anchor can say what architectural part its code plays. The owner ruled on the arc on 2026-10-10, and all three of its decisions now state `ready`. This branch pins the Protocol at `f23e358` (`04a6aff`), the head that carries the rulings, and applies them (`ecba393`). -**1. Anchors in the code they bind.** A comment-form anchor is a top-level `/** … */` block of reserved `@sdp` tags. The source carries it with no Protocol import, so the runtime pays nothing. The 22 implementation anchors that lived in nine test files are now 45 units in `src/`, `example/` and `fixture/`, one per realizing file or site, plus 12 component anchors. No test file keeps an implementation anchor; the harness keeps its 18 constant-form anchors. The online rebuild, at the top of [`src/read-model/rebuild.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/rebuild.ts#L2): +**1. Anchors in the code they bind.** A comment-form anchor is a top-level `/** … */` block of reserved `@sdp` tags. The source carries it with no Protocol import, so the runtime pays nothing. The 22 implementation anchors that lived in nine test files are 46 units in `src/`, `example/` and `fixture/`, one per realizing file or site, beside 12 component anchors; the harness keeps its 18 constant-form anchors. No test file keeps an implementation anchor. The file is the binding grain of both forms: a block's line locates the anchor and names no declaration. The online rebuild, at the top of [`src/read-model/rebuild.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/rebuild.ts#L2): ```ts /** * @sdpAnchor impl:application.rebuild * @sdpLabel the online rebuild's operator entries, batch chains, tenant fill and batch bounds - * @sdpSatisfies spec:application.rebuild - * @sdpReferences spec:application.history-rebuild + * @sdpReferences spec:application.rebuild * @sdpComponent component:platform.read-model * @sdpRole service */ ``` -**2. `byFile` answers for `src/`.** `byFile("src/read-model/rebuild.ts")` names `spec:application.rebuild` and `spec:application.history-rebuild`, and the files under `src/gate/` and `src/kernel/` name theirs. [`tests/pure/byfile-coverage.test.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/tests/pure/byfile-coverage.test.ts) asserts that `byFile` names each of the 50 file and Spec pairs the old join listed, across 45 files. +**2. A reference runs one way.** A unit satisfies a Spec when it and the other units that satisfy it realize the whole Spec. A unit references a Spec when it answers to that design without claiming to realize it: it follows the design or realizes part of it, so a change to the design asks the code to follow. A reference confers no delivery fact and moves no floor. A design that builds on existing code says so by its own `dependsOn` or `refines` to the Spec the code satisfies, never by a reference from the code. So the online rebuild no longer references `spec:application.history-rebuild`, a design that builds on it; the history rebuild already depends on `spec:application.rebuild`. A reference kept only to give `byFile` an answer is gone too. The graph holds 43 `references` edges from 39 units, to 19 Specs. -**3. Components with a layer and a context.** Twelve `component:` anchors declare the architecture where it is realized: three in each of the `adapter`, `application`, `domain` and `infrastructure` layers, with the contexts `platform` (7), `orders` (2), `inventory` (2) and `orders-inventory` (1), and `uses` between them. The read-model library in [`src/read-model/index.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/index.ts#L2) is `application` in `platform` and uses the kernel, the context, the command and the gate. The mapping is provisional until the owner rules on it (below). +**3. Whole Specs, honestly.** Anchor targets name whole Specs, so no unit satisfies a Spec while the Spec promises a part no unit builds, and a pinned declaration ahead of its code is such a part ([`design/PLAN.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/PLAN.md) 6.7 item 7). The rule, per Spec: list the entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. The pass checked the twelve Specs the anchor check named against the code, and found a thirteenth, `spec:command.receipt-table`. Each holds a part no unit builds, running through entries the code realizes, so none splits by moving entries, and its units now reference it: -**4. Roles.** 36 units name the part they play, in a vocabulary this corpus owns: `service` 10, `schema` 6, `contract` 5, `query` 5, `decider` 2, `projection` 2, `use-case` 2, and one each of `codec`, `event-store`, `operator-entry` and `read-model`. Recipe 28 reads the taxonomy from the graph, and [`design/tools/check.py`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/tools/check.py) prints it and judges none of it. The gate's four operator entries in [`src/gate/entries.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/gate/entries.ts#L7) are the one `operator-entry`. +| Spec | What no unit builds | +|---|---| +| `spec:context.journal` | the baseline migration, the stream rebuild, the derived mapping's parts | +| `spec:context.tables` | the derived mapping's `streamParts` table | +| `spec:context.persistence-adapter` | migrate on load (step 3a), the derived state | +| `spec:context.queries` | the `history`, `rebuild` and `byOperation` queries | +| `spec:context.context-component` | those queries and the baseline writer in its surface | +| `spec:command.command-declaration` | the history projection binding, the tombstone retention | +| `spec:command.idempotency-and-receipts` | tombstones | +| `spec:command.receipt-table` | the tombstone row and its horizon | +| `spec:command.command-pipeline` | the history projection's write at step 9 | +| `spec:application.read-models` | the history read model's write path | +| `spec:application.generation-registry` | `sourceIndex` in the batch cursor | +| `spec:application.rebuild` | history targets in the shared rebuild config | +| `spec:application.orders-inventory-example` | the order allocation history bound to its commands, journal inspection | -**5. References into the history-view design, without claiming realization.** A unit that realizes a Spec satisfies it. A unit that names a design without realizing it references it, in either direction: code written against a design, or code a design rests on. The reference confers no delivery fact and moves no floor. The graph holds 20 `references` edges from 18 units. Recipe 27 over `pack:history-view` puts three facts side by side for each of its 19 members: 6 are referenced, 11 implemented, 7 have a verifier, and 6 have none of the three. -- `spec:application.history-projection` is referenced by the order allocation history's rules in `example/domain/orderAllocationHistory.ts`, and `spec:application.history-rebuild` by the online rebuild. Neither reads as `implemented`. -- The rule is realization scope. `src/kernel/outcome.ts` holds the outcome types the decider reuses, so it references `spec:kernel.outcome-model` and `spec:kernel.decider-contract` and satisfies neither; `src/kernel/decider.ts` holds the decider and satisfies the decider contract. The gate's component exports the implementation its members satisfy, so `component:platform.gate` satisfies `spec:application.write-pause` too. -- The Pack page lists each unit at its file and line, with its role and its component's layer and context, and a "References" list per member: [`design/pages/history-view.md`, member 1](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/pages/history-view.md#1-history-projection). +`spec:kernel.outcome-model` went the other way: its types in `src/kernel/outcome.ts` and its validators in `src/context/outcome.ts`, which gained an anchor, realize it whole, so both satisfy it. 12 Specs carry `implemented`, down from 24, and each of them is whole. [`docs/feedback/sdp-feedback-01.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/docs/feedback/sdp-feedback-01.md) holds the table with the entries, the code and the reason for each Spec. -**6. The sidecar is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. [`scripts/pack-page.mjs`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/scripts/pack-page.mjs) reads code from the graph alone. +**4. Components with an architectural layer and a context.** Twelve `component:` anchors declare the architecture where it is realized: three in each of the `adapter`, `application`, `domain` and `infrastructure` layers, with the contexts `platform` (7), `orders` (2), `inventory` (2) and `orders-inventory` (1), and `uses` between them. [`design/PLAN.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/PLAN.md) section 2.1 lists them with the owner's two rules. The layer rule: `domain` is business meaning with no runtime import; `application` coordinates a use case; `adapter` realizes a kernel or command contract against Convex; `edge` is transport in; `infrastructure` is a shared mechanism that owns no use case. The context rule: the platform is the key bounded context, with its own language; orders-inventory is the supporting context and development tool, the composition of the two business contexts it models; nothing in the platform's core carries orders-inventory specifics. A component satisfies its seam's design Spec or binds nothing its members bind: `component:platform.gate` satisfies the write pause it and its members realize whole, and the components whose seam is only partly built bind nothing. -**What still binds loosely.** A block binds by file and line. Move the declaration from under it, or delete it, and the block still binds. The Protocol's open question `#attachmentIdentity` on `spec:decisions.anchor-comment-form` asks whether a CodeNode should record the symbol it binds. +**5. The isolation, read from the graph.** [`design/tools/check.py`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/tools/check.py) fails when a component in the context `platform` has a `uses` edge to a component in another context, each end resolved to its component directly or through `memberOf`. Today none of the 21 `uses` edges from the platform's seven components leaves it. + +**6. Roles, and the sidecar gone.** 37 units name the part they play, in a vocabulary this corpus owns; recipe 28 reads the taxonomy and `check.py` prints it and judges none of it. `design/tools/anchor-sites.json` and its test are deleted. [`tests/pure/byfile-coverage.test.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/tests/pure/byfile-coverage.test.ts) reads the anchors in the tree, checks they are the code units the graph holds, and asserts that `byFile` names every anchored file's units and their Specs. [`scripts/pack-page.mjs`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/scripts/pack-page.mjs) reads code from the graph alone, and the [Pack page](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/pages/history-view.md#1-history-projection) lists each unit at its file and line with its role, its component's architectural layer and context, and a "References" list per member. ### The rulings -The Protocol's branch rules the arc through three decision Specs. The comment form and architectural annotation state `ready` (the owner, 2026-10-10); the binding grain states `defined`, held for the owner's `ready` on its two open questions. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. +The Protocol's branch rules the arc through three decision Specs, and the owner states `ready` on all three. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. | Ratified name | Ruling | Spec | |---|---|---| -| the comment form (MD-36) | A top-level `/** … */` block of reserved `@sdp*` tags is a second form of an anchor, read into the same closed envelope as the constant form. No import is needed, comment prose authors nothing, and a zero-dependency `/anchors` subpath ships the builders. Supersedes MD-35. | `specs/decisions/anchor-comment-form.sdp.md` | -| bindings are optional, plural, and may reference a design (MD-37) | `satisfies` is optional and plural, an identity-only anchor is lawful, and the `references` edge says code is written against a design while conferring no delivery fact. | `specs/decisions/anchor-binding-grain.sdp.md` | -| architectural significance is annotated where it is realized (MD-38) | A code anchor may carry a `role`, and a `component:` anchor a `layer` from a closed set of five and a `context`; the component anchor is the declared component. Supersedes MD-30 and MD-34. | `specs/decisions/architectural-annotation.sdp.md` | +| the comment form (MD-36) | A top-level `/** … */` block of reserved `@sdp*` tags is a second form of an anchor, read into the same closed envelope as the constant form. No import is needed, comment prose authors nothing, and the file is the binding grain of both forms. Supersedes MD-35. | `specs/decisions/anchor-comment-form.sdp.md` | +| bindings are optional, plural, and may reference a design (MD-37) | `satisfies` is optional and plural and targets name whole Specs. The `references` edge says the code answers to a design without claiming to realize it, runs from code to design only, and confers no delivery fact. | `specs/decisions/anchor-binding-grain.sdp.md` | +| architectural significance is annotated where it is realized (MD-38) | A code anchor may carry a `role`, and a `component:` anchor a `layer` from a closed set of five and a `context`; the component anchor is the declared component. Roles stay a free vocabulary each corpus owns. Supersedes MD-30 and MD-34. | `specs/decisions/architectural-annotation.sdp.md` | ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-09 at `57ed4f8` and re-measured at `5355ed3`; re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-10 at `ecba393`; the commit after it changes only the feedback and state files. Re-run the commands rather than inherit these numbers. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -52,11 +64,11 @@ npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json { "path": "src/read-model/rebuild.ts", "nodes": [{ "id": "impl:application.rebuild", "nodeType": "CodeNode", "line": 2 }], - "specs": ["spec:application.history-rebuild", "spec:application.rebuild"] + "specs": ["spec:application.rebuild"] } ``` -Recipe 27 over `pack:history-view`, taken from the pinned package's catalog with only the Pack swapped in: +Recipe 27 over `pack:history-view`, taken from the pinned package's catalog with only the Pack swapped in. Beside the three facts it now derives what each member builds on: the implemented Specs it depends on or refines, with their units. ````sh R=node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md @@ -67,14 +79,18 @@ npx sdp q "$(awk '/^## 27\./{f=1} /^## 28\./{f=0} f' "$R" | awk '/^```js/{c=1; n { "found": true, "id": "pack:history-view", - "totals": { "members": 19, "withReferences": 6, "withImplementations": 11, "withVerifier": 7, "unbound": 6 }, + "totals": { "members": 19, "withReferences": 9, "withImplementations": 3, "withVerifier": 7, "withBuildsOn": 11, "unbound": 7 }, "rows": [ { "id": "spec:application.history-projection", "resolved": true, "referencedBy": [{ "id": "impl:application.order-allocation-history", "file": "example/domain/orderAllocationHistory.ts" }], "implementedBy": [], - "hasVerifier": false + "hasVerifier": false, + "buildsOn": [ + { "id": "spec:application.projection-contract", "via": "dependsOn", "implementedBy": [{ "id": "impl:application.generation-registry.tables", "file": "src/read-model/tables.ts" }, { "id": "impl:application.projection-contract", "file": "src/read-model/projection.ts" }] }, + { "id": "spec:context.event-envelope", "via": "dependsOn", "implementedBy": [{ "id": "impl:context.event-envelope", "file": "src/context/envelope.ts" }] } + ] }, … ] @@ -86,7 +102,7 @@ npx sdp validate . ``` ``` -243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) … validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` @@ -98,29 +114,23 @@ npm run check ``` ``` -243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 -architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 18 units +architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 43 references edges from 39 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context … Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz OK ``` -`npm test` passed 1,140 tests in 74 files, with 10 skipped, the not-compared pairs. +`npm test` passed 1,141 tests in 74 files, with 10 skipped, the not-compared pairs. ### For the owner -From `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`": - -- **The layers.** The context library and the two context components are `adapter`, with `infrastructure` the alternative; the gate is `infrastructure`, with `application` the alternative. -- **The contexts.** Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. -- **Whether `example/` is architecture.** As the production composition it has five components; as a sample it would keep its units and lose them. -- **The reference direction.** `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. This is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. -- **Whole-Spec satisfies on Specs with designed-but-unbuilt parts.** Twelve Specs are satisfied by code that realizes only part of their Design, the same set the test-resident anchors satisfied (`design/PLAN.md` 6.7 item 7). Per Spec, the owner splits it again, moves its binding to references, or accepts the whole-Spec claim. The Protocol holds `#entryAddressTargets` on `spec:decisions.anchor-binding-grain`. +The rulings of 2026-10-10 closed the layers, the contexts, `example/` as architecture, the reference direction and the whole-Spec satisfies. One item remains, from `docs/feedback/sdp-feedback-01.md`, section "2026-10-10, the rulings at `f23e358`": -And from this corpus's language: **the word layer.** `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. +- **The capability steps' name.** "Layer" names one of the seven steps of capability in this corpus and, as the Protocol's `layer`, a component's architectural layer; `CONTEXT.md` now writes the second in full. Renaming the steps, with "stage" as the candidate, is the one-word-one-meaning answer. It touches a Spec identity (`spec:platform.layers-and-profiles`), 143 numbered uses across 65 carriers and the decisions document this corpus follows, so the owner makes it deliberately. -A `gpt-6.1-sol` check of every anchor claim against the code it sits on (`job-mv1dotsu-5f1f42fd`) is folded in: the gate component satisfies the write pause, `src/kernel/outcome.ts` satisfies nothing, the page's references wording no longer assumes a direction, and the whole-Spec satisfies above went to the owner. Its doubts on the `platform` and `orders-inventory` contexts and the `adapter` layer are the owner items above. +Two leads go to a later pass (`design/STATE.md`, lead 47): six of the thirteen referenced Specs hold a part with its own trigger or step that could split once its pinned declarations are narrowed to the code, and the platform's own Specs still carry orders-inventory worked examples in their Design entries, though its code uses nothing of the example. diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index 5739f7a..c32b926 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -4,13 +4,59 @@ A running file, addressed to the Protocol's maintainers. Each `adopt` unit and e Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-10, the rulings at `f23e358` + +The owner ruled on the annotations arc on 2026-10-10, ten rulings from three advisors' answers to ten questions, with this guidance: prefer clean solutions; the amount of work never decides; the platform is the key context, orders-inventory is a supporting context and a development tool, and nothing in the platform's core carries orders-inventory specifics. The Protocol's branch `feature/annotations-v0` carries them at `f23e358`. The pin moved from `da56a34` to `f23e358` (`04a6aff`), packed from a clean clone as before, and on the pin alone nothing this corpus reads moved: 243 Specs, 428 nodes, 1,501 edges, 12 listed warnings. Then the corpus applied the rulings (`ecba393`). Every number below was measured after that commit. + +- **A reference runs one way.** A `references` edge from code says the code answers to a design: the unit follows it or realizes part of it, so a change to the design asks the code to follow. A design that builds on existing code says so by its own `dependsOn` or `refines`, never by a reference from the code. The online rebuild's reference to `spec:application.history-rebuild` came out; the history rebuild already depends on `spec:application.rebuild`. The reference from `src/kernel/outcome.ts` to `spec:kernel.decider-contract` came out too: its only reason was a `byFile` pair, and an edge kept for a test, a count or a `byFile` answer goes. The read-model tables keep their reference to `spec:application.aggregate-projection`, because `src/read-model/tables.ts` holds the aggregate form's `projectionMarkers` table that the Spec pins: the code realizes part of that design, the meaning the ruling keeps. The fixture's six depot units, the gate's operator entries, the allocation history's fold and the kernel, audit and operations components keep theirs for the same reason. Recipe 27 now adds a derived "builds on" column: for each member, the implemented Specs it depends on or refines, with their units. +- **The outcome model is satisfied.** `src/kernel/outcome.ts` holds the outcome model's types, and `src/context/outcome.ts` its four validators, which the kernel may not hold. The first is now `impl:kernel.outcome-model`, renamed from `impl:kernel.decider-contract.outcome`, and the second gains the anchor `impl:kernel.outcome-model.validators`; both satisfy `spec:kernel.outcome-model`. The model's other entries assign work to other Specs, which own it: the adapter raises the three reserved codes in the model's throw shape as its own steps 1, 3 and 5 state, and the boundary owns the transient refusal. +- **Anchor targets name whole Specs.** A unit satisfies a Spec only when the units that satisfy it together realize every entry it promises. `design/PLAN.md` section 6.7 item 7 no longer exempts a pinned declaration that is ahead of its code: a widened pin is a promise the code has not built. The pass below applied the ruling's rule to each Spec: list the Design entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec that refines the parent, moving the entries verbatim, and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. Astra's gap list was the input, and each gap was checked against the code. +- **Components.** A component satisfies its seam's design Spec or binds nothing its members bind. `component:platform.context`, `component:platform.command`, `component:platform.read-model` and `component:example.parent` referenced the Spec their members satisfied; their members now reference it and the component binds nothing. `component:example.orders-context` and `component:example.inventory-context` satisfied the example's Spec and bind nothing now. `component:platform.gate` still satisfies `spec:application.write-pause`, which it and its three members realize whole. The kernel, audit and operations components keep their references, to Specs no member binds. +- **The counts.** The graph derives 180 anchors into 429 nodes and 1,497 edges; validate reports 0 errors and the same 12 listed warnings. 12 Specs carry `implemented`, down from 24: the 12 of the pass and `spec:command.receipt-table` left it, and `spec:kernel.outcome-model` joined. There are 43 `references` edges from 39 units, to 19 Specs. Recipe 27 over `pack:history-view` gives 19 members: 9 referenced, 3 implemented, 7 with a verifier, 11 that build on implemented code, 7 with none of the first three. +- **Layers, contexts and `example/`.** The mapping stands as it was. `design/PLAN.md` section 2.1 lists the twelve components with the layer rule and the context rule in the rulings' words. `check.py` now fails when a component in the context `platform` has a `uses` edge to a component in another context, each end resolved to its component directly or through `memberOf`; its architecture line reads "platform isolation: 7 platform components, 21 uses edges from them, 0 into another context". `example/` keeps its five components and `fixture/` has none. +- **The word layer.** `CONTEXT.md` adds "architectural layer", the Protocol's `layer` on a component anchor, always written in full, and the Layer row avoids it. Renaming the capability steps is the owner's (below). +- **The coverage test.** `tests/pure/byfile-coverage.test.ts` no longer keeps the deleted sidecar's list. It reads the anchors in `src/`, `example/`, `fixture/` and `harness/`, comment form and constant form, checks that they are the code units the graph holds there, and asserts that `byFile` names, for every anchored file, each unit and each Spec it satisfies or references. +- **Tests.** `npm test` passed 1,141 tests in 74 files, with 10 skipped. + +### The per-Spec pass + +| Spec | What no unit builds, checked in the code | Outcome | Why | +|---|---|---|---| +| `spec:context.journal` | The baseline migration (`typeBaselineMigration`, `fnMigrateToSchemaVersion`, `fnDefineMaintenance`, `fnWriteBaseline` and its sequence, `baselineDriver`, `migrationWindow`), the stream rebuild (`fnRebuild`, `rebuildReads`, `limitFoldEvents`) and the derived mapping's parts in `fnLoad`. `src/context/journal.ts` has `createJournal`, `load` and `append`. | references | The migration has its own trigger, a deploy that raises a stream type's `stateSchemaVersion`, and the rebuild its own caller, but both run through `typeStreamRegistration`, `typeLoadedStream` and `fnLoad`, which the code realizes without them and the pinned module lists as ahead. No verbatim move leaves the journal whole. | +| `spec:context.tables` | `tableStreamParts`, its index use and `limitPartDocument`, the derived mapping's table. | references | The derived mapping is a part of its own, taken by a stream type that registers it, but `stateField`, `limitStreamDocument`, `limitIndexes` and `schemaFile` (three tables) state it inside entries the code realizes for the single mapping. | +| `spec:context.persistence-adapter` | `step3a`, migrate on load, and `migrationOnLoadCost`; the derived state in `step2` and `step9`. `src/context/adapter.ts` throws on a row saved under an older meaning. | references | Step 3a is a step of its own, but `step9`, `step10`, `typeStreamResult` and `limitDocumentsWrittenPerCall` count its baselines. | +| `spec:context.queries` | `fnDefineOthers`, `fnHistory`, `fnRebuild`, `typeRebuildResult`, `validatorRebuildResult`, `fnByOperation` and the history and rebuild limits. `src/context/queries.ts` has `defineGet`, `defineList` and `boundedPage`. | references | Journal inspection has its own callers, but `registeredFunctions` names its queries beside `get` and `list`, `fnGet` carries the derived mapping and the migration's transient refusal, and `fnDefineGet` and `fnDefineList` are ahead through `typeStreamRegistration`. | +| `spec:context.context-component` | The `history`, `rebuild` and `byOperation` queries and the `maintenance.writeBaseline` mutation of `convexSurface` and `registeredFunctions`. | references | The surface lists them in the same entries as the built operations and queries. | +| `spec:command.command-declaration` | The history projection in `typeReadModelBinding` and `"tombstone"` in `typeRetention`. | references | Both are pinned declarations ahead of the code. The history binding has no trigger or step of its own. | +| `spec:command.idempotency-and-receipts` | The tombstone class, its response and its retention (`typeReceiptClass`, `tombstoneResponse`, `retentionDefault`). `src/command/receipts.ts` deletes an expired receipt and never writes a tombstone. | references | Tombstones run through `typeReceiptClass` and the classification and insert entries the code realizes. | +| `spec:command.receipt-table`, found by this pass | `tombstoneShape` and the `tombstoneHorizon` of `expiryDefaults`. The table's `tombstone` field is always false. | references | The same tombstone capability, in entries the table otherwise realizes. | +| `spec:command.command-pipeline` | The history projection's write at step 9 (`readModelWrites`, `fnWriteReadModels`). | references | It runs inside step 9, with no trigger or step of its own, and `fnWriteReadModels` is ahead. | +| `spec:application.read-models` | The history read model's write path and its count in `limitReadModelWritesPerCommand`. `src/read-model/write.ts` calls only the per-entity projection. | references | Stated inside the per-entity entries, with no step of its own. | +| `spec:application.generation-registry` | `sourceIndex` in `validatorBatchCursor`, and `tableGenerationProgress` through it. | references | Both pins are ahead of the code. | +| `spec:application.rebuild` | History targets in `typeRebuildConfig`, `fnBatchSizeFor` and `fnResumeChain`, and the history compatibility check its shared entries name. | references | Ahead pairs in shared entries. The paused path itself already has its own Spec, `spec:application.history-rebuild`. | +| `spec:application.orders-inventory-example` | The order allocation history bound to `PlaceOrder` and `CancelOrder`, and journal inspection. The fold in `example/domain/orderAllocationHistory.ts` is bound to no command. | references | The Spec has no Design section; its promises are model terms, and `PlaceOrder`, the `CancelOrder` declaration and the order allocation history carry the binding in terms the code realizes otherwise. The fold now references this Spec too, for the part it realizes. | +| `spec:kernel.outcome-model` | Nothing. | satisfies, by two units | The types and the validators are built, and the entries that assign work to the adapter and the boundary are built there. | + +No Spec of the pass split. Six have a part with its own trigger or step: the journal (baseline migration, stream rebuild), the tables, the adapter and the context component (the derived mapping, migrate on load, the maintenance writer), the queries (journal inspection), and the receipts with their table (tombstones). In each the part runs through entries the code realizes, mostly pinned declarations, so a split needs those entries narrowed to the code and the widening moved into the child, the pattern `spec:application.aggregate-projection` uses. That is a change to realized Spec text, beyond moving entries verbatim, so it waits for a pass the main thread rules. + +### What the owner ruled, and what remains + +Closed by the rulings: the layers (R5), the contexts (R6), whether `example/` is architecture (R7), the reference direction (R1), the whole-Spec satisfies (R2, the pass above), and the word layer on this corpus's side (R8). The Protocol closed `#referenceDirection` and `#entryAddressTargets` on `spec:decisions.anchor-binding-grain`, which states `ready` (R9), `#roleVocabulary` on `spec:decisions.architectural-annotation` (R3), and `#attachmentIdentity` on `spec:decisions.anchor-comment-form` (R4): the file is the binding grain of both forms. + +One owner item remains: renaming the capability steps to "stage". "Layer" names one of the seven steps of capability here and the architectural layer of a component in the Protocol. The rename is the one-word-one-meaning answer; it touches a Spec identity (`spec:platform.layers-and-profiles`), 143 numbered uses across 65 carriers and the decisions document the rubric binds this corpus to follow, so it is an adopter-language decision the owner makes deliberately. + +### What the pass leaves + +- **Splits by narrowing.** The six Specs above, if the main thread rules a pass for them. +- **Worked examples in the platform's Specs.** The isolation check reads code. The platform's own Specs still carry orders-inventory worked examples in their Design entries, such as `ordersExample`, `parentPassThrough` and `parentGet` in `spec:context.queries`, `operationExample` and `parentCall` in `spec:context.context-component`, and `contextCall` in `spec:command.command-pipeline`. Moving them to `spec:application.orders-inventory-example` would make the platform's design read without the example, as its code now does. + ## 2026-10-09, anchors in the source at `da56a34` The pin moved from `dfa1bd9` to `da56a34`, a build of the Protocol's branch `feature/annotations-v0` (its plan 40), packed from a clean clone as before. The graph schema is `0.8.0`. On the new pin alone nothing this corpus reads moved: 243 Specs, 393 nodes, 1,382 edges, 12 listed warnings. Then the corpus adopted the branch's comment form, and the gap the two sections below name as "an anchor that lives in a test" is closed. An independent read (`gpt-6.1-sol`) of the tree before the adoption found none of it there. A second read by the same model checked every comment-form anchor the adoption placed, and its fold-in moved two bindings, named below. Every number below was measured after that fold-in. - **Anchors at their sites.** A comment-form anchor is a `/** … */` block of reserved `@sdp` tags, so the source carries it with no Protocol import and its runtime pays nothing. The 22 implementation anchors that lived in nine test files are now 45 units in `src/`, `example/` and `fixture/`, one per realizing file or site, plus 12 component anchors. No test file keeps an implementation anchor; the 18 constant-form anchors under `harness/` stay. The graph derives 179 anchors into 428 nodes and 1,501 edges, and validate still reports 0 errors and the same 12 warnings. No delivery fact of the 243 Specs changed. - **The join is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. `byFile("src/read-model/rebuild.ts")` names `spec:application.rebuild` and `spec:application.history-rebuild`. -- **Satisfies or references.** A unit satisfies a Spec its code realizes and references a design it names without realizing it; a reference confers nothing, and it may run either way, code written against a design or code a design rests on. There are 20 `references` edges from 18 units. The six depot units under `fixture/` only reference, because those compositions consume their targets or realize only part of them. A component that exports the implementation its member units satisfy realizes that design too, so `component:platform.gate` satisfies `spec:application.write-pause` beside its three members, and the Spec's delivery facts are unchanged. The rule is realization scope, not the owner-confirmation question both kernel Specs carry (`#deciderEventContract`, `#outcomeRejectionContract`). `src/kernel/decider.ts` holds the decider, its decision context and its fold helpers, so it satisfies `spec:kernel.decider-contract`. `src/kernel/outcome.ts` holds the outcome types the decider reuses: no part of the decider contract, and one part of the outcome model, whose validators sit in `src/context/outcome.ts` and whose reserved rejection codes sit in the adapter. It satisfies neither and references both. The reference to the decider contract also keeps that file and Spec pair, which `tests/pure/byfile-coverage.test.ts` asserts, reachable through `byFile`. +- **Satisfies or references.** A unit satisfies a Spec its code realizes and references a design it names without realizing it; a reference confers nothing, and it may run either way, code written against a design or code a design rests on. There are 20 `references` edges from 18 units. The six depot units under `fixture/` only reference, because those compositions consume their targets or realize only part of them. A component that exports the implementation its member units satisfy realizes that design too, so `component:platform.gate` satisfies `spec:application.write-pause` beside its three members, and the Spec's delivery facts are unchanged. The rule is realization scope, not the owner-confirmation question both kernel Specs carry (`#deciderEventContract`, `#outcomeRejectionContract`). `src/kernel/decider.ts` holds the decider, its decision context and its fold helpers, so it satisfies `spec:kernel.decider-contract`. `src/kernel/outcome.ts` holds the outcome types the decider reuses: no part of the decider contract, and one part of the outcome model, whose validators sit in `src/context/outcome.ts` and whose reserved rejection codes sit in the adapter. It satisfies neither and references both. - **The history view.** Recipe 27 over `pack:history-view` gives 19 members: 6 referenced, 11 implemented, 7 with a verifier, 6 with none of the three. `spec:application.history-projection` and `spec:application.history-rebuild` each show one referencing unit and no `implemented`. The page lists each unit at its own file and line, with its role and its component's layer and context, and a "References" list per member. - **The architecture.** Twelve components, three in each of the `adapter`, `application`, `domain` and `infrastructure` layers; contexts `platform` 7, `orders` 2, `inventory` 2, `orders-inventory` 1. Roles, from recipe 28: service 10, schema 6, contract 5, query 5, decider 2, projection 2, use-case 2, codec 1, event-store 1, operator-entry 1, read-model 1. Component `uses` match the relative imports between the components, cycles included; the two context components reach their domain through `example/domain/index.ts`. `check.py` prints this taxonomy and judges none of it. - **Tests.** `npm test` passed 1,140 tests in 74 files, with 10 skipped. From fe76a4f36db9fc8de84bfccca6bf9deecd6c42ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 10:35:43 +0200 Subject: [PATCH 52/60] fix: fold the sol check of the 2026-10-10 rulings A gpt-6.1-sol read of the rulings pass found three Specs still satisfied by code that does not realize all of them. Their units now reference them: - spec:application.parent-use-cases: no code builds the business failure policy (carryOrReject) or the import command. - spec:application.projection-contract: its callers entry promises the history writer's calls at step 9 and in history batches, and none exist. - spec:kernel.outcome-model: the adapter's step 1 raises invalidInput, which the model's three reserved codes and its context-owned rule leave no room for, while spec:context.persistence-adapter states it. Two Specs disagree; the main thread rules which side changes. 9 Specs carry implemented, down from 12. The feedback's 2026-10-10 section, the state file's decision 69, lead 47 and measured block, and the PR section are re-measured: 49 references edges from 41 units to 22 Specs, recipe 27 totals 10 referenced and 2 implemented. The split count reads seven Specs, which is what its list names. The Pack page is regenerated. Co-Authored-By: Claude Opus 5.5 --- design/STATE.md | 9 +++++---- design/pages/history-view.md | 6 ++++-- docs/feedback/pr-12-annotations-section.md | 19 ++++++++++--------- docs/feedback/sdp-feedback-01.md | 17 ++++++++++------- example/convex/ordering.ts | 3 +-- example/convex/receiving.ts | 3 +-- src/context/outcome.ts | 3 +-- src/kernel/outcome.ts | 2 +- src/read-model/projection.ts | 2 +- src/read-model/tables.ts | 3 +-- 10 files changed, 35 insertions(+), 32 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index 2d63f5e..cfac35f 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -4,13 +4,13 @@ Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the ## Measured at close -Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`): +Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`) and the fold-in of their second read: ``` 243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 -architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 43 references edges from 39 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context +architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 49 references edges from 41 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} @@ -368,7 +368,7 @@ The owner accepted the first nine on the session's recommendation. The session t 66. One review per repository, by `gpt-6-astra` at xhigh, on a frozen copy with one plant, running what it reads, as decision 63 sizes it. In this unit the Protocol's branch had one (`job-mut8z07h-a0b05af1`, 22.4 min) and this repository's side one (`job-mut9wpn7-575a7c07`, 35.1 min), and both caught their plant. A second read of the history Specs (`job-mutbtzmh-06e6d440`) followed the fold-in, because the release procedure had been folded in piece by piece, and a short third read follows its own fold-in, round 5. What the plants showed: the builders' own tests caught every code plant tried, and two candidate plants for the Protocol's copy were withdrawn for that reason. The plants that tested a reviewer sat where no gate reads: in taught text (the authoring skill teaching the key outside the marker, with every test passing) and in Spec prose (the deploy moved before the close of `all` in `historyHandoff`, with `check.py` and every test passing). So a plant goes in taught text, Spec prose or a citation, and a code plant is first tried against the tests. 67. The Pack page and `check.py` read the Protocol's data, not this corpus's copies of it (A2, A4). The page takes member order from the reader's Pack context and the next rung's unmet clauses and typed-dependency targets from `SpecContext.nextRungFailures`. It keeps its own meaning of the next rung, the rung above the stated one, and says nothing blocks it when the floor is above the stated rung. `check.py` sends every entry address outside the Specs to recipe 25 in one call and fails on any set recipe 26 reports; finding the addresses in files and naming each one's line stay this corpus's. The adopter's joins stay: the pinned pairs and the register. The anchor sites went when the Protocol gave the comment form (decision 60). A workaround goes when the Protocol gives the thing, and what the Protocol still lacks goes to `docs/feedback/sdp-feedback-01.md`. 68. A worktree only where two builds would race. The rulings of 2026-10-04: "No worktree unless two lanes would break each other's gates." In this unit one package had one: Q, the question key, whose build would have raced package G's on the Protocol's `dist/`. The other packages ran in the main checkout, two lanes at once where their files were disjoint. Decision 39 says how a worktree is set up when one is made, not that every lane gets one. -69. The owner's rulings of 2026-10-10 on the annotations arc, applied at the pin `f23e358` (`ecba393`). A reference runs one way: code answers to a design it follows or realizes in part, and a design that builds on existing code says so by its own relation to the Spec that code satisfies; the online rebuild's reference to the history rebuild came out, and so did a reference kept only for a `byFile` pair. Anchor targets name whole Specs, so the units that satisfy a Spec together realize every entry it promises, a pinned declaration ahead of its code included (`PLAN.md` 6.7 item 7). The pass over the twelve Specs the anchor check named, and `spec:command.receipt-table`, found in each a part no unit builds running through entries the code realizes, so their units reference them; `spec:kernel.outcome-model`, which its types and validators realize whole, is satisfied. A component satisfies its seam's design Spec or binds nothing its members bind. The layer and context mapping stands, with the owner's rules in `PLAN.md` 2.1, and `check.py` fails when a platform component uses a component of another context. `tests/pure/byfile-coverage.test.ts` reads its pairs from the anchors in the tree. +69. The owner's rulings of 2026-10-10 on the annotations arc, applied at the pin `f23e358` (`ecba393`). A reference runs one way: code answers to a design it follows or realizes in part, and a design that builds on existing code says so by its own relation to the Spec that code satisfies; the online rebuild's reference to the history rebuild came out, and so did a reference kept only for a `byFile` pair. Anchor targets name whole Specs, so the units that satisfy a Spec together realize every entry it promises, a pinned declaration ahead of its code included (`PLAN.md` 6.7 item 7). The pass over the twelve Specs the anchor check named, and `spec:command.receipt-table`, found in each a part no unit builds running through entries the code realizes, so their units reference them. A second read by `gpt-6.1-sol` found three more, whose units reference them too: `spec:application.parent-use-cases` (the business failure policy and the import command), `spec:application.projection-contract` (the history writer's callers) and `spec:kernel.outcome-model`, whose reserved codes the adapter's `invalidInput` contradicts. A component satisfies its seam's design Spec or binds nothing its members bind. The layer and context mapping stands, with the owner's rules in `PLAN.md` 2.1, and `check.py` fails when a platform component uses a component of another context. `tests/pure/byfile-coverage.test.ts` reads its pairs from the anchors in the tree. ## Owner queue @@ -560,7 +560,8 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - Retracted: the gap the passes' first round listed, `defineList` mapping saved state through `toDto` without the schema-version checks of `spec:context.queries#design.fnList`. The adopter review showed that `defineList` refuses a newer saved schema version through `metaOf` (`convex-test`), so no lead stands for it. 47. From the rulings of 2026-10-10. Each is a gap the pass found and did not fix. - - Splits by narrowing. The journal (baseline migration, stream rebuild), the tables, the persistence adapter and the context component (derived mapping, migrate on load, maintenance writer), the queries (journal inspection), and the receipts with their table (tombstones) each hold a part with its own trigger or step, but the part runs through entries the code realizes, mostly pinned declarations. A split narrows those entries to the code and moves the widening into a child Spec, as `spec:application.aggregate-projection` does; it changes realized Spec text, so it waits for a pass the main thread rules. + - Splits by narrowing. The journal (baseline migration, stream rebuild), the tables, the persistence adapter and the context component (derived mapping, migrate on load, maintenance writer), the queries (journal inspection), and the receipts and the receipt table (tombstones) each hold a part with its own trigger or step, but the part runs through entries the code realizes, mostly pinned declarations. A split narrows those entries to the code and moves the widening into a child Spec, as `spec:application.aggregate-projection` does; it changes realized Spec text, so it waits for a pass the main thread rules. + - Two Spec corrections, from the second read. The outcome model reserves three rejection codes for the adapter and gives every other code to a context, while the adapter's step 1 also raises the boundary's `invalidInput`, as `spec:context.persistence-adapter` states; either the model admits it or the adapter stops raising it. The projection contract's `callers` entry names the callers of the history writer that `spec:application.history-projection` holds. Until the main thread rules each, the code references the Spec. - Worked examples in the platform's Specs. `check.py` now shows that no platform component uses the example's components, but the platform's own Specs carry orders-inventory worked examples in Design entries: `ordersExample`, `parentPassThrough` and `parentGet` in `spec:context.queries`, `operationExample` and `parentCall` in `spec:context.context-component`, `contextCall` in `spec:command.command-pipeline`. Moving them to `spec:application.orders-inventory-example` would make the platform's design read without its example, as its code does. The reports behind leads 1 to 3 and 6 are outside the repository, because they quote a private repository. The project notes file named in `AGENTS.md` lists them, with the reports, briefs and rulings of S0. diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 67966bd..f435561 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -25,7 +25,7 @@ Start with the members and with what holds a member below its next rung: togethe | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| | [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 1 unit | none | 2 bound, 3 ahead, 3 without a pair | 4, none blocking | -| [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | none | 11 bound | 5, none blocking | +| [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 2 units | none | 11 bound | 5, none blocking | | [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | referenced by 2 units | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | referenced by 1 unit | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | | [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | @@ -424,7 +424,9 @@ projectOrderAllocationHistory( Inside the Pack it rests on [Read models](#3-read-models) by refines and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) by decidedBy. -**Code.** +**Code.** No implementation anchor binds it. + +**References.** 2 units reference this design. A reference says the code answers to the design without claiming to realize it, and it confers no delivery fact and moves no floor. - `impl:application.generation-registry.tables` at [`src/read-model/tables.ts` line 5](../../src/read-model/tables.ts#L5): the generations, progress, marker and tenant fill tables and rowConventions. Its role is schema. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:application.projection-contract` at [`src/read-model/projection.ts` line 3](../../src/read-model/projection.ts#L3): ReadModel, Projection and applyProjection. Its role is projection. It belongs to `component:platform.read-model`, in the application layer and the platform context. diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index 0980d3b..fbb6ce9 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -1,6 +1,6 @@ ## Now: anchors in the code they bind, under the rulings of 2026-10-10 -Until this arc, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design: an anchor can be written as a doc comment, code can name a design it answers to without claiming to build it, and an anchor can say what architectural part its code plays. The owner ruled on the arc on 2026-10-10, and all three of its decisions now state `ready`. This branch pins the Protocol at `f23e358` (`04a6aff`), the head that carries the rulings, and applies them (`ecba393`). +Until this arc, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design: an anchor can be written as a doc comment, code can name a design it answers to without claiming to build it, and an anchor can say what architectural part its code plays. The owner ruled on the arc on 2026-10-10, and all three of its decisions now state `ready`. This branch pins the Protocol at `f23e358` (`04a6aff`), the head that carries the rulings, and applies them (`ecba393`); a second read by `gpt-6.1-sol` checked that pass against the code, and its fold-in follows `ed4f97f`. **1. Anchors in the code they bind.** A comment-form anchor is a top-level `/** … */` block of reserved `@sdp` tags. The source carries it with no Protocol import, so the runtime pays nothing. The 22 implementation anchors that lived in nine test files are 46 units in `src/`, `example/` and `fixture/`, one per realizing file or site, beside 12 component anchors; the harness keeps its 18 constant-form anchors. No test file keeps an implementation anchor. The file is the binding grain of both forms: a block's line locates the anchor and names no declaration. The online rebuild, at the top of [`src/read-model/rebuild.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/rebuild.ts#L2): @@ -14,9 +14,9 @@ Until this arc, every implementation anchor of this corpus lived in a test. The */ ``` -**2. A reference runs one way.** A unit satisfies a Spec when it and the other units that satisfy it realize the whole Spec. A unit references a Spec when it answers to that design without claiming to realize it: it follows the design or realizes part of it, so a change to the design asks the code to follow. A reference confers no delivery fact and moves no floor. A design that builds on existing code says so by its own `dependsOn` or `refines` to the Spec the code satisfies, never by a reference from the code. So the online rebuild no longer references `spec:application.history-rebuild`, a design that builds on it; the history rebuild already depends on `spec:application.rebuild`. A reference kept only to give `byFile` an answer is gone too. The graph holds 43 `references` edges from 39 units, to 19 Specs. +**2. A reference runs one way.** A unit satisfies a Spec when it and the other units that satisfy it realize the whole Spec. A unit references a Spec when it answers to that design without claiming to realize it: it follows the design or realizes part of it, so a change to the design asks the code to follow. A reference confers no delivery fact and moves no floor. A design that builds on existing code says so by its own `dependsOn` or `refines` to the Spec the code satisfies, never by a reference from the code. So the online rebuild no longer references `spec:application.history-rebuild`, a design that builds on it; the history rebuild already depends on `spec:application.rebuild`. A reference kept only to give `byFile` an answer is gone too. The graph holds 49 `references` edges from 41 units, to 22 Specs. -**3. Whole Specs, honestly.** Anchor targets name whole Specs, so no unit satisfies a Spec while the Spec promises a part no unit builds, and a pinned declaration ahead of its code is such a part ([`design/PLAN.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/PLAN.md) 6.7 item 7). The rule, per Spec: list the entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. The pass checked the twelve Specs the anchor check named against the code, and found a thirteenth, `spec:command.receipt-table`. Each holds a part no unit builds, running through entries the code realizes, so none splits by moving entries, and its units now reference it: +**3. Whole Specs, honestly.** Anchor targets name whole Specs, so no unit satisfies a Spec while the Spec promises a part no unit builds, and a pinned declaration ahead of its code is such a part ([`design/PLAN.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/PLAN.md) 6.7 item 7). The rule, per Spec: list the entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. The pass checked the twelve Specs the anchor check named against the code and found a thirteenth, `spec:command.receipt-table`; the second read found two more among the Specs the pass had left satisfied. Each holds a part no unit builds, running through entries the code realizes, so moving entries leaves none of them whole, and its units now reference it: | Spec | What no unit builds | |---|---| @@ -33,8 +33,10 @@ Until this arc, every implementation anchor of this corpus lived in a test. The | `spec:application.generation-registry` | `sourceIndex` in the batch cursor | | `spec:application.rebuild` | history targets in the shared rebuild config | | `spec:application.orders-inventory-example` | the order allocation history bound to its commands, journal inspection | +| `spec:application.parent-use-cases` | the business failure policy (`carryOrReject`), the import command | +| `spec:application.projection-contract` | the history writer's callers in its `callers` entry | -`spec:kernel.outcome-model` went the other way: its types in `src/kernel/outcome.ts` and its validators in `src/context/outcome.ts`, which gained an anchor, realize it whole, so both satisfy it. 12 Specs carry `implemented`, down from 24, and each of them is whole. [`docs/feedback/sdp-feedback-01.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/docs/feedback/sdp-feedback-01.md) holds the table with the entries, the code and the reason for each Spec. +`spec:kernel.outcome-model` is referenced for another reason. Its types in `src/kernel/outcome.ts` and its validators in `src/context/outcome.ts`, which gained an anchor, are built, but the model reserves three rejection codes for the adapter and gives every other code to a context, while the adapter also raises the boundary's `invalidInput`, as `spec:context.persistence-adapter` states. Two Specs disagree and the code follows one, so both units reference the model until the main thread rules which side changes. 9 Specs carry `implemented`, down from 24. [`docs/feedback/sdp-feedback-01.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/docs/feedback/sdp-feedback-01.md) holds the table with the entries, the code and the reason for each Spec. **4. Components with an architectural layer and a context.** Twelve `component:` anchors declare the architecture where it is realized: three in each of the `adapter`, `application`, `domain` and `infrastructure` layers, with the contexts `platform` (7), `orders` (2), `inventory` (2) and `orders-inventory` (1), and `uses` between them. [`design/PLAN.md`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/PLAN.md) section 2.1 lists them with the owner's two rules. The layer rule: `domain` is business meaning with no runtime import; `application` coordinates a use case; `adapter` realizes a kernel or command contract against Convex; `edge` is transport in; `infrastructure` is a shared mechanism that owns no use case. The context rule: the platform is the key bounded context, with its own language; orders-inventory is the supporting context and development tool, the composition of the two business contexts it models; nothing in the platform's core carries orders-inventory specifics. A component satisfies its seam's design Spec or binds nothing its members bind: `component:platform.gate` satisfies the write pause it and its members realize whole, and the components whose seam is only partly built bind nothing. @@ -54,7 +56,7 @@ The Protocol's branch rules the arc through three decision Specs, and the owner ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-10 at `ecba393`; the commit after it changes only the feedback and state files. Re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-10 at the fold-in of the second read, the commit after `ed4f97f`. Re-run the commands rather than inherit these numbers. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -79,7 +81,7 @@ npx sdp q "$(awk '/^## 27\./{f=1} /^## 28\./{f=0} f' "$R" | awk '/^```js/{c=1; n { "found": true, "id": "pack:history-view", - "totals": { "members": 19, "withReferences": 9, "withImplementations": 3, "withVerifier": 7, "withBuildsOn": 11, "unbound": 7 }, + "totals": { "members": 19, "withReferences": 10, "withImplementations": 2, "withVerifier": 7, "withBuildsOn": 11, "unbound": 7 }, "rows": [ { "id": "spec:application.history-projection", @@ -88,7 +90,6 @@ npx sdp q "$(awk '/^## 27\./{f=1} /^## 28\./{f=0} f' "$R" | awk '/^```js/{c=1; n "implementedBy": [], "hasVerifier": false, "buildsOn": [ - { "id": "spec:application.projection-contract", "via": "dependsOn", "implementedBy": [{ "id": "impl:application.generation-registry.tables", "file": "src/read-model/tables.ts" }, { "id": "impl:application.projection-contract", "file": "src/read-model/projection.ts" }] }, { "id": "spec:context.event-envelope", "via": "dependsOn", "implementedBy": [{ "id": "impl:context.event-envelope", "file": "src/context/envelope.ts" }] } ] }, @@ -117,7 +118,7 @@ npm run check 243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 -architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 43 references edges from 39 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context +architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 49 references edges from 41 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context … Pack pages current: 1 of 1 protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz @@ -133,4 +134,4 @@ The rulings of 2026-10-10 closed the layers, the contexts, `example/` as archite - **The capability steps' name.** "Layer" names one of the seven steps of capability in this corpus and, as the Protocol's `layer`, a component's architectural layer; `CONTEXT.md` now writes the second in full. Renaming the steps, with "stage" as the candidate, is the one-word-one-meaning answer. It touches a Spec identity (`spec:platform.layers-and-profiles`), 143 numbered uses across 65 carriers and the decisions document this corpus follows, so the owner makes it deliberately. -Two leads go to a later pass (`design/STATE.md`, lead 47): six of the thirteen referenced Specs hold a part with its own trigger or step that could split once its pinned declarations are narrowed to the code, and the platform's own Specs still carry orders-inventory worked examples in their Design entries, though its code uses nothing of the example. +Three leads go to a later pass (`design/STATE.md`, lead 47): seven of the sixteen Specs the pass and the second read moved hold a part with its own trigger or step that could split once its pinned declarations are narrowed to the code; two Spec corrections wait for the main thread, the adapter's `invalidInput` against the outcome model's reserved codes and the history writer's callers in the projection contract; and the platform's own Specs still carry orders-inventory worked examples in their Design entries, though its code uses nothing of the example. diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index c32b926..efc0832 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -6,13 +6,13 @@ Every number here was measured on this corpus on the date of its section. Re-run ## 2026-10-10, the rulings at `f23e358` -The owner ruled on the annotations arc on 2026-10-10, ten rulings from three advisors' answers to ten questions, with this guidance: prefer clean solutions; the amount of work never decides; the platform is the key context, orders-inventory is a supporting context and a development tool, and nothing in the platform's core carries orders-inventory specifics. The Protocol's branch `feature/annotations-v0` carries them at `f23e358`. The pin moved from `da56a34` to `f23e358` (`04a6aff`), packed from a clean clone as before, and on the pin alone nothing this corpus reads moved: 243 Specs, 428 nodes, 1,501 edges, 12 listed warnings. Then the corpus applied the rulings (`ecba393`). Every number below was measured after that commit. +The owner ruled on the annotations arc on 2026-10-10, ten rulings from three advisors' answers to ten questions, with this guidance: prefer clean solutions; the amount of work never decides; the platform is the key context, orders-inventory is a supporting context and a development tool, and nothing in the platform's core carries orders-inventory specifics. The Protocol's branch `feature/annotations-v0` carries them at `f23e358`. The pin moved from `da56a34` to `f23e358` (`04a6aff`), packed from a clean clone as before, and on the pin alone nothing this corpus reads moved: 243 Specs, 428 nodes, 1,501 edges, 12 listed warnings. Then the corpus applied the rulings (`ecba393`). A second read by `gpt-6.1-sol` checked the pass against the code, and its fold-in moved three more Specs to references, named below. Every number below was measured after that fold-in. - **A reference runs one way.** A `references` edge from code says the code answers to a design: the unit follows it or realizes part of it, so a change to the design asks the code to follow. A design that builds on existing code says so by its own `dependsOn` or `refines`, never by a reference from the code. The online rebuild's reference to `spec:application.history-rebuild` came out; the history rebuild already depends on `spec:application.rebuild`. The reference from `src/kernel/outcome.ts` to `spec:kernel.decider-contract` came out too: its only reason was a `byFile` pair, and an edge kept for a test, a count or a `byFile` answer goes. The read-model tables keep their reference to `spec:application.aggregate-projection`, because `src/read-model/tables.ts` holds the aggregate form's `projectionMarkers` table that the Spec pins: the code realizes part of that design, the meaning the ruling keeps. The fixture's six depot units, the gate's operator entries, the allocation history's fold and the kernel, audit and operations components keep theirs for the same reason. Recipe 27 now adds a derived "builds on" column: for each member, the implemented Specs it depends on or refines, with their units. -- **The outcome model is satisfied.** `src/kernel/outcome.ts` holds the outcome model's types, and `src/context/outcome.ts` its four validators, which the kernel may not hold. The first is now `impl:kernel.outcome-model`, renamed from `impl:kernel.decider-contract.outcome`, and the second gains the anchor `impl:kernel.outcome-model.validators`; both satisfy `spec:kernel.outcome-model`. The model's other entries assign work to other Specs, which own it: the adapter raises the three reserved codes in the model's throw shape as its own steps 1, 3 and 5 state, and the boundary owns the transient refusal. -- **Anchor targets name whole Specs.** A unit satisfies a Spec only when the units that satisfy it together realize every entry it promises. `design/PLAN.md` section 6.7 item 7 no longer exempts a pinned declaration that is ahead of its code: a widened pin is a promise the code has not built. The pass below applied the ruling's rule to each Spec: list the Design entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec that refines the parent, moving the entries verbatim, and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. Astra's gap list was the input, and each gap was checked against the code. +- **The outcome model is referenced.** `src/kernel/outcome.ts` holds the outcome model's types, and `src/context/outcome.ts` its four validators, which the kernel may not hold. The first is now `impl:kernel.outcome-model`, renamed from `impl:kernel.decider-contract.outcome`, and the second gains the anchor `impl:kernel.outcome-model.validators`. The pass had both satisfy `spec:kernel.outcome-model`. The second read found that the model reserves three rejection codes for the adapter and gives every other code to a context, while the adapter's step 1 also raises `invalidInput`, a platform code of the outcome boundary, as `spec:context.persistence-adapter` states. The code follows the adapter's Spec, so the two Specs disagree, and both units reference the model until the main thread rules which side changes. +- **Anchor targets name whole Specs.** A unit satisfies a Spec only when the units that satisfy it together realize every entry it promises. `design/PLAN.md` section 6.7 item 7 no longer exempts a pinned declaration that is ahead of its code: a widened pin is a promise the code has not built. The pass below applied the ruling's rule to each Spec: list the Design entries no satisfying unit realizes; none, keep `satisfies`; a coherent part with its own trigger or step, split it into a child Spec that refines the parent, moving the entries verbatim, and keep `satisfies` on the parent; otherwise write `references` until the code realizes what the Spec promises. Astra's gap list was the input, and each gap was checked against the code. The second read found two more Specs the pass had left satisfied with a part no unit builds, the parent use cases and the projection contract. - **Components.** A component satisfies its seam's design Spec or binds nothing its members bind. `component:platform.context`, `component:platform.command`, `component:platform.read-model` and `component:example.parent` referenced the Spec their members satisfied; their members now reference it and the component binds nothing. `component:example.orders-context` and `component:example.inventory-context` satisfied the example's Spec and bind nothing now. `component:platform.gate` still satisfies `spec:application.write-pause`, which it and its three members realize whole. The kernel, audit and operations components keep their references, to Specs no member binds. -- **The counts.** The graph derives 180 anchors into 429 nodes and 1,497 edges; validate reports 0 errors and the same 12 listed warnings. 12 Specs carry `implemented`, down from 24: the 12 of the pass and `spec:command.receipt-table` left it, and `spec:kernel.outcome-model` joined. There are 43 `references` edges from 39 units, to 19 Specs. Recipe 27 over `pack:history-view` gives 19 members: 9 referenced, 3 implemented, 7 with a verifier, 11 that build on implemented code, 7 with none of the first three. +- **The counts.** The graph derives 180 anchors into 429 nodes and 1,497 edges; validate reports 0 errors and the same 12 listed warnings. 9 Specs carry `implemented`, down from 24: the 12 of the pass, `spec:command.receipt-table`, `spec:application.parent-use-cases` and `spec:application.projection-contract` left it. There are 49 `references` edges from 41 units, to 22 Specs. Recipe 27 over `pack:history-view` gives 19 members: 10 referenced, 2 implemented, 7 with a verifier, 11 that build on implemented code, 7 with none of the first three. - **Layers, contexts and `example/`.** The mapping stands as it was. `design/PLAN.md` section 2.1 lists the twelve components with the layer rule and the context rule in the rulings' words. `check.py` now fails when a component in the context `platform` has a `uses` edge to a component in another context, each end resolved to its component directly or through `memberOf`; its architecture line reads "platform isolation: 7 platform components, 21 uses edges from them, 0 into another context". `example/` keeps its five components and `fixture/` has none. - **The word layer.** `CONTEXT.md` adds "architectural layer", the Protocol's `layer` on a component anchor, always written in full, and the Layer row avoids it. Renaming the capability steps is the owner's (below). - **The coverage test.** `tests/pure/byfile-coverage.test.ts` no longer keeps the deleted sidecar's list. It reads the anchors in `src/`, `example/`, `fixture/` and `harness/`, comment form and constant form, checks that they are the code units the graph holds there, and asserts that `byFile` names, for every anchored file, each unit and each Spec it satisfies or references. @@ -35,9 +35,11 @@ The owner ruled on the annotations arc on 2026-10-10, ten rulings from three adv | `spec:application.generation-registry` | `sourceIndex` in `validatorBatchCursor`, and `tableGenerationProgress` through it. | references | Both pins are ahead of the code. | | `spec:application.rebuild` | History targets in `typeRebuildConfig`, `fnBatchSizeFor` and `fnResumeChain`, and the history compatibility check its shared entries name. | references | Ahead pairs in shared entries. The paused path itself already has its own Spec, `spec:application.history-rebuild`. | | `spec:application.orders-inventory-example` | The order allocation history bound to `PlaceOrder` and `CancelOrder`, and journal inspection. The fold in `example/domain/orderAllocationHistory.ts` is bound to no command. | references | The Spec has no Design section; its promises are model terms, and `PlaceOrder`, the `CancelOrder` declaration and the order allocation history carry the binding in terms the code realizes otherwise. The fold now references this Spec too, for the part it realizes. | -| `spec:kernel.outcome-model` | Nothing. | satisfies, by two units | The types and the validators are built, and the entries that assign work to the adapter and the boundary are built there. | +| `spec:application.parent-use-cases`, found by the second read | The business failure policy (`typeBusinessFailurePolicy`, `fnCarryOrReject` and the flow steps that pass each context call through it) and the import command (`tableImports`, its indexes and `limitImportBatch`). `example/convex/ordering.ts` declares no business failure and throws a plain error on one, and no code writes an import row. | references | The import command has its own trigger and its entries could move verbatim, but the policy runs through the flows the code realizes, so a split alone leaves the parent partial. | +| `spec:application.projection-contract`, found by the second read | The history writer's callers in `callers`: step 9 and the history batches calling `applyHistoryProjection`. `src/read-model/write.ts` and the rebuild call only `applyProjection`. | references | The same missing path that moved the pipeline and the read models, stated in the shared `callers` entry with no step of its own. | +| `spec:kernel.outcome-model`, found by the second read | No entry is unbuilt, but the code contradicts `rejectionCodeContextOwned`: the adapter's step 1 raises `invalidInput`, which is neither one of the model's three reserved codes nor a context's own. | references, by two units | The pass had the two units satisfy it. The adapter follows `spec:context.persistence-adapter`, so the two Specs disagree, and the main thread rules which side changes. | -No Spec of the pass split. Six have a part with its own trigger or step: the journal (baseline migration, stream rebuild), the tables, the adapter and the context component (the derived mapping, migrate on load, the maintenance writer), the queries (journal inspection), and the receipts with their table (tombstones). In each the part runs through entries the code realizes, mostly pinned declarations, so a split needs those entries narrowed to the code and the widening moved into the child, the pattern `spec:application.aggregate-projection` uses. That is a change to realized Spec text, beyond moving entries verbatim, so it waits for a pass the main thread rules. +No Spec of the pass split. Seven have a part with its own trigger or step: the journal (baseline migration, stream rebuild), the tables, the adapter and the context component (the derived mapping, migrate on load, the maintenance writer), the queries (journal inspection), and the receipts and the receipt table (tombstones). In each the part runs through entries the code realizes, mostly pinned declarations, so a split needs those entries narrowed to the code and the widening moved into the child, the pattern `spec:application.aggregate-projection` uses. That is a change to realized Spec text, beyond moving entries verbatim, so it waits for a pass the main thread rules. The parent use cases' import command could move verbatim, but the parent would keep the unbuilt policy. ### What the owner ruled, and what remains @@ -47,7 +49,8 @@ One owner item remains: renaming the capability steps to "stage". "Layer" names ### What the pass leaves -- **Splits by narrowing.** The six Specs above, if the main thread rules a pass for them. +- **Splits by narrowing.** The seven Specs above, if the main thread rules a pass for them. +- **Two Spec corrections.** The outcome model and the persistence adapter disagree on the adapter's rejection codes: either `invalidInput` joins the codes the model lets the adapter raise, or the adapter stops raising it. The projection contract's `callers` entry names the callers of the history writer, which `spec:application.history-projection` holds; moving that clause there is a correction to realized Spec text. The main thread rules each; until then the code references the Spec. - **Worked examples in the platform's Specs.** The isolation check reads code. The platform's own Specs still carry orders-inventory worked examples in their Design entries, such as `ordersExample`, `parentPassThrough` and `parentGet` in `spec:context.queries`, `operationExample` and `parentCall` in `spec:context.context-component`, and `contextCall` in `spec:command.command-pipeline`. Moving them to `spec:application.orders-inventory-example` would make the platform's design read without the example, as its code now does. ## 2026-10-09, anchors in the source at `da56a34` diff --git a/example/convex/ordering.ts b/example/convex/ordering.ts index c21cffa..ce7ef8d 100644 --- a/example/convex/ordering.ts +++ b/example/convex/ordering.ts @@ -8,8 +8,7 @@ /** * @sdpAnchor impl:application.parent-use-cases * @sdpLabel PlaceOrder and CancelOrder over Orders and then Inventory - * @sdpSatisfies spec:application.parent-use-cases - * @sdpReferences spec:application.orders-inventory-example + * @sdpReferences spec:application.parent-use-cases, spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole use-case */ diff --git a/example/convex/receiving.ts b/example/convex/receiving.ts index 55ac0ac..ffff9d7 100644 --- a/example/convex/receiving.ts +++ b/example/convex/receiving.ts @@ -4,8 +4,7 @@ /** * @sdpAnchor impl:application.parent-use-cases.receiving * @sdpLabel ReceiveStock - * @sdpSatisfies spec:application.parent-use-cases - * @sdpReferences spec:application.orders-inventory-example + * @sdpReferences spec:application.parent-use-cases, spec:application.orders-inventory-example * @sdpComponent component:example.parent * @sdpRole use-case */ diff --git a/src/context/outcome.ts b/src/context/outcome.ts index 36f8061..7168149 100644 --- a/src/context/outcome.ts +++ b/src/context/outcome.ts @@ -4,8 +4,7 @@ /** * @sdpAnchor impl:kernel.outcome-model.validators * @sdpLabel the outcome model's validators at the context boundary, and the operation outcome's - * @sdpSatisfies spec:kernel.outcome-model - * @sdpReferences spec:context.persistence-adapter + * @sdpReferences spec:kernel.outcome-model, spec:context.persistence-adapter * @sdpComponent component:platform.context * @sdpRole contract */ diff --git a/src/kernel/outcome.ts b/src/kernel/outcome.ts index 4f7aeab..dbc983d 100644 --- a/src/kernel/outcome.ts +++ b/src/kernel/outcome.ts @@ -2,7 +2,7 @@ /** * @sdpAnchor impl:kernel.outcome-model * @sdpLabel the outcome model's types - * @sdpSatisfies spec:kernel.outcome-model + * @sdpReferences spec:kernel.outcome-model * @sdpComponent component:platform.kernel * @sdpRole contract */ diff --git a/src/read-model/projection.ts b/src/read-model/projection.ts index fc62efb..caf8c04 100644 --- a/src/read-model/projection.ts +++ b/src/read-model/projection.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor impl:application.projection-contract * @sdpLabel ReadModel, Projection and applyProjection - * @sdpSatisfies spec:application.projection-contract + * @sdpReferences spec:application.projection-contract * @sdpComponent component:platform.read-model * @sdpRole projection */ diff --git a/src/read-model/tables.ts b/src/read-model/tables.ts index d23c0f9..62a8444 100644 --- a/src/read-model/tables.ts +++ b/src/read-model/tables.ts @@ -5,8 +5,7 @@ /** * @sdpAnchor impl:application.generation-registry.tables * @sdpLabel the generations, progress, marker and tenant fill tables and rowConventions - * @sdpSatisfies spec:application.projection-contract - * @sdpReferences spec:application.generation-registry, spec:application.aggregate-projection + * @sdpReferences spec:application.projection-contract, spec:application.generation-registry, spec:application.aggregate-projection * @sdpComponent component:platform.read-model * @sdpRole schema */ From 4a5b653f8d15d8cc83b0d6259f92e019f7ac2475 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 11:17:52 +0200 Subject: [PATCH 53/60] fix(pinned): defaults before required parameters, and scoped names Two defects of the pinned-declaration emitter, found by the review of 2026-10-10 (F4 and F5), neither of which the current corpus reaches. A call signature with a default before a required parameter emitted an optional parameter ahead of a required one, which TypeScript refuses (TS1016). Such a default now keeps its parameter required with a type that admits undefined, `limit: number | undefined /* = 100 */`; a trailing default stays optional. A function, constructor or conditional type is grouped before `| undefined`. The names a declaration uses were filtered against every parameter and type parameter in the whole declaration, so a nested `` hid an outer `Outcome` the module needs. Names now resolve against a lexical scope chain: a parameter or type parameter is in scope inside the node that declares it and nowhere else, with a mapped type's key and a conditional type's inferred names in their own nodes. The pure parts are exported, the script's main runs only when the file is the entry, and tests/pure/pinned.test.ts compiles each emitted text with the TypeScript API and shows the outer dependency pulled in. The regenerated pinned module is byte-identical. Co-Authored-By: Claude Fable 5.1 --- scripts/pinned.mjs | 327 +++++++++++++++++++++++--------------- tests/pure/pinned.test.ts | 184 +++++++++++++++++++++ 2 files changed, 386 insertions(+), 125 deletions(-) create mode 100644 tests/pure/pinned.test.ts diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index 509892c..975e38c 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -8,15 +8,17 @@ // This project's policy, by the prefix of the entry's key: `type*` opening with `type ` or // `interface ` and `validator*` opening with `const ` are exported as written; `fn*` that is a call // signature `name<...>(...): R` becomes `export declare function`, where a default value makes its -// parameter optional; `table*` of the form `name: defineTable(...)` is a member of +// parameter optional, or, when a required parameter follows, keeps it required with a type that +// admits `undefined`; `table*` of the form `name: defineTable(...)` is a member of // `export const tables`, and each `index*` of the form `.index(...)` is chained onto the table // entry its Spec wrote last before it. Every other entry is skipped and counted by its prefix on // stderr. Each pin of another Spec that a declaration uses is pulled in, marked. A name pinned in two // entries, in any form, is refused, as is a preamble name a Spec pins. -// Exit 0: written. 2: it cannot emit. +// Exit 0: written. 2: it cannot emit. The pure parts are exported for tests/pure/pinned.test.ts. import { execFileSync } from "node:child_process"; import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; -import { join } from "node:path"; +import { join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; import { parseArgs } from "node:util"; import * as prettier from "prettier"; import ts from "typescript"; @@ -106,9 +108,25 @@ function recipe24() { const parse = (text) => ts.createSourceFile("pin.ts", text, ts.ScriptTarget.Latest, true); +const children = (node) => { + const list = []; + ts.forEachChild(node, (child) => { + list.push(child); + }); + return list; +}; -// A call signature parses alone as one bodiless function declaration with a return type. -function callSignature(span) { +// A type that `| undefined` would otherwise bind inside. +const grouped = (type) => + ts.isFunctionTypeNode(type) || + ts.isConstructorTypeNode(type) || + ts.isConditionalTypeNode(type); + +// A call signature parses alone as one bodiless function declaration with a return type. A default +// value becomes a comment on its parameter: a trailing default makes the parameter optional, and a +// default before a required parameter, which no optional parameter may precede, keeps it required +// with a type that admits `undefined`. +export function callSignature(span) { if (!/^[\w$]+\s*[<(]/.test(span)) return null; const file = parse(`export declare function ${span}`); const [statement] = file.statements; @@ -120,10 +138,25 @@ function callSignature(span) { statement.type === undefined ) return null; + const required = (parameter) => + parameter.initializer === undefined && + parameter.questionToken === undefined && + parameter.dotDotDotToken === undefined; + const parameters = [...statement.parameters]; let text = file.text; - for (const { name, type, initializer } of [...statement.parameters].reverse()) - if (initializer !== undefined) - text = `${text.slice(0, name.end)}?${text.slice(name.end, (type ?? name).end)} /* = ${initializer.getText(file)} */${text.slice(initializer.end)}`; + for (const [at, { name, type, initializer }] of [ + ...parameters.entries(), + ].reverse()) { + if (initializer === undefined) continue; + const beforeRequired = parameters.slice(at + 1).some(required); + const annotation = + type === undefined + ? "" + : beforeRequired + ? `: ${grouped(type) ? `(${type.getText(file)})` : type.getText(file)} | undefined` + : text.slice(name.end, type.end); + text = `${text.slice(0, name.end)}${beforeRequired ? "" : "?"}${annotation} /* = ${initializer.getText(file)} */${text.slice(initializer.end)}`; + } return { name: statement.name.text, text }; } @@ -132,7 +165,7 @@ const exported = { type: [/^(?:type|interface)\s+([\w$]+)/, "type"], validator: [/^const\s+([\w$]+)/, "value"], }; -function declarationOf(row) { +export function declarationOf(row) { const prefix = /^[a-z]+/.exec(row.key)[0]; const span = row.declaration.trim(); const base = { ...row, prefix, address: `${row.spec}#design.${row.key}` }; @@ -153,20 +186,40 @@ function declarationOf(row) { return { ...base, kind: null }; } +// The names a node declares for what is inside it: its parameters and type parameters, a mapped +// type's key, and the type parameters a conditional type infers in its extends clause (a nested +// conditional type's are its own). +function declaredBy(node) { + const named = (declaration) => + ts.isIdentifier(declaration.name) ? [declaration.name.text] : []; + const inferred = (type) => + ts.isConditionalTypeNode(type) + ? [] + : [ + ...(ts.isInferTypeNode(type) ? named(type.typeParameter) : []), + ...children(type).flatMap(inferred), + ]; + return [ + ...(ts.isMappedTypeNode(node) ? named(node.typeParameter) : []), + ...(node.typeParameters ?? []).flatMap(named), + ...(node.parameters ?? []).flatMap(named), + ...(ts.isConditionalTypeNode(node) ? inferred(node.extendsType) : []), + ]; +} + // The names a declaration uses: identifiers that are not a property, a member, what is declared, or -// one of its parameters or type parameters. -function namesUsedBy(declaration) { - const own = new Set([declaration.name]); +// a name in scope. A parameter or type parameter is in scope inside the node that declares it and +// nowhere else, so a nested `` hides no outer `Outcome`. +export function namesUsedBy(declaration) { const used = new Set(); - const visit = (node) => { + const visit = (node, scope) => { + const declared = declaredBy(node); + const inner = + declared.length === 0 ? scope : new Set([...scope, ...declared]); const parent = node.parent; if ( - (ts.isTypeParameterDeclaration(node) || ts.isParameter(node)) && - ts.isIdentifier(node.name) - ) - own.add(node.name.text); - else if ( ts.isIdentifier(node) && + !inner.has(node.text) && (ts.isShorthandPropertyAssignment(parent) || (ts.isPropertyAccessExpression(parent) ? parent.expression === node @@ -175,7 +228,7 @@ function namesUsedBy(declaration) { : parent.name !== node)) ) used.add(node.text); - ts.forEachChild(node, visit); + for (const child of children(node)) visit(child, inner); }; visit( parse( @@ -183,121 +236,145 @@ function namesUsedBy(declaration) { ? `const tables = { ${declaration.text} };` : declaration.text, ), + new Set([declaration.name]), ); - return [...used].filter((name) => !own.has(name)); + return [...used]; } -const { values: options } = parseArgs({ - options: { pack: { type: "string" }, name: { type: "string" } }, -}); -if (options.pack === undefined) cannot("name the Pack: --pack "); -const name = options.name ?? options.pack.replace(/^pack:/, ""); -const scope = query( - `return g.packContext(${JSON.stringify(options.pack)})?.members.map((member) => member.id) ?? null;`, -); -if (scope === null) cannot(`the graph has no ${options.pack}`); - -const all = query(recipe24()).rows.map(declarationOf); -let table; -for (const row of all) - if (row.kind === "table") table = row; - else if (row.kind === "index" && table?.spec === row.spec) - table.indexes.push(row); - else if (row.kind === "index") row.kind = null; -const pinnedBy = Map.groupBy( - all.filter((row) => row.kind === "type" || row.kind === "value"), - (row) => row.name, -); -const addresses = (pins) => pins.map((pin) => pin.address).join(" and "); -for (const [twice, pins] of pinnedBy) - if (pins.length > 1) - cannot(`${twice} is pinned in two entries, ${addresses(pins)}`); -for (const provided of ["MutationCtx", "QueryCtx", "Id", ...Object.keys(gaps)]) - if (pinnedBy.has(provided)) - cannot( - `the preamble declares ${provided}, which ${addresses(pinnedBy.get(provided))} pins: take it out of the preamble`, - ); - -// The scope's own entries, then the pin of each name they use that another Spec pins. -const own = all.filter((row) => scope.includes(row.spec)); -const emitted = own.filter((row) => row.kind !== null && row.kind !== "index"); -const gapUses = new Map(); -for (let at = 0; at < emitted.length; at++) { - const { address } = emitted[at]; - for (const used of namesUsedBy(emitted[at])) { - if (used in gaps) - gapUses.set(used, [...(gapUses.get(used) ?? []), address]); - const [pin] = pinnedBy.get(used) ?? []; - if (pin !== undefined && !emitted.includes(pin)) - emitted.push(Object.assign(pin, { why: `${address} uses ${used}` })); +// The scope's own entries, then the pin of each name they use that another Spec pins, marked with +// the first address that uses it; and each name used that no Spec pins, with the addresses that use +// it. +export function pulledIn(own, pinnedBy) { + const emitted = own.filter( + (row) => row.kind !== null && row.kind !== "index", + ); + const gapUses = new Map(); + for (let at = 0; at < emitted.length; at++) { + const { address } = emitted[at]; + for (const used of namesUsedBy(emitted[at])) { + if (used in gaps) + gapUses.set(used, [...(gapUses.get(used) ?? []), address]); + const [pin] = pinnedBy.get(used) ?? []; + if (pin !== undefined && !emitted.includes(pin)) + emitted.push(Object.assign(pin, { why: `${address} uses ${used}` })); + } } + return { emitted, gapUses }; } -// A value is declared after the values it uses. -const values = []; -const place = (declaration, path = new Set()) => { - if (values.includes(declaration) || path.has(declaration)) return; - path.add(declaration); - for (const used of namesUsedBy(declaration)) - for (const pin of pinnedBy.get(used) ?? []) - if (pin.kind === "value") place(pin, path); - values.push(declaration); -}; -emitted.filter((row) => row.kind === "value").forEach((row) => place(row)); +async function main(args = process.argv.slice(2)) { + const { values: options } = parseArgs({ + args, + options: { pack: { type: "string" }, name: { type: "string" } }, + }); + if (options.pack === undefined) cannot("name the Pack: --pack "); + const name = options.name ?? options.pack.replace(/^pack:/, ""); + const scope = query( + `return g.packContext(${JSON.stringify(options.pack)})?.members.map((member) => member.id) ?? null;`, + ); + if (scope === null) cannot(`the graph has no ${options.pack}`); -const comment = (row) => - `// ${row.address}${row.why === undefined ? "" : ` (pulled in: ${row.why})`}`; -const block = (rows) => rows.flatMap((row) => [comment(row), row.text]); -const member = (table) => - [...block([table]), ...block(table.indexes).map((line) => ` ${line}`)].map( - (line, at, lines) => ` ${line}${at === lines.length - 1 ? "," : ""}`, + const all = query(recipe24()).rows.map(declarationOf); + let table; + for (const row of all) + if (row.kind === "table") table = row; + else if (row.kind === "index" && table?.spec === row.spec) + table.indexes.push(row); + else if (row.kind === "index") row.kind = null; + const pinnedBy = Map.groupBy( + all.filter((row) => row.kind === "type" || row.kind === "value"), + (row) => row.name, ); -const lines = [ - `// The pinned declarations of ${options.pack}, emitted by scripts/pinned.mjs from recipe 24 of the`, - "// pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each declaration", - "// follows the address of its Design entry.", - preamble, - "", - "// Used by the design and pinned by no Spec. Where the code declares one, its declaration stands in.", - ...[...gapUses.keys()].sort().flatMap((gap) => { - const skippedPin = all.find( - (row) => row.kind === null && row.declaration.startsWith(`${gap} =`), + const addresses = (pins) => pins.map((pin) => pin.address).join(" and "); + for (const [twice, pins] of pinnedBy) + if (pins.length > 1) + cannot(`${twice} is pinned in two entries, ${addresses(pins)}`); + for (const provided of [ + "MutationCtx", + "QueryCtx", + "Id", + ...Object.keys(gaps), + ]) + if (pinnedBy.has(provided)) + cannot( + `the preamble declares ${provided}, which ${addresses(pinnedBy.get(provided))} pins: take it out of the preamble`, + ); + + const own = all.filter((row) => scope.includes(row.spec)); + const { emitted, gapUses } = pulledIn(own, pinnedBy); + + // A value is declared after the values it uses. + const values = []; + const place = (declaration, path = new Set()) => { + if (values.includes(declaration) || path.has(declaration)) return; + path.add(declaration); + for (const used of namesUsedBy(declaration)) + for (const pin of pinnedBy.get(used) ?? []) + if (pin.kind === "value") place(pin, path); + values.push(declaration); + }; + emitted.filter((row) => row.kind === "value").forEach((row) => place(row)); + + const comment = (row) => + `// ${row.address}${row.why === undefined ? "" : ` (pulled in: ${row.why})`}`; + const block = (rows) => rows.flatMap((row) => [comment(row), row.text]); + const member = (table) => + [...block([table]), ...block(table.indexes).map((line) => ` ${line}`)].map( + (line, at, lines) => ` ${line}${at === lines.length - 1 ? "," : ""}`, ); - return [ - `// ${gap}: used by ${[...new Set(gapUses.get(gap))].join(", ")}.${skippedPin === undefined ? "" : ` ${skippedPin.address} opens with it, without const.`}`, - gapDeclaration(gap), - ]; - }), - "", - ...block(emitted.filter((row) => row.kind === "type")), - ...block(values), - "export const tables = {", - ...emitted.filter((row) => row.kind === "table").flatMap(member), - "};", -]; -const outputPath = join(root, "generated/pinned", `${name}.ts`); -let formatted; -try { - const config = JSON.parse( - readFileSync(join(root, ".prettierrc.json"), "utf8"), + const lines = [ + `// The pinned declarations of ${options.pack}, emitted by scripts/pinned.mjs from recipe 24 of the`, + "// pinned Protocol. Never edit it: change the Spec, then run `npm run sdp:build`. Each declaration", + "// follows the address of its Design entry.", + preamble, + "", + "// Used by the design and pinned by no Spec. Where the code declares one, its declaration stands in.", + ...[...gapUses.keys()].sort().flatMap((gap) => { + const skippedPin = all.find( + (row) => row.kind === null && row.declaration.startsWith(`${gap} =`), + ); + return [ + `// ${gap}: used by ${[...new Set(gapUses.get(gap))].join(", ")}.${skippedPin === undefined ? "" : ` ${skippedPin.address} opens with it, without const.`}`, + gapDeclaration(gap), + ]; + }), + "", + ...block(emitted.filter((row) => row.kind === "type")), + ...block(values), + "export const tables = {", + ...emitted.filter((row) => row.kind === "table").flatMap(member), + "};", + ]; + const outputPath = join(root, "generated/pinned", `${name}.ts`); + let formatted; + try { + const config = JSON.parse( + readFileSync(join(root, ".prettierrc.json"), "utf8"), + ); + formatted = await prettier.format(`${lines.join("\n")}\n`, { + ...config, + filepath: outputPath, + }); + } catch (error) { + cannot(`${outputPath}: Prettier failed: ${error.message}`); + } + mkdirSync(join(root, "generated/pinned"), { recursive: true }); + writeFileSync(outputPath, formatted); + + const counted = (rows) => + [...Map.groupBy(rows, (row) => row.prefix)] + .sort(([left], [right]) => left.localeCompare(right)) + .map(([prefix, group]) => `${prefix} ${group.length}`) + .join(", "); + const ownEmitted = own.filter((row) => row.kind !== null); + const skipped = own.filter((row) => row.kind === null); + console.error( + `pinned: generated/pinned/${name}.ts · ${scope.length} Specs · emitted ${ownEmitted.length} (${counted(ownEmitted)}) and ${emitted.length - emitted.filter((row) => row.why === undefined).length} pulled in · skipped ${skipped.length} (${counted(skipped)}) · ${gapUses.size} names pinned by no Spec`, ); - formatted = await prettier.format(`${lines.join("\n")}\n`, { - ...config, - filepath: outputPath, - }); -} catch (error) { - cannot(`${outputPath}: Prettier failed: ${error.message}`); } -mkdirSync(join(root, "generated/pinned"), { recursive: true }); -writeFileSync(outputPath, formatted); -const counted = (rows) => - [...Map.groupBy(rows, (row) => row.prefix)] - .sort(([left], [right]) => left.localeCompare(right)) - .map(([prefix, group]) => `${prefix} ${group.length}`) - .join(", "); -const ownEmitted = own.filter((row) => row.kind !== null); -const skipped = own.filter((row) => row.kind === null); -console.error( - `pinned: generated/pinned/${name}.ts · ${scope.length} Specs · emitted ${ownEmitted.length} (${counted(ownEmitted)}) and ${emitted.length - emitted.filter((row) => row.why === undefined).length} pulled in · skipped ${skipped.length} (${counted(skipped)}) · ${gapUses.size} names pinned by no Spec`, -); +if ( + process.argv[1] !== undefined && + resolve(process.argv[1]) === fileURLToPath(import.meta.url) +) + await main(); diff --git a/tests/pure/pinned.test.ts b/tests/pure/pinned.test.ts new file mode 100644 index 0000000..cafd69f --- /dev/null +++ b/tests/pure/pinned.test.ts @@ -0,0 +1,184 @@ +// scripts/pinned.mjs, the emitter of a Pack's pinned module: its pure parts. A call signature with +// a default before a required parameter emits a required parameter whose type admits undefined, +// since TypeScript refuses a required parameter after an optional one (TS1016). A parameter or +// type parameter is in scope inside the node that declares it and nowhere else, so a name a +// declaration uses outside that node is used, and the pin of another Spec is pulled in. Each +// emitted text is compiled with the TypeScript API. +import ts from "typescript"; +import { expect, test } from "vitest"; + +type Row = { spec: string; key: string; declaration: string }; +type Declaration = Row & { + prefix: string; + address: string; + kind: "type" | "value" | "table" | "index" | null; + name: string; + text: string; + why?: string; +}; +type Pinned = { + callSignature(span: string): { name: string; text: string } | null; + declarationOf(row: Row): Declaration; + namesUsedBy(declaration: Declaration): string[]; + pulledIn( + own: Declaration[], + pinnedBy: Map, + ): { emitted: Declaration[]; gapUses: Map }; +}; +// The emitter is a script with no declaration file, so it is loaded by URL and typed here. +const pinned = (await import( + new URL("../../scripts/pinned.mjs", import.meta.url).href +)) as Pinned; + +// The diagnostics of one module compiled alone under this repository's strictness, each as +// `TS: `. The library files are read once. +const options: ts.CompilerOptions = { + strict: true, + exactOptionalPropertyTypes: true, + noUncheckedIndexedAccess: true, + target: ts.ScriptTarget.ES2022, + module: ts.ModuleKind.ESNext, + moduleResolution: ts.ModuleResolutionKind.Bundler, + types: [], + skipLibCheck: true, + noEmit: true, +}; +const libraries = new Map(); +function diagnostics(text: string): string[] { + const fileName = "/pinned.ts"; + const host = ts.createCompilerHost(options, true); + const { fileExists, readFile, getSourceFile } = host; + host.fileExists = (path) => path === fileName || fileExists.call(host, path); + host.readFile = (path) => + path === fileName ? text : readFile.call(host, path); + host.getSourceFile = (path, language, onError) => { + if (path === fileName) + return ts.createSourceFile(path, text, language, true); + if (!libraries.has(path)) + libraries.set(path, getSourceFile.call(host, path, language, onError)); + return libraries.get(path); + }; + const program = ts.createProgram([fileName], options, host); + return ts + .getPreEmitDiagnostics(program) + .map( + (diagnostic) => + `TS${diagnostic.code}: ${ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n")}`, + ); +} + +test("a default before a required parameter stays required and admits undefined; a trailing default is optional", () => { + const read = pinned.callSignature( + "read(limit: number = 100, tenantId: string, after: string | null = null): number", + ); + expect(read).toEqual({ + name: "read", + text: "export declare function read(limit: number | undefined /* = 100 */, tenantId: string, after?: string | null /* = null */): number", + }); + expect(diagnostics(read!.text)).toEqual([]); + // The emission before the fix: TypeScript refuses it. + expect( + diagnostics( + "export declare function read(limit?: number /* = 100 */, tenantId: string): number", + ), + ).toEqual([ + "TS1016: A required parameter cannot follow an optional parameter.", + ]); + // A function type is grouped before `| undefined`, which would otherwise bind inside it. + const run = pinned.callSignature( + "run(onDone: () => void = noop, name: string): void", + ); + expect(run?.text).toBe( + "export declare function run(onDone: (() => void) | undefined /* = noop */, name: string): void", + ); + expect(diagnostics(run!.text)).toEqual([]); +}); + +const row = ( + key: string, + declaration: string, + spec = "spec:sample.handler", +): Row => ({ spec, key, declaration }); +// Entry addresses are built, so that the check of entry addresses outside the Specs, which reads +// this file, finds no address of the sample corpus. +const at = (spec: string, key: string) => `${spec}#design.${key}`; + +test("a parameter or type parameter is in scope inside the node that declares it and nowhere else", () => { + const usedBy = (key: string, declaration: string) => + pinned.namesUsedBy(pinned.declarationOf(row(key, declaration))); + // The method's own hides nothing outside the method. + expect( + usedBy( + "typeHandler", + "type Handler = { run(outcome: Outcome): Outcome; fallback: Outcome }", + ), + ).toEqual(["Outcome"]); + // Every use is inside the node that declares the name. + expect( + usedBy( + "typeLocal", + "type Local = { run(outcome: Outcome, next: (outcome: Outcome) => Outcome): Outcome }", + ), + ).toEqual([]); + expect( + usedBy("fnHandle", "handle(outcome: Outcome): Promise"), + ).toEqual(["Promise"]); + expect(usedBy("typeKeys", "type Keys = { [K in keyof T]: K }")).toEqual( + [], + ); + expect( + usedBy( + "typeUnwrap", + "type Unwrap = T extends Promise ? U : Outcome", + ), + ).toEqual(["Promise", "Outcome"]); + expect( + usedBy( + "validatorOutcome", + "const outcomeValidator = v.union(outcomeKindValidator, v.null())", + ), + ).toEqual(["v", "outcomeKindValidator"]); +}); + +test("an outer dependency pinned by another Spec is pulled in, and the module compiles", () => { + const handler = pinned.declarationOf( + row( + "typeHandler", + "type Handler = { run(outcome: Outcome): Outcome; fallback: Outcome }", + ), + ); + const local = pinned.declarationOf( + row( + "typeLocal", + "type Local = { run(outcome: Outcome): Outcome }", + ), + ); + const outcome = pinned.declarationOf( + row( + "typeOutcome", + 'type Outcome = { kind: "committed" | "rejected" }', + "spec:sample.outcome", + ), + ); + const pinnedBy = new Map( + [handler, local, outcome].map((pin) => [pin.name, [pin]]), + ); + const { emitted, gapUses } = pinned.pulledIn([handler], pinnedBy); + const handlerAt = at("spec:sample.handler", "typeHandler"); + expect(emitted.map(({ address, why }) => ({ address, why }))).toEqual([ + { address: handlerAt, why: undefined }, + { + address: at("spec:sample.outcome", "typeOutcome"), + why: `${handlerAt} uses Outcome`, + }, + ]); + expect(gapUses.size).toBe(0); + expect(diagnostics(emitted.map((pin) => pin.text).join("\n"))).toEqual([]); + // Without the pull-in the module names a type it never declares. + expect(diagnostics(handler.text)).toEqual([ + "TS2304: Cannot find name 'Outcome'.", + ]); + // A nested type parameter that covers every use pulls nothing in. + expect(pinned.pulledIn([local], pinnedBy).emitted).toEqual([local]); + expect(diagnostics(local.text)).toEqual([]); +}); From 2347cbc66bfd1667f29f880a8b5d62f09b55c3b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 11:35:14 +0200 Subject: [PATCH 54/60] build: regenerate after the merge Co-Authored-By: Claude Fable 5.1 --- design/STATE.md | 8 ++++---- design/pages/history-view.md | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index ebf2525..fce43fb 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -4,10 +4,10 @@ Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the ## Measured at close -Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`) and the fold-in of their second read: +Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`), the fold-in of their second read, and the merge of `feature/round-2` with its review repair (`09224b5`): ``` -243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1499 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 49 references edges from 41 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context @@ -15,7 +15,7 @@ open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 20466b9e5b2744ed +corpus digest: b635d91862bfeeda Pack pages current: 1 of 1 protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz ``` @@ -35,7 +35,7 @@ CI passed on the branch's pushes in round 2 (`1b92bd8`, `a5d339d`) and in 3b (`3 A review of the pull request at `9e58019` found three things, and the commit after it fixes them. The timing command forced the path of the owner's Linux backend binary, so a fresh clone, another checkout or a Mac failed. It now leaves the choice to the harness, which downloads the pinned release into `.cache/`. Probe 7's hosted in-place example skipped `depot/migrations`, the migrations component the depot mounts, because the archive names its tables `_components/depot/_components/migrations/

    mC=UCqUUa#y6vSP5;bge3 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 YdqUIq*Z0@=*Z=A3-ve4SNdPt<0Kx)HOaK4? From 57ed4f88a2c64b6240df034c7f09872532333041 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Fri, 9 Oct 2026 21:46:44 +0200 Subject: [PATCH 43/60] fix: fold the anchor check into the annotations showcase An independent read of the tree after the re-pin found the showcase absent: no anchor in src/, no byFile coverage test, the anchor-sites join still in place, and no feedback section. This commit applies the decided mapping. The 22 implementation anchors that lived in nine test files move into the source as comment-form blocks: 45 units and 12 component anchors, each unit choosing satisfies or references for what its own code does, with role, layer and context. The depot fixture only references. The graph derives 179 anchors into 428 nodes and 1,501 edges, 0 errors and the same 12 listed warnings; no delivery fact of the 243 Specs changed. design/tools/anchor-sites.json and its test are deleted, and tests/pure/byfile-coverage.test.ts asserts byFile names each of the 50 file and Spec pairs it joined. The Pack page reads code from the graph alone: each unit at its site, with its role and component, and a Referenced by list. check.py prints the roles, layers and contexts from recipe 28. The feedback file's dated section records the adoption and what the owner rules. Co-Authored-By: Claude Fable 5.1 --- design/README.md | 2 +- design/pages/history-view.md | 92 ++++++++++--- design/tools/anchor-sites.json | 115 ---------------- design/tools/check.py | 17 ++- docs/feedback/sdp-feedback-01.md | 22 +++ example/convex/convex.config.ts | 8 ++ example/convex/inventory/convex.config.ts | 8 ++ example/convex/inventory/operations.ts | 7 + example/convex/inventory/queries/stockItem.ts | 7 + example/convex/inventory/schema.ts | 7 + example/convex/inventory/streams.ts | 6 + example/convex/orderSummary.ts | 7 + example/convex/ordering.ts | 7 + example/convex/orders/convex.config.ts | 8 ++ example/convex/orders/operations.ts | 7 + example/convex/orders/queries/order.ts | 7 + example/convex/orders/schema.ts | 7 + example/convex/orders/streams.ts | 6 + example/convex/receiving.ts | 7 + example/domain/order.ts | 14 ++ example/domain/orderAllocationHistory.ts | 7 + example/domain/stockItem.ts | 14 ++ fixture/convex/depot/convex.config.ts | 5 + fixture/convex/depot/operations.ts | 5 + fixture/convex/depot/queries/document.ts | 5 + fixture/convex/depot/schema.ts | 5 + fixture/convex/depot/streams.ts | 5 + fixture/convex/depotCommands.ts | 5 + scripts/pack-page.mjs | 108 ++++++++------- src/audit/index.ts | 8 ++ src/command/actor-and-scope.ts | 7 + src/command/authority.ts | 7 + src/command/declaration.ts | 7 + src/command/index.ts | 8 ++ src/command/outcome-boundary.ts | 7 + src/command/pipeline.ts | 7 + src/command/receipts.ts | 7 + src/command/tables.ts | 7 + src/context/adapter.ts | 13 ++ src/context/envelope.ts | 7 + src/context/index.ts | 8 ++ src/context/journal.ts | 7 + src/context/operation.ts | 7 + src/context/queries.ts | 7 + src/context/tables.ts | 7 + src/gate/entries.ts | 8 ++ src/gate/gate.ts | 7 + src/gate/index.ts | 8 ++ src/gate/tables.ts | 7 + src/kernel/decider.ts | 7 + src/kernel/index.ts | 7 + src/kernel/outcome.ts | 8 ++ src/operations/index.ts | 8 ++ src/read-model/generations.ts | 7 + src/read-model/index.ts | 8 ++ src/read-model/projection.ts | 7 + src/read-model/queries.ts | 7 + src/read-model/rebuild.ts | 8 ++ src/read-model/tables.ts | 8 ++ src/read-model/write.ts | 7 + tests/pure/anchor-sites.test.ts | 112 --------------- tests/pure/byfile-coverage.test.ts | 129 ++++++++++++++++++ tests/pure/command.test.ts | 52 ------- tests/pure/context-queries.test.ts | 12 -- tests/pure/context.test.ts | 46 ------- tests/pure/example-domain.test.ts | 14 -- tests/pure/example-use-cases.test.ts | 13 -- tests/pure/kernel.test.ts | 13 -- tests/pure/pack-page.test.ts | 67 +++++++-- tests/pure/read-model.test.ts | 23 ---- tests/pure/rebuild.test.ts | 15 -- tests/pure/write-pause.test.ts | 15 -- 72 files changed, 755 insertions(+), 509 deletions(-) delete mode 100644 design/tools/anchor-sites.json delete mode 100644 tests/pure/anchor-sites.test.ts create mode 100644 tests/pure/byfile-coverage.test.ts diff --git a/design/README.md b/design/README.md index e4a9dce..3440f22 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -243 specs · 6 packs · 144 anchors → 393 nodes · 1382 edges (0 errors, 0 warnings) +243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 81074c6..177acd1 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,7 +4,7 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with two inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it @@ -15,7 +15,7 @@ Start with the members and with what holds a member below its next rung: togethe - The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. - The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. - An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries. -- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it. +- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec is written against its design and confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them. - A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [`generated/pinned/history-view.ts`](../../generated/pinned/history-view.ts), which `npm run sdp:build` emits and git does not keep. ## Members @@ -24,21 +24,21 @@ Start with the members and with what holds a member below its next rung: togethe | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| -| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | none | none | 2 bound, 3 ahead, 3 without a pair | 4, none blocking | -| [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | -| [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | +| [1](#1-history-projection) | [`spec:application.history-projection`](../specs/application/history-projection.sdp.md) | contract | defined | ready | ready, which its floor holds | referenced by 1 unit | none | 2 bound, 3 ahead, 3 without a pair | 4, none blocking | +| [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | none | 11 bound | 5, none blocking | +| [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 2 anchors, referenced by 1 unit | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | -| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | +| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | referenced by 1 unit | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | | [6](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume) | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [7](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort) | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [8](#8-deploy-a-changed-history-projection-version-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [9](#9-install-a-history-view-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [10](#10-reorder-a-history-views-sources-while-its-generation-is-interrupted) | [`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | -| [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | -| [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | -| [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 1 anchor | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | -| [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | -| [15](#15-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | +| [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 3 anchors, referenced by 1 unit | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | +| [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | +| [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 15 anchors, referenced by 1 unit | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | +| [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor, referenced by 1 unit | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | +| [15](#15-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 2 anchors, referenced by 1 unit | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | | [16](#16-the-event-envelope) | [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 7 bound, 3 without a pair | 2, none blocking | | [17](#17-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | | [18](#18-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | @@ -292,6 +292,10 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio **Code.** No implementation anchor binds it. +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `impl:application.order-allocation-history` at [`example/domain/orderAllocationHistory.ts` line 8](../../example/domain/orderAllocationHistory.ts#L8): the order allocation history's keyOf and project rules. Its role is projection. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. + **Examples and verifiers.** None is bound to it. **Pinned declarations.** 8 Design entries open with a code span. Each pair comes from [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and is the test named by its address in [`tests/types/pinned.test-d.ts`](../../tests/types/pinned.test-d.ts). @@ -422,7 +426,8 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines and [Rebuil **Code.** -- `impl:application.projection-contract` at [`tests/pure/read-model.test.ts` line 19](../../tests/pure/read-model.test.ts#L19): ReadModel, Projection, rowConventions and applyProjection. It stands for [`src/read-model/projection.ts`](../../src/read-model/projection.ts). +- `impl:application.generation-registry.tables` at [`src/read-model/tables.ts` line 5](../../src/read-model/tables.ts#L5): the generations, progress, marker and tenant fill tables and rowConventions. Its role is schema. It belongs to `component:platform.read-model`, in the application layer and the platform context. +- `impl:application.projection-contract` at [`src/read-model/projection.ts` line 3](../../src/read-model/projection.ts#L3): ReadModel, Projection and applyProjection. Its role is projection. It belongs to `component:platform.read-model`, in the application layer and the platform context. **Examples and verifiers.** None is bound to it. @@ -574,7 +579,12 @@ Inside the Pack it rests on [The context queries](#18-the-context-queries) by de **Code.** -- `impl:application.read-models` at [`tests/pure/read-model.test.ts` line 29](../../tests/pure/read-model.test.ts#L29): writeReadModels, readModelView and limitReadModelList. It stands for [`src/read-model/write.ts`](../../src/read-model/write.ts) and [`src/read-model/queries.ts`](../../src/read-model/queries.ts). +- `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. +- `impl:application.read-models.queries` at [`src/read-model/queries.ts` line 3](../../src/read-model/queries.ts#L3): readModelView, pageInGeneration and limitReadModelList. Its role is query. It belongs to `component:platform.read-model`, in the application layer and the platform context. + +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `component:platform.read-model` at [`src/read-model/index.ts` line 2](../../src/read-model/index.ts#L2): the read-model library: declare, rebuild, write and read a read model. It is a component in the application layer and the platform context. **Examples.** @@ -739,7 +749,7 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p **Code.** -- `impl:application.rebuild` at [`tests/pure/rebuild.test.ts` line 28](../../tests/pure/rebuild.test.ts#L28): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. It stands for [`src/read-model/rebuild.ts`](../../src/read-model/rebuild.ts). +- `impl:application.rebuild` at [`src/read-model/rebuild.ts` line 2](../../src/read-model/rebuild.ts#L2): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. **Examples.** @@ -1064,6 +1074,10 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p **Code.** No implementation anchor binds it. +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `impl:application.rebuild` at [`src/read-model/rebuild.ts` line 2](../../src/read-model/rebuild.ts#L2): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. + **Examples.** | Example | Tier | Verifier | Title | @@ -1180,7 +1194,13 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] **Code.** -- `impl:application.write-pause` at [`tests/pure/write-pause.test.ts` line 20](../../tests/pure/write-pause.test.ts#L20): the gate document, gateAllows, assertWritable, the scope writers and the four gate entries. It stands for [`src/gate/gate.ts`](../../src/gate/gate.ts), [`src/gate/entries.ts`](../../src/gate/entries.ts) and [`src/gate/tables.ts`](../../src/gate/tables.ts). +- `impl:application.write-pause` at [`src/gate/gate.ts` line 6](../../src/gate/gate.ts#L6): gateAllows, assertWritable and the two scope writers. Its role is service. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. +- `impl:application.write-pause.entries` at [`src/gate/entries.ts` line 7](../../src/gate/entries.ts#L7): the four gate operator entries. Its role is operator-entry. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. +- `impl:application.write-pause.tables` at [`src/gate/tables.ts` line 4](../../src/gate/tables.ts#L4): the gate document's table fragment. Its role is schema. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. + +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `component:platform.gate` at [`src/gate/index.ts` line 3](../../src/gate/index.ts#L3): the maintenance gate: its table, the writer check, the two writers and the operator entries. It is a component in the infrastructure layer and the platform context. **Examples.** @@ -1356,7 +1376,8 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] **Code.** -- `impl:application.generation-registry` at [`tests/pure/read-model.test.ts` line 24](../../tests/pure/read-model.test.ts#L24): the generations table, generationsToWrite and activeGeneration. It stands for [`src/read-model/generations.ts`](../../src/read-model/generations.ts) and [`src/read-model/tables.ts`](../../src/read-model/tables.ts). +- `impl:application.generation-registry` at [`src/read-model/generations.ts` line 2](../../src/read-model/generations.ts#L2): generationsToWrite and activeGeneration. Its role is query. It belongs to `component:platform.read-model`, in the application layer and the platform context. +- `impl:application.generation-registry.tables` at [`src/read-model/tables.ts` line 5](../../src/read-model/tables.ts#L5): the generations, progress, marker and tenant fill tables and rowConventions. Its role is schema. It belongs to `component:platform.read-model`, in the application layer and the platform context. **Examples.** @@ -1528,7 +1549,25 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen **Code.** -- `impl:application.orders-inventory-example` at [`tests/pure/example-domain.test.ts` line 35](../../tests/pure/example-domain.test.ts#L35): the order and stock item deciders, the Orders and Inventory contexts, PlaceOrder, CancelOrder, ReceiveStock and the order summary. It stands for [`example/domain/order.ts`](../../example/domain/order.ts), [`example/domain/stockItem.ts`](../../example/domain/stockItem.ts), [`example/convex/orders/convex.config.ts`](../../example/convex/orders/convex.config.ts), [`example/convex/orders/schema.ts`](../../example/convex/orders/schema.ts), [`example/convex/orders/streams.ts`](../../example/convex/orders/streams.ts), [`example/convex/orders/operations.ts`](../../example/convex/orders/operations.ts), [`example/convex/orders/queries/order.ts`](../../example/convex/orders/queries/order.ts), [`example/convex/inventory/convex.config.ts`](../../example/convex/inventory/convex.config.ts), [`example/convex/inventory/schema.ts`](../../example/convex/inventory/schema.ts), [`example/convex/inventory/streams.ts`](../../example/convex/inventory/streams.ts), [`example/convex/inventory/operations.ts`](../../example/convex/inventory/operations.ts), [`example/convex/inventory/queries/stockItem.ts`](../../example/convex/inventory/queries/stockItem.ts), [`example/convex/ordering.ts`](../../example/convex/ordering.ts), [`example/convex/receiving.ts`](../../example/convex/receiving.ts) and [`example/convex/orderSummary.ts`](../../example/convex/orderSummary.ts). +- `component:example.inventory-context` at [`example/convex/inventory/convex.config.ts` line 1](../../example/convex/inventory/convex.config.ts#L1): the Inventory context component. It is a component in the adapter layer and the inventory context. +- `component:example.orders-context` at [`example/convex/orders/convex.config.ts` line 1](../../example/convex/orders/convex.config.ts#L1): the Orders context component. It is a component in the adapter layer and the orders context. +- `impl:application.orders-inventory-example` at [`example/domain/order.ts` line 10](../../example/domain/order.ts#L10): the order decider. Its role is decider. It belongs to `component:example.orders-domain`, in the domain layer and the orders context. +- `impl:application.orders-inventory-example.inventory-operations` at [`example/convex/inventory/operations.ts` line 2](../../example/convex/inventory/operations.ts#L2): the Inventory sanctioned operations. Its role is service. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. +- `impl:application.orders-inventory-example.inventory-schema` at [`example/convex/inventory/schema.ts` line 1](../../example/convex/inventory/schema.ts#L1): the Inventory context schema. Its role is schema. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. +- `impl:application.orders-inventory-example.inventory-stock-item-query` at [`example/convex/inventory/queries/stockItem.ts` line 2](../../example/convex/inventory/queries/stockItem.ts#L2): the stock item query. Its role is query. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. +- `impl:application.orders-inventory-example.inventory-streams` at [`example/convex/inventory/streams.ts` line 2](../../example/convex/inventory/streams.ts#L2): the stock item stream registration. It belongs to `component:example.inventory-context`, in the adapter layer and the inventory context. +- `impl:application.orders-inventory-example.order-summary` at [`example/convex/orderSummary.ts` line 4](../../example/convex/orderSummary.ts#L4): the order summary read model. Its role is read-model. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. +- `impl:application.orders-inventory-example.orders-operations` at [`example/convex/orders/operations.ts` line 2](../../example/convex/orders/operations.ts#L2): the Orders sanctioned operations. Its role is service. It belongs to `component:example.orders-context`, in the adapter layer and the orders context. +- `impl:application.orders-inventory-example.orders-order-query` at [`example/convex/orders/queries/order.ts` line 2](../../example/convex/orders/queries/order.ts#L2): the order query. Its role is query. It belongs to `component:example.orders-context`, in the adapter layer and the orders context. +- `impl:application.orders-inventory-example.orders-schema` at [`example/convex/orders/schema.ts` line 1](../../example/convex/orders/schema.ts#L1): the Orders context schema. Its role is schema. It belongs to `component:example.orders-context`, in the adapter layer and the orders context. +- `impl:application.orders-inventory-example.orders-streams` at [`example/convex/orders/streams.ts` line 3](../../example/convex/orders/streams.ts#L3): the order stream registration. It belongs to `component:example.orders-context`, in the adapter layer and the orders context. +- `impl:application.orders-inventory-example.stock-item` at [`example/domain/stockItem.ts` line 11](../../example/domain/stockItem.ts#L11): the stock item decider. Its role is decider. It belongs to `component:example.inventory-domain`, in the domain layer and the inventory context. +- `impl:application.parent-use-cases` at [`example/convex/ordering.ts` line 8](../../example/convex/ordering.ts#L8): PlaceOrder and CancelOrder over Orders and then Inventory. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. +- `impl:application.parent-use-cases.receiving` at [`example/convex/receiving.ts` line 4](../../example/convex/receiving.ts#L4): ReceiveStock. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. + +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `component:example.parent` at [`example/convex/convex.config.ts` line 1](../../example/convex/convex.config.ts#L1): the production composition's parent deployment over Orders and Inventory. It is a component in the application layer and the orders-inventory context. **Examples.** @@ -1551,7 +1590,11 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen **Code.** -- `impl:command.command-declaration` at [`tests/pure/command.test.ts` line 55](../../tests/pure/command.test.ts#L55): CommandDeclaration, publicCommand, internalCommand and the depot commands. It stands for [`src/command/declaration.ts`](../../src/command/declaration.ts) and [`fixture/convex/depotCommands.ts`](../../fixture/convex/depotCommands.ts). +- `impl:command.command-declaration` at [`src/command/declaration.ts` line 3](../../src/command/declaration.ts#L3): CommandDeclaration, publicCommand and internalCommand. Its role is contract. It belongs to `component:platform.command`, in the application layer and the platform context. + +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `impl:command.command-declaration.depot-commands` at [`fixture/convex/depotCommands.ts` line 3](../../fixture/convex/depotCommands.ts#L3): the depot fixture's command declarations. **Examples.** @@ -1763,7 +1806,12 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen **Code.** -- `impl:command.command-pipeline` at [`tests/pure/command.test.ts` line 25](../../tests/pure/command.test.ts#L25): runPipeline and the command response in src/command. It stands for [`src/command/pipeline.ts`](../../src/command/pipeline.ts). +- `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. +- `impl:command.command-pipeline` at [`src/command/pipeline.ts` line 3](../../src/command/pipeline.ts#L3): runPipeline and the command response. Its role is service. It belongs to `component:platform.command`, in the application layer and the platform context. + +**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. + +- `component:platform.command` at [`src/command/index.ts` line 2](../../src/command/index.ts#L2): the command library that runs in the parent deployment. It is a component in the application layer and the platform context. **Examples.** @@ -2011,7 +2059,7 @@ Inside the Pack it rests on [The journal](#17-the-journal) by refines. **Code.** -- `impl:context.event-envelope` at [`tests/pure/context.test.ts` line 45](../../tests/pure/context.test.ts#L45): the envelope types and validators in src/context. It stands for [`src/context/envelope.ts`](../../src/context/envelope.ts). +- `impl:context.event-envelope` at [`src/context/envelope.ts` line 2](../../src/context/envelope.ts#L2): the envelope types and validators. Its role is contract. It belongs to `component:platform.context`, in the adapter layer and the platform context. **Examples and verifiers.** None is bound to it. @@ -2164,7 +2212,7 @@ Inside the Pack it rests on [Write pause](#11-write-pause) by dependsOn. **Code.** -- `impl:context.journal` at [`tests/pure/context.test.ts` line 35](../../tests/pure/context.test.ts#L35): createJournal, load and append in src/context. It stands for [`src/context/journal.ts`](../../src/context/journal.ts). +- `impl:context.journal` at [`src/context/journal.ts` line 2](../../src/context/journal.ts#L2): createJournal, load and append. Its role is event-store. It belongs to `component:platform.context`, in the adapter layer and the platform context. **Examples.** @@ -2423,7 +2471,7 @@ Inside the Pack it rests on [The event envelope](#16-the-event-envelope) by depe **Code.** -- `impl:context.queries` at [`tests/pure/context-queries.test.ts` line 23](../../tests/pure/context-queries.test.ts#L23): defineGet, defineList and boundedPage in src/context. It stands for [`src/context/queries.ts`](../../src/context/queries.ts). +- `impl:context.queries` at [`src/context/queries.ts` line 3](../../src/context/queries.ts#L3): defineGet, defineList and boundedPage. Its role is query. It belongs to `component:platform.context`, in the adapter layer and the platform context. **Examples and verifiers.** None is bound to it. diff --git a/design/tools/anchor-sites.json b/design/tools/anchor-sites.json deleted file mode 100644 index 2c15de7..0000000 --- a/design/tools/anchor-sites.json +++ /dev/null @@ -1,115 +0,0 @@ -{ - "anchors": [ - { - "anchor": "impl:application.generation-registry", - "sources": ["src/read-model/generations.ts", "src/read-model/tables.ts"] - }, - { - "anchor": "impl:application.orders-inventory-example", - "sources": [ - "example/domain/order.ts", - "example/domain/stockItem.ts", - "example/convex/orders/convex.config.ts", - "example/convex/orders/schema.ts", - "example/convex/orders/streams.ts", - "example/convex/orders/operations.ts", - "example/convex/orders/queries/order.ts", - "example/convex/inventory/convex.config.ts", - "example/convex/inventory/schema.ts", - "example/convex/inventory/streams.ts", - "example/convex/inventory/operations.ts", - "example/convex/inventory/queries/stockItem.ts", - "example/convex/ordering.ts", - "example/convex/receiving.ts", - "example/convex/orderSummary.ts" - ] - }, - { - "anchor": "impl:application.parent-use-cases", - "sources": ["example/convex/ordering.ts", "example/convex/receiving.ts"] - }, - { - "anchor": "impl:application.projection-contract", - "sources": ["src/read-model/projection.ts"] - }, - { - "anchor": "impl:application.read-models", - "sources": ["src/read-model/write.ts", "src/read-model/queries.ts"] - }, - { - "anchor": "impl:application.rebuild", - "sources": ["src/read-model/rebuild.ts"] - }, - { - "anchor": "impl:application.write-pause", - "sources": ["src/gate/gate.ts", "src/gate/entries.ts", "src/gate/tables.ts"] - }, - { - "anchor": "impl:command.actor-and-scope", - "sources": ["src/command/actor-and-scope.ts", "src/command/tables.ts"] - }, - { - "anchor": "impl:command.command-declaration", - "sources": ["src/command/declaration.ts", "fixture/convex/depotCommands.ts"] - }, - { - "anchor": "impl:command.command-pipeline", - "sources": ["src/command/pipeline.ts"] - }, - { - "anchor": "impl:command.idempotency-and-receipts", - "sources": ["src/command/receipts.ts"] - }, - { - "anchor": "impl:command.outcome-boundary", - "sources": ["src/command/outcome-boundary.ts"] - }, - { - "anchor": "impl:command.receipt-table", - "sources": ["src/command/tables.ts"] - }, - { - "anchor": "impl:command.tenancy-and-authority", - "sources": ["src/command/authority.ts"] - }, - { - "anchor": "impl:context.batch-shaped-api", - "sources": ["src/context/adapter.ts", "fixture/convex/depot/operations.ts"] - }, - { - "anchor": "impl:context.context-component", - "sources": [ - "src/context/operation.ts", - "fixture/convex/depot/convex.config.ts", - "fixture/convex/depot/schema.ts", - "fixture/convex/depot/streams.ts", - "fixture/convex/depot/operations.ts", - "fixture/convex/depot/queries/document.ts" - ] - }, - { - "anchor": "impl:context.event-envelope", - "sources": ["src/context/envelope.ts"] - }, - { - "anchor": "impl:context.journal", - "sources": ["src/context/journal.ts"] - }, - { - "anchor": "impl:context.persistence-adapter", - "sources": ["src/context/adapter.ts"] - }, - { - "anchor": "impl:context.queries", - "sources": ["src/context/queries.ts"] - }, - { - "anchor": "impl:context.tables", - "sources": ["src/context/tables.ts"] - }, - { - "anchor": "impl:kernel.decider-contract", - "sources": ["src/kernel/decider.ts", "src/kernel/outcome.ts"] - } - ] -} diff --git a/design/tools/check.py b/design/tools/check.py index 5225e93..2ab9768 100644 --- a/design/tools/check.py +++ b/design/tools/check.py @@ -14,7 +14,8 @@ citations carry edges, extensions are registered, nobody but the owner states `ready`, a prose mention with no relation is listed with its reason, an entry address outside the Specs resolves through the Protocol's address recipe, and no Specs rest on each other through `dependsOn`, as the -Protocol's cycle recipe reports. +Protocol's cycle recipe reports. It prints the roles, layers and contexts the code anchors state, as +the Protocol's roles-and-layers recipe reads them, and judges none of them. """ import collections import glob @@ -171,6 +172,19 @@ def main(): except (ValueError, KeyError) as error: fail(f"the cycle recipe did not answer: {str(error)[:200]}") + # 1d. The architecture the code anchors state, as the Protocol's roles-and-layers recipe reads it. + # The values are free (a layer is one of five); this line reports them and judges none. + structure = None + try: + answer = graph_recipe(28, ROOT) + taxonomy = lambda rows: ", ".join(f"{row['value']} {len(row['units'])}" for row in rows) or "none" + totals = answer["totals"] + structure = (f"{totals['codeUnits']} code units; roles: {taxonomy(answer['roles'])}; " + f"layers: {taxonomy(answer['layers'])}; contexts: {taxonomy(answer['contexts'])}; " + f"{totals['references']} references edges from {totals['referencingUnits']} units") + except (ValueError, KeyError) as error: + fail(f"the roles-and-layers recipe did not answer: {str(error)[:200]}") + out = run(["q", READINESS_DIVERGENCE, "--root", ".", "--json"]) try: diverging = json.loads(out.stdout.strip().splitlines()[-1]) @@ -297,6 +311,7 @@ def main(): print(expected_line) print(f"validate: {n_errors} errors · {n_warnings} warnings, {len(listed)} prose mentions listed; readiness divergence: {diverging}") print(f"entry addresses outside the Specs: {addresses}; dependsOn cycles: {cycles}") + print(f"architecture: {structure}") print(f"open questions: {len(questions)} Specs, {n_questions} questions, {n_blocking} blocking; extensions registered: {len(registered)}") print(f"stated readiness: {dict(sorted(readiness.items()))}") print(f"ledger: {len(ledger)} findings, {dict(sorted(by_status.items()))}") diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index 494b377..702383c 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -4,6 +4,28 @@ A running file, addressed to the Protocol's maintainers. Each `adopt` unit and e Every number here was measured on this corpus on the date of its section. Re-run before relying on one. +## 2026-10-09, anchors in the source at `da56a34` + +The pin moved from `dfa1bd9` to `da56a34`, a build of the Protocol's branch `feature/annotations-v0` (its plan 40), packed from a clean clone as before. The graph schema is `0.8.0`. On the new pin alone nothing this corpus reads moved: 243 Specs, 393 nodes, 1,382 edges, 12 listed warnings. Then the corpus adopted the branch's comment form, and the gap the two sections below name as "an anchor that lives in a test" is closed. An independent read (`gpt-6.1-sol`) of the tree before the adoption found none of it there; every number below was measured after it. + +- **Anchors at their sites.** A comment-form anchor is a `/** … */` block of reserved `@sdp` tags, so the source carries it with no Protocol import and its runtime pays nothing. The 22 implementation anchors that lived in nine test files are now 45 units in `src/`, `example/` and `fixture/`, one per realizing file or site, plus 12 component anchors. No test file keeps an implementation anchor; the 18 constant-form anchors under `harness/` stay. The graph derives 179 anchors into 428 nodes and 1,501 edges, and validate still reports 0 errors and the same 12 warnings. No delivery fact of the 243 Specs changed. +- **The join is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. `byFile("src/read-model/rebuild.ts")` names `spec:application.rebuild` and `spec:application.history-rebuild`. +- **Satisfies or references.** A unit that realizes a Spec satisfies it; a unit written against a design references it and confers nothing. There are 20 `references` edges from 19 units. The six depot units under `fixture/` only reference, because the fixture is test composition. `src/kernel/outcome.ts` references `spec:kernel.outcome-model` and does not satisfy it: that Spec's open question `#outcomeRejectionContract` asks the owner to confirm the shapes before code names them, and satisfying it would make it `implemented` ahead of that ruling. +- **The history view.** Recipe 27 over `pack:history-view` gives 19 members: 7 referenced, 11 implemented, 7 with a verifier, 6 with none of the three. `spec:application.history-projection` and `spec:application.history-rebuild` each show one referencing unit and no `implemented`. The page lists each unit at its own file and line, with its role and its component's layer and context, and a "Referenced by" list per member. +- **The architecture.** Twelve components, three in each of the `adapter`, `application`, `domain` and `infrastructure` layers; contexts `platform` 7, `orders` 2, `inventory` 2, `orders-inventory` 1. Roles, from recipe 28: service 10, schema 6, contract 5, query 5, decider 2, projection 2, use-case 2, codec 1, event-store 1, operator-entry 1, read-model 1. Component `uses` match the relative imports between the components, cycles included; the two context components reach their domain through `example/domain/index.ts`. `check.py` prints this taxonomy and judges none of it. +- **Tests.** `npm test` passed 1,140 tests in 74 files, with 10 skipped. + +### What the owner rules + +- The layers: the context library and the two context components are `adapter`, with `infrastructure` the alternative; the gate is `infrastructure`, with `application` the alternative. +- The contexts: every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. +- Whether `example/` is architecture. It is the production composition, so it has five components; as a sample it would keep its units and lose them. +- `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. That is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, here in this corpus. + +### What still needs the Protocol + +- **A block binds by file and line.** Move the declaration under a block, or delete it, and the block still binds. The open question `#attachmentIdentity` on `spec:decisions.anchor-comment-form` asks whether a CodeNode records the symbol it binds. + ## 2026-10-04, adopting round 2 at `27b896a` The pin moved from `5e29c03` to `27b896a`, a build of the Protocol's branch `feature/adopter-round-2`, packed from a clean clone as before. The graph schema is `0.7.0`. The corpus derives 240 Specs, 6 Packs and 144 anchors into 390 nodes and 1,365 edges, validate reports 0 errors and 12 warnings, each a listed prose mention, and `npm test` passed 1,137 tests in 74 files, with 10 skipped. Of the five workarounds the first Pack page listed in the section below, four are gone. What the round changed here: diff --git a/example/convex/convex.config.ts b/example/convex/convex.config.ts index 7892837..6c092d9 100644 --- a/example/convex/convex.config.ts +++ b/example/convex/convex.config.ts @@ -1,3 +1,11 @@ +/** + * @sdpAnchor component:example.parent + * @sdpLabel the production composition's parent deployment over Orders and Inventory + * @sdpReferences spec:application.orders-inventory-example + * @sdpUses component:platform.command, component:platform.context, component:platform.read-model, component:platform.gate, component:platform.audit, component:example.orders-context, component:example.inventory-context, component:example.orders-domain, component:example.inventory-domain + * @sdpLayer application + * @sdpContext orders-inventory + */ import { defineApp } from "convex/server"; import inventory from "./inventory/convex.config.js"; import orders from "./orders/convex.config.js"; diff --git a/example/convex/inventory/convex.config.ts b/example/convex/inventory/convex.config.ts index dc99bba..b42d272 100644 --- a/example/convex/inventory/convex.config.ts +++ b/example/convex/inventory/convex.config.ts @@ -1,3 +1,11 @@ +/** + * @sdpAnchor component:example.inventory-context + * @sdpLabel the Inventory context component + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpUses component:platform.context, component:example.inventory-domain + * @sdpLayer adapter + * @sdpContext inventory + */ import { defineComponent } from "convex/server"; // The Inventory context. Its mount name is its contextId. export default defineComponent("inventory"); diff --git a/example/convex/inventory/operations.ts b/example/convex/inventory/operations.ts index 4ba25a8..bb16939 100644 --- a/example/convex/inventory/operations.ts +++ b/example/convex/inventory/operations.ts @@ -1,4 +1,11 @@ // The Inventory context's sanctioned operations. Each takes a list, so a parent use case makes one call. +/** + * @sdpAnchor impl:application.orders-inventory-example.inventory-operations + * @sdpLabel the Inventory sanctioned operations + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.inventory-context + * @sdpRole service + */ import { v, type Infer, type ObjectType } from "convex/values"; import { defineOperation, diff --git a/example/convex/inventory/queries/stockItem.ts b/example/convex/inventory/queries/stockItem.ts index 8d7de7d..5405095 100644 --- a/example/convex/inventory/queries/stockItem.ts +++ b/example/convex/inventory/queries/stockItem.ts @@ -1,4 +1,11 @@ // The Inventory context's queries over its stock item stream: one definer each. +/** + * @sdpAnchor impl:application.orders-inventory-example.inventory-stock-item-query + * @sdpLabel the stock item query + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.inventory-context + * @sdpRole query + */ import { defineGet, defineList } from "../../../../src/context/index.js"; import { journal, stockItemStream } from "../streams.js"; export const get = defineGet(journal, stockItemStream); diff --git a/example/convex/inventory/schema.ts b/example/convex/inventory/schema.ts index e88f586..f9541a9 100644 --- a/example/convex/inventory/schema.ts +++ b/example/convex/inventory/schema.ts @@ -1,3 +1,10 @@ +/** + * @sdpAnchor impl:application.orders-inventory-example.inventory-schema + * @sdpLabel the Inventory context schema + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.inventory-context + * @sdpRole schema + */ import { defineSchema } from "convex/server"; import { contextTables } from "../../../src/context/index.js"; // A context component's schema holds the context library's tables and nothing else. diff --git a/example/convex/inventory/streams.ts b/example/convex/inventory/streams.ts index 5d80170..918bdb9 100644 --- a/example/convex/inventory/streams.ts +++ b/example/convex/inventory/streams.ts @@ -1,4 +1,10 @@ // The Inventory context's journal and the registration of its one stream type, the stock item. +/** + * @sdpAnchor impl:application.orders-inventory-example.inventory-streams + * @sdpLabel the stock item stream registration + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.inventory-context + */ import { v, type Infer } from "convex/values"; import { createJournal, diff --git a/example/convex/orderSummary.ts b/example/convex/orderSummary.ts index dae6019..baa445a 100644 --- a/example/convex/orderSummary.ts +++ b/example/convex/orderSummary.ts @@ -1,6 +1,13 @@ // The order summary, the essential summary of the Orders and Inventory application: a per-entity read // model with the order's status, line count, total and the time it was placed, written at the // pipeline's step 9 from the order's DTO by every command that writes the order. +/** + * @sdpAnchor impl:application.orders-inventory-example.order-summary + * @sdpLabel the order summary read model + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.parent + * @sdpRole read-model + */ import { v, type Infer } from "convex/values"; import { defaultRowBudgetBytes, diff --git a/example/convex/ordering.ts b/example/convex/ordering.ts index f7c419d..3aa2600 100644 --- a/example/convex/ordering.ts +++ b/example/convex/ordering.ts @@ -5,6 +5,13 @@ // order is answered entityExists before Inventory decides, and CancelOrder because the order's own // state refuses a cancel before Inventory decides. A rejection or a throw in Inventory rolls back the // Orders call with the whole mutation, so neither executor catches anything. +/** + * @sdpAnchor impl:application.parent-use-cases + * @sdpLabel PlaceOrder and CancelOrder over Orders and then Inventory + * @sdpSatisfies spec:application.parent-use-cases, spec:application.orders-inventory-example + * @sdpComponent component:example.parent + * @sdpRole use-case + */ import { v, type Infer } from "convex/values"; import { internalCommand, diff --git a/example/convex/orders/convex.config.ts b/example/convex/orders/convex.config.ts index 3fcf167..1602dca 100644 --- a/example/convex/orders/convex.config.ts +++ b/example/convex/orders/convex.config.ts @@ -1,3 +1,11 @@ +/** + * @sdpAnchor component:example.orders-context + * @sdpLabel the Orders context component + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpUses component:platform.context, component:example.orders-domain + * @sdpLayer adapter + * @sdpContext orders + */ import { defineComponent } from "convex/server"; // The Orders context. Its mount name is its contextId. export default defineComponent("orders"); diff --git a/example/convex/orders/operations.ts b/example/convex/orders/operations.ts index 68d9014..26dcea6 100644 --- a/example/convex/orders/operations.ts +++ b/example/convex/orders/operations.ts @@ -1,4 +1,11 @@ // The Orders context's sanctioned operations. Each takes a list, so a parent use case makes one call. +/** + * @sdpAnchor impl:application.orders-inventory-example.orders-operations + * @sdpLabel the Orders sanctioned operations + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.orders-context + * @sdpRole service + */ import { v, type Infer, type ObjectType } from "convex/values"; import { defineOperation, diff --git a/example/convex/orders/queries/order.ts b/example/convex/orders/queries/order.ts index 88fa0bf..74d855b 100644 --- a/example/convex/orders/queries/order.ts +++ b/example/convex/orders/queries/order.ts @@ -1,4 +1,11 @@ // The Orders context's queries over its order stream: one definer each. +/** + * @sdpAnchor impl:application.orders-inventory-example.orders-order-query + * @sdpLabel the order query + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.orders-context + * @sdpRole query + */ import { defineGet, defineList } from "../../../../src/context/index.js"; import { journal, orderStream } from "../streams.js"; export const get = defineGet(journal, orderStream); diff --git a/example/convex/orders/schema.ts b/example/convex/orders/schema.ts index e88f586..1d44719 100644 --- a/example/convex/orders/schema.ts +++ b/example/convex/orders/schema.ts @@ -1,3 +1,10 @@ +/** + * @sdpAnchor impl:application.orders-inventory-example.orders-schema + * @sdpLabel the Orders context schema + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.orders-context + * @sdpRole schema + */ import { defineSchema } from "convex/server"; import { contextTables } from "../../../src/context/index.js"; // A context component's schema holds the context library's tables and nothing else. diff --git a/example/convex/orders/streams.ts b/example/convex/orders/streams.ts index 9bcb476..50c18e0 100644 --- a/example/convex/orders/streams.ts +++ b/example/convex/orders/streams.ts @@ -1,5 +1,11 @@ // The Orders context's journal and the registration of its one stream type, the order. The parent // reads the order's DTO validator from here: a DTO's shape belongs to the context that returns it. +/** + * @sdpAnchor impl:application.orders-inventory-example.orders-streams + * @sdpLabel the order stream registration + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.orders-context + */ import { v, type Infer } from "convex/values"; import { createJournal, diff --git a/example/convex/receiving.ts b/example/convex/receiving.ts index f6734c6..2a62dec 100644 --- a/example/convex/receiving.ts +++ b/example/convex/receiving.ts @@ -1,6 +1,13 @@ // ReceiveStock, the command that receives stock: one call to the Inventory context's receive operation, // which creates a stock item that has no stream and adds to the quantity on hand. Every stock item // comes to exist through it. +/** + * @sdpAnchor impl:application.parent-use-cases.receiving + * @sdpLabel ReceiveStock + * @sdpSatisfies spec:application.parent-use-cases, spec:application.orders-inventory-example + * @sdpComponent component:example.parent + * @sdpRole use-case + */ import { v, type Infer } from "convex/values"; import { internalCommand, diff --git a/example/domain/order.ts b/example/domain/order.ts index d1763e5..7820250 100644 --- a/example/domain/order.ts +++ b/example/domain/order.ts @@ -1,5 +1,19 @@ // The Orders context's order stream: an order is placed once with its lines, its total is the sum of // quantity times unit price over its lines, and a placed order is cancelled once. +/** + * @sdpAnchor component:example.orders-domain + * @sdpLabel the Orders context's pure domain code + * @sdpUses component:platform.kernel + * @sdpLayer domain + * @sdpContext orders + */ +/** + * @sdpAnchor impl:application.orders-inventory-example + * @sdpLabel the order decider + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.orders-domain + * @sdpRole decider + */ import type { DecideResult, Decider, diff --git a/example/domain/orderAllocationHistory.ts b/example/domain/orderAllocationHistory.ts index cf18703..39110a0 100644 --- a/example/domain/orderAllocationHistory.ts +++ b/example/domain/orderAllocationHistory.ts @@ -5,6 +5,13 @@ // allocation by its stock item's, and the allocations are kept in stock item ID order, so the row // is one value whatever the order in which the events of different streams arrive. The parent's // HistoryProjection holds these rules; no context mounts them, so index.ts does not export them. +/** + * @sdpAnchor impl:application.order-allocation-history + * @sdpLabel the order allocation history's keyOf and project rules + * @sdpReferences spec:application.history-projection + * @sdpComponent component:example.parent + * @sdpRole projection + */ import type { OrderEvent } from "./order.js"; import type { StockItemEvent } from "./stockItem.js"; // The part of an event envelope the rules read; the context library's EventEnvelope has each field. diff --git a/example/domain/stockItem.ts b/example/domain/stockItem.ts index 699387d..baca32d 100644 --- a/example/domain/stockItem.ts +++ b/example/domain/stockItem.ts @@ -1,6 +1,20 @@ // The Inventory context's stock item stream: the quantity on hand and the quantity allocated to // orders, two totals and nothing per order. The quantity available is the first less the second, an // allocation never passes it, and a release never passes the quantity allocated. +/** + * @sdpAnchor component:example.inventory-domain + * @sdpLabel the Inventory context's pure domain code + * @sdpUses component:platform.kernel + * @sdpLayer domain + * @sdpContext inventory + */ +/** + * @sdpAnchor impl:application.orders-inventory-example.stock-item + * @sdpLabel the stock item decider + * @sdpSatisfies spec:application.orders-inventory-example + * @sdpComponent component:example.inventory-domain + * @sdpRole decider + */ import type { DecideResult, Decider, diff --git a/fixture/convex/depot/convex.config.ts b/fixture/convex/depot/convex.config.ts index 33249ce..66bc236 100644 --- a/fixture/convex/depot/convex.config.ts +++ b/fixture/convex/depot/convex.config.ts @@ -1,3 +1,8 @@ +/** + * @sdpAnchor impl:context.context-component.depot-config + * @sdpLabel the depot fixture component's definition + * @sdpReferences spec:context.context-component + */ import { defineComponent } from "convex/server"; import migrations from "@convex-dev/migrations/convex.config.js"; // The mount name is the context's contextId, the constant in streams.ts. The migrations component is diff --git a/fixture/convex/depot/operations.ts b/fixture/convex/depot/operations.ts index 66eb70d..1af018b 100644 --- a/fixture/convex/depot/operations.ts +++ b/fixture/convex/depot/operations.ts @@ -1,4 +1,9 @@ // The depot's sanctioned operations. Each takes a list, so a parent use case makes one call. +/** + * @sdpAnchor impl:context.context-component.depot-operations + * @sdpLabel the depot fixture's list-shaped operations + * @sdpReferences spec:context.context-component, spec:context.batch-shaped-api + */ import { ConvexError, v, type Infer, type ObjectType } from "convex/values"; import { defineOperation, diff --git a/fixture/convex/depot/queries/document.ts b/fixture/convex/depot/queries/document.ts index d7d2089..ffc11f4 100644 --- a/fixture/convex/depot/queries/document.ts +++ b/fixture/convex/depot/queries/document.ts @@ -1,4 +1,9 @@ // The depot's queries over its document stream, as a context registers them: one definer each. +/** + * @sdpAnchor impl:context.context-component.depot-document-query + * @sdpLabel the depot fixture's document query + * @sdpReferences spec:context.context-component + */ import { defineGet, defineList } from "../../../../src/context/index.js"; import { documentStream, journal } from "../streams.js"; export const get = defineGet(journal, documentStream); diff --git a/fixture/convex/depot/schema.ts b/fixture/convex/depot/schema.ts index 710b69e..0654ee2 100644 --- a/fixture/convex/depot/schema.ts +++ b/fixture/convex/depot/schema.ts @@ -1,3 +1,8 @@ +/** + * @sdpAnchor impl:context.context-component.depot-schema + * @sdpLabel the depot fixture's schema + * @sdpReferences spec:context.context-component + */ import { defineSchema, defineTable } from "convex/server"; import { contextTables } from "../../../src/context/index.js"; import { v } from "convex/values"; diff --git a/fixture/convex/depot/streams.ts b/fixture/convex/depot/streams.ts index 201ade7..0a07d3b 100644 --- a/fixture/convex/depot/streams.ts +++ b/fixture/convex/depot/streams.ts @@ -1,5 +1,10 @@ // The depot's journal and the registrations of its three stream types. The fixture's faults live // here, in the parts the composition supplies to the library: a mapping, a toDto and a decider. +/** + * @sdpAnchor impl:context.context-component.depot-streams + * @sdpLabel the depot fixture's stream registrations + * @sdpReferences spec:context.context-component + */ import { v, type Value } from "convex/values"; import { createJournal, diff --git a/fixture/convex/depotCommands.ts b/fixture/convex/depotCommands.ts index 0921670..15e7229 100644 --- a/fixture/convex/depotCommands.ts +++ b/fixture/convex/depotCommands.ts @@ -1,5 +1,10 @@ // The fixture composition's commands over the depot context. Each is one declaration and the two static // exports the command library builds from it; each makes one call to a depot operation. +/** + * @sdpAnchor impl:command.command-declaration.depot-commands + * @sdpLabel the depot fixture's command declarations + * @sdpReferences spec:command.command-declaration + */ import { v, type Infer } from "convex/values"; import { internalCommand, diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index d4af13c..be35c39 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -3,10 +3,11 @@ // writes nothing and compares the page at --out with what the tree generates, naming the first line // that differs. It reads the graph in memory through the Protocol package's exported extractor and // reader, never through validate, view, census or build, and runs recipes 20 and 24 as the pinned -// Protocol ships them in recipes.md. Three inputs join it: the pinned pairs -// (tests/types/pinned-pairs.json), the anchor sites (design/tools/anchor-sites.json) and the rows of -// the decision register (design/decisions/register.json); a missing input is an error that names -// its path. The members come in the order the reader's Pack context gives them, which is the order +// Protocol ships them in recipes.md. Two inputs join it: the pinned pairs +// (tests/types/pinned-pairs.json) and the rows of the decision register +// (design/decisions/register.json); a missing input is an error that names its path. The code a +// member binds comes from the graph alone: each anchor at its own site, with its role and its +// component. The members come in the order the reader's Pack context gives them, which is the order // the Pack file writes them. The next rung is the rung above the stated one: the reader's // `nextRungFailures` are the unmet clauses of the rung above the floor, so when the floor sits above // the stated rung nothing blocks the next rung, and otherwise its first unmet clause is the first of @@ -29,7 +30,6 @@ const root = join(import.meta.dirname, ".."); const engine = "@libar-dev/software-delivery-protocol"; const inputs = { pairs: "tests/types/pinned-pairs.json", - sites: "design/tools/anchor-sites.json", register: "design/decisions/register.json", }; // The relations a Spec rests on, as recipe 21 and the floor's typed-dependency clause read them. @@ -86,26 +86,6 @@ export function readPinnedPairs(base, pack) { return { test: data.test, pairs }; } -// The anchor sites: the source files each implementation anchor written in a test file stands for. -export function readAnchorSites(base) { - const path = inputs.sites; - const data = readJson(base, path); - if (!Array.isArray(data?.anchors)) cannot(`${path} has no list of anchors`); - const sites = new Map(); - data.anchors.forEach((entry, at) => { - const where = `${path} anchors[${at}]`; - if ( - !isText(entry?.anchor) || - !Array.isArray(entry.sources) || - !entry.sources.every(isText) - ) - cannot(`${where} needs an anchor and a list of source paths`); - if (sites.has(entry.anchor)) cannot(`${where} repeats ${entry.anchor}`); - sites.set(entry.anchor, entry.sources); - }); - return sites; -} - // The register: every row with the fields the page shows and its sources as the register writes // them. An open question source cites its question by address; a closed one keeps its Spec and the // question's opening text, as design/advisors/register.md rules. @@ -467,13 +447,10 @@ export async function generate(pack, out, base = root) { pin.devDependencies?.[engine] ?? pin.dependencies?.[engine] ?? cannot(`package.json does not depend on ${engine}`); - const { reader, summary, members, questions, declarations } = await readGraph( - pack, - base, - ); + const { graph, reader, summary, members, questions, declarations } = + await readGraph(pack, base); const chained = indexTables(declarations.rows); const pairs = readPinnedPairs(base, pack); - const sites = readAnchorSites(base); const register = readRegister(base); const sources = questionSources(register); const prettierOptions = @@ -618,6 +595,49 @@ export async function generate(pack, out, base = root) { file === undefined ? "no site" : `[${span(file)}${line === undefined ? "" : ` line ${line}`}](${link(file, line)})`; + // The code a member binds, from the graph alone: the units that satisfy it and the units that + // reference it, each at its own site. + const codeText = (context) => { + const parts = []; + if (context.implementations.length > 0) + parts.push(plural(context.implementations.length, "anchor")); + if (context.references.length > 0) + parts.push(`referenced by ${plural(context.references.length, "unit")}`); + return parts.length === 0 ? "none" : parts.join(", "); + }; + const codeNodes = new Map( + graph.nodes + .filter((node) => node.nodeType === "CodeNode") + .map((node) => [node.id, node]), + ); + const componentOf = new Map( + graph.edges + .filter((edge) => edge.type === "memberOf") + .map((edge) => [edge.from, edge.to]), + ); + // One code unit: its id, its site and its label, then what the anchors declare of its structure: + // its role, and the layer and bounded context of the component it is or belongs to. + const placement = (node) => + list( + [ + node?.layer === undefined ? null : `the ${node.layer} layer`, + node?.context === undefined ? null : `the ${node.context} context`, + ].filter((part) => part !== null), + ); + const unitLine = (binding) => { + const facts = []; + if (binding.role !== undefined) facts.push(`Its role is ${binding.role}.`); + const own = placement(binding); + if (own !== "") facts.push(`It is a component in ${own}.`); + const component = componentOf.get(binding.codeId); + if (component !== undefined) { + const where = placement(codeNodes.get(component)); + facts.push( + `It belongs to ${span(component)}${where === "" ? "" : `, in ${where}`}.`, + ); + } + return `- ${span(binding.codeId)} at ${site(binding.file, binding.line)}${binding.label === undefined ? "" : `: ${binding.label}`}.${facts.length === 0 ? "" : ` ${facts.join(" ")}`}`; + }; // Head. write( @@ -629,7 +649,7 @@ export async function generate(pack, out, base = root) { if (summary.framing !== undefined) write(summary.framing, "", ""); const pinned = pinnedModule(pack); write( - `This page is generated from the Specs of ${span(pack)} by ${span("scripts/pack-page.mjs")}, with three inputs: the pinned pairs in [${span(inputs.pairs)}](${link(inputs.pairs)}), the anchor sites in [${span(inputs.sites)}](${link(inputs.sites)}) and the register rows in [${span(inputs.register)}](${link(inputs.register)}). Do not edit it by hand. Change a Spec or an input, then run ${span("npm run pages")}; ${span("npm run pages -- --check")} fails while the page is behind the tree. The Protocol is pinned at ${span(`${engine}@${enginePin}`)}.${summary.modelRefs.length > 0 ? ` The members speak the vocabulary of ${list(summary.modelRefs.map(specLink))}.` : ""}`, + `This page is generated from the Specs of ${span(pack)} by ${span("scripts/pack-page.mjs")}, with two inputs: the pinned pairs in [${span(inputs.pairs)}](${link(inputs.pairs)}) and the register rows in [${span(inputs.register)}](${link(inputs.register)}). Do not edit it by hand. Change a Spec or an input, then run ${span("npm run pages")}; ${span("npm run pages -- --check")} fails while the page is behind the tree. The Protocol is pinned at ${span(`${engine}@${enginePin}`)}.${summary.modelRefs.length > 0 ? ` The members speak the vocabulary of ${list(summary.modelRefs.map(specLink))}.` : ""}`, "", "## How to read it", "", @@ -640,7 +660,7 @@ export async function generate(pack, out, base = root) { "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", "- An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries.", - "- An implementation anchor binds code to a Spec. Its site is the file it is written in; a site under `tests/` stands for the source files listed with it.", + "- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec is written against its design and confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them.", `- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [${span(pinned)}](${link(pinned)}), which ${span("npm run sdp:build")} emits and git does not keep.`, "", ); @@ -671,9 +691,7 @@ export async function generate(pack, out, base = root) { member.context.statedReadiness, member.context.derivedReadiness ?? "none", nextText(member), - member.context.implementations.length === 0 - ? "none" - : plural(member.context.implementations.length, "anchor"), + codeText(member.context), evidenceText(member), pairCounts(member), member.questions.length === 0 @@ -978,20 +996,18 @@ export async function generate(pack, out, base = root) { if (context.implementations.length > 0) { write("**Code.**", ""); - for (const binding of context.implementations) { - let line = `- ${span(binding.codeId)} at ${site(binding.file, binding.line)}${binding.label === undefined ? "" : `: ${binding.label}`}.`; - if (binding.file?.startsWith("tests/")) { - const listed = sites.get(binding.codeId); - line += - listed === undefined - ? ` Its site is a test file, and ${span(inputs.sites)} lists no source for it.` - : ` It stands for ${list(listed.map((path) => `[${span(path)}](${link(path)})`))}.`; - } - write(line); - } + for (const binding of context.implementations) write(unitLine(binding)); write(""); } else if (!isExample) write("**Code.** No implementation anchor binds it.", ""); + if (context.references.length > 0) { + write( + `**Referenced by.** ${plural(context.references.length, "unit is", "units are")} written against its design. A reference confers no delivery fact and moves no floor.`, + "", + ); + for (const binding of context.references) write(unitLine(binding)); + write(""); + } const examples = examplesOf(member); if (examples.length > 0) diff --git a/src/audit/index.ts b/src/audit/index.ts index 1651224..612c77b 100644 --- a/src/audit/index.ts +++ b/src/audit/index.ts @@ -1,4 +1,12 @@ // The audit library: the audit record of a command and the operator audit record of a gate change. +/** + * @sdpAnchor component:platform.audit + * @sdpLabel the audit library: the audit record of a command and of a gate change + * @sdpReferences spec:operations.baseline-operations + * @sdpUses component:platform.command, component:platform.context + * @sdpLayer infrastructure + * @sdpContext platform + */ export { auditDecisionValidator, auditKindValidator, diff --git a/src/command/actor-and-scope.ts b/src/command/actor-and-scope.ts index 139981f..3f84ba0 100644 --- a/src/command/actor-and-scope.ts +++ b/src/command/actor-and-scope.ts @@ -3,6 +3,13 @@ // entry states. Validators, types and the operator's check only, so the context library can import the // actor's validator without carrying the parent's helpers; those, authorize, establishActor and the // grant helpers, are in authority.ts. +/** + * @sdpAnchor impl:command.actor-and-scope + * @sdpLabel the actor, scope, namespace, authority and operator shapes + * @sdpSatisfies spec:command.actor-and-scope + * @sdpComponent component:platform.command + * @sdpRole contract + */ import { v } from "convex/values"; import { limitActorIdLength, utf8Length } from "../context/text.js"; export type ActorKind = "human" | "service" | "agent" | "reviewer" | "operator"; diff --git a/src/command/authority.ts b/src/command/authority.ts index 6031f5c..205ec95 100644 --- a/src/command/authority.ts +++ b/src/command/authority.ts @@ -3,6 +3,13 @@ // authorizeQuery, which a parent query calls before it discloses anything, the plain helpers an // operator's function uses to write and delete a grant, and nextTenant, which reads the tenant list. // None is registered here. +/** + * @sdpAnchor impl:command.tenancy-and-authority + * @sdpLabel establishActor, authorize, authorizeQuery and the grant helpers + * @sdpSatisfies spec:command.tenancy-and-authority, spec:command.actor-and-scope + * @sdpComponent component:platform.command + * @sdpRole service + */ import type { GenericDatabaseReader, GenericQueryCtx } from "convex/server"; import { ConvexError } from "convex/values"; import { limitIdLength, utf8Length } from "../context/text.js"; diff --git a/src/command/declaration.ts b/src/command/declaration.ts index de6c423..202c837 100644 --- a/src/command/declaration.ts +++ b/src/command/declaration.ts @@ -1,5 +1,12 @@ // The command declaration of spec:command.command-declaration and its two composition helpers, which // turn one declaration into the pipeline's public and internal entries. +/** + * @sdpAnchor impl:command.command-declaration + * @sdpLabel CommandDeclaration, publicCommand and internalCommand + * @sdpSatisfies spec:command.command-declaration + * @sdpComponent component:platform.command + * @sdpRole contract + */ import { internalMutationGeneric, mutationGeneric, diff --git a/src/command/index.ts b/src/command/index.ts index 635c6a8..28a3bdd 100644 --- a/src/command/index.ts +++ b/src/command/index.ts @@ -1,4 +1,12 @@ // Layer 1's command library: what runs in the parent deployment. +/** + * @sdpAnchor component:platform.command + * @sdpLabel the command library that runs in the parent deployment + * @sdpReferences spec:command.command-pipeline + * @sdpUses component:platform.kernel, component:platform.context, component:platform.gate, component:platform.read-model, component:platform.operations, component:platform.audit + * @sdpLayer application + * @sdpContext platform + */ export { actorKindValidator, actorValidator, diff --git a/src/command/outcome-boundary.ts b/src/command/outcome-boundary.ts index 5681ee3..fc1c084 100644 --- a/src/command/outcome-boundary.ts +++ b/src/command/outcome-boundary.ts @@ -1,5 +1,12 @@ // The outcome boundary of spec:command.outcome-boundary: the wire shape of a rejection and of a // transient refusal, the helpers that throw them, and the one rethrow at the pipeline's outermost level. +/** + * @sdpAnchor impl:command.outcome-boundary + * @sdpLabel reject, refuseTransient, normalizeThrown and classifyThrown + * @sdpSatisfies spec:command.outcome-boundary + * @sdpComponent component:platform.command + * @sdpRole codec + */ import { ConvexError, getConvexSize, v } from "convex/values"; import { validate } from "convex-helpers/validators"; import { rejectionValidator } from "../context/outcome.js"; diff --git a/src/command/pipeline.ts b/src/command/pipeline.ts index 428baa6..3f212fc 100644 --- a/src/command/pipeline.ts +++ b/src/command/pipeline.ts @@ -1,5 +1,12 @@ // The command pipeline of spec:command.command-pipeline: the steps between a caller's request and the // committed outcome, in one top-level mutation. Its only failure signal is a throw. +/** + * @sdpAnchor impl:command.command-pipeline + * @sdpLabel runPipeline and the command response + * @sdpSatisfies spec:command.command-pipeline + * @sdpComponent component:platform.command + * @sdpRole service + */ import type { GenericDatabaseReader, GenericDatabaseWriter, diff --git a/src/command/receipts.ts b/src/command/receipts.ts index 654f093..3339186 100644 --- a/src/command/receipts.ts +++ b/src/command/receipts.ts @@ -1,6 +1,13 @@ // Receipts of spec:command.idempotency-and-receipts: the key, the fingerprint, the lookup, the // classification and the insert, helpers inside the pipeline's mutation; and the sweep and its loop // over tenants, handlers that each composition registers as internal mutations for operations. +/** + * @sdpAnchor impl:command.idempotency-and-receipts + * @sdpLabel the receipt key, fingerprint, lookup, classification, insert and sweep + * @sdpSatisfies spec:command.idempotency-and-receipts + * @sdpComponent component:platform.command + * @sdpRole service + */ import { paginator } from "convex-helpers/server/pagination"; import { defineSchema } from "convex/server"; import { convexToJson, v, type JSONValue, type Value } from "convex/values"; diff --git a/src/command/tables.ts b/src/command/tables.ts index 4944462..a1e9e02 100644 --- a/src/command/tables.ts +++ b/src/command/tables.ts @@ -1,6 +1,13 @@ // The parent's tables of spec:command.receipt-table and spec:command.actor-and-scope, receipts, grants // and the tenant list, as a fragment the app's schema.ts spreads into defineSchema. Every index leads // with tenantId. +/** + * @sdpAnchor impl:command.receipt-table + * @sdpLabel the receipts, grants and tenant tables fragment + * @sdpSatisfies spec:command.receipt-table, spec:command.actor-and-scope + * @sdpComponent component:platform.command + * @sdpRole schema + */ import { defineTable, type DataModelFromSchemaDefinition, diff --git a/src/context/adapter.ts b/src/context/adapter.ts index f506e4c..bc55ac8 100644 --- a/src/context/adapter.ts +++ b/src/context/adapter.ts @@ -92,6 +92,12 @@ export type OperationArgs = { input: I; facts?: Readonly>; }; +/** + * @sdpAnchor impl:context.batch-shaped-api + * @sdpLabel the per-call operation bounds and runOperation over a plan + * @sdpSatisfies spec:context.batch-shaped-api + * @sdpComponent component:platform.context + */ const mebibyte = 1024 * 1024; export const limitStreamsPerCall = 256; export const limitStreamBytesPerCall = 8 * mebibyte; @@ -102,6 +108,13 @@ export const limitReturnBytesPerCall = 8 * mebibyte; function reject(rejection: Rejection): never { throw new ConvexError(rejection); } +/** + * @sdpAnchor impl:context.persistence-adapter + * @sdpLabel execute: load, decide, fold, append and save one stream + * @sdpSatisfies spec:context.persistence-adapter + * @sdpComponent component:platform.context + * @sdpRole service + */ // Load, decide, fold, append and save one stream, in that order, in the caller's sub-transaction. export async function execute( ctx: MutationCtx, diff --git a/src/context/envelope.ts b/src/context/envelope.ts index d7989ee..d43a9dd 100644 --- a/src/context/envelope.ts +++ b/src/context/envelope.ts @@ -1,4 +1,11 @@ // The event envelope of spec:context.event-envelope: the fifteen fields every event carries. +/** + * @sdpAnchor impl:context.event-envelope + * @sdpLabel the envelope types and validators + * @sdpSatisfies spec:context.event-envelope + * @sdpComponent component:platform.context + * @sdpRole contract + */ import { v } from "convex/values"; import { actorValidator, type Actor } from "../command/actor-and-scope.js"; export type CausedBy = diff --git a/src/context/index.ts b/src/context/index.ts index 2b26c72..a350de6 100644 --- a/src/context/index.ts +++ b/src/context/index.ts @@ -1,4 +1,12 @@ // Layer 1's context library: what runs inside a context component. +/** + * @sdpAnchor component:platform.context + * @sdpLabel the context library that runs inside every context component + * @sdpReferences spec:context.context-component + * @sdpUses component:platform.kernel, component:platform.command + * @sdpLayer adapter + * @sdpContext platform + */ export { causedByValidator, eventEnvelopeValidator, diff --git a/src/context/journal.ts b/src/context/journal.ts index e7328dc..3db402e 100644 --- a/src/context/journal.ts +++ b/src/context/journal.ts @@ -1,4 +1,11 @@ // The journal of spec:context.journal: a context's events, the stream registration, load and append. +/** + * @sdpAnchor impl:context.journal + * @sdpLabel createJournal, load and append + * @sdpSatisfies spec:context.journal + * @sdpComponent component:platform.context + * @sdpRole event-store + */ import type { DocumentByName as Doc } from "convex/server"; import { getConvexSize, diff --git a/src/context/operation.ts b/src/context/operation.ts index 3b31cee..57f28d2 100644 --- a/src/context/operation.ts +++ b/src/context/operation.ts @@ -29,6 +29,13 @@ export const operationArgsValidators = ( // A component's generated mutation builder is mutationGeneric typed with the component's data model. // The library types it with the tables it owns, which every context component's schema holds. const mutation: MutationBuilder = mutationGeneric; +/** + * @sdpAnchor impl:context.context-component + * @sdpLabel defineOperation, one registered mutation per sanctioned operation + * @sdpSatisfies spec:context.context-component + * @sdpComponent component:platform.context + * @sdpRole service + */ export function defineOperation( journal: Journal, declaration: OperationDeclaration, diff --git a/src/context/queries.ts b/src/context/queries.ts index b73cdd4..ab75e83 100644 --- a/src/context/queries.ts +++ b/src/context/queries.ts @@ -1,5 +1,12 @@ // The context queries of spec:context.queries: one definer per query a context serves, each // registering a public query of the component that the parent calls through the component API. +/** + * @sdpAnchor impl:context.queries + * @sdpLabel defineGet, defineList and boundedPage + * @sdpSatisfies spec:context.queries + * @sdpComponent component:platform.context + * @sdpRole query + */ import { paginator } from "convex-helpers/server/pagination"; import { defineSchema, diff --git a/src/context/tables.ts b/src/context/tables.ts index caceb0e..891322b 100644 --- a/src/context/tables.ts +++ b/src/context/tables.ts @@ -1,5 +1,12 @@ // The tables of spec:context.tables, as a fragment a context component's schema.ts spreads into // defineSchema. Single mapping only: no streamParts table. +/** + * @sdpAnchor impl:context.tables + * @sdpLabel the context tables fragment + * @sdpSatisfies spec:context.tables + * @sdpComponent component:platform.context + * @sdpRole schema + */ import { defineTable, type DataModelFromSchemaDefinition, diff --git a/src/gate/entries.ts b/src/gate/entries.ts index 1af0d53..9ed6eb4 100644 --- a/src/gate/entries.ts +++ b/src/gate/entries.ts @@ -4,6 +4,14 @@ // reaches it, that reads no grant and no ctx.auth; the two that change the gate check the stated // operator first and record the trimmed text it returns. An operator entry closes and resumes only "all" or a tenant scope; a // source scope is closed and reopened by the rebuild alone. Every refusal is a plain Error. +/** + * @sdpAnchor impl:application.write-pause.entries + * @sdpLabel the four gate operator entries + * @sdpSatisfies spec:application.write-pause + * @sdpReferences spec:command.actor-and-scope + * @sdpComponent component:platform.gate + * @sdpRole operator-entry + */ import { internalMutationGeneric, internalQueryGeneric, diff --git a/src/gate/gate.ts b/src/gate/gate.ts index 4eb1120..1dd36bb 100644 --- a/src/gate/gate.ts +++ b/src/gate/gate.ts @@ -3,6 +3,13 @@ // gateAllows plus the throw, called by the command pipeline's step 7 and by nothing else. closeScope and // resumeScope are the only writers of the gate document, and each writes its operator audit record in // the caller's mutation with no catch around it, so a failed insert changes nothing. +/** + * @sdpAnchor impl:application.write-pause + * @sdpLabel gateAllows, assertWritable and the two scope writers + * @sdpSatisfies spec:application.write-pause + * @sdpComponent component:platform.gate + * @sdpRole service + */ import type { GenericDatabaseReader, GenericDatabaseWriter, diff --git a/src/gate/index.ts b/src/gate/index.ts index 896bddf..8d8adfc 100644 --- a/src/gate/index.ts +++ b/src/gate/index.ts @@ -1,5 +1,13 @@ // The maintenance gate: its table, the writer check every command and background batch makes, the two // gate writers and the four operator entries a composition re-exports from its gate module. +/** + * @sdpAnchor component:platform.gate + * @sdpLabel the maintenance gate: its table, the writer check, the two writers and the operator entries + * @sdpReferences spec:application.write-pause + * @sdpUses component:platform.command, component:platform.context, component:platform.audit, component:platform.read-model + * @sdpLayer infrastructure + * @sdpContext platform + */ export { closeGate, getGate, diff --git a/src/gate/tables.ts b/src/gate/tables.ts index ad0651e..c52f890 100644 --- a/src/gate/tables.ts +++ b/src/gate/tables.ts @@ -1,6 +1,13 @@ // The maintenance gate's table of spec:application.write-pause, as a fragment every composition that // registers a command spreads into defineSchema, because the pipeline's step 7 reads it. It holds at // most one document, whose closed entries are in the order they were closed. +/** + * @sdpAnchor impl:application.write-pause.tables + * @sdpLabel the gate document's table fragment + * @sdpSatisfies spec:application.write-pause + * @sdpComponent component:platform.gate + * @sdpRole schema + */ import { defineTable, type DataModelFromSchemaDefinition, diff --git a/src/kernel/decider.ts b/src/kernel/decider.ts index dd764be..d23fdb8 100644 --- a/src/kernel/decider.ts +++ b/src/kernel/decider.ts @@ -1,4 +1,11 @@ // The decider contract of spec:kernel.decider-contract: the shapes a context's pure domain code fits, and its helpers. +/** + * @sdpAnchor impl:kernel.decider-contract + * @sdpLabel the decider contract's shapes and its fold, rebuild, invariant and transition helpers + * @sdpSatisfies spec:kernel.decider-contract + * @sdpComponent component:platform.kernel + * @sdpRole contract + */ import type { Rejection } from "./outcome.js"; // The adapter adds the envelope; a decider returns only these fields. export type DomainEvent = { diff --git a/src/kernel/index.ts b/src/kernel/index.ts index 6f2810c..6c692ea 100644 --- a/src/kernel/index.ts +++ b/src/kernel/index.ts @@ -1,4 +1,11 @@ // Layer 0, the pure domain kernel. Its one Convex import is the type Value, which the compiler erases. +/** + * @sdpAnchor component:platform.kernel + * @sdpLabel the pure domain kernel: the decider contract and the outcome types + * @sdpReferences spec:kernel.domain-kernel + * @sdpLayer domain + * @sdpContext platform + */ export type { AffectedRef, CommittedOutcome, diff --git a/src/kernel/outcome.ts b/src/kernel/outcome.ts index d9ebba4..4617133 100644 --- a/src/kernel/outcome.ts +++ b/src/kernel/outcome.ts @@ -1,4 +1,12 @@ // The outcome model of spec:kernel.outcome-model. Types only; the validators belong to the context boundary. +/** + * @sdpAnchor impl:kernel.decider-contract.outcome + * @sdpLabel the outcome model's types, which the decider contract reuses + * @sdpSatisfies spec:kernel.decider-contract + * @sdpReferences spec:kernel.outcome-model + * @sdpComponent component:platform.kernel + * @sdpRole contract + */ import type { Value } from "convex/values"; export type StreamVersion = { tenantId: string; diff --git a/src/operations/index.ts b/src/operations/index.ts index 9444750..cd73eb9 100644 --- a/src/operations/index.ts +++ b/src/operations/index.ts @@ -1,4 +1,12 @@ // The operations library: the diagnostic record a command writes beside its outcome. +/** + * @sdpAnchor component:platform.operations + * @sdpLabel the operations library: the diagnostic record a command writes + * @sdpReferences spec:operations.baseline-operations + * @sdpUses component:platform.kernel, component:platform.context, component:platform.command + * @sdpLayer infrastructure + * @sdpContext platform + */ export { consoleSink, diagnosticGapLine, diff --git a/src/read-model/generations.ts b/src/read-model/generations.ts index bcf19bf..0f98368 100644 --- a/src/read-model/generations.ts +++ b/src/read-model/generations.ts @@ -1,4 +1,11 @@ // The registry reads a command and a query make. None is registered here. +/** + * @sdpAnchor impl:application.generation-registry + * @sdpLabel generationsToWrite and activeGeneration + * @sdpSatisfies spec:application.generation-registry + * @sdpComponent component:platform.read-model + * @sdpRole query + */ import type { WritableGeneration } from "./projection.js"; import { registryReader, diff --git a/src/read-model/index.ts b/src/read-model/index.ts index 2f008d8..2ceed08 100644 --- a/src/read-model/index.ts +++ b/src/read-model/index.ts @@ -1,4 +1,12 @@ // The read-model library: what the parent uses to declare, rebuild, write and read a read model. +/** + * @sdpAnchor component:platform.read-model + * @sdpLabel the read-model library: declare, rebuild, write and read a read model + * @sdpReferences spec:application.read-models + * @sdpUses component:platform.kernel, component:platform.context, component:platform.command, component:platform.gate + * @sdpLayer application + * @sdpContext platform + */ export { activeGeneration, generationsToWrite } from "./generations.js"; export { applyProjection, diff --git a/src/read-model/projection.ts b/src/read-model/projection.ts index f57cee1..fc62efb 100644 --- a/src/read-model/projection.ts +++ b/src/read-model/projection.ts @@ -1,5 +1,12 @@ // The projection contract of spec:application.projection-contract for a per-entity read model: its // declaration, its projection, and applyProjection, the one writer of its rows. +/** + * @sdpAnchor impl:application.projection-contract + * @sdpLabel ReadModel, Projection and applyProjection + * @sdpSatisfies spec:application.projection-contract + * @sdpComponent component:platform.read-model + * @sdpRole projection + */ import { getConvexSize, type Value } from "convex/values"; import type { GenericDataModel } from "convex/server"; import type { StreamVersion } from "../kernel/index.js"; diff --git a/src/read-model/queries.ts b/src/read-model/queries.ts index d2db04f..8c77636 100644 --- a/src/read-model/queries.ts +++ b/src/read-model/queries.ts @@ -1,5 +1,12 @@ // What a parent query over a read model returns, and the bound on a list page of one // (spec:application.read-models). +/** + * @sdpAnchor impl:application.read-models.queries + * @sdpLabel readModelView, pageInGeneration and limitReadModelList + * @sdpSatisfies spec:application.read-models + * @sdpComponent component:platform.read-model + * @sdpRole query + */ import { limitListBytes, limitListPage, diff --git a/src/read-model/rebuild.ts b/src/read-model/rebuild.ts index 846c2fa..02ef1a5 100644 --- a/src/read-model/rebuild.ts +++ b/src/read-model/rebuild.ts @@ -1,4 +1,12 @@ // The operator entries and bounded batch chains of the online read-model rebuild. +/** + * @sdpAnchor impl:application.rebuild + * @sdpLabel the online rebuild's operator entries, batch chains, tenant fill and batch bounds + * @sdpSatisfies spec:application.rebuild + * @sdpReferences spec:application.history-rebuild + * @sdpComponent component:platform.read-model + * @sdpRole service + */ import type { FunctionReference, GenericMutationCtx, diff --git a/src/read-model/tables.ts b/src/read-model/tables.ts index 497a618..162bc84 100644 --- a/src/read-model/tables.ts +++ b/src/read-model/tables.ts @@ -2,6 +2,14 @@ // aggregate markers and the tenant fill's row, and the conventions every // per-entity read-model row follows (spec:application.projection-contract), as fragments the parent's // schema.ts spreads into defineSchema. +/** + * @sdpAnchor impl:application.generation-registry.tables + * @sdpLabel the generations, progress, marker and tenant fill tables and rowConventions + * @sdpSatisfies spec:application.generation-registry, spec:application.projection-contract + * @sdpReferences spec:application.aggregate-projection + * @sdpComponent component:platform.read-model + * @sdpRole schema + */ import { defineTable, type DataModelFromSchemaDefinition, diff --git a/src/read-model/write.ts b/src/read-model/write.ts index b8107e4..e21264e 100644 --- a/src/read-model/write.ts +++ b/src/read-model/write.ts @@ -1,5 +1,12 @@ // The read-model half of step 9 of spec:command.command-pipeline: the read models a command declares, // written from the streams entries its executor returned. +/** + * @sdpAnchor impl:application.read-models + * @sdpLabel writeReadModels, step 9's read-model half + * @sdpSatisfies spec:application.read-models, spec:command.command-pipeline + * @sdpComponent component:platform.read-model + * @sdpRole service + */ import type { StreamDto } from "../context/adapter.js"; import type { StreamVersion } from "../kernel/index.js"; import { generationsToWrite } from "./generations.js"; diff --git a/tests/pure/anchor-sites.test.ts b/tests/pure/anchor-sites.test.ts deleted file mode 100644 index 8c15535..0000000 --- a/tests/pure/anchor-sites.test.ts +++ /dev/null @@ -1,112 +0,0 @@ -import type { - CodeNode, - GraphSchema, -} from "@libar-dev/software-delivery-protocol"; -import { statSync } from "node:fs"; -import { readFile } from "node:fs/promises"; -import { join } from "node:path"; -import { expect, test } from "vitest"; - -// design/tools/anchor-sites.json names, for every implementation anchor whose site is a file under -// tests/, the source files it stands for: the code it binds is bundled into a deployment and carries -// no Protocol import, so a test carries the anchor for it. The anchors are read from the graph that -// `npm run sdp:build` derives before the tests run, as the harness rules read it. -type AnchorSites = { anchors: { anchor: string; sources: string[] }[] }; - -const root = join(import.meta.dirname, "../.."); - -function isFile(path: string): boolean { - try { - return statSync(join(root, path)).isFile(); - } catch { - return false; - } -} - -// What keeps the list from being the true one: an anchor under tests/ it misses, an anchor it lists -// that is not under tests/, an anchor it lists twice, or a source that is not a file of the repository. -function anchorSiteGaps( - nodes: GraphSchema["nodes"], - sites: AnchorSites, - fileExists: (path: string) => boolean, -): string[] { - const anchors = nodes.filter( - (node): node is CodeNode => node.nodeType === "CodeNode", - ); - const underTests = new Set( - anchors - .filter((node) => node.file.startsWith("tests/")) - .map((node) => node.id), - ); - const listed = sites.anchors.map((site) => site.anchor); - const gaps: string[] = []; - for (const id of [...underTests].sort()) - if (!listed.includes(id)) - gaps.push(`${id} sits under tests/ and is not listed`); - for (const id of new Set(listed)) { - if (!underTests.has(id)) - gaps.push(`${id} is listed and is no implementation anchor under tests/`); - if (listed.filter((other) => other === id).length > 1) - gaps.push(`${id} is listed twice`); - } - for (const site of sites.anchors) { - if (site.sources.length === 0) gaps.push(`${site.anchor} names no source`); - for (const source of site.sources) - if (!fileExists(source)) - gaps.push(`${site.anchor} names ${source}, which is not a file`); - } - return gaps; -} - -test("pure: every implementation anchor under tests/ is listed once in design/tools/anchor-sites.json, with sources that are files", async () => { - const graph = JSON.parse( - await readFile(join(root, "generated/graph.json"), "utf8"), - ) as GraphSchema; - const sites = JSON.parse( - await readFile(join(root, "design/tools/anchor-sites.json"), "utf8"), - ) as AnchorSites; - expect(sites.anchors.length).toBeGreaterThan(0); - expect(anchorSiteGaps(graph.nodes, sites, isFile)).toEqual([]); -}); - -test("pure: the anchor sites check refuses a missing anchor, an anchor elsewhere, an anchor listed twice and a source that is no file", () => { - const node = (id: string, file: string) => - ({ id, nodeType: "CodeNode", claim: "anchored", file }) as CodeNode; - const nodes = [ - node("impl:a.listed", "tests/pure/a.test.ts"), - node("impl:a.missing", "tests/pure/b.test.ts"), - node("impl:a.harness", "harness/native.ts"), - ]; - const files = new Set(["src/a.ts"]); - expect( - anchorSiteGaps( - nodes, - { - anchors: [ - { anchor: "impl:a.listed", sources: ["src/a.ts", "src/gone.ts"] }, - { anchor: "impl:a.listed", sources: ["src/a.ts"] }, - { anchor: "impl:a.harness", sources: ["src"] }, - ], - }, - (path) => files.has(path), - ), - ).toEqual([ - "impl:a.missing sits under tests/ and is not listed", - "impl:a.listed is listed twice", - "impl:a.harness is listed and is no implementation anchor under tests/", - "impl:a.listed names src/gone.ts, which is not a file", - "impl:a.harness names src, which is not a file", - ]); - expect( - anchorSiteGaps(nodes.slice(0, 1), { anchors: [] }, () => true), - ).toEqual(["impl:a.listed sits under tests/ and is not listed"]); - expect( - anchorSiteGaps( - nodes.slice(0, 1), - { anchors: [{ anchor: "impl:a.listed", sources: [] }] }, - () => true, - ), - ).toEqual(["impl:a.listed names no source"]); - expect(isFile("src/read-model/rebuild.ts")).toBe(true); - expect(isFile("src/read-model")).toBe(false); -}); diff --git a/tests/pure/byfile-coverage.test.ts b/tests/pure/byfile-coverage.test.ts new file mode 100644 index 0000000..c1c920f --- /dev/null +++ b/tests/pure/byfile-coverage.test.ts @@ -0,0 +1,129 @@ +import { + createReader, + type GraphSchema, +} from "@libar-dev/software-delivery-protocol"; +import { readFile } from "node:fs/promises"; +import { join } from "node:path"; +import { expect, test } from "vitest"; + +// Every source file and Spec the retired design/tools/anchor-sites.json joined by hand, when the +// anchors stood in tests. The source files now carry comment-form anchors at their own sites, so +// byFile on each file names each of its Specs through a satisfies or a references edge. The graph is +// the one `npm run sdp:build` derives before the tests run. +const associations: Record = { + "example/convex/inventory/convex.config.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/inventory/operations.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/inventory/queries/stockItem.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/inventory/schema.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/inventory/streams.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/orderSummary.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/ordering.ts": [ + "spec:application.orders-inventory-example", + "spec:application.parent-use-cases", + ], + "example/convex/orders/convex.config.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/orders/operations.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/orders/queries/order.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/orders/schema.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/orders/streams.ts": [ + "spec:application.orders-inventory-example", + ], + "example/convex/receiving.ts": [ + "spec:application.orders-inventory-example", + "spec:application.parent-use-cases", + ], + "example/domain/order.ts": ["spec:application.orders-inventory-example"], + "example/domain/stockItem.ts": ["spec:application.orders-inventory-example"], + "fixture/convex/depot/convex.config.ts": ["spec:context.context-component"], + "fixture/convex/depot/operations.ts": [ + "spec:context.batch-shaped-api", + "spec:context.context-component", + ], + "fixture/convex/depot/queries/document.ts": [ + "spec:context.context-component", + ], + "fixture/convex/depot/schema.ts": ["spec:context.context-component"], + "fixture/convex/depot/streams.ts": ["spec:context.context-component"], + "fixture/convex/depotCommands.ts": ["spec:command.command-declaration"], + "src/command/actor-and-scope.ts": ["spec:command.actor-and-scope"], + "src/command/authority.ts": ["spec:command.tenancy-and-authority"], + "src/command/declaration.ts": ["spec:command.command-declaration"], + "src/command/outcome-boundary.ts": ["spec:command.outcome-boundary"], + "src/command/pipeline.ts": ["spec:command.command-pipeline"], + "src/command/receipts.ts": ["spec:command.idempotency-and-receipts"], + "src/command/tables.ts": [ + "spec:command.actor-and-scope", + "spec:command.receipt-table", + ], + "src/context/adapter.ts": [ + "spec:context.batch-shaped-api", + "spec:context.persistence-adapter", + ], + "src/context/envelope.ts": ["spec:context.event-envelope"], + "src/context/journal.ts": ["spec:context.journal"], + "src/context/operation.ts": ["spec:context.context-component"], + "src/context/queries.ts": ["spec:context.queries"], + "src/context/tables.ts": ["spec:context.tables"], + "src/gate/entries.ts": ["spec:application.write-pause"], + "src/gate/gate.ts": ["spec:application.write-pause"], + "src/gate/tables.ts": ["spec:application.write-pause"], + "src/kernel/decider.ts": ["spec:kernel.decider-contract"], + "src/kernel/outcome.ts": ["spec:kernel.decider-contract"], + "src/read-model/generations.ts": ["spec:application.generation-registry"], + "src/read-model/projection.ts": ["spec:application.projection-contract"], + "src/read-model/queries.ts": ["spec:application.read-models"], + "src/read-model/rebuild.ts": ["spec:application.rebuild"], + "src/read-model/tables.ts": ["spec:application.generation-registry"], + "src/read-model/write.ts": ["spec:application.read-models"], +}; + +const root = join(import.meta.dirname, "../.."); + +test("pure: byFile names every Spec the retired anchor sites joined to each source file", async () => { + const graph = JSON.parse( + await readFile(join(root, "generated/graph.json"), "utf8"), + ) as GraphSchema; + const reader = createReader(graph); + const pairs = Object.entries(associations).flatMap(([file, specs]) => + specs.map((spec) => [file, spec] as const), + ); + expect(pairs).toHaveLength(50); + const missing = pairs.filter( + ([file, spec]) => !reader.byFile(file).specs.includes(spec), + ); + expect(missing).toEqual([]); +}); + +test("pure: no implementation anchor sits in a test file", async () => { + const graph = JSON.parse( + await readFile(join(root, "generated/graph.json"), "utf8"), + ) as GraphSchema; + expect( + graph.nodes + .filter( + (node) => + node.nodeType === "CodeNode" && node.file.startsWith("tests/"), + ) + .map((node) => node.id), + ).toEqual([]); +}); diff --git a/tests/pure/command.test.ts b/tests/pure/command.test.ts index 17d7acb..8f9f2d6 100644 --- a/tests/pure/command.test.ts +++ b/tests/pure/command.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { validate } from "convex-helpers/validators"; import { ConvexError, getConvexSize, v, type Value } from "convex/values"; import { createHash } from "node:crypto"; @@ -20,53 +15,6 @@ import { reject, type Receipt, } from "../../src/command/index.js"; -// Binds the command library under src/command/ to its Specs. The library is bundled into the parent -// deployment, so it carries no Protocol import itself; these tests carry its anchors. -const anchorPipeline = codeAnchor({ - id: codeAnchorId("impl:command.command-pipeline"), - label: "runPipeline and the command response in src/command", - satisfies: ref("spec:command.command-pipeline"), -}); -const anchorBoundary = codeAnchor({ - id: codeAnchorId("impl:command.outcome-boundary"), - label: "reject, refuseTransient, normalizeThrown and classifyThrown", - satisfies: ref("spec:command.outcome-boundary"), -}); -const anchorReceipts = codeAnchor({ - id: codeAnchorId("impl:command.idempotency-and-receipts"), - label: "the receipt key, fingerprint, lookup, classification and insert", - satisfies: ref("spec:command.idempotency-and-receipts"), -}); -const anchorReceiptTable = codeAnchor({ - id: codeAnchorId("impl:command.receipt-table"), - label: "the receipts table in src/command", - satisfies: ref("spec:command.receipt-table"), -}); -const anchorAuthority = codeAnchor({ - id: codeAnchorId("impl:command.tenancy-and-authority"), - label: "establishActor, authorize and the grant helpers", - satisfies: ref("spec:command.tenancy-and-authority"), -}); -const anchorActorAndScope = codeAnchor({ - id: codeAnchorId("impl:command.actor-and-scope"), - label: "the actor, scope, namespace, authority and grants shapes", - satisfies: ref("spec:command.actor-and-scope"), -}); -const anchorDeclaration = codeAnchor({ - id: codeAnchorId("impl:command.command-declaration"), - label: - "CommandDeclaration, publicCommand, internalCommand and the depot commands", - satisfies: ref("spec:command.command-declaration"), -}); -void [ - anchorPipeline, - anchorBoundary, - anchorReceipts, - anchorReceiptTable, - anchorAuthority, - anchorActorAndScope, - anchorDeclaration, -]; test("pure: canonicalJson sorts object keys at every depth, keeps array order and omits undefined members", () => { expect(canonicalJson({ b: 1, a: { d: [3, 1], c: "x" }, e: undefined })).toBe( diff --git a/tests/pure/context-queries.test.ts b/tests/pure/context-queries.test.ts index 417e497..b0e7fce 100644 --- a/tests/pure/context-queries.test.ts +++ b/tests/pure/context-queries.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import type { PaginationOptions } from "convex/server"; import type { Validator, Value } from "convex/values"; import { expect, test } from "vitest"; @@ -19,13 +14,6 @@ import { journal, stockStream, } from "../../fixture/convex/depot/streams.js"; -// Binds the context queries under src/context/ to their Spec; the library carries no Protocol import. -const anchor = codeAnchor({ - id: codeAnchorId("impl:context.queries"), - label: "defineGet, defineList and boundedPage in src/context", - satisfies: ref("spec:context.queries"), -}); -void anchor; // What Convex reads of a registered function and of a validator, which their types keep internal. type Exported = { exportArgs(): string; exportReturns(): string }; const exported = (fn: unknown) => fn as Exported; diff --git a/tests/pure/context.test.ts b/tests/pure/context.test.ts index 953a215..5969d50 100644 --- a/tests/pure/context.test.ts +++ b/tests/pure/context.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { v } from "convex/values"; import { expect, test } from "vitest"; import { @@ -20,47 +15,6 @@ import { type StockResult, type StockState, } from "../../fixture/domain/index.js"; -// Binds the context library under src/context/ to its Specs. The library is bundled into every -// context component, so it carries no Protocol import itself; these tests carry its anchors. -const anchorComponent = codeAnchor({ - id: codeAnchorId("impl:context.context-component"), - label: "defineOperation and the depot fixture context", - satisfies: ref("spec:context.context-component"), -}); -const anchorAdapter = codeAnchor({ - id: codeAnchorId("impl:context.persistence-adapter"), - label: "execute, planned and runOperation in src/context", - satisfies: ref("spec:context.persistence-adapter"), -}); -const anchorJournal = codeAnchor({ - id: codeAnchorId("impl:context.journal"), - label: "createJournal, load and append in src/context", - satisfies: ref("spec:context.journal"), -}); -const anchorTables = codeAnchor({ - id: codeAnchorId("impl:context.tables"), - label: "the context tables in src/context", - satisfies: ref("spec:context.tables"), -}); -const anchorEnvelope = codeAnchor({ - id: codeAnchorId("impl:context.event-envelope"), - label: "the envelope types and validators in src/context", - satisfies: ref("spec:context.event-envelope"), -}); -const anchorBatch = codeAnchor({ - id: codeAnchorId("impl:context.batch-shaped-api"), - label: - "the operation bounds in src/context and the depot's list-shaped operations", - satisfies: ref("spec:context.batch-shaped-api"), -}); -void [ - anchorComponent, - anchorAdapter, - anchorJournal, - anchorTables, - anchorEnvelope, - anchorBatch, -]; const stock: StreamRegistration< StockState, StockCommand, diff --git a/tests/pure/example-domain.test.ts b/tests/pure/example-domain.test.ts index c081bb0..e5e03a5 100644 --- a/tests/pure/example-domain.test.ts +++ b/tests/pure/example-domain.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { validate } from "convex-helpers/validators"; import { expect, test } from "vitest"; import { @@ -30,15 +25,6 @@ import { } from "../../example/convex/orders/streams.js"; import { orderSummary } from "../../example/convex/orderSummary.js"; import type { StreamMeta } from "../../src/context/index.js"; -// Binds the production composition under example/ to the Spec of its domain. The composition is -// bundled into a deployment, so it carries no Protocol import itself; this test carries its anchor. -const anchor = codeAnchor({ - id: codeAnchorId("impl:application.orders-inventory-example"), - label: - "the order and stock item deciders, the Orders and Inventory contexts, PlaceOrder, CancelOrder, ReceiveStock and the order summary", - satisfies: ref("spec:application.orders-inventory-example"), -}); -void anchor; const context: DecisionContext = { now: Date.UTC(2026, 9, 1, 12), actor: { kind: "human", id: "example-user" }, diff --git a/tests/pure/example-use-cases.test.ts b/tests/pure/example-use-cases.test.ts index ad88207..4735dbd 100644 --- a/tests/pure/example-use-cases.test.ts +++ b/tests/pure/example-use-cases.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { getFunctionAddress } from "convex/server"; import { expect, test } from "vitest"; import { @@ -13,14 +8,6 @@ import { receiveStockDeclaration } from "../../example/convex/receiving.js"; import type { MutationCtx } from "../../src/command/index.js"; import type { OperationRef, StreamDto } from "../../src/context/index.js"; import type { StreamVersion } from "../../src/kernel/index.js"; -// Binds PlaceOrder, CancelOrder and ReceiveStock, the production composition's use cases, to their Spec. -const anchor = codeAnchor({ - id: codeAnchorId("impl:application.parent-use-cases"), - label: - "PlaceOrder and CancelOrder over Orders and then Inventory, and ReceiveStock", - satisfies: ref("spec:application.parent-use-cases"), -}); -void anchor; type Call = { reference: string; args: Record }; const version = ( contextId: string, diff --git a/tests/pure/kernel.test.ts b/tests/pure/kernel.test.ts index 65b6740..2799d1e 100644 --- a/tests/pure/kernel.test.ts +++ b/tests/pure/kernel.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { expect, test, vi } from "vitest"; import { checkInvariants, @@ -13,14 +8,6 @@ import { type DomainEvent, type Transitions, } from "../../src/kernel/index.js"; -// Binds the kernel under src/kernel/ to its contract. The kernel imports no package at run time, -// so it cannot carry the anchor itself; its unit tests carry it for it. -const anchor = codeAnchor({ - id: codeAnchorId("impl:kernel.decider-contract"), - label: "the domain kernel in src/kernel", - satisfies: ref("spec:kernel.decider-contract"), -}); -void anchor; type Added = DomainEvent<"added", { amount: number }>; function counter(initial: number): Decider { return { diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index 5a9c5b6..adf8f1b 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -64,7 +64,6 @@ type PackPage = { text: string, ): Promise<{ text: string; formatted: boolean }>; readPinnedPairs(base: string, pack: string): unknown; - readAnchorSites(base: string): unknown; readRegister(base: string): Row[]; indexTables( rows: { spec: string; key: string; declaration: string }[], @@ -311,9 +310,6 @@ test("a missing input is an error that names its path", async () => { expect(() => page.readPinnedPairs(base, "pack:history-view")).toThrow( "tests/types/pinned-pairs.json is missing", ); - expect(() => page.readAnchorSites(base)).toThrow( - "design/tools/anchor-sites.json is missing", - ); expect(() => page.readRegister(base)).toThrow( "design/decisions/register.json is missing", ); @@ -565,10 +561,6 @@ test("the page of a sample Pack reads its order, its blockers and its register r pairs: [], }), ); - await put( - "design/tools/anchor-sites.json", - JSON.stringify({ anchors: [] }), - ); // The Pack lists its members out of id order. await put( "design/specs/sample.pack.sdp.md", @@ -745,7 +737,6 @@ async function smallSample(base: string) { pairs: [], }), ); - await put("design/tools/anchor-sites.json", JSON.stringify({ anchors: [] })); await put( "design/decisions/register.json", JSON.stringify({ decisions: [] }), @@ -773,6 +764,64 @@ async function smallSample(base: string) { ); } +// The code of a member comes from the graph alone: a comment-form anchor in a source file binds at its +// own site, and the page names its role and its component's layer and context. +test("the page names each code unit at its own site, with its role and component, and lists the units that reference a member", async () => { + const base = await mkdtemp(join(tmpdir(), "pack-page-")); + const put = async (path: string, text: string) => { + await mkdir(dirname(join(base, path)), { recursive: true }); + await writeFile(join(base, path), text); + }; + try { + await smallSample(base); + await put( + "src/sample/index.ts", + [ + "/**", + " * @sdpAnchor component:sample.core", + " * @sdpLabel the sample's core", + " * @sdpLayer domain", + " * @sdpContext sample", + " */", + "export {};", + "", + ].join("\n"), + ); + await put( + "src/sample/rules.ts", + [ + "// The sample's rules.", + "/**", + " * @sdpAnchor impl:sample.rules", + " * @sdpLabel the sample's rules", + " * @sdpReferences spec:sample.alpha", + " * @sdpComponent component:sample.core", + " * @sdpRole decider", + " */", + "export const rules = 1;", + "", + ].join("\n"), + ); + const text = await page.generate( + "pack:sample", + join(base, "design/pages/sample.md"), + base, + ); + expect(text).not.toContain("anchor-sites"); + expect(text).toMatch( + /^\| \[1\]\(#1-the-alpha-decision\) .*\| referenced by 1 unit \|/m, + ); + expect(text).toContain( + "**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor.", + ); + expect(text).toContain( + "- `impl:sample.rules` at [`src/sample/rules.ts` line 2](../../src/sample/rules.ts#L2): the sample's rules. Its role is decider. It belongs to `component:sample.core`, in the domain layer and the sample context.", + ); + } finally { + await rm(base, { recursive: true, force: true }); + } +}); + test("the command's --check exits 1 for a page that is missing or behind the tree, and 0 for a current one", async () => { const base = await mkdtemp(join(tmpdir(), "pack-page-")); const said: string[] = []; diff --git a/tests/pure/read-model.test.ts b/tests/pure/read-model.test.ts index 0feb980..d065543 100644 --- a/tests/pure/read-model.test.ts +++ b/tests/pure/read-model.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { expect, test } from "vitest"; import { documentSummary } from "../../fixture/convex/summaries.js"; import { limitListBytes } from "../../src/context/index.js"; @@ -14,24 +9,6 @@ import { limitRowBudgetBytes, readModelView, } from "../../src/read-model/index.js"; -// Binds the read-model library under src/read-model/ to its Specs. The library is bundled into the -// parent deployment, so it carries no Protocol import itself; these tests carry its anchors. -const anchorProjection = codeAnchor({ - id: codeAnchorId("impl:application.projection-contract"), - label: "ReadModel, Projection, rowConventions and applyProjection", - satisfies: ref("spec:application.projection-contract"), -}); -const anchorRegistry = codeAnchor({ - id: codeAnchorId("impl:application.generation-registry"), - label: "the generations table, generationsToWrite and activeGeneration", - satisfies: ref("spec:application.generation-registry"), -}); -const anchorReadModels = codeAnchor({ - id: codeAnchorId("impl:application.read-models"), - label: "writeReadModels, readModelView and limitReadModelList", - satisfies: ref("spec:application.read-models"), -}); -void [anchorProjection, anchorRegistry, anchorReadModels]; const version = { tenantId: "t-1", contextId: "depot", diff --git a/tests/pure/rebuild.test.ts b/tests/pure/rebuild.test.ts index cf05577..a3a493e 100644 --- a/tests/pure/rebuild.test.ts +++ b/tests/pure/rebuild.test.ts @@ -1,8 +1,3 @@ -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { expect, test } from "vitest"; import { deletedTitle } from "../../fixture/convex/depot/streams.js"; import { @@ -22,16 +17,6 @@ import { readModel, version, } from "./rebuild-support.js"; -// Binds the online rebuild in src/read-model/rebuild.ts to its Spec. The library is bundled into the -// parent deployment, so it carries no Protocol import itself; this test carries its anchor. The paused -// path of a history view is spec:application.history-rebuild, which no code realizes. -const anchor = codeAnchor({ - id: codeAnchorId("impl:application.rebuild"), - label: - "the online rebuild's operator entries, batch chains, tenant fill and batch bounds", - satisfies: ref("spec:application.rebuild"), -}); -void anchor; // projection-contract.sdp.md fnProjectionOf:68, typeReadModel:67; native-harness.sdp.md fixtureReadModel:90. test("pure: projectionOf selects the declared version and the latest projection is first", () => { diff --git a/tests/pure/write-pause.test.ts b/tests/pure/write-pause.test.ts index eee0fd3..62b7348 100644 --- a/tests/pure/write-pause.test.ts +++ b/tests/pure/write-pause.test.ts @@ -1,10 +1,5 @@ // The operator check, the scopes of a use case and the shapes of the gate and audit tables // (spec:command.actor-and-scope, spec:application.write-pause, spec:operations.baseline-operations). -import { - codeAnchor, - codeAnchorId, - ref, -} from "@libar-dev/software-delivery-protocol"; import { expect, test } from "vitest"; import { auditTables } from "../../src/audit/index.js"; import { assertOperator, limitOperatorBytes } from "../../src/command/index.js"; @@ -15,16 +10,6 @@ import { scopesOfUseCase, } from "../../src/gate/index.js"; -// Binds the gate library under src/gate/ to its Spec. The library is bundled into the parent -// deployment, so it carries no Protocol import itself; this test carries its anchor. -const anchor = codeAnchor({ - id: codeAnchorId("impl:application.write-pause"), - label: - "the gate document, gateAllows, assertWritable, the scope writers and the four gate entries", - satisfies: ref("spec:application.write-pause"), -}); -void anchor; - test("pure: assertOperator refuses an empty or whitespace-only operator and one above 512 bytes, and returns any other trimmed", () => { for (const operator of ["", " ", "\t\n "]) expect(() => assertOperator(operator)).toThrow( From 2a6842a7f8dd488187476e110016eaa695f44b5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Fri, 9 Oct 2026 22:07:28 +0200 Subject: [PATCH 44/60] docs: the annotations arc in the state file The showcase moved every implementation anchor into the source, so the state file stops describing the anchor-sites join as current. Decision 60 now states how an anchor is written here, decision 67 drops the join from the adopter's joins, and the pack-page record says the join was retired. Lead 17's kernel half and the test-resident anchor items of leads 45 and 46 close with a pointer to the feedback file's 2026-10-09 section; what stands is the file-and-line binding, for the Protocol. The owner-queue entry on annotations is rewritten: the Protocol's branch feature/annotations-v0 rules it through three decisions held for the owner's ready (MD-36, MD-37, MD-38), and the owner decides here the layers, the contexts, whether example/ is architecture, the reference direction, and the word layer, which CONTEXT.md already gives another meaning. Co-Authored-By: Claude Fable 5.1 --- design/STATE.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index 22d55b2..917bb99 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -54,7 +54,7 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` **The unit `pack-page`**, on 2026-10-04, on `unit/design-in-the-graph` from `746782c`, extending pull request #12. Main thread Opus 5.5. The owner: "Please help me plan and execute a logical but sizeable part of this scope: docs/feedback/sdp-feedback-03-selection.md", and chose round 1 of the selection, steps 1, 3 and 4, from the main thread's options. The unit folder is `application-platform-pack-page`. - The owner's rulings: OD-162, the generation registry, the command declaration and the command pipeline pin the per-entity and history forms only ("Drop the aggregate form"); OD-163, a stated `ready` means approved to build ("Approved to build"); and the move of the feedback file into `docs/feedback/`. -- The page. `scripts/pack-page.mjs` writes `design/pages/history-view.md` from the graph in memory (`npm run pages`), deterministic and committed, and `check.py` fails when it is behind the tree, missing or unlisted (`PACK_PAGES`). The pinned pairs became data in `tests/types/pinned-pairs.json`, and the source files of the 22 anchors that live in tests are named in `design/tools/anchor-sites.json`, each file kept in step by a pure test. The page's own reads of the Pack file and of the floors gave way to the Protocol's data in `sdp-round-2`. +- The page. `scripts/pack-page.mjs` writes `design/pages/history-view.md` from the graph in memory (`npm run pages`), deterministic and committed, and `check.py` fails when it is behind the tree, missing or unlisted (`PACK_PAGES`). The pinned pairs became data in `tests/types/pinned-pairs.json`, and the source files of the 22 anchors that then lived in tests were named in `design/tools/anchor-sites.json`, kept in step by a pure test, until the comment form moved those anchors into the source (decision 60). The page's own reads of the Pack file and of the floors gave way to the Protocol's data in `sdp-round-2`. - One maturity per Spec, applied (`PLAN.md` 6.7). `spec:application.history-rebuild` took the rebuild's history path and its two paused examples verbatim, the rebuild and the write pause carry implementation anchors, and the aggregate form left the three built Specs for `spec:application.aggregate-projection`, so their floors reach `ready`. - The review. `gpt-6-astra` at high on a frozen copy with one plant (`job-mut4hpxq-53aad487`, 10.0 min) caught the plant, found one more blocker, a deleted page that left nothing to check, and confirmed every member's floor. An astra reader (`job-mut4hpww-482df8d2`, 2.9 min) did four of the five page tasks from the page alone. The fold-in `0f6e91b` closed both. Two sol lanes and an Opus taste lane were stopped by the owner as excessive (decision 63). @@ -356,14 +356,14 @@ The owner accepted the first nine on the session's recommendation. The session t 57. A pass reads one capability's Pack from one lens before its build, with `design/advisors/task-pass.md`; its memo is checked like a roadmap memo, on a copy with a plant, before the main thread rules. The implementation pass is the main thread's, read through the pinned module. 58. A capability Pack has a committed page, `design/pages/.md`, written by `scripts/pack-page.mjs` from the graph in memory, with no commit, timestamp or absolute path; `check.py` keeps the list of pages (`PACK_PAGES`) and fails on one that is behind, missing or unlisted. An edit to a member Spec is followed by `npm run pages`. A pass reads the page first. 59. The pinned pairs are data, `tests/types/pinned-pairs.json`, beside the type test, which a pure test keeps in step; the page reads them and parses no test. The pinned module is formatted by Prettier. -60. An anchor that lives in a test names the source files it stands for in `design/tools/anchor-sites.json`, kept by a pure test; the graph does not hold the link. +60. An implementation anchor sits in the source file it binds, as a comment-form block of reserved `@sdp` tags that imports nothing from the Protocol (`57ed4f8`, at the pin `da56a34`). There is one identity per realizing unit. A unit satisfies a Spec its own code realizes and references a design it is written against, and a reference confers no delivery fact. A component anchor states its layer and context from the provisional mapping until the owner rules on it (Owner queue). No test file keeps an implementation anchor, and the harness keeps its 18 constant-form anchors. `design/tools/anchor-sites.json`, the join that stood in while anchors lived in tests, is deleted with its test, and `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. 61. Ended by decision 65. The register cited an open question by its Spec and the opening of its text, never by position, and `check.py` verified it. 62. A built Spec may pin a type that a designed form widens, listed ahead; a behavior the code lacks lives in a Spec of its own (`PLAN.md` 6.7). The rebuild is split by it. 63. The owner, 2026-10-04, on the four worktree lanes and five review lanes of `pack-page`: "This approach is appropriate if for implementation of a large full-week epic. ... it is excessive, very."; on worktrees: "I would say no benefit at all."; and "situation dictates actions. And intelligence of the orchestrator decides. Guides are recommendations to consider (unless project has hard rules)." Until the owner rules on the proposal (Owner queue), the main thread sizes review and isolation to the work, and one review that runs things is the usual start. 64. An advisor runs on the model the owner names for it. For the passes over `pack:history-view` the owner chose "Opus domain, Astra operator", so the domain pass ran as Opus 5.5 on the `advisor-domain` definition and the operator pass as `gpt-6-astra` at high, briefed with the `advisor-operator` definition's three paths and `design/advisors/task-pass.md`. `design/advisors/protocol.md` bound both alike, and each memo and each set of leans was checked by the other family on a copy with one planted citation. With no model named, an advisor is a Fable agent (decision 33). 65. Every open question carries a key, and a tool cites it by its address. The owner's ruling of 2026-10-04 on the Protocol's model: "Key in the marker". So the marker reads `[blocking #key]` or `[non-blocking #key]`, the key unique among one Spec's open questions, and the question's entry address is its Spec's ID, then `#question.` and the key. `check.py` fails on an open question without a key. The register cites an open question by address; a source whose question left its Spec keeps its Spec and last text with `open: false`, on a decided or folded row only. `decisions.py`, `check.py` and their tests resolve an address through recipe 25, so a removed or renamed key fails the check. In prose a question is cited by its OD number. 66. One review per repository, by `gpt-6-astra` at xhigh, on a frozen copy with one plant, running what it reads, as decision 63 sizes it. In this unit the Protocol's branch had one (`job-mut8z07h-a0b05af1`, 22.4 min) and this repository's side one (`job-mut9wpn7-575a7c07`, 35.1 min), and both caught their plant. A second read of the history Specs (`job-mutbtzmh-06e6d440`) followed the fold-in, because the release procedure had been folded in piece by piece, and a short third read follows its own fold-in, round 5. What the plants showed: the builders' own tests caught every code plant tried, and two candidate plants for the Protocol's copy were withdrawn for that reason. The plants that tested a reviewer sat where no gate reads: in taught text (the authoring skill teaching the key outside the marker, with every test passing) and in Spec prose (the deploy moved before the close of `all` in `historyHandoff`, with `check.py` and every test passing). So a plant goes in taught text, Spec prose or a citation, and a code plant is first tried against the tests. -67. The Pack page and `check.py` read the Protocol's data, not this corpus's copies of it (A2, A4). The page takes member order from the reader's Pack context and the next rung's unmet clauses and typed-dependency targets from `SpecContext.nextRungFailures`. It keeps its own meaning of the next rung, the rung above the stated one, and says nothing blocks it when the floor is above the stated rung. `check.py` sends every entry address outside the Specs to recipe 25 in one call and fails on any set recipe 26 reports; finding the addresses in files and naming each one's line stay this corpus's. The adopter's joins stay: the pinned pairs, the anchor sites and the register. A workaround goes when the Protocol gives the thing, and what the Protocol still lacks goes to `docs/feedback/sdp-feedback-01.md`. +67. The Pack page and `check.py` read the Protocol's data, not this corpus's copies of it (A2, A4). The page takes member order from the reader's Pack context and the next rung's unmet clauses and typed-dependency targets from `SpecContext.nextRungFailures`. It keeps its own meaning of the next rung, the rung above the stated one, and says nothing blocks it when the floor is above the stated rung. `check.py` sends every entry address outside the Specs to recipe 25 in one call and fails on any set recipe 26 reports; finding the addresses in files and naming each one's line stay this corpus's. The adopter's joins stay: the pinned pairs and the register. The anchor sites went when the Protocol gave the comment form (decision 60). A workaround goes when the Protocol gives the thing, and what the Protocol still lacks goes to `docs/feedback/sdp-feedback-01.md`. 68. A worktree only where two builds would race. The rulings of 2026-10-04: "No worktree unless two lanes would break each other's gates." In this unit one package had one: Q, the question key, whose build would have raced package G's on the Protocol's `dist/`. The other packages ran in the main checkout, two lanes at once where their files were disjoint. Decision 39 says how a worktree is set up when one is made, not that every lane gets one. ## Owner queue @@ -386,7 +386,12 @@ What waits for the owner at this close: - The `ready` statements, each an approval to build (OD-163): `spec:application.history-projection` after round 5 and a short third read of the history Specs; `spec:application.history-rebuild` and its five examples after the same read and once OD-157 is ruled; the Protocol's four implemented Specs and their examples. No Spec of this corpus states `ready` yet. - OD-157, the verify pass under the write pause (convex lens). Under the pause no source changes, so the pass finds nothing over a covered generation and doubles the pause; the option kept is the pass, as D9 and Sc L2-6 read, and whether a paused generation is `verified` when its backfill ends is the owner's. The domain pass added what the pass can find: a missing or lagging row, never a fold that disagrees with itself (`spec:application.history-rebuild#design.historyVerify`). - OD-171, the terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events. -- The later decision on annotating every design pattern in code. The owner holds the first generation's annotations of architecturally significant patterns and relationships to be the approach's strongest value, and says its trouble was misread as the dual extraction from TypeScript and Gherkin; with every pattern of a design annotated where it is realized, the Studio slice's claim map would not be found by reading code for resembling shapes. The owner's words are in the unit's rulings page. The owner chose "Map now, rule later": the Protocol's records `spec:decisions.architectural-significance-rides-primitives` and `spec:decisions.jsdoc-graph-extraction-refused` stand for this round, and the owner contests their account of gen 1. The 81-row claim map is the manual work such annotations would turn into a projection, and the evidence for the decision. +- Annotations. On 2026-10-09 the owner directed the Protocol to move closer to its original design and bring back annotating architecturally significant units and their relationships in code. Its branch `feature/annotations-v0` (plan 40) rules this through three decisions held at `defined` for the owner's `ready`: the comment form (MD-36, `spec:decisions.anchor-comment-form`), the binding grain (MD-37, `spec:decisions.anchor-binding-grain`) and architectural annotation (MD-38, `spec:decisions.architectural-annotation`). MD-36 supersedes `spec:decisions.jsdoc-graph-extraction-refused` and MD-38 supersedes `spec:decisions.architectural-significance-rides-primitives`, the two records the owner contested, with `spec:decisions.structural-anchor-semantics` beside it. This corpus adopted all three at the pin `da56a34` (decision 60). What the owner decides here, from `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`": + - The layers. The context library and the two context components are `adapter`, with `infrastructure` the alternative; the gate is `infrastructure`, with `application` the alternative. + - The contexts. Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. + - Whether `example/` is architecture. As the production composition it has five components; as a sample it would keep its units and lose them. + - The reference direction. `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. It is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. + - The word layer. `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. One word now names two things. - The 25 departures of `pack:spec-studio-v1`, each a keyed open question, five of them blocking, where a ruled record of the Protocol goes another way than the original design: among them the patch loop against `spec:consumers.edit-model`, HTML first against the Markdown Design Review, and seven rungs against four. The Protocol's pull request lists them. - Words this unit used that the language lacks. In this corpus's `CONTEXT.md`: handoff and protected abort (OD-174's procedure), question key, next rung, target rung, dependency cycle. In the Protocol's: the same four, and from the Studio slice Spec Studio, lens, panel, shell, custom element, gathered intent, hand-off, build stamp, hosted preview, harness. The history view's "handoff" and the Studio's "hand-off" name two different things. - Words the units `design-in-the-graph` and `pack-page` used and `CONTEXT.md` lacks: pinned declaration (the Protocol's "declaration", which meets this corpus's "command declaration"), entry address, mention, pass, capability Pack, history rebuild (a Spec's ID), Pack page, stated rung, floor, pair with bound, ahead and not compared, an anchor's site, register row; and from the Convex pass, batch, source, consistent cut, history view. @@ -444,7 +449,7 @@ A session confirms or drops each. None is a finding yet. 14. Left by the review of S1 on purpose. Tests of fixture code that would not catch a removal: the evaluate-twice test compares its two outputs only after the second evaluation, states that `evolve` produces are never frozen, the reference stream has no purity or rebuild example, and the submitted event's schema stamp is pinned by no test. `tests/native/depot-operation-commits.test.ts` sends its calls with admin access, and the pure guard that forbids it looks only for the token `adminKey`. The rule for repeated document items in one call (identical items merge, items that differ are `invalidInput`) is the fixture's and no Spec states a general one. 15. The native tests of S1 read function-log fields no Convex page promises: `willRetry` and `occInfo`, the absence of a record for a component sub-call, `usageStats.databaseReadDocuments`. They are `observed` entries of the native harness Spec and are read again when the backend pin moves. The two race tests rerun on a fresh key until the log shows an engine retry, up to twenty rounds. 16. About ten older Spec sentences still name a slice or a date, such as "slice S2 decides" in `spec:context.queries` and "ran on 2026-10-01" in open questions. The owner's direction is against them; a unit that touches those Specs moves them out, and a sweep waits for the owner's word. -17. The kernel's code anchor lives in `tests/pure/kernel.test.ts`, because the kernel may not import the Protocol package, so the graph cannot say what a change under `src/kernel` reaches. `npx sdp build` writes `*.test.generated.ts` files beside a suite that binds an example whose parent has an example space; they are ignored by git, Prettier and ESLint. Both are in `docs/feedback/sdp-feedback-01.md`. +17. Closed in part on 2026-10-09. The kernel's anchors sit in `src/kernel/` as comment-form blocks that import nothing (decision 60), so `byFile` on `src/kernel/decider.ts` names `spec:kernel.decider-contract`. What stands: `npx sdp build` writes `*.test.generated.ts` files beside a suite that binds an example whose parent has an example space; they are ignored by git, Prettier and ESLint. Both are in `docs/feedback/sdp-feedback-01.md`, and its section "2026-10-09, anchors in the source at `da56a34`" closes the first. 18. `append` refuses a stream row whose version has no event in the journal. A later audit-only context that imports rows with incomplete history would trip it. 19. Dropped at the close of the roadmap unit: the root `README.md` now names every `_generated` directory under both compositions. What remains: nobody ran `npm run dev` to see that it rewrites them, and `scripts/dev.mjs` names only `annex/_generated` in a comment. @@ -541,7 +546,7 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo 45. From the unit `pack-page`. - `readModelTables` in `src/read-model/tables.ts` still installs `projectionMarkers`, which only the aggregate form uses and no Pack Spec pins after OD-162; its pair is not compared. The build that next touches the read-model tables drops it, or OD-075's build keeps it. - The rebuild keeps the whole example space, because a one-value slot is refused; `spec:application.history-rebuild` has none, and its five examples' steps are free-form. - - The anchor sites live beside the graph: `byFile` on `src/read-model/rebuild.ts` and `src/gate/` still returns nothing, and only the page joins the map. A companion binding is a question for the Protocol (`docs/feedback/sdp-feedback-01.md`). + - Closed on 2026-10-09: the anchor sites lived beside the graph. Each source file now carries its own anchor (decision 60). `byFile` on `src/read-model/rebuild.ts` names `spec:application.rebuild` and `spec:application.history-rebuild`, and on each file under `src/gate/` it names `spec:application.write-pause`. The Pack page reads the units from the graph alone. See `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`". - The page is about 186 KB at this close, most of it the pinned-declaration tables. The reader's remaining obstacles: the test link has no line anchor, and the aggregate answer is spread over three sections. - Every edit to a member Spec moves line links, so `check.py` fails until `npm run pages` runs. @@ -550,7 +555,7 @@ Leads 30 to 38 are lane data's of the tooling unit, as `leads-data.md` in its fo - The declarations that bind a history view are stated only in prose, in the three model terms of `spec:application.orders-inventory-example` that OD-172 changed, and no declaration in the code binds the view yet. The page reads no prose, so it shows nothing for them. A keyed Design entry pinning each binding would reach the page through recipe 24; this corpus's gap, recorded in `docs/feedback/sdp-feedback-01.md`, section "2026-10-04, adopting round 2 at `27b896a`". - An entry's line in the graph. The page reads each member's carrier to find the line of every Design entry and open question, because the graph records the line of a binding and not of an entry; for the Protocol, in the same section's "What still needs the Protocol". - A recipe's parameter as data. Recipe 25 takes its addresses on its opening `const` line, which `design/tools/decisions.py` rewrites with a regular expression, 489 addresses and 28,788 characters of JSON on the command line. An input read from the environment, as recipe 4 reads `SDP_CHANGED_FILES_JSON`, would let the body run as shipped; for the Protocol, in the same place. - - Anchors that live in tests. `design/tools/anchor-sites.json` stays this corpus's join, and `byFile` on `src/read-model/rebuild.ts` returns no Spec (Leads 45); for the Protocol, in the same place. + - Closed on 2026-10-09: anchors that lived in tests. The Protocol's comment form put them in the source and the join is deleted (decision 60); `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`", records the adoption. What stands, for the Protocol in the same section: a block binds by file and line, so a block whose declaration moved or went still binds (`#attachmentIdentity` on `spec:decisions.anchor-comment-form`). - Two of the Protocol's carrier checks, `check-carrier-rule.mjs` and `check-carrier-truth.mjs` at its root, fail on `feature/adopter-round-2` and fail identically at `5e29c03`. Neither is a `package.json` gate, and the Protocol's pull request says so; its maintainers rule whether they become gates or go. - Retracted: the gap the passes' first round listed, `defineList` mapping saved state through `toDto` without the schema-version checks of `spec:context.queries#design.fnList`. The adopter review showed that `defineList` refuses a newer saved schema version through `metaOf` (`convex-test`), so no lead stands for it. From b948623ca8129d699bc3f70e2fb49bd8dc81d870 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Fri, 9 Oct 2026 22:10:25 +0200 Subject: [PATCH 45/60] docs: the PR section for the annotations arc The new top section of the PR 12 description, for the owner to place above "What it shows, on the history view". It tells what the Protocol's annotations arc makes possible here: anchors in the code they bind with no Protocol import, byFile answering for src/, components with layer and context, roles, references into the history-view design that claim no realization, and the anchor-sites join gone. Each point links one file on the branch. A table gives the three held rulings (MD-36 to MD-38), a try-it block quotes the commands run at 57ed4f8 with their trimmed output, and "For the owner" carries the feedback section's four questions and the collision of the word layer with CONTEXT.md. The sol check of the anchor claims is still running, and the section says so. Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 125 +++++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 docs/feedback/pr-12-annotations-section.md diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md new file mode 100644 index 0000000..31db663 --- /dev/null +++ b/docs/feedback/pr-12-annotations-section.md @@ -0,0 +1,125 @@ +## Now: anchors in the code they bind (2026-10-09) + +Until this unit, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design. An anchor can be written as a doc comment. Code can name a design it is written against without claiming to build it. An anchor can say what architectural part its code plays. This branch pins the Protocol at `da56a34` (`fd5b257`) and adopts the arc (`57ed4f8`). + +**1. Anchors in the code they bind.** A comment-form anchor is a top-level `/** … */` block of reserved `@sdp` tags. The source carries it with no Protocol import, so the runtime pays nothing. The 22 implementation anchors that lived in nine test files are now 45 units in `src/`, `example/` and `fixture/`, one per realizing file or site, plus 12 component anchors. No test file keeps an implementation anchor; the harness keeps its 18 constant-form anchors. The online rebuild, at the top of [`src/read-model/rebuild.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/rebuild.ts#L2): + +```ts +/** + * @sdpAnchor impl:application.rebuild + * @sdpLabel the online rebuild's operator entries, batch chains, tenant fill and batch bounds + * @sdpSatisfies spec:application.rebuild + * @sdpReferences spec:application.history-rebuild + * @sdpComponent component:platform.read-model + * @sdpRole service + */ +``` + +**2. `byFile` answers for `src/`.** `byFile("src/read-model/rebuild.ts")` names `spec:application.rebuild` and `spec:application.history-rebuild`, and the files under `src/gate/` and `src/kernel/` name theirs. [`tests/pure/byfile-coverage.test.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/tests/pure/byfile-coverage.test.ts) asserts that `byFile` names each of the 50 file and Spec pairs the old join listed, across 45 files. + +**3. Components with a layer and a context.** Twelve `component:` anchors declare the architecture where it is realized: three in each of the `adapter`, `application`, `domain` and `infrastructure` layers, with the contexts `platform` (7), `orders` (2), `inventory` (2) and `orders-inventory` (1), and `uses` between them. The read-model library in [`src/read-model/index.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/index.ts#L2) is `application` in `platform` and uses the kernel, the context, the command and the gate. The mapping is provisional until the owner rules on it (below). + +**4. Roles.** 36 units name the part they play, in a vocabulary this corpus owns: `service` 10, `schema` 6, `contract` 5, `query` 5, `decider` 2, `projection` 2, `use-case` 2, and one each of `codec`, `event-store`, `operator-entry` and `read-model`. Recipe 28 reads the taxonomy from the graph, and [`design/tools/check.py`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/tools/check.py) prints it and judges none of it. The gate's four operator entries in [`src/gate/entries.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/gate/entries.ts#L7) are the one `operator-entry`. + +**5. References into the history-view design, without claiming realization.** A unit that realizes a Spec satisfies it. A unit written against a design references it, and the reference confers no delivery fact and moves no floor. The graph holds 20 `references` edges from 19 units. Recipe 27 over `pack:history-view` puts three facts side by side for each of its 19 members: 7 are referenced, 11 implemented, 7 have a verifier, and 6 have none of the three. +- `spec:application.history-projection` is referenced by the order allocation history's rules in `example/domain/orderAllocationHistory.ts`, and `spec:application.history-rebuild` by the online rebuild. Neither reads as `implemented`. +- `src/kernel/outcome.ts` references `spec:kernel.outcome-model` instead of satisfying it, because that Spec's open question `#outcomeRejectionContract` asks the owner to confirm the shapes before code names them. +- The Pack page lists each unit at its file and line, with its role and its component's layer and context, and a "Referenced by" list per member: [`design/pages/history-view.md`, member 1](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/pages/history-view.md#1-history-projection). + +**6. The sidecar is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. [`scripts/pack-page.mjs`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/scripts/pack-page.mjs) reads code from the graph alone. + +**What still binds loosely.** A block binds by file and line. Move the declaration from under it, or delete it, and the block still binds. The Protocol's open question `#attachmentIdentity` on `spec:decisions.anchor-comment-form` asks whether a CodeNode should record the symbol it binds. + +### The rulings + +The Protocol's branch rules the arc through three decision Specs, each at `defined` and held for the owner's `ready`. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. + +| Ratified name | Ruling | Spec | +|---|---|---| +| the comment form (MD-36) | A top-level `/** … */` block of reserved `@sdp*` tags is a second form of an anchor, read into the same closed envelope as the constant form. No import is needed, comment prose authors nothing, and a zero-dependency `/anchors` subpath ships the builders. Supersedes MD-35. | `specs/decisions/anchor-comment-form.sdp.md` | +| bindings are optional, plural, and may reference a design (MD-37) | `satisfies` is optional and plural, an identity-only anchor is lawful, and the `references` edge says code is written against a design while conferring no delivery fact. | `specs/decisions/anchor-binding-grain.sdp.md` | +| architectural significance is annotated where it is realized (MD-38) | A code anchor may carry a `role`, and a `component:` anchor a `layer` from a closed set of five and a `context`; the component anchor is the declared component. Supersedes MD-30 and MD-34. | `specs/decisions/architectural-annotation.sdp.md` | + +### Try it + +From the repository root, after `npm ci`. Measured on 2026-10-09 at `57ed4f8`; re-run the commands rather than inherit these numbers. + +```sh +npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json +``` + +```json +{ + "path": "src/read-model/rebuild.ts", + "nodes": [{ "id": "impl:application.rebuild", "nodeType": "CodeNode", "line": 2 }], + "specs": ["spec:application.history-rebuild", "spec:application.rebuild"] +} +``` + +Recipe 27 over `pack:history-view`, taken from the pinned package's catalog with only the Pack swapped in: + +````sh +R=node_modules/@libar-dev/software-delivery-protocol/docs/agent-surface/recipes.md +npx sdp q "$(awk '/^## 27\./{f=1} /^## 28\./{f=0} f' "$R" | awk '/^```js/{c=1; next} /^```/{if (c) exit} c' | sed 's/pack:spec-studio-v1/pack:history-view/')" --json +```` + +```json +{ + "found": true, + "id": "pack:history-view", + "totals": { "members": 19, "withReferences": 7, "withImplementations": 11, "withVerifier": 7, "unbound": 6 }, + "rows": [ + { + "id": "spec:application.history-projection", + "resolved": true, + "referencedBy": [{ "id": "impl:application.order-allocation-history", "file": "example/domain/orderAllocationHistory.ts" }], + "implementedBy": [], + "hasVerifier": false + }, + … + ] +} +``` + +```sh +npx sdp validate . +``` + +``` +243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +… +validate: 0 errors · 12 warnings (conformance + honesty over the one graph) +``` + +The 12 warnings are the prose mentions listed in `design/tools/prose-mentions.json`. + +```sh +npm run check +``` + +``` +243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) +validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] +entry addresses outside the Specs: 497; dependsOn cycles: 0 +architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 19 units +… +Pack pages current: 1 of 1 +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz + +OK +``` + +`npm test` passed 1,140 tests in 74 files, with 10 skipped, the not-compared pairs. + +### For the owner + +From `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the source at `da56a34`": + +- **The layers.** The context library and the two context components are `adapter`, with `infrastructure` the alternative; the gate is `infrastructure`, with `application` the alternative. +- **The contexts.** Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. +- **Whether `example/` is architecture.** As the production composition it has five components; as a sample it would keep its units and lose them. +- **The reference direction.** `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. This is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. + +And from this corpus's language: **the word layer.** `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. + +A `gpt-6.1-sol` check of every anchor claim against the code it sits on (`job-mv1dotsu-5f1f42fd`) is still running; its fold-in is pending. From 5355ed33e3724c8a4dff16d434b2986ffde0ed8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Fri, 9 Oct 2026 22:26:21 +0200 Subject: [PATCH 46/60] fix: fold the anchor check into the annotations showcase A gpt-6.1-sol read of every comment-form anchor from fd5b257 and 57ed4f8 (job-mv1dotsu-5f1f42fd) is folded in, as the main thread sorted it. src/kernel/outcome.ts holds the outcome types, not the decider, so it no longer satisfies spec:kernel.decider-contract. It references that Spec and spec:kernel.outcome-model, which keeps the byFile pair the coverage test asserts. The gate component exports the write pause its members realize, so it satisfies spec:application.write-pause; that Spec's delivery facts are unchanged. The Pack page's references wording no longer assumes a direction, and the page is regenerated. The feedback section states the rule as realization scope, gives the fixture's real grounds, and adds an owner item for the twelve Specs satisfied whole by code that realizes part of their Design. STATE's measured block and the PR section are re-measured at da56a34. Declined with no edit: the platform and orders-inventory context doubts, the adapter-layer doubts, and the whole-model doubts on example files. Co-Authored-By: Claude Fable 5.1 --- design/STATE.md | 10 +++++++--- design/pages/history-view.md | 21 +++++++++------------ docs/feedback/pr-12-annotations-section.md | 11 ++++++----- docs/feedback/sdp-feedback-01.md | 7 ++++--- scripts/pack-page.mjs | 4 ++-- src/gate/index.ts | 2 +- src/kernel/outcome.ts | 3 +-- tests/pure/pack-page.test.ts | 2 +- 8 files changed, 31 insertions(+), 29 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index 917bb99..bc8003c 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -4,17 +4,20 @@ Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the ## Measured at close +Re-measured on 2026-10-09 with `python3 design/tools/check.py`, at the pin `da56a34`, after the fold-in of the anchor check: + ``` -243 specs · 6 packs · 144 anchors → 393 nodes · 1382 edges (0 errors, 0 warnings) +243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 +architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 18 units open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: c42dee4b7dd8aa48 +corpus digest: 7002ed3ddfdc42e0 Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz ``` `python3 design/tools/decisions.py`, after this unit, which adds OD-164 to OD-175 and decides OD-172 to OD-175: @@ -391,6 +394,7 @@ What waits for the owner at this close: - The contexts. Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. - Whether `example/` is architecture. As the production composition it has five components; as a sample it would keep its units and lose them. - The reference direction. `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. It is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. + - Whole-Spec satisfies on Specs with designed-but-unbuilt parts. The anchor check named twelve Specs satisfied by code that realizes only part of their Design, the same set the test-resident anchors satisfied (`PLAN.md` 6.7 item 7). Per Spec, the owner splits it again, moves its binding to references, or accepts the whole-Spec claim; the feedback section lists them, and the Protocol holds `#entryAddressTargets` on `spec:decisions.anchor-binding-grain`. - The word layer. `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. One word now names two things. - The 25 departures of `pack:spec-studio-v1`, each a keyed open question, five of them blocking, where a ruled record of the Protocol goes another way than the original design: among them the patch loop against `spec:consumers.edit-model`, HTML first against the Markdown Design Review, and seven rungs against four. The Protocol's pull request lists them. - Words this unit used that the language lacks. In this corpus's `CONTEXT.md`: handoff and protected abort (OD-174's procedure), question key, next rung, target rung, dependency cycle. In the Protocol's: the same four, and from the Studio slice Spec Studio, lens, panel, shell, custom element, gathered intent, hand-off, build stamp, hosted preview, harness. The history view's "handoff" and the Studio's "hand-off" name two different things. diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 177acd1..10ecbb7 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -15,7 +15,7 @@ Start with the members and with what holds a member below its next rung: togethe - The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung. - The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it. - An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries. -- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec is written against its design and confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them. +- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec names its design without realizing it, in either direction: code written against the design, or code the design rests on. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them. - A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [`generated/pinned/history-view.ts`](../../generated/pinned/history-view.ts), which `npm run sdp:build` emits and git does not keep. ## Members @@ -34,7 +34,7 @@ Start with the members and with what holds a member below its next rung: togethe | [8](#8-deploy-a-changed-history-projection-version-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [9](#9-install-a-history-view-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [10](#10-reorder-a-history-views-sources-while-its-generation-is-interrupted) | [`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | -| [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 3 anchors, referenced by 1 unit | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | +| [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 4 anchors | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | | [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 2 anchors | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | | [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 15 anchors, referenced by 1 unit | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | | [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor, referenced by 1 unit | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | @@ -292,7 +292,7 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [Projectio **Code.** No implementation anchor binds it. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `impl:application.order-allocation-history` at [`example/domain/orderAllocationHistory.ts` line 8](../../example/domain/orderAllocationHistory.ts#L8): the order allocation history's keyOf and project rules. Its role is projection. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. @@ -582,7 +582,7 @@ Inside the Pack it rests on [The context queries](#18-the-context-queries) by de - `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:application.read-models.queries` at [`src/read-model/queries.ts` line 3](../../src/read-model/queries.ts#L3): readModelView, pageInGeneration and limitReadModelList. Its role is query. It belongs to `component:platform.read-model`, in the application layer and the platform context. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `component:platform.read-model` at [`src/read-model/index.ts` line 2](../../src/read-model/index.ts#L2): the read-model library: declare, rebuild, write and read a read model. It is a component in the application layer and the platform context. @@ -1074,7 +1074,7 @@ Inside the Pack it rests on [Read models](#3-read-models) by refines, [History p **Code.** No implementation anchor binds it. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `impl:application.rebuild` at [`src/read-model/rebuild.ts` line 2](../../src/read-model/rebuild.ts#L2): the online rebuild's operator entries, batch chains, tenant fill and batch bounds. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. @@ -1194,14 +1194,11 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] **Code.** +- `component:platform.gate` at [`src/gate/index.ts` line 3](../../src/gate/index.ts#L3): the maintenance gate: its table, the writer check, the two writers and the operator entries. It is a component in the infrastructure layer and the platform context. - `impl:application.write-pause` at [`src/gate/gate.ts` line 6](../../src/gate/gate.ts#L6): gateAllows, assertWritable and the two scope writers. Its role is service. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. - `impl:application.write-pause.entries` at [`src/gate/entries.ts` line 7](../../src/gate/entries.ts#L7): the four gate operator entries. Its role is operator-entry. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. - `impl:application.write-pause.tables` at [`src/gate/tables.ts` line 4](../../src/gate/tables.ts#L4): the gate document's table fragment. Its role is schema. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. - -- `component:platform.gate` at [`src/gate/index.ts` line 3](../../src/gate/index.ts#L3): the maintenance gate: its table, the writer check, the two writers and the operator entries. It is a component in the infrastructure layer and the platform context. - **Examples.** | Example | Tier | Verifier | Title | @@ -1565,7 +1562,7 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen - `impl:application.parent-use-cases` at [`example/convex/ordering.ts` line 8](../../example/convex/ordering.ts#L8): PlaceOrder and CancelOrder over Orders and then Inventory. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. - `impl:application.parent-use-cases.receiving` at [`example/convex/receiving.ts` line 4](../../example/convex/receiving.ts#L4): ReceiveStock. Its role is use-case. It belongs to `component:example.parent`, in the application layer and the orders-inventory context. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `component:example.parent` at [`example/convex/convex.config.ts` line 1](../../example/convex/convex.config.ts#L1): the production composition's parent deployment over Orders and Inventory. It is a component in the application layer and the orders-inventory context. @@ -1592,7 +1589,7 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen - `impl:command.command-declaration` at [`src/command/declaration.ts` line 3](../../src/command/declaration.ts#L3): CommandDeclaration, publicCommand and internalCommand. Its role is contract. It belongs to `component:platform.command`, in the application layer and the platform context. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `impl:command.command-declaration.depot-commands` at [`fixture/convex/depotCommands.ts` line 3](../../fixture/convex/depotCommands.ts#L3): the depot fixture's command declarations. @@ -1809,7 +1806,7 @@ Inside the Pack it rests on [History projection](#1-history-projection) by depen - `impl:application.read-models` at [`src/read-model/write.ts` line 3](../../src/read-model/write.ts#L3): writeReadModels, step 9's read-model half. Its role is service. It belongs to `component:platform.read-model`, in the application layer and the platform context. - `impl:command.command-pipeline` at [`src/command/pipeline.ts` line 3](../../src/command/pipeline.ts#L3): runPipeline and the command response. Its role is service. It belongs to `component:platform.command`, in the application layer and the platform context. -**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor. +**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor. - `component:platform.command` at [`src/command/index.ts` line 2](../../src/command/index.ts#L2): the command library that runs in the parent deployment. It is a component in the application layer and the platform context. diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index 31db663..d9bb74e 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -21,10 +21,10 @@ Until this unit, every implementation anchor of this corpus lived in a test. The **4. Roles.** 36 units name the part they play, in a vocabulary this corpus owns: `service` 10, `schema` 6, `contract` 5, `query` 5, `decider` 2, `projection` 2, `use-case` 2, and one each of `codec`, `event-store`, `operator-entry` and `read-model`. Recipe 28 reads the taxonomy from the graph, and [`design/tools/check.py`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/tools/check.py) prints it and judges none of it. The gate's four operator entries in [`src/gate/entries.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/gate/entries.ts#L7) are the one `operator-entry`. -**5. References into the history-view design, without claiming realization.** A unit that realizes a Spec satisfies it. A unit written against a design references it, and the reference confers no delivery fact and moves no floor. The graph holds 20 `references` edges from 19 units. Recipe 27 over `pack:history-view` puts three facts side by side for each of its 19 members: 7 are referenced, 11 implemented, 7 have a verifier, and 6 have none of the three. +**5. References into the history-view design, without claiming realization.** A unit that realizes a Spec satisfies it. A unit that names a design without realizing it references it, in either direction: code written against a design, or code a design rests on. The reference confers no delivery fact and moves no floor. The graph holds 20 `references` edges from 18 units. Recipe 27 over `pack:history-view` puts three facts side by side for each of its 19 members: 6 are referenced, 11 implemented, 7 have a verifier, and 6 have none of the three. - `spec:application.history-projection` is referenced by the order allocation history's rules in `example/domain/orderAllocationHistory.ts`, and `spec:application.history-rebuild` by the online rebuild. Neither reads as `implemented`. -- `src/kernel/outcome.ts` references `spec:kernel.outcome-model` instead of satisfying it, because that Spec's open question `#outcomeRejectionContract` asks the owner to confirm the shapes before code names them. -- The Pack page lists each unit at its file and line, with its role and its component's layer and context, and a "Referenced by" list per member: [`design/pages/history-view.md`, member 1](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/pages/history-view.md#1-history-projection). +- The rule is realization scope. `src/kernel/outcome.ts` holds the outcome types the decider reuses, so it references `spec:kernel.outcome-model` and `spec:kernel.decider-contract` and satisfies neither; `src/kernel/decider.ts` holds the decider and satisfies the decider contract. The gate's component exports the implementation its members satisfy, so `component:platform.gate` satisfies `spec:application.write-pause` too. +- The Pack page lists each unit at its file and line, with its role and its component's layer and context, and a "References" list per member: [`design/pages/history-view.md`, member 1](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/design/pages/history-view.md#1-history-projection). **6. The sidecar is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. [`scripts/pack-page.mjs`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/scripts/pack-page.mjs) reads code from the graph alone. @@ -101,7 +101,7 @@ npm run check 243 specs · 6 packs · 179 anchors → 428 nodes · 1501 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 -architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 19 units +architecture: 75 code units; roles: codec 1, contract 5, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 20 references edges from 18 units … Pack pages current: 1 of 1 protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz @@ -119,7 +119,8 @@ From `docs/feedback/sdp-feedback-01.md`, section "2026-10-09, anchors in the sou - **The contexts.** Every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. - **Whether `example/` is architecture.** As the production composition it has five components; as a sample it would keep its units and lose them. - **The reference direction.** `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. This is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, met in this corpus. +- **Whole-Spec satisfies on Specs with designed-but-unbuilt parts.** Twelve Specs are satisfied by code that realizes only part of their Design, the same set the test-resident anchors satisfied (`design/PLAN.md` 6.7 item 7). Per Spec, the owner splits it again, moves its binding to references, or accepts the whole-Spec claim. The Protocol holds `#entryAddressTargets` on `spec:decisions.anchor-binding-grain`. And from this corpus's language: **the word layer.** `CONTEXT.md` defines a layer as one of the seven steps of capability; the Protocol's `layer` places a component among edge, application, domain, adapter and infrastructure. -A `gpt-6.1-sol` check of every anchor claim against the code it sits on (`job-mv1dotsu-5f1f42fd`) is still running; its fold-in is pending. +A `gpt-6.1-sol` check of every anchor claim against the code it sits on (`job-mv1dotsu-5f1f42fd`) is folded in: the gate component satisfies the write pause, `src/kernel/outcome.ts` satisfies nothing, the page's references wording no longer assumes a direction, and the whole-Spec satisfies above went to the owner. Its doubts on the `platform` and `orders-inventory` contexts and the `adapter` layer are the owner items above. diff --git a/docs/feedback/sdp-feedback-01.md b/docs/feedback/sdp-feedback-01.md index 702383c..5739f7a 100644 --- a/docs/feedback/sdp-feedback-01.md +++ b/docs/feedback/sdp-feedback-01.md @@ -6,12 +6,12 @@ Every number here was measured on this corpus on the date of its section. Re-run ## 2026-10-09, anchors in the source at `da56a34` -The pin moved from `dfa1bd9` to `da56a34`, a build of the Protocol's branch `feature/annotations-v0` (its plan 40), packed from a clean clone as before. The graph schema is `0.8.0`. On the new pin alone nothing this corpus reads moved: 243 Specs, 393 nodes, 1,382 edges, 12 listed warnings. Then the corpus adopted the branch's comment form, and the gap the two sections below name as "an anchor that lives in a test" is closed. An independent read (`gpt-6.1-sol`) of the tree before the adoption found none of it there; every number below was measured after it. +The pin moved from `dfa1bd9` to `da56a34`, a build of the Protocol's branch `feature/annotations-v0` (its plan 40), packed from a clean clone as before. The graph schema is `0.8.0`. On the new pin alone nothing this corpus reads moved: 243 Specs, 393 nodes, 1,382 edges, 12 listed warnings. Then the corpus adopted the branch's comment form, and the gap the two sections below name as "an anchor that lives in a test" is closed. An independent read (`gpt-6.1-sol`) of the tree before the adoption found none of it there. A second read by the same model checked every comment-form anchor the adoption placed, and its fold-in moved two bindings, named below. Every number below was measured after that fold-in. - **Anchors at their sites.** A comment-form anchor is a `/** … */` block of reserved `@sdp` tags, so the source carries it with no Protocol import and its runtime pays nothing. The 22 implementation anchors that lived in nine test files are now 45 units in `src/`, `example/` and `fixture/`, one per realizing file or site, plus 12 component anchors. No test file keeps an implementation anchor; the 18 constant-form anchors under `harness/` stay. The graph derives 179 anchors into 428 nodes and 1,501 edges, and validate still reports 0 errors and the same 12 warnings. No delivery fact of the 243 Specs changed. - **The join is gone.** `design/tools/anchor-sites.json`, its pure test and the page's reading of it are deleted. `tests/pure/byfile-coverage.test.ts` asserts that `byFile` names each of the 50 file and Spec pairs the join listed. `byFile("src/read-model/rebuild.ts")` names `spec:application.rebuild` and `spec:application.history-rebuild`. -- **Satisfies or references.** A unit that realizes a Spec satisfies it; a unit written against a design references it and confers nothing. There are 20 `references` edges from 19 units. The six depot units under `fixture/` only reference, because the fixture is test composition. `src/kernel/outcome.ts` references `spec:kernel.outcome-model` and does not satisfy it: that Spec's open question `#outcomeRejectionContract` asks the owner to confirm the shapes before code names them, and satisfying it would make it `implemented` ahead of that ruling. -- **The history view.** Recipe 27 over `pack:history-view` gives 19 members: 7 referenced, 11 implemented, 7 with a verifier, 6 with none of the three. `spec:application.history-projection` and `spec:application.history-rebuild` each show one referencing unit and no `implemented`. The page lists each unit at its own file and line, with its role and its component's layer and context, and a "Referenced by" list per member. +- **Satisfies or references.** A unit satisfies a Spec its code realizes and references a design it names without realizing it; a reference confers nothing, and it may run either way, code written against a design or code a design rests on. There are 20 `references` edges from 18 units. The six depot units under `fixture/` only reference, because those compositions consume their targets or realize only part of them. A component that exports the implementation its member units satisfy realizes that design too, so `component:platform.gate` satisfies `spec:application.write-pause` beside its three members, and the Spec's delivery facts are unchanged. The rule is realization scope, not the owner-confirmation question both kernel Specs carry (`#deciderEventContract`, `#outcomeRejectionContract`). `src/kernel/decider.ts` holds the decider, its decision context and its fold helpers, so it satisfies `spec:kernel.decider-contract`. `src/kernel/outcome.ts` holds the outcome types the decider reuses: no part of the decider contract, and one part of the outcome model, whose validators sit in `src/context/outcome.ts` and whose reserved rejection codes sit in the adapter. It satisfies neither and references both. The reference to the decider contract also keeps that file and Spec pair, which `tests/pure/byfile-coverage.test.ts` asserts, reachable through `byFile`. +- **The history view.** Recipe 27 over `pack:history-view` gives 19 members: 6 referenced, 11 implemented, 7 with a verifier, 6 with none of the three. `spec:application.history-projection` and `spec:application.history-rebuild` each show one referencing unit and no `implemented`. The page lists each unit at its own file and line, with its role and its component's layer and context, and a "References" list per member. - **The architecture.** Twelve components, three in each of the `adapter`, `application`, `domain` and `infrastructure` layers; contexts `platform` 7, `orders` 2, `inventory` 2, `orders-inventory` 1. Roles, from recipe 28: service 10, schema 6, contract 5, query 5, decider 2, projection 2, use-case 2, codec 1, event-store 1, operator-entry 1, read-model 1. Component `uses` match the relative imports between the components, cycles included; the two context components reach their domain through `example/domain/index.ts`. `check.py` prints this taxonomy and judges none of it. - **Tests.** `npm test` passed 1,140 tests in 74 files, with 10 skipped. @@ -21,6 +21,7 @@ The pin moved from `dfa1bd9` to `da56a34`, a build of the Protocol's branch `fea - The contexts: every `src/` package is `platform`, and the parent composition is `orders-inventory` because it spans both bounded contexts. - Whether `example/` is architecture. It is the production composition, so it has five components; as a sample it would keep its units and lose them. - `impl:application.rebuild` references `spec:application.history-rebuild`, a design that rests on the online rebuild rather than one the rebuild was written against. That is the Protocol's open question `#referenceDirection` on `spec:decisions.anchor-binding-grain`, here in this corpus. +- **Whole-Spec satisfies on Specs with designed-but-unbuilt parts.** The second read named twelve Specs as satisfied by code that realizes only part of their Design: `spec:context.journal`, `spec:context.tables`, `spec:context.persistence-adapter`, `spec:context.queries`, `spec:context.context-component`, `spec:command.command-declaration`, `spec:command.idempotency-and-receipts`, `spec:command.command-pipeline`, `spec:application.read-models`, `spec:application.generation-registry`, `spec:application.rebuild` and `spec:application.orders-inventory-example`. The set of satisfied Specs is the one the test-resident anchors had, so this is the corpus's standing posture under `design/PLAN.md` section 6.7 item 7, not a change of the adoption. The owner decides per Spec whether to split it again, move its binding to references, or accept the whole-Spec claim. The Protocol's open question `#entryAddressTargets` on `spec:decisions.anchor-binding-grain` is the engine-side answer being held. ### What still needs the Protocol diff --git a/scripts/pack-page.mjs b/scripts/pack-page.mjs index be35c39..97b24e4 100644 --- a/scripts/pack-page.mjs +++ b/scripts/pack-page.mjs @@ -660,7 +660,7 @@ export async function generate(pack, out, base = root) { "- The floor is the highest rung whose clauses all hold in the graph. It can sit above the stated rung.", "- The next rung is the one above the stated rung, with the first floor clause that fails at it. A rung whose clauses all hold still waits for its author to state it.", "- An open question is cited by its address, the Spec's id, `#question.` and the key its marker carries.", - "- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec is written against its design and confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them.", + "- An implementation anchor binds code to a Spec at its site, the file and line it is written at. Code that satisfies a Spec realizes it, and the graph derives implemented from it. Code that references a Spec names its design without realizing it, in either direction: code written against the design, or code the design rests on. A reference confers nothing. Each unit gives its role and its component, with the component's layer and bounded context, where the anchor declares them.", `- A pair is a pinned declaration and the code a type test compares it with: bound when the two are equal, ahead when the design leads the code, not compared when the test compares nothing. The test imports every pinned declaration of the Pack from [${span(pinned)}](${link(pinned)}), which ${span("npm run sdp:build")} emits and git does not keep.`, "", ); @@ -1002,7 +1002,7 @@ export async function generate(pack, out, base = root) { write("**Code.** No implementation anchor binds it.", ""); if (context.references.length > 0) { write( - `**Referenced by.** ${plural(context.references.length, "unit is", "units are")} written against its design. A reference confers no delivery fact and moves no floor.`, + `**References.** ${plural(context.references.length, "unit references", "units reference")} this design, in either direction. A reference confers no delivery fact and moves no floor.`, "", ); for (const binding of context.references) write(unitLine(binding)); diff --git a/src/gate/index.ts b/src/gate/index.ts index 8d8adfc..6a73267 100644 --- a/src/gate/index.ts +++ b/src/gate/index.ts @@ -3,7 +3,7 @@ /** * @sdpAnchor component:platform.gate * @sdpLabel the maintenance gate: its table, the writer check, the two writers and the operator entries - * @sdpReferences spec:application.write-pause + * @sdpSatisfies spec:application.write-pause * @sdpUses component:platform.command, component:platform.context, component:platform.audit, component:platform.read-model * @sdpLayer infrastructure * @sdpContext platform diff --git a/src/kernel/outcome.ts b/src/kernel/outcome.ts index 4617133..a59774f 100644 --- a/src/kernel/outcome.ts +++ b/src/kernel/outcome.ts @@ -2,8 +2,7 @@ /** * @sdpAnchor impl:kernel.decider-contract.outcome * @sdpLabel the outcome model's types, which the decider contract reuses - * @sdpSatisfies spec:kernel.decider-contract - * @sdpReferences spec:kernel.outcome-model + * @sdpReferences spec:kernel.outcome-model, spec:kernel.decider-contract * @sdpComponent component:platform.kernel * @sdpRole contract */ diff --git a/tests/pure/pack-page.test.ts b/tests/pure/pack-page.test.ts index adf8f1b..cabab94 100644 --- a/tests/pure/pack-page.test.ts +++ b/tests/pure/pack-page.test.ts @@ -812,7 +812,7 @@ test("the page names each code unit at its own site, with its role and component /^\| \[1\]\(#1-the-alpha-decision\) .*\| referenced by 1 unit \|/m, ); expect(text).toContain( - "**Referenced by.** 1 unit is written against its design. A reference confers no delivery fact and moves no floor.", + "**References.** 1 unit references this design, in either direction. A reference confers no delivery fact and moves no floor.", ); expect(text).toContain( "- `impl:sample.rules` at [`src/sample/rules.ts` line 2](../../src/sample/rules.ts#L2): the sample's rules. Its role is decider. It belongs to `component:sample.core`, in the domain layer and the sample context.", From e26e03d34f5db8105a9750194baa162e19b04255 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 08:47:41 +0200 Subject: [PATCH 47/60] docs: the PR section records the owner's ready on MD-36 and MD-38 Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index d9bb74e..298eee8 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -32,7 +32,7 @@ Until this unit, every implementation anchor of this corpus lived in a test. The ### The rulings -The Protocol's branch rules the arc through three decision Specs, each at `defined` and held for the owner's `ready`. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. +The Protocol's branch rules the arc through three decision Specs. The comment form and architectural annotation state `ready` (the owner, 2026-10-10); the binding grain states `defined`, held for the owner's `ready` on its two open questions. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. | Ratified name | Ruling | Spec | |---|---|---| From f945b48398db723f500cb4f7e9810ae9be55a554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 08:59:24 +0200 Subject: [PATCH 48/60] docs: the PR section's recipe 27 totals re-measured at 5355ed3 Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index 298eee8..8ed9489 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -42,7 +42,7 @@ The Protocol's branch rules the arc through three decision Specs. The comment fo ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-09 at `57ed4f8`; re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-09 at `57ed4f8` and re-measured at `5355ed3`; re-run the commands rather than inherit these numbers. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -67,7 +67,7 @@ npx sdp q "$(awk '/^## 27\./{f=1} /^## 28\./{f=0} f' "$R" | awk '/^```js/{c=1; n { "found": true, "id": "pack:history-view", - "totals": { "members": 19, "withReferences": 7, "withImplementations": 11, "withVerifier": 7, "unbound": 6 }, + "totals": { "members": 19, "withReferences": 6, "withImplementations": 11, "withVerifier": 7, "unbound": 6 }, "rows": [ { "id": "spec:application.history-projection", From 04a6aff5ec4197c48612e4bd10630bf210f53104 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 09:55:40 +0200 Subject: [PATCH 49/60] build: pin the Protocol at f23e358, the rulings of 2026-10-10 The Protocol's branch feature/annotations-v0 now carries the owner's rulings on the annotations arc: references run one way, from code to the design it answers to; anchor targets name whole Specs; the binding grain states ready; and recipe 27 gains a derived builds-on column. The tarball is packed from a clean clone at f23e358. Nothing this corpus reads moved on the pin alone: 243 Specs, 428 nodes, 1,501 edges, 12 listed warnings. The page names the new pin. Co-Authored-By: Claude Opus 5.5 --- design/pages/history-view.md | 2 +- package-lock.json | 6 +++--- package.json | 2 +- ...oftware-delivery-protocol-0.0.0-da56a34.tgz | Bin 465961 -> 0 bytes ...oftware-delivery-protocol-0.0.0-f23e358.tgz | Bin 0 -> 467647 bytes 5 files changed, 5 insertions(+), 5 deletions(-) delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 10ecbb7..ad95f64 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,7 +4,7 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with two inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with two inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it diff --git a/package-lock.json b/package-lock.json index b00fa3f..c9a2440 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -801,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", - "integrity": "sha512-6gT+pI2OECjjs9403Oeiipg0r4/fYwEdhYhVMZBrkRroKDAS4G4Bellnufz115htj8yvd8tcEmveHQHQKtG4ww==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", + "integrity": "sha512-oD5A/Z/Llm1wL0enFqEYRUJ+ZAQtnKVi/IOafNL4KAPLj6Has1eXNqwpQN6d21m/GSqspiGuinn8dYrfdzrMlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index 911af1f..e49ba30 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-da56a34.tgz deleted file mode 100644 index ba8497e3e5d38eb40794946e602c14103f76982c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 465961 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%0A+s8QuHWMVjc+T2}eW0K$`7$FPa|c8%VoPA_s$A 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

mC=UCqUUa#y6vSP5;bge3 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 YdqUIq*Z0@=*Z=A3-ve4SNdPt<0Kx)HOaK4? literal 0 HcmV?d00001 From 3545e9a47a3804ed205b0023f44d962b673ffcfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sun, 4 Oct 2026 06:34:09 +0200 Subject: [PATCH 36/60] design: fold the adopter review into the history view's design and tools The review (gpt-6-astra at xhigh on a frozen copy with one planted defect in historyHandoff, caught) found these, each ruled by the main thread: - applyHistoryProjection checks each generation's version first, so a command whose events fold nothing, such as ReceiveStock, fails alike on a mismatch; the compatibility check's wording follows. - The abort example runs the protected abort of historyAbortHandoff. - Three examples a 5d test can bind, at the native backend tier: a version-changing deploy and a first installation through the handoff, and a source-order mismatch that parks, refuses the resume, aborts and starts afresh. They join pack:history-view and pack:application. - The restore's list of mutations that skip the gate read says what the write pause's says; the register's new specLine sources take the spec: form and current lines; the history Specs carry decidedBy edges for the decision records they cite. - Tests that fail when check.py stops acting on an address, a cycle, a question without a key or the generator's exit, when the page's --check reports a stale page current, and when the pinned HistoryEvent drifts from the code's EventEnvelope. Co-Authored-By: Claude Opus 5.5 --- design/README.md | 7 +- design/decisions/register.json | 14 +- design/pages/history-view.md | 224 ++++++++++-------- design/specs/application.pack.sdp.md | 5 +- .../application/history-projection.sdp.md | 7 +- .../specs/application/history-rebuild.sdp.md | 11 +- ...y-rebuild.write-pause-rebuild-abort.sdp.md | 4 +- ...ld.write-pause-rebuild-installation.sdp.md | 39 +++ ...pause-rebuild-source-order-mismatch.sdp.md | 39 +++ ....write-pause-rebuild-version-change.sdp.md | 38 +++ design/specs/application/restore.sdp.md | 2 +- design/specs/history-view.pack.sdp.md | 5 +- design/tools/test_decisions.py | 77 +++++- scripts/pack-page.mjs | 10 +- tests/pure/pack-page.test.ts | 85 ++++++- tests/types/pinned.test-d.ts | 2 + 16 files changed, 440 insertions(+), 129 deletions(-) create mode 100644 design/specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md create mode 100644 design/specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md create mode 100644 design/specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md diff --git a/design/README.md b/design/README.md index 5f8291c..9aab829 100644 --- a/design/README.md +++ b/design/README.md @@ -45,7 +45,7 @@ python3 design/tools/check.py Expected result on the integrated corpus: ``` -240 specs · 6 packs · 144 anchors → 390 nodes · 1365 edges (0 errors, 0 warnings) +243 specs · 6 packs · 144 anchors → 393 nodes · 1381 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` @@ -314,7 +314,7 @@ Slice S1 added three more for the same reason, when its scenario tests bound the Package B therefore has 7 examples, Package C has 15, and the corpus has 57. -The Layer 2 design added two more for the same reason, and ten examples that verify no doc row: +The Layer 2 design added two more for the same reason, and thirteen examples that verify no doc row: | Sc | Added example | Reason | |---|---|---| @@ -326,6 +326,9 @@ The Layer 2 design added two more for the same reason, and ten examples that ver | none | `spec:application.read-models.query-refused-without-grant` | verifies Law 5 for a parent query called with no grant in the tenant | | none | `spec:application.read-models.list-pages-by-cursor` | verifies a parent list paged by a cursor pair, under E-24 | | none | `spec:application.write-pause.restore-door-without-deploy` | shows on the pinned release that the restore door's environment switch needs no deploy, under E-42 | +| none | `spec:application.history-rebuild.write-pause-rebuild-version-change` | verifies the history rebuild's handoff for a deploy that changes a history projection's version, under E-8 | +| none | `spec:application.history-rebuild.write-pause-rebuild-installation` | verifies the history rebuild's handoff for a deploy that adds a history view's first binding, under E-8 | +| none | `spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch` | verifies the history rebuild's compatibility check and its recovery for sources a deploy reordered, under E-8 | | none | `spec:facts.f15-parent-query-over-component-query-stays-reactive.probe-5-built-in-paginate-throws-in-component` | Probe 5: the built-in `paginate` throws inside a component | | none | `spec:facts.f15-parent-query-over-component-query-stays-reactive.probe-5-full-first-page-not-split` | Probe 5: a full first page under a row cap of twice the page size is not split | | none | `spec:facts.f15-parent-query-over-component-query-stays-reactive.probe-5-full-first-page-split-at-equal-cap` | Probe 5: the same page under a row cap equal to the page size is split | diff --git a/design/decisions/register.json b/design/decisions/register.json index 22cb008..958e01b 100644 --- a/design/decisions/register.json +++ b/design/decisions/register.json @@ -6710,7 +6710,7 @@ "sources": [ { "kind": "specLine", - "ref": "application.projection-contract#source-versions", + "ref": "spec:application.projection-contract#source-versions", "file": "design/specs/application/projection-contract.sdp.md", "line": 47 } @@ -6739,9 +6739,9 @@ "sources": [ { "kind": "specLine", - "ref": "application.history-projection#declarations-bind", + "ref": "spec:application.history-projection#declarations-bind", "file": "design/specs/application/history-projection.sdp.md", - "line": 49 + "line": 51 } ], "families": [ @@ -6779,9 +6779,9 @@ "sources": [ { "kind": "specLine", - "ref": "application.history-projection#event-schema-versions", + "ref": "spec:application.history-projection#event-schema-versions", "file": "design/specs/application/history-projection.sdp.md", - "line": 46 + "line": 48 } ], "families": [ @@ -6862,9 +6862,9 @@ "sources": [ { "kind": "specLine", - "ref": "application.history-rebuild#historyCompatibility", + "ref": "spec:application.history-rebuild#historyCompatibility", "file": "design/specs/application/history-rebuild.sdp.md", - "line": 73 + "line": 74 } ], "families": [ diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 23253ff..2e8f70c 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -2,7 +2,7 @@ -The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its two examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the two examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. +The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with three inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json), the anchor sites in [`design/tools/anchor-sites.json`](../tools/anchor-sites.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-dfa1bd9.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). @@ -20,7 +20,7 @@ Start with the members and with what holds a member below its next rung: togethe ## Members -16 Specs, in the order the Pack reads them. +19 Specs, in the order the Pack reads them. | # | Spec | Kind | Stated | Floor | Next rung | Code | Examples and verifiers | Pairs | Open questions | |---|---|---|---|---|---|---|---|---|---| @@ -28,24 +28,27 @@ Start with the members and with what holds a member below its next rung: togethe | [2](#2-projection-contract) | [`spec:application.projection-contract`](../specs/application/projection-contract.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 11 bound | 5, none blocking | | [3](#3-read-models) | [`spec:application.read-models`](../specs/application/read-models.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 5 of 5 examples with a verifier | 2 bound, 9 without a pair | 6, none blocking | | [4](#4-rebuild-generations-backfill-and-the-write-pause) | [`spec:application.rebuild`](../specs/application/rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 2 bound, 3 ahead, 22 without a pair | 5, none blocking | -| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 2 examples with a verifier | 3 without a pair | 6, none blocking | +| [5](#5-rebuild-of-a-history-view-under-a-write-pause) | [`spec:application.history-rebuild`](../specs/application/history-rebuild.sdp.md) | workflow | defined | ready | ready, which its floor holds | none | 0 of 5 examples with a verifier | 3 without a pair | 6, none blocking | | [6](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume) | [`spec:application.history-rebuild.write-pause-rebuild-interrupt`](../specs/application/history-rebuild.write-pause-rebuild-interrupt.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | | [7](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort) | [`spec:application.history-rebuild.write-pause-rebuild-abort`](../specs/application/history-rebuild.write-pause-rebuild-abort.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | -| [8](#8-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | -| [9](#9-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | -| [10](#10-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 1 anchor | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | -| [11](#11-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | -| [12](#12-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | -| [13](#13-the-event-envelope) | [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 7 bound, 3 without a pair | 2, none blocking | -| [14](#14-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | -| [15](#15-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | -| [16](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) | [`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) | decision | defined | ready | ready, which its floor holds | none | none | no pinned declaration | 1, none blocking | +| [8](#8-deploy-a-changed-history-projection-version-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-version-change`](../specs/application/history-rebuild.write-pause-rebuild-version-change.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | +| [9](#9-install-a-history-view-through-the-handoff) | [`spec:application.history-rebuild.write-pause-rebuild-installation`](../specs/application/history-rebuild.write-pause-rebuild-installation.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | +| [10](#10-reorder-a-history-views-sources-while-its-generation-is-interrupted) | [`spec:application.history-rebuild.write-pause-rebuild-source-order-mismatch`](../specs/application/history-rebuild.write-pause-rebuild-source-order-mismatch.sdp.md) | example | defined | ready | ready, which its floor holds | none | native backend tier, no verifier bound | no pinned declaration | none | +| [11](#11-write-pause) | [`spec:application.write-pause`](../specs/application/write-pause.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 1 of 1 example with a verifier | 6 bound, 2 not compared, 6 without a pair | 3, none blocking | +| [12](#12-generation-registry) | [`spec:application.generation-registry`](../specs/application/generation-registry.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 8 bound, 3 ahead, 2 without a pair | 6, none blocking | +| [13](#13-orders-and-inventory-the-example-domain) | [`spec:application.orders-inventory-example`](../specs/application/orders-inventory-example.sdp.md) | model | defined | ready | ready, which its floor holds | 1 anchor | 6 of 6 examples with a verifier | no pinned declaration | 1, none blocking | +| [14](#14-command-declaration-and-bindings) | [`spec:command.command-declaration`](../specs/command/command-declaration.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | 2 of 2 examples with a verifier | 4 bound, 2 ahead, 5 not compared, 7 without a pair | 3, none blocking | +| [15](#15-the-command-pipeline) | [`spec:command.command-pipeline`](../specs/command/command-pipeline.sdp.md) | workflow | defined | ready | ready, which its floor holds | 1 anchor | 3 of 3 examples with a verifier | 3 bound, 1 ahead, 2 not compared, 12 without a pair | 7, none blocking | +| [16](#16-the-event-envelope) | [`spec:context.event-envelope`](../specs/context/event-envelope.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 7 bound, 3 without a pair | 2, none blocking | +| [17](#17-the-journal) | [`spec:context.journal`](../specs/context/journal.sdp.md) | behavior | defined | ready | ready, which its floor holds | 1 anchor | 0 of 1 example with a verifier | 3 bound, 4 ahead, 11 without a pair | 1, none blocking | +| [18](#18-the-context-queries) | [`spec:context.queries`](../specs/context/queries.sdp.md) | contract | defined | ready | ready, which its floor holds | 1 anchor | none | 3 bound, 2 ahead, 13 without a pair | 3, none blocking | +| [19](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views) | [`spec:decisions.d09-rebuild-online-by-default`](../specs/decisions/d09-rebuild-online-by-default.sdp.md) | decision | defined | ready | ready, which its floor holds | none | none | no pinned declaration | 1, none blocking | ## What holds a member below its next rung No member is held below its next rung. -The floor holds at the next rung for [History projection](#1-history-projection), [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause), [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause), [Rebuild a cross-stream history view under a write pause; interrupt, then resume](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume), [Rebuild a cross-stream history view under a write pause; interrupt, then abort](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort), [Write pause](#8-write-pause), [Generation registry](#9-generation-registry), [Orders and Inventory, the example domain](#10-orders-and-inventory-the-example-domain), [Command declaration and bindings](#11-command-declaration-and-bindings), [The command pipeline](#12-the-command-pipeline), [The event envelope](#13-the-event-envelope), [The journal](#14-the-journal), [The context queries](#15-the-context-queries) and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Each waits for its author to state that rung. +The floor holds at the next rung for [History projection](#1-history-projection), [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause), [Rebuild of a history view under a write pause](#5-rebuild-of-a-history-view-under-a-write-pause), [Rebuild a cross-stream history view under a write pause; interrupt, then resume](#6-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-resume), [Rebuild a cross-stream history view under a write pause; interrupt, then abort](#7-rebuild-a-cross-stream-history-view-under-a-write-pause-interrupt-then-abort), [Deploy a changed history projection version through the handoff](#8-deploy-a-changed-history-projection-version-through-the-handoff), [Install a history view through the handoff](#9-install-a-history-view-through-the-handoff), [Reorder a history view's sources while its generation is interrupted](#10-reorder-a-history-views-sources-while-its-generation-is-interrupted), [Write pause](#11-write-pause), [Generation registry](#12-generation-registry), [Orders and Inventory, the example domain](#13-orders-and-inventory-the-example-domain), [Command declaration and bindings](#14-command-declaration-and-bindings), [The command pipeline](#15-the-command-pipeline), [The event envelope](#16-the-event-envelope), [The journal](#17-the-journal), [The context queries](#18-the-context-queries) and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). Each waits for its author to state that rung. ## Outside the Pack @@ -76,8 +79,8 @@ No target outside the Pack holds a member below its next rung. | [`spec:decisions.d01-one-mutation-per-operation`](../specs/decisions/d01-one-mutation-per-operation.sdp.md) | defined | ready | `spec:application.read-models` decidedBy, `spec:command.command-pipeline` decidedBy | | [`spec:decisions.d02-context-owns-state-and-journal`](../specs/decisions/d02-context-owns-state-and-journal.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:context.event-envelope` decidedBy, `spec:context.journal` decidedBy | | [`spec:decisions.d03-events-only-source-of-next-state`](../specs/decisions/d03-events-only-source-of-next-state.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy | -| [`spec:decisions.d04-four-outcomes`](../specs/decisions/d04-four-outcomes.sdp.md) | defined | ready | `spec:application.history-rebuild` decidedBy, `spec:application.write-pause` decidedBy, `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | -| [`spec:decisions.d05-rebuildable-history-with-baselines`](../specs/decisions/d05-rebuildable-history-with-baselines.sdp.md) | defined | ready | `spec:context.journal` decidedBy | +| [`spec:decisions.d04-four-outcomes`](../specs/decisions/d04-four-outcomes.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:application.history-rebuild` decidedBy, `spec:application.write-pause` decidedBy, `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | +| [`spec:decisions.d05-rebuildable-history-with-baselines`](../specs/decisions/d05-rebuildable-history-with-baselines.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:context.journal` decidedBy | | [`spec:decisions.d06-idempotency-client-and-receipts`](../specs/decisions/d06-idempotency-client-and-receipts.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | | [`spec:decisions.d07-rejections-thrown-not-stored`](../specs/decisions/d07-rejections-thrown-not-stored.sdp.md) | defined | ready | `spec:application.orders-inventory-example` decidedBy, `spec:command.command-pipeline` decidedBy | | [`spec:decisions.d08-read-models-in-command`](../specs/decisions/d08-read-models-in-command.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:application.projection-contract` decidedBy, `spec:application.read-models` decidedBy, `spec:application.rebuild` decidedBy, `spec:command.command-pipeline` decidedBy, `spec:context.queries` decidedBy, `spec:decisions.d09-rebuild-online-by-default` dependsOn | @@ -85,7 +88,7 @@ No target outside the Pack holds a member below its next rung. | [`spec:decisions.d11-tenant-scope-and-authority`](../specs/decisions/d11-tenant-scope-and-authority.sdp.md) | defined | ready | `spec:application.read-models` decidedBy, `spec:application.rebuild` decidedBy, `spec:command.command-pipeline` decidedBy | | [`spec:decisions.d12-one-declaration-per-command`](../specs/decisions/d12-one-declaration-per-command.sdp.md) | defined | ready | `spec:command.command-declaration` decidedBy, `spec:command.command-pipeline` decidedBy | | [`spec:decisions.d18-everything-else-waits-for-trigger`](../specs/decisions/d18-everything-else-waits-for-trigger.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy | -| [`spec:decisions.d19-operations-travel-with-capability`](../specs/decisions/d19-operations-travel-with-capability.sdp.md) | defined | ready | `spec:application.rebuild` decidedBy | +| [`spec:decisions.d19-operations-travel-with-capability`](../specs/decisions/d19-operations-travel-with-capability.sdp.md) | defined | ready | `spec:application.history-projection` decidedBy, `spec:application.rebuild` decidedBy, `spec:application.history-rebuild` decidedBy | | [`spec:facts.f01-serializable-mutations-under-occ`](../specs/facts/f01-serializable-mutations-under-occ.sdp.md) | defined | ready | `spec:application.history-projection` constrainedBy, `spec:application.projection-contract` constrainedBy, `spec:application.rebuild` constrainedBy, `spec:application.history-rebuild` constrainedBy, `spec:application.write-pause` constrainedBy, `spec:application.generation-registry` constrainedBy, `spec:command.command-pipeline` constrainedBy, `spec:context.event-envelope` constrainedBy, `spec:context.journal` constrainedBy, `spec:decisions.d09-rebuild-online-by-default` constrainedBy | | [`spec:facts.f02-component-calls-commit-with-caller`](../specs/facts/f02-component-calls-commit-with-caller.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy, `spec:context.journal` constrainedBy | | [`spec:facts.f03-nested-run-mutation-partial-rollback`](../specs/facts/f03-nested-run-mutation-partial-rollback.sdp.md) | defined | ready | `spec:command.command-pipeline` constrainedBy | @@ -125,8 +128,8 @@ No target outside the Pack holds a member below its next rung. 3 of them state less than defined: - [`spec:advanced.cross-stream-online-rebuild`](../specs/advanced/cross-stream-online-rebuild.sdp.md) states scoped and rests on [Rebuild: generations, backfill and the write pause](#4-rebuild-generations-backfill-and-the-write-pause). -- [`spec:agents.agent-runs`](../specs/agents/agent-runs.sdp.md) states scoped and rests on [The command pipeline](#12-the-command-pipeline). -- [`spec:application.aggregate-projection`](../specs/application/aggregate-projection.sdp.md) states scoped and rests on [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Generation registry](#9-generation-registry), [Command declaration and bindings](#11-command-declaration-and-bindings), [The command pipeline](#12-the-command-pipeline) and [Rebuild online by default, pause writes only for history-dependent views](#16-rebuild-online-by-default-pause-writes-only-for-history-dependent-views). +- [`spec:agents.agent-runs`](../specs/agents/agent-runs.sdp.md) states scoped and rests on [The command pipeline](#15-the-command-pipeline). +- [`spec:application.aggregate-projection`](../specs/application/aggregate-projection.sdp.md) states scoped and rests on [Projection contract](#2-projection-contract), [Read models](#3-read-models), [Generation registry](#12-generation-registry), [Command declaration and bindings](#14-command-declaration-and-bindings), [The command pipeline](#15-the-command-pipeline) and [Rebuild online by default, pause writes only for history-dependent views](#19-rebuild-online-by-default-pause-writes-only-for-history-dependent-views).

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≪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

` and the parser read only one level. The example now reads, compares and asserts on that scope too. A throwaway run of it on a local native backend running the hosted copy passed, with `depot/migrations/migrations` among the compared tables; the hosted deployment has not run it. And this file kept the corpus digest of `1b3ff58`, from before the two fixes and the close edited Specs. -A review of 2026-10-10 across the four open pull requests found one contract break on this branch, and the commit after `77acdf2` repairs it. The receipt sweep deleted expired receipts without reading the maintenance gate, and `sweepNext` reached it, while `spec:application.write-pause` promises that every writer in a scope reads the gate inside its own mutation, names the mutations that skip the read with the sweep among none of them, and says the restore door keeps every writer out. The Spec side was right. `sweep` now reads the gate after its argument check and before its first receipt read, the restore door first, for the scopes `all` and the tenant's and no source scope, and `sweepNext` reads it through `sweep` after the tenant-list read; a closed scope refuses the run with `writePaused` and it deletes nothing. The three Specs that describe the sweep, the gate's header comment, the `convex-test` suite of the sweep on both compositions and one native test of the restore door against the sweep changed in the same commit, and the corpus digest below is re-measured. Drift repair, not a decision: no register row. +A review of 2026-10-10 across the four open pull requests found one contract break on this branch, and the commit after `77acdf2` repairs it. The receipt sweep deleted expired receipts without reading the maintenance gate, and `sweepNext` reached it, while `spec:application.write-pause` promises that every writer in a scope reads the gate inside its own mutation, names the mutations that skip the read with the sweep among none of them, and says the restore door keeps every writer out. The Spec side was right. `sweep` now reads the gate after its argument check and before its first receipt read, the restore door first, for the scopes `all` and the tenant's and no source scope, and `sweepNext` reads it through `sweep` after the tenant-list read; a closed scope refuses the run with `writePaused` and it deletes nothing. The three Specs that describe the sweep, the gate's header comment, the `convex-test` suite of the sweep on both compositions and one native test of the restore door against the sweep changed in the same commit, and the corpus digest above is re-measured. Drift repair, not a decision: no register row. The merge of that repair into this branch (`09224b5`) met the mention policy of `PLAN.md` 6.7 at the pin `f23e358`: the sweep's gate read is a `dependsOn` on `spec:application.write-pause` in `spec:command.receipt-table` and `spec:command.idempotency-and-receipts`, and the Pack page follows the gate's header comment to its new line. The default branch is `main`, published at `github.com/libar-dev/libar-platform`. Slice S0 reached it through a pull request; from S1 on the session fast-forwarded it once CI was green, on the owner's mandate of 2026-10-01, until the merge of slice S2 and the platform review unit on 2026-10-02, when the owner said: "Please merge to main and push. This is the last change we will do without formal PRs since things are starting to shape up." Round 1's four lanes then reached it through pull requests #6 to #9 (decision 32). The platform review as it was received is in commit `70c15bc`, with paths of the owner's machine in its links; its files left the tree at that unit's close, and the owner said the deleted review may stay in the history. diff --git a/design/pages/history-view.md b/design/pages/history-view.md index f435561..289a1eb 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -141,9 +141,9 @@ No target outside the Pack holds a member below its next rung. | [`spec:application.first-experiment`](../specs/application/first-experiment.sdp.md) | defined | ready | dependsOn `spec:application.history-projection`, dependsOn `spec:application.read-models`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.history-rebuild`, dependsOn `spec:application.generation-registry`, dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | | [`spec:application.parent-use-cases`](../specs/application/parent-use-cases.sdp.md) | defined | ready | dependsOn `spec:command.command-declaration`, dependsOn `spec:command.command-pipeline` | | [`spec:application.restore`](../specs/application/restore.sdp.md) | defined | ready | dependsOn `spec:application.projection-contract`, dependsOn `spec:application.rebuild`, dependsOn `spec:application.history-rebuild`, dependsOn `spec:application.write-pause`, dependsOn `spec:application.generation-registry`, dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal`, dependsOn `spec:context.queries` | -| [`spec:command.idempotency-and-receipts`](../specs/command/idempotency-and-receipts.sdp.md) | defined | ready | refines `spec:command.command-pipeline`, dependsOn `spec:context.queries` | +| [`spec:command.idempotency-and-receipts`](../specs/command/idempotency-and-receipts.sdp.md) | defined | ready | dependsOn `spec:application.write-pause`, refines `spec:command.command-pipeline`, dependsOn `spec:context.queries` | | [`spec:command.outcome-boundary`](../specs/command/outcome-boundary.sdp.md) | defined | ready | refines `spec:command.command-pipeline` | -| [`spec:command.receipt-table`](../specs/command/receipt-table.sdp.md) | defined | ready | dependsOn `spec:context.queries` | +| [`spec:command.receipt-table`](../specs/command/receipt-table.sdp.md) | defined | ready | dependsOn `spec:application.write-pause`, dependsOn `spec:context.queries` | | [`spec:command.tenancy-and-authority`](../specs/command/tenancy-and-authority.sdp.md) | defined | ready | dependsOn `spec:application.write-pause` | | [`spec:context.context-component`](../specs/context/context-component.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope` | | [`spec:context.persistence-adapter`](../specs/context/persistence-adapter.sdp.md) | defined | ready | dependsOn `spec:context.event-envelope`, dependsOn `spec:context.journal` | @@ -1193,7 +1193,7 @@ Inside the Pack it rests on [Rebuild: generations, backfill and the write pause] **Code.** - `component:platform.gate` at [`src/gate/index.ts` line 3](../../src/gate/index.ts#L3): the maintenance gate: its table, the writer check, the two writers and the operator entries. It is a component in the infrastructure layer and the platform context. -- `impl:application.write-pause` at [`src/gate/gate.ts` line 6](../../src/gate/gate.ts#L6): gateAllows, assertWritable and the two scope writers. Its role is service. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. +- `impl:application.write-pause` at [`src/gate/gate.ts` line 8](../../src/gate/gate.ts#L8): gateAllows, assertWritable and the two scope writers. Its role is service. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. - `impl:application.write-pause.entries` at [`src/gate/entries.ts` line 7](../../src/gate/entries.ts#L7): the four gate operator entries. Its role is operator-entry. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. - `impl:application.write-pause.tables` at [`src/gate/tables.ts` line 4](../../src/gate/tables.ts#L4): the gate document's table fragment. Its role is schema. It belongs to `component:platform.gate`, in the infrastructure layer and the platform context. From c3f76e85cf3e2ac0873de9a3232264a63ea10422 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 11:37:40 +0200 Subject: [PATCH 55/60] docs: re-measure the PR 12 section after the merge Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index fbb6ce9..056bd2c 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -56,7 +56,7 @@ The Protocol's branch rules the arc through three decision Specs, and the owner ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-10 at the fold-in of the second read, the commit after `ed4f97f`. Re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-10 at `2347cbc`, after the merge of `feature/round-2` with its review repair (`09224b5`). Re-run the commands rather than inherit these numbers. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -103,7 +103,7 @@ npx sdp validate . ``` ``` -243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1499 edges (0 errors, 0 warnings) … validate: 0 errors · 12 warnings (conformance + honesty over the one graph) ``` @@ -115,7 +115,7 @@ npm run check ``` ``` -243 specs · 6 packs · 180 anchors → 429 nodes · 1497 edges (0 errors, 0 warnings) +243 specs · 6 packs · 180 anchors → 429 nodes · 1499 edges (0 errors, 0 warnings) validate: 0 errors · 12 warnings, 12 prose mentions listed; readiness divergence: [] entry addresses outside the Specs: 497; dependsOn cycles: 0 architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 49 references edges from 41 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context @@ -126,7 +126,7 @@ protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz OK ``` -`npm test` passed 1,141 tests in 74 files, with 10 skipped, the not-compared pairs. +`npm test` passed 1,150 tests in 75 files, with 10 skipped, the not-compared pairs. ### For the owner From e2c77e86747a762622443da086d356449c44e57a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 11:57:47 +0200 Subject: [PATCH 56/60] fix: fold the sol check of the review repairs A gpt-6.1-sol read of the 2026-10-10 review repairs (job-mv27ccog-b3a71a66) held two more cases of F5 in scripts/pinned.mjs, neither failing the current corpus, and found two damaged sentences of spec:application.write-pause. - A name a conditional type infers was in scope in its false branch, where TypeScript does not see it, so `T extends Promise ? Outcome : Outcome` pulled no outer Outcome in and the module failed with TS2304. An inferred name is now in scope in the true branch only. - A value parameter hid a type reference of its name, so `run(Outcome: Outcome): Outcome` pulled nothing in and the module failed with two TS2749. A name now resolves in its own space: a parameter is a value, a type parameter, a mapped key and an inferred name are types, and typeof x names a value. - tests/pure/pinned.test.ts: both cases in the scope test, and a pull-in test that compiles each with the pin pulled in (no diagnostic) and alone (the diagnostic named). The old emitter fails both. The pinned module regenerates byte-identical. - The merge 09224b5 had joined two clauses of the write pause's exemption list into "parkand"; "park, and" is restored. The typeScopeKey follow-up came in through the parent (44a89c1, merged as ab7a13f). - STATE.md records the read, and its corpus digest is re-measured; the Pack page is unchanged. Co-Authored-By: Claude Fable 5.1 --- design/STATE.md | 6 +- design/specs/application/write-pause.sdp.md | 2 +- scripts/pinned.mjs | 82 ++++++++++++++------- tests/pure/pinned.test.ts | 77 ++++++++++++++++++- 4 files changed, 134 insertions(+), 33 deletions(-) diff --git a/design/STATE.md b/design/STATE.md index 0207d60..58ed3fe 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -4,7 +4,7 @@ Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the ## Measured at close -Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`), the fold-in of their second read, and the merge of `feature/round-2` with its review repair (`09224b5`): +Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`), the fold-in of their second read, the merge of `feature/round-2` with its review repair (`09224b5`), and the fold of the sol check of the review repairs with the merge of its follow-up on the parent (`ab7a13f`): ``` 243 specs · 6 packs · 180 anchors → 429 nodes · 1499 edges (0 errors, 0 warnings) @@ -15,7 +15,7 @@ open questions: 72 Specs, 166 questions, 10 blocking; extensions registered: 54 stated readiness: {'defined': 232, 'idea': 1, 'scoped': 10} ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': 38} open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} -corpus digest: 5c1fb4c9041bf955 +corpus digest: b8d5b77dcf27d47c Pack pages current: 1 of 1 protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz ``` @@ -37,6 +37,8 @@ A review of the pull request at `9e58019` found three things, and the commit aft A review of 2026-10-10 across the four open pull requests found one contract break on this branch, and the commit after `77acdf2` repairs it. The receipt sweep deleted expired receipts without reading the maintenance gate, and `sweepNext` reached it, while `spec:application.write-pause` promises that every writer in a scope reads the gate inside its own mutation, names the mutations that skip the read with the sweep among none of them, and says the restore door keeps every writer out. The Spec side was right. `sweep` now reads the gate after its argument check and before its first receipt read, the restore door first, for the scopes `all` and the tenant's and no source scope, and `sweepNext` reads it through `sweep` after the tenant-list read; a closed scope refuses the run with `writePaused` and it deletes nothing. The three Specs that describe the sweep, the gate's header comment, the `convex-test` suite of the sweep on both compositions and one native test of the restore door against the sweep changed in the same commit, and the corpus digest above is re-measured. Drift repair, not a decision: no register row. The merge of that repair into this branch (`09224b5`) met the mention policy of `PLAN.md` 6.7 at the pin `f23e358`: the sweep's gate read is a `dependsOn` on `spec:application.write-pause` in `spec:command.receipt-table` and `spec:command.idempotency-and-receipts`, and the Pack page follows the gate's header comment to its new line. A `gpt-6.1-sol` read of the repair (`job-mv27ccog-b3a71a66`) found the `typeScopeKey` entry of the write pause still naming the builders of a scope without the sweep, which builds its tenant scope through `tenantScope`; `44a89c1` on `feature/round-2` adds it, merged here, and the digest above is re-measured again. +The same `gpt-6.1-sol` read held two more cases of F5 in `scripts/pinned.mjs`, neither failing the current corpus. A name a conditional type infers was in scope in its false branch, where TypeScript does not see it, so `T extends Promise ? Outcome : Outcome` pulled no outer `Outcome` in and emitted a module with a TS2304. A value parameter hid a type reference of its name, so `run(Outcome: Outcome): Outcome` pulled nothing in and emitted two TS2749. The emitter now resolves a name in its own space, values apart from types, and gives an inferred name to the true branch only; `tests/pure/pinned.test.ts` holds both cases, compiled with and without the pulled-in pin, and the pinned module is byte-identical. The read also found that the merge `09224b5` had joined two clauses of the write pause's exemption list into `parkand`, restored in the fold, the commit after `ab7a13f`, with the digest above re-measured. Drift repair and a merge repair, not a decision: no register row. + The default branch is `main`, published at `github.com/libar-dev/libar-platform`. Slice S0 reached it through a pull request; from S1 on the session fast-forwarded it once CI was green, on the owner's mandate of 2026-10-01, until the merge of slice S2 and the platform review unit on 2026-10-02, when the owner said: "Please merge to main and push. This is the last change we will do without formal PRs since things are starting to shape up." Round 1's four lanes then reached it through pull requests #6 to #9 (decision 32). The platform review as it was received is in commit `70c15bc`, with paths of the owner's machine in its links; its files left the tree at that unit's close, and the owner said the deleted review may stay in the history. **The units `design-in-the-graph`, `pack-page` and `sdp-round-2` are on `unit/design-in-the-graph`, pull request #12**, stacked on `feature/round-2`. CI last ran on it at `15f3d04` (run 37167922151, 7 m 3 s, passed). This unit's commits from `ee8846a`, round 5's fold-in among them, and its close are not pushed yet. The Protocol's side of the unit is the branch `feature/adopter-round-2` of `libar-dev/software-delivery-protocol`, from `5e29c03`, not pushed and with no pull request yet. The main thread pushes both after the owner's answer on the gen-1 quotes (Owner queue) and opens the Protocol's pull request from `pr-sdp-draft.md` in the unit folder. diff --git a/design/specs/application/write-pause.sdp.md b/design/specs/application/write-pause.sdp.md index abccbaa..42110d0 100644 --- a/design/specs/application/write-pause.sdp.md +++ b/design/specs/application/write-pause.sdp.md @@ -42,7 +42,7 @@ The write pause is the maintenance gate every writer in a scope reads inside its ## Contract -- There is one gate document per deployment, read through `assertWritable`, which throws, by the command pipeline at its step 7, by the grant helpers `insertGrant` and `revokeGrant` of `spec:command.actor-and-scope` before they write, and by the receipt sweep `sweep` of `spec:command.receipt-table`, which `sweepNext` runs, after its argument check and before it reads a receipt, and by every background batch at the start of its mutation through `gateAllows`, which answers and lets the batch park, never cached across mutations; the background readers are the rebuild's backfill, verify and purge batches, its tenant fill's `fillTenantsBatch`, and the journal's baseline driver of `spec:context.journal`, which writes a source stream and reschedules itself when refused; the only mutations that skip the read are the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, the rebuild's other operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and parkand the restore procedure's `startRestoreRun`, its check batches, its pending-work inventory and `finishRestoreRun`, which write only the `restoreRuns` record and the generation rows the accepted branch resumes, with their progress rows, while the restore door is closed, as `spec:application.restore` states; every command that reaches step 7 reads the gate; a duplicate answered from its receipt does not, because its answer writes nothing (D9, D6, E-8, E-25, E-37, E-42) +- There is one gate document per deployment, read through `assertWritable`, which throws, by the command pipeline at its step 7, by the grant helpers `insertGrant` and `revokeGrant` of `spec:command.actor-and-scope` before they write, and by the receipt sweep `sweep` of `spec:command.receipt-table`, which `sweepNext` runs, after its argument check and before it reads a receipt, and by every background batch at the start of its mutation through `gateAllows`, which answers and lets the batch park, never cached across mutations; the background readers are the rebuild's backfill, verify and purge batches, its tenant fill's `fillTenantsBatch`, and the journal's baseline driver of `spec:context.journal`, which writes a source stream and reschedules itself when refused; the only mutations that skip the read are the gate's own entries, the rebuild's `fillTenants`, which reads the restore door alone and is refused while it is closed, the rebuild's other operator entries, `startGeneration`, `interruptGeneration`, `resumeGeneration`, `switchGeneration`, `rollbackGeneration`, `abortGeneration` and `purgeGeneration`, which change only the generation, progress and gate rows they name while the batches they schedule read the gate and park, and the restore procedure's `startRestoreRun`, its check batches, its pending-work inventory and `finishRestoreRun`, which write only the `restoreRuns` record and the generation rows the accepted branch resumes, with their progress rows, while the restore door is closed, as `spec:application.restore` states; every command that reaches step 7 reads the gate; a duplicate answered from its receipt does not, because its answer writes nothing (D9, D6, E-8, E-25, E-37, E-42) - A scope is `all`, one tenant, or one source stream type of one context; the gate holds the set of closed scopes, each with a reason, the generation it serves if any, and the operator who closed it (E-8, E-48, D9) - A writer in a closed scope refuses before any write with the transient refusal `writePaused`, whose message carries the scope and the reason; nothing is stored, no operation ID is minted, and the same request key succeeds once the scope is open (D9, D4, Law 6) - A use case is in scope when `all` is closed, when its tenant is closed, or when a stream type its declaration's `writes` names is closed (E-8, E-38, D9) diff --git a/scripts/pinned.mjs b/scripts/pinned.mjs index 975e38c..c0a728c 100644 --- a/scripts/pinned.mjs +++ b/scripts/pinned.mjs @@ -186,40 +186,55 @@ export function declarationOf(row) { return { ...base, kind: null }; } -// The names a node declares for what is inside it: its parameters and type parameters, a mapped -// type's key, and the type parameters a conditional type infers in its extends clause (a nested -// conditional type's are its own). +// The names a node declares for what is inside it, by space: its type parameters and a mapped +// type's key are types, and its parameters are values. The type parameters a conditional type +// infers in its extends clause are types inside its true branch and nowhere else, which is where +// TypeScript sees them; a nested conditional type's are its own. +const named = (declaration) => + ts.isIdentifier(declaration.name) ? [declaration.name.text] : []; function declaredBy(node) { - const named = (declaration) => - ts.isIdentifier(declaration.name) ? [declaration.name.text] : []; - const inferred = (type) => - ts.isConditionalTypeNode(type) - ? [] - : [ - ...(ts.isInferTypeNode(type) ? named(type.typeParameter) : []), - ...children(type).flatMap(inferred), - ]; - return [ - ...(ts.isMappedTypeNode(node) ? named(node.typeParameter) : []), - ...(node.typeParameters ?? []).flatMap(named), - ...(node.parameters ?? []).flatMap(named), - ...(ts.isConditionalTypeNode(node) ? inferred(node.extendsType) : []), - ]; + return { + types: [ + ...(ts.isMappedTypeNode(node) ? named(node.typeParameter) : []), + ...(node.typeParameters ?? []).flatMap(named), + ], + values: (node.parameters ?? []).flatMap(named), + }; +} +const inferredBy = (type) => + ts.isConditionalTypeNode(type) + ? [] + : [ + ...(ts.isInferTypeNode(type) ? named(type.typeParameter) : []), + ...children(type).flatMap(inferredBy), + ]; + +// Whether an identifier names a type: the name of a type reference, of a heritage clause or of an +// import type, or the head of a qualified name under one. `typeof x` and every expression name a +// value. +function namesType(node) { + let at = node; + while (ts.isQualifiedName(at.parent)) at = at.parent; + return ( + ts.isTypeReferenceNode(at.parent) || + ts.isExpressionWithTypeArguments(at.parent) || + ts.isImportTypeNode(at.parent) + ); } // The names a declaration uses: identifiers that are not a property, a member, what is declared, or -// a name in scope. A parameter or type parameter is in scope inside the node that declares it and -// nowhere else, so a nested `` hides no outer `Outcome`. +// a name in scope. A name is resolved in its own space, so a value parameter hides no type of its +// name and a type parameter hides no value; and a parameter or type parameter is in scope inside +// the node that declares it and nowhere else, so a nested `` hides no outer `Outcome`. export function namesUsedBy(declaration) { const used = new Set(); - const visit = (node, scope) => { - const declared = declaredBy(node); - const inner = - declared.length === 0 ? scope : new Set([...scope, ...declared]); + const extended = (scope, names) => + names.length === 0 ? scope : new Set([...scope, ...names]); + const visit = (node, types, values) => { const parent = node.parent; if ( ts.isIdentifier(node) && - !inner.has(node.text) && + !(namesType(node) ? types : values).has(node.text) && (ts.isShorthandPropertyAssignment(parent) || (ts.isPropertyAccessExpression(parent) ? parent.expression === node @@ -228,15 +243,28 @@ export function namesUsedBy(declaration) { : parent.name !== node)) ) used.add(node.text); - for (const child of children(node)) visit(child, inner); + const declared = declaredBy(node); + const innerTypes = extended(types, declared.types); + const innerValues = extended(values, declared.values); + const inTrueBranch = ts.isConditionalTypeNode(node) + ? extended(innerTypes, inferredBy(node.extendsType)) + : innerTypes; + for (const child of children(node)) + visit( + child, + child === node.trueType ? inTrueBranch : innerTypes, + innerValues, + ); }; + const own = new Set([declaration.name]); visit( parse( declaration.kind === "table" ? `const tables = { ${declaration.text} };` : declaration.text, ), - new Set([declaration.name]), + own, + own, ); return [...used]; } diff --git a/tests/pure/pinned.test.ts b/tests/pure/pinned.test.ts index cafd69f..3d7ce03 100644 --- a/tests/pure/pinned.test.ts +++ b/tests/pure/pinned.test.ts @@ -1,9 +1,10 @@ // scripts/pinned.mjs, the emitter of a Pack's pinned module: its pure parts. A call signature with // a default before a required parameter emits a required parameter whose type admits undefined, // since TypeScript refuses a required parameter after an optional one (TS1016). A parameter or -// type parameter is in scope inside the node that declares it and nowhere else, so a name a -// declaration uses outside that node is used, and the pin of another Spec is pulled in. Each -// emitted text is compiled with the TypeScript API. +// type parameter is in scope inside the node that declares it and nowhere else, a name resolves +// in its own space, so a value parameter hides no type, and a name a conditional type infers is +// in scope in its true branch only; so a name a declaration uses outside that scope is used, and +// the pin of another Spec is pulled in. Each emitted text is compiled with the TypeScript API. import ts from "typescript"; import { expect, test } from "vitest"; @@ -132,6 +133,29 @@ test("a parameter or type parameter is in scope inside the node that declares it "type Unwrap = T extends Promise ? U : Outcome", ), ).toEqual(["Promise", "Outcome"]); + // A name a conditional type infers is in scope in its true branch and nowhere else. + expect( + usedBy( + "typeUnwrapOutcome", + "type Unwrap = T extends Promise ? Outcome : Outcome", + ), + ).toEqual(["Promise", "Outcome"]); + // A value parameter hides no type of its name, and a type parameter hides no value. + expect(usedBy("fnRun", "run(Outcome: Outcome): Outcome")).toEqual([ + "Outcome", + ]); + expect( + usedBy( + "typeChecked", + "type Checked = { check(outcomeValidator: unknown): typeof outcomeValidator }", + ), + ).toEqual([]); + expect( + usedBy( + "typeOf", + "type Of = outcomeValidator | typeof outcomeValidator", + ), + ).toEqual(["outcomeValidator"]); expect( usedBy( "validatorOutcome", @@ -182,3 +206,50 @@ test("an outer dependency pinned by another Spec is pulled in, and the module co expect(pinned.pulledIn([local], pinnedBy).emitted).toEqual([local]); expect(diagnostics(local.text)).toEqual([]); }); + +test("an inferred name and a value parameter hide no outer type, and the module compiles", () => { + const outcome = () => + pinned.declarationOf( + row( + "typeOutcome", + 'type Outcome = { kind: "committed" | "rejected" }', + "spec:sample.outcome", + ), + ); + const valueAsType = + "TS2749: 'Outcome' refers to a value, but is being used as a type here. Did you mean 'typeof Outcome'?"; + const cases: [Row, string[]][] = [ + [ + row( + "typeUnwrap", + "type Unwrap = T extends Promise ? Outcome : Outcome", + ), + ["TS2304: Cannot find name 'Outcome'."], + ], + [ + row("fnRun", "run(Outcome: Outcome): Outcome"), + [valueAsType, valueAsType], + ], + ]; + for (const [sample, alone] of cases) { + const own = pinned.declarationOf(sample); + const pin = outcome(); + const { emitted } = pinned.pulledIn( + [own], + new Map([ + [own.name, [own]], + [pin.name, [pin]], + ]), + ); + expect(emitted.map(({ address, why }) => ({ address, why }))).toEqual([ + { address: own.address, why: undefined }, + { + address: at("spec:sample.outcome", "typeOutcome"), + why: `${own.address} uses Outcome`, + }, + ]); + expect(diagnostics(emitted.map((pin) => pin.text).join("\n"))).toEqual([]); + // Alone, the module names a type it never declares, or uses a value where a type is needed. + expect(diagnostics(own.text)).toEqual(alone); + } +}); From 36bc5a08321dd88324276addfb1981fa6d5b14c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 11:58:58 +0200 Subject: [PATCH 57/60] docs: re-measure the PR 12 section after the fold Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index 056bd2c..af0bf2f 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -56,7 +56,7 @@ The Protocol's branch rules the arc through three decision Specs, and the owner ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-10 at `2347cbc`, after the merge of `feature/round-2` with its review repair (`09224b5`). Re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-10 at `e2c77e8`, the fold of the sol check of the review repairs, after the merge of `feature/round-2` with its review repair (`09224b5`) and its follow-up (`ab7a13f`). Re-run the commands rather than inherit these numbers. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -126,7 +126,7 @@ protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz OK ``` -`npm test` passed 1,150 tests in 75 files, with 10 skipped, the not-compared pairs. +`npm test` passed 1,151 tests in 75 files, with 10 skipped, the not-compared pairs. ### For the owner From b5fb659c321d07fb9c2b81e88fb6bb7b8c5b3923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 12:16:48 +0200 Subject: [PATCH 58/60] build: pin the Protocol at 822aea4, its main after the merge of #29 The Protocol merged #28 (feature/adopter-round-2) into main as 415b095 and #29 (feature/annotations-v0, the annotations arc with the owner's rulings and the review repairs) as 822aea4, whose tree equals the branch's head a4bafdc. The tarball is packed from a clean clone at 822aea4, and the Protocol's whole gate passes there (npm run check, preflight included). Nothing this corpus reads moved on the pin alone: 243 Specs, 429 nodes, 1,499 edges, 12 listed warnings, 497 addresses resolved, no cycle, the digest b8d5b77dcf27d47c unchanged. Recipe 27 keeps its builds-on column, and the pinned pairs compare as before, 49 bound, 17 ahead and 10 not compared. The page names the new pin. Co-Authored-By: Claude Fable 5.1 --- design/pages/history-view.md | 2 +- package-lock.json | 6 +++--- package.json | 2 +- ...oftware-delivery-protocol-0.0.0-822aea4.tgz | Bin 0 -> 469392 bytes ...oftware-delivery-protocol-0.0.0-f23e358.tgz | Bin 467647 -> 0 bytes 5 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz delete mode 100644 vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz diff --git a/design/pages/history-view.md b/design/pages/history-view.md index 289a1eb..4964ba7 100644 --- a/design/pages/history-view.md +++ b/design/pages/history-view.md @@ -4,7 +4,7 @@ The Specs a history view rests on, in reading order. A history view is a read model whose row folds the events of several streams, such as the order allocation history of the example domain. The history projection comes first because it pins the form, its fold and that view; the projection contract and the read models follow with the row conventions and the read-model rules every view shares. The rebuild, the history rebuild with its five examples, the write pause and the generation registry say how such a view comes to exist and is rebuilt while the commands that write its sources are refused. The rebuild comes first because it holds the operator entries and the batch chain both paths share; the history rebuild holds the paused path alone and the five examples verify it, so the rebuild's implementation binding claims the online path and the history rebuild shows the paused path designed apart from it. The example domain names the events the view folds, and the command declaration and the command pipeline bind the view to the commands that feed it and write it inside each command. The event envelope, the journal and the queries are where the events come from on the live path and on the backfill, and D9 is the decision that a read model which depends on history across several streams rebuilds under a write pause. -This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with two inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). +This page is generated from the Specs of `pack:history-view` by `scripts/pack-page.mjs`, with two inputs: the pinned pairs in [`tests/types/pinned-pairs.json`](../../tests/types/pinned-pairs.json) and the register rows in [`design/decisions/register.json`](../decisions/register.json). Do not edit it by hand. Change a Spec or an input, then run `npm run pages`; `npm run pages -- --check` fails while the page is behind the tree. The Protocol is pinned at `@libar-dev/software-delivery-protocol@file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz`. The members speak the vocabulary of [`spec:platform.vocabulary`](../specs/platform/vocabulary.sdp.md). ## How to read it diff --git a/package-lock.json b/package-lock.json index c9a2440..3699c3b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,7 +13,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", @@ -801,8 +801,8 @@ }, "node_modules/@libar-dev/software-delivery-protocol": { "version": "0.0.0", - "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", - "integrity": "sha512-oD5A/Z/Llm1wL0enFqEYRUJ+ZAQtnKVi/IOafNL4KAPLj6Has1eXNqwpQN6d21m/GSqspiGuinn8dYrfdzrMlQ==", + "resolved": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz", + "integrity": "sha512-brKD2HWM4+I+qc/nL9iSDudnlCurvU4dQIRHfK32xkym/yRtv/4R6eUGGwRwkQqXdiIvqrmKlXyKJFX7dIYKmg==", "dev": true, "license": "Apache-2.0", "dependencies": { diff --git a/package.json b/package.json index e49ba30..ba76227 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "@convex-dev/migrations": "0.3.6", "@edge-runtime/vm": "5.0.0", "@eslint/js": "10.0.1", - "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz", + "@libar-dev/software-delivery-protocol": "file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz", "@types/node": "24.19.0", "@types/react": "19.3.0", "@types/react-dom": "19.3.0", diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz new file mode 100644 index 0000000000000000000000000000000000000000..930e9fbba27ae8045fe4f077366b1f7e3da2e030 GIT binary patch literal 469392 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—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%0DHK63V4kXS8KCSmEx>fJptI_CF6^W((UFT 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

cwB+r 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

FC< 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 z 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 z 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 E00;o0a{vGU literal 0 HcmV?d00001 diff --git a/vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz b/vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz deleted file mode 100644 index bab4e012101f341727a089bab6c2d0e104a36ec3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 467647 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

A)tz+ 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%0D^y`LE>P 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 Vv0kma!T8=2y{C;F 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 a+H^g=T>oAFUH|=`{{0tD{_W5JL?Hkk4tr<- From e83eb343ee740be4fa3b40396801b7f1b6ba5e95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 12:21:11 +0200 Subject: [PATCH 59/60] design: refresh the state and the roadmap at the close of PR 12 The three pull requests of the unit are merged or ready: #11 into main as a758ba4, the Protocol's #28 as 415b095 and #29 as 822aea4, and #12 retargeted to main, merging after this close. The pin is 822aea4 (b5fb659). The third read of the history Specs has run, so the owner's ready on the history projection waits for nothing else, and the history rebuild's waits for OD-157 alone; the roadmap's 5d and 4e say so. The measured block, the corpus digest and the close's gates are re-measured at the new pin, the native tier included. Two owner-queue rows closed by the merges are dropped: the three pull requests, and the gen-1 quotes question that preceded their pushes. Co-Authored-By: Claude Fable 5.1 --- design/ROADMAP.md | 10 +++++----- design/STATE.md | 22 ++++++++++------------ 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/design/ROADMAP.md b/design/ROADMAP.md index 0d3e4af..5193ee9 100644 --- a/design/ROADMAP.md +++ b/design/ROADMAP.md @@ -1,6 +1,6 @@ # Roadmap: the next units -Written on 2026-10-02 by the main thread, from four advisor memos written the same day under `design/advisors/task-roadmap.md`. It is a work document: it orders units and names what each needs and shows, and it says nothing a Spec should say. The owner rules on it. The memos, the plants and the check are in the roadmap unit's folder, which the project notes name. It is kept current at each close, last at the close of the unit `sdp-round-2` on 2026-10-04. +Written on 2026-10-02 by the main thread, from four advisor memos written the same day under `design/advisors/task-roadmap.md`. It is a work document: it orders units and names what each needs and shows, and it says nothing a Spec should say. The owner rules on it. The memos, the plants and the check are in the roadmap unit's folder, which the project notes name. It is kept current at each close, last at the close of pull request #12 on 2026-10-10, before its merge into `main`. ## How to read it @@ -36,7 +36,7 @@ The slices of `STATE.md` keep their names. S3 is round 1's attribution and round | 5 | a | Baselines, migration and the fold bound, Sc L2-7 at the native tier; the history-reading sweep with its transient refusal and the restore check's pending-work inventory, at `convex-test` for the interleavings and natively for the sweep | mixed | domain | a night or more | OD-041 (ruled), 3b | | 5 | b | The restore procedure and the drill, Sc L2-8 | mixed | operator | unknown until 4b | 4b, 5a | | 5 | c | The first adopter-facing cut: README, the example walkthrough, the package shape | mixed | product | a night | OD-047, OD-048, Sc L2-5 to L2-8 bound | -| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10. Its design is `pack:history-view`, read in four passes: the implementation and Convex passes in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`. The build waits for the owner's `ready` | build | domain | a night | 3b, 4c, the four passes (done), round 5 of the passes' fold-in and a third read of the history Specs, the owner's `ready` on the history projection, and on the history rebuild once OD-157 is ruled | +| 5 | d | The build of the order allocation history view, Sc L2-6 at the native tier, by ruling F10. Its design is `pack:history-view`, read in four passes: the implementation and Convex passes in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`. The build waits for the owner's `ready` | build | domain | a night | 3b, 4c, the four passes, round 5 of their fold-in and the third read of the history Specs (all done), the owner's `ready` on the history projection, and on the history rebuild once OD-157 is ruled | ## Round 1: what blocks nothing @@ -97,7 +97,7 @@ Every item is done but the hosted tier's first runs, which are the owner's after **4d. The receipts sweep.** One internal mutation per tenant over the expiry index, at most the bound, returning what it deleted and whether more remains, with the loop over tenants from 2b's ruling. Done in the close of round 3, as `receipts.sweep` and `sweepNext`. -**4e. `ready` as approval to build.** By OD-163, the owner's ruling of 2026-10-04, `ready` states that a Spec is approved to build, the Protocol's reading: recipe 1 is the build backlog, and a `ready` Spec leaves it when an anchor binds its code. 4e is therefore no longer a stamp on what is built. Its first use is the history view. The four passes over `pack:history-view` have run, and after round 5 of their fold-in and a short third read of the history Specs the owner may state `ready` on `spec:application.history-projection`, which OD-174 left with no unruled `owner` row, and on the paused path, `spec:application.history-rebuild` with its five examples, once OD-157 is ruled; those statements approve 5d. The fork for OD-024 still lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application. Since OD-162 the generation registry, the command declaration and the command pipeline no longer rest on the aggregate Spec, so their floors reach `ready` and the registry no longer stands apart. A Spec with an unruled `owner` row stays `defined`. +**4e. `ready` as approval to build.** By OD-163, the owner's ruling of 2026-10-04, `ready` states that a Spec is approved to build, the Protocol's reading: recipe 1 is the build backlog, and a `ready` Spec leaves it when an anchor binds its code. 4e is therefore no longer a stamp on what is built. Its first use is the history view. The four passes over `pack:history-view`, round 5 of their fold-in and the third read of the history Specs have run, and the read found the history projection and the version-change and installation examples ready to state. So the owner may state `ready` on `spec:application.history-projection`, which OD-174 left with no unruled `owner` row, with nothing else in the way, and on the paused path, `spec:application.history-rebuild` with its five examples, once OD-157 is ruled; those statements approve 5d. The fork for OD-024 still lists the built Specs with their floors and their open questions and asks for `ready` by family: kernel and context first, then command, then application. Since OD-162 the generation registry, the command declaration and the command pipeline no longer rest on the aggregate Spec, so their floors reach `ready` and the registry no longer stands apart. A Spec with an unruled `owner` row stays `defined`. ## Round 5: S5 @@ -107,11 +107,11 @@ Every item is done but the hosted tier's first runs, which are the owner's after **5c. The adopter-facing cut.** The root README's first hour, an `example/README.md` that walks `PlaceOrder` from its declaration to the order summary, and the package kept private with nothing of the first-release list. No name, export or version is a contract yet. -**5d. The history view's build.** Its design is `pack:history-view`, nineteen Specs, read before the build in four passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation and Convex passes ran in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`, and their rulings are OD-156 to OD-161 and OD-164 to OD-175. The second read of the history Specs found the release procedure uneven, and round 5 of the unit's fold-in stated it whole (L1 to L8 of its rulings); a short third read follows. The build then waits for the owner's `ready` on `spec:application.history-projection` and on `spec:application.history-rebuild`, which also waits for OD-157. It then binds the two Specs to their code: `applyHistoryProjection` at step 9, checking each generation's version first; the paused path with `historyHandoff`, the protected abort and the source check of OD-175; the order allocation history bound on `PlaceOrder`, `CancelOrder` and `ReceiveStock`, with the pure test over the declarations that OD-172 asks for; and `eventSchemaVersion` on the history event, OD-173. It moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the history rebuild's five examples at the native tier: the two Sc L2-6 examples, interrupt then resume and interrupt then abort, a version-changing deploy and a first installation through the handoff, and a source-order mismatch. OD-164 to OD-170 are sorted by their lenses before or beside it. +**5d. The history view's build.** Its design is `pack:history-view`, nineteen Specs, read before the build in four passes, one lens each (`PLAN.md` 6.7, `design/advisors/task-pass.md`). The implementation and Convex passes ran in the unit `design-in-the-graph`, the domain and operator passes in `sdp-round-2`, and their rulings are OD-156 to OD-161 and OD-164 to OD-175. The second read of the history Specs found the release procedure uneven, and round 5 of the unit's fold-in stated it whole (L1 to L8 of its rulings); the third read found the projection and the version-change and installation examples ready to state, and its four seams at the protected abort's edges are folded in as round 6 (M1 to M5). The build waits for the owner's `ready` on `spec:application.history-projection`, which nothing else gates, and on `spec:application.history-rebuild`, which also waits for OD-157. It then binds the two Specs to their code: `applyHistoryProjection` at step 9, checking each generation's version first; the paused path with `historyHandoff`, the protected abort and the source check of OD-175; the order allocation history bound on `PlaceOrder`, `CancelOrder` and `ReceiveStock`, with the pure test over the declarations that OD-172 asks for; and `eventSchemaVersion` on the history event, OD-173. It moves the pairs it closes from the ahead list of `tests/types/pinned.test-d.ts` to the bound list, and binds the history rebuild's five examples at the native tier: the two Sc L2-6 examples, interrupt then resume and interrupt then abort, a version-changing deploy and a first installation through the handoff, and a source-order mismatch. OD-164 to OD-170 are sorted by their lenses before or beside it. ## Beside the rounds -**The Protocol's round 2** is built on `feature/adopter-round-2` of `libar-dev/software-delivery-protocol` and waits for its pull request and merge: authored entry order rendered, a Pack's member order, the next rung, question keys, recipes 25 and 26, and the Studio slice, `pack:spec-studio-v1`. This corpus is pinned at `dfa1bd9`, the branch's last commit, and moves to the merge commit after it. The owner's `ready` on the four Specs the round implemented, and the Studio Pack's 25 departures, keyed questions for the owner, are in the Owner queue of `STATE.md`. +**The Protocol's round 2** is merged: `feature/adopter-round-2` of `libar-dev/software-delivery-protocol` as its pull request #28 (`415b095`) on 2026-10-10, followed by the annotations arc, #29 (`822aea4`). It brought authored entry order rendered, a Pack's member order, the next rung, question keys, recipes 25 and 26, and the Studio slice, `pack:spec-studio-v1`. This corpus is pinned at `822aea4`, the Protocol's `main` after both merges. The owner's `ready` on the four Specs the round implemented, and the Studio Pack's 25 departures, keyed questions for the owner, are in the Owner queue of `STATE.md`. **The dedicated pull request of O16**, a ruling of the unit `sdp-round-2`, comes after 5d or beside it, as the owner chooses. The owner: "Now it is perfect ground for demonstation in a dedicated PR. I am preparing the ground for that." and "The Graph, when properly implemented, gives all of these as projections." The Pack page, recipes 25 and 26, the question keys, the next-rung data and the Studio slice are its ground. Its subject lives in a private repository, and nothing from it is quoted here without the owner's word. diff --git a/design/STATE.md b/design/STATE.md index 58ed3fe..e3442b9 100644 --- a/design/STATE.md +++ b/design/STATE.md @@ -1,10 +1,10 @@ # State of the design corpus -Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the pull request of the unit `design-in-the-graph` (#12) after the unit `pack-page`. That pull request is stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. +Written on 2026-10-04 at the close of the unit `sdp-round-2`, which extends the pull request of the unit `design-in-the-graph` (#12) after the unit `pack-page`, and refreshed on 2026-10-10 at the close of that pull request, before its merge into `main`. That pull request was stacked on `feature/round-2`, which followed the close of round 3, sitting two (round 3's unit 3d), unit 3b, the tooling unit, round 2, round 1, the roadmap unit, the decision register unit, the platform review unit and slice S2. `SESSIONS.md` says how to use this file. Every close rewrites it. `ROADMAP.md` orders the next units and is kept current at each close. ## Measured at close -Re-measured on 2026-10-10 with `python3 design/tools/check.py`, at the pin `f23e358`, after the rulings of 2026-10-10 (`ecba393`), the fold-in of their second read, the merge of `feature/round-2` with its review repair (`09224b5`), and the fold of the sol check of the review repairs with the merge of its follow-up on the parent (`ab7a13f`): +Re-measured on 2026-10-10 with `python3 design/tools/check.py` at the close of pull request #12, at the pin `822aea4` (`b5fb659`), the Protocol's `main` after the merge of its #29, after the rulings of 2026-10-10 (`ecba393`), the fold-in of their second read, the merge of `feature/round-2` with its review repair (`09224b5`), the fold of the sol check of the review repairs with the merge of its follow-up on the parent (`ab7a13f`), and the merge of #11 into `main` (`a758ba4`). The re-pin moved nothing in it: ``` 243 specs · 6 packs · 180 anchors → 429 nodes · 1499 edges (0 errors, 0 warnings) @@ -17,7 +17,7 @@ ledger: 278 findings, {'fixed': 159, 'open': 80, 'owner': 1, 'partially-fixed': open findings by slice: {'L3': 30, 'P': 29, 'S3': 1, 'S4': 4, 'S5': 16} corpus digest: b8d5b77dcf27d47c Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz ``` `python3 design/tools/decisions.py`, after this unit, which adds OD-164 to OD-175 and decides OD-172 to OD-175: @@ -29,7 +29,7 @@ class: tactical=3, delegated=89, owner=56, null=27 advisor: convex=43, domain=51, operator=41, product=40 ``` -**Round 2, the tooling unit, round 3's unit 3b, sitting two and the close of round 3 are on `feature/round-2`, not on `main`.** `main` is still at `592f1dc`, the close of round 1. The close of round 3 did the rest of the mini roadmap (4f, the hosted tier, 4c, 4a and 4d) and ends the branch: `feature/round-2` goes to `main` as one pull request, which the main thread opens at this close for the owner's review and merge. The owner's words at the opening of the close: "forks have been resolved and mini roadmap unlocked. please complete the work to wrap up the feature branch and PR. use Opus, GPT 6 Astra and 6.1 Sol and orchestrate from the main thread". The main thread was Opus 5.5; no Fable agent and no advisor ran. Its head is this close's commit, on top of the fold-in's follow-up `651fcc3`. Tactical decision 42 holds the branch and its one pull request. +**Round 2, the tooling unit, round 3's unit 3b, sitting two and the close of round 3 reached `main` through pull request #11, `feature/round-2`, merged on 2026-10-10 as `a758ba4` with the receipt-sweep repair.** Until then `main` stood at `592f1dc`, the close of round 1. The close of round 3 did the rest of the mini roadmap (4f, the hosted tier, 4c, 4a and 4d) and ended the branch: `feature/round-2` went to `main` as that one pull request, which the main thread opened at the close for the owner's review and merge. The owner's words at the opening of the close: "forks have been resolved and mini roadmap unlocked. please complete the work to wrap up the feature branch and PR. use Opus, GPT 6 Astra and 6.1 Sol and orchestrate from the main thread". The main thread was Opus 5.5; no Fable agent and no advisor ran. Its head is this close's commit, on top of the fold-in's follow-up `651fcc3`. Tactical decision 42 holds the branch and its one pull request. CI passed on the branch's pushes in round 2 (`1b92bd8`, `a5d339d`) and in 3b (`314c265`, `2283083`, `de285bb`, and its close `840b32c` in 7 m 12 s). It failed on the push of sitting two, `d2a8d1b` (run 37105650743): two native files of 166, Probe 4's nested-call example and Sc L2-5's `rebuild.online-rebuild-interrupt-resume`, whose `interruptGeneration` lost every rerun to the backfill batches on `generationProgress` (`OptimisticConcurrencyControlFailure`), so acceptance read 31 passed, 1 failed and 6 missing (Leads 43). Nothing was pushed after it until this close. CI on the close's push, `1b3ff58` (run 37112192453), failed one file of 175, Probe 4's nested file on its 1 s limit, and passed L2-5. Two fixes followed before the pull request, each read by sol: Probe 4's documents hold an ASCII string in place of bytes, so the step reaches the bytes-written limit in about 0.06 s where it took 0.44 s (`4ff759d`); and `interruptGeneration` reads and writes the generation row only, marking `interruptedFence`, while a batch that finds its fence stale records the interruption on the progress row, so the interrupt no longer conflicts with the batches on `generationProgress` (`2a44655`, `131b48a`). CI on `131b48a` (run 37113652222, 7 m 17 s) passed: `npm test` 69 files; the whole tier 175 files, 174 passed and 1 skipped, 1,201 tests passed and 5 skipped; acceptance 34 passed, 0 failed, 0 absent, 4 missing, "run passed · tree clean". The local whole-tier runs of this unit ran under load and are no proof of the whole tier; CI's runs are. @@ -41,7 +41,7 @@ The same `gpt-6.1-sol` read held two more cases of F5 in `scripts/pinned.mjs`, n The default branch is `main`, published at `github.com/libar-dev/libar-platform`. Slice S0 reached it through a pull request; from S1 on the session fast-forwarded it once CI was green, on the owner's mandate of 2026-10-01, until the merge of slice S2 and the platform review unit on 2026-10-02, when the owner said: "Please merge to main and push. This is the last change we will do without formal PRs since things are starting to shape up." Round 1's four lanes then reached it through pull requests #6 to #9 (decision 32). The platform review as it was received is in commit `70c15bc`, with paths of the owner's machine in its links; its files left the tree at that unit's close, and the owner said the deleted review may stay in the history. -**The units `design-in-the-graph`, `pack-page` and `sdp-round-2` are on `unit/design-in-the-graph`, pull request #12**, stacked on `feature/round-2`. CI last ran on it at `15f3d04` (run 37167922151, 7 m 3 s, passed). This unit's commits from `ee8846a`, round 5's fold-in among them, and its close are not pushed yet. The Protocol's side of the unit is the branch `feature/adopter-round-2` of `libar-dev/software-delivery-protocol`, from `5e29c03`, not pushed and with no pull request yet. The main thread pushes both after the owner's answer on the gen-1 quotes (Owner queue) and opens the Protocol's pull request from `pr-sdp-draft.md` in the unit folder. +**The units `design-in-the-graph`, `pack-page` and `sdp-round-2` are on `unit/design-in-the-graph`, pull request #12**, opened stacked on `feature/round-2` and retargeted to `main` on 2026-10-10, after #11 merged there as `a758ba4`. CI passed at `36bc5a0`, the native job included, and `main` brings nothing the branch lacks: the merge tree is the branch head's tree. The Protocol's side of the unit, `feature/adopter-round-2` of `libar-dev/software-delivery-protocol` from `5e29c03`, is merged as its pull request #28 (`415b095`), and the annotations arc, `feature/annotations-v0`, as #29 (`822aea4`), so the Protocol's `main` is `822aea4` and this corpus pins it there (`b5fb659`). This close refreshes the state at that pin; #12 merges after it. The gates at `b5fb659`, run locally at this close: lint, format and typecheck clean; `npm test` 75 files, 1,151 passed and 10 skipped, at the compiled, pure test and `convex-test` tiers; `check.py` OK; and the native tier on the cached local backend, 106 files, 105 passed and 1 skipped, 152 tests passed and 5 skipped. ## Where the work stands @@ -73,7 +73,7 @@ The default branch is `main`, published at `github.com/libar-dev/libar-platform` - Two passes, before the build. The implementation pass, read through the module, ruled six Spec changes. The Convex pass (`advisor-convex` with the new `design/advisors/task-pass.md`, 11.7 min) wrote ten findings; `gpt-6.1-sol` checked its facts on a copy with one plant and caught it (`job-musctnbl-f5337dfb`, 4.6 min). The rulings added OD-156 to OD-161, OD-157 the owner's, three F13 entries from the limits page, and a pure test that holds the largest history row at 55,803 bytes. - What it found beside, each since closed: the Design Review sorted a Pack's members by ID (the Protocol's round 2 keeps authored order), the rebuild and the write pause showed no implementation binding (`pack-page`), and three implemented Specs depended on the deferred aggregate Spec (OD-162). -Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. On `feature/round-2` follow round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. On `unit/design-in-the-graph`, stacked on it, follow `design-in-the-graph`, `pack-page` and `sdp-round-2`, which put the history view's design in the graph and read it in four passes before its build. +Slices S0, S1 and S2 are built, one unit after them took in an independent review of the whole, one built the decision register and the advisor panel, one asked the panel for a roadmap, and round 1 of that roadmap is on `main`. So, since #11 merged on 2026-10-10, are round 2, a design unit for the tooling, round 3's unit 3b (the online rebuild of the order summary), sitting two (the owner's decisions of round 3) and the close of round 3, which did the rest of round 3's mini roadmap. On `unit/design-in-the-graph`, pull request #12 against `main`, follow `design-in-the-graph`, `pack-page` and `sdp-round-2`, which put the history view's design in the graph and read it in four passes before its build. The close of round 3, `application-platform-round-3-close`, on 2026-10-03 from about 09:15 to 11:15, on the ThinkPad, on `feature/round-2` from `d2a8d1b`. The cut was the list "Round 3, as it now stands" of `ROADMAP.md`, whose items 1 and 3 (3b, sitting two) were done: the hosted tier, 4a, 4c, 4d and lane 4f, which sitting two created, then an integration, a review, one fold-in, one read of it and this close. Five lanes ran at once, each in a worktree from `d2a8d1b`: language (4f, an Opus agent), hosted (an Opus lead), history (4c on paper, an Opus agent), audit (4a, an Opus designer, then an Opus builder with astra writing the proof apart) and sweep (4d, sol). `rulings-1-close.md` and `foldin-list.md` in the unit folder hold every ruling. What each showed, at the tier named: @@ -258,8 +258,8 @@ Thirty-eight more findings are `partially-fixed`, each waiting for its slice. Re `ROADMAP.md` is the order, ruled as cut by decision 36. Rounds 1 and 2 are done, round 3's mini roadmap is done but for the hosted tier's first runs, and the four passes over `pack:history-view` are done. The next unit is the owner's: -- The review and merge of three pull requests: #11, `feature/round-2` into `main`; #12, `unit/design-in-the-graph`, stacked on it and extended by this unit; and the Protocol's pull request of `feature/adopter-round-2`, which the main thread opens after this close. #12 merges into `feature/round-2` first or follows it into `main`. The adopter's pin is a tarball of the Protocol's branch at `dfa1bd9`; after the Protocol's merge it moves to the merge commit, made the way `docs/feedback/sdp-feedback-01.md` says under "2026-10-01, adopting pull request 26". -- The owner's `ready` statements, each an approval to build (OD-163). `spec:application.history-projection` carries no unruled `owner` row since OD-174; its `ready` waits for round 5 of the unit's fold-in and a short third read of the history Specs. `spec:application.history-rebuild` and its five examples wait for the same read and for OD-157 (`spec:application.history-rebuild#question.verifyPassUnderPause`). In the Protocol, the four Specs this round implemented, `spec:extraction.pack-member-order`, `spec:model.open-question-keys`, `spec:validation.next-rung-floor` and `spec:consumers.agent-surface.address-and-cycle-recipes`, sit with their examples in the drift alarm (recipe 2) until the owner states `ready`, as R5 expects. +- The merge of #12, `unit/design-in-the-graph`, into `main`, after this close. The other two pull requests of this unit are merged: #11, `feature/round-2` into `main`, on 2026-10-10 as `a758ba4` with the receipt-sweep repair, and the Protocol's #28, `feature/adopter-round-2`, as `415b095`, followed by its #29, the annotations arc, as `822aea4`. The adopter's pin is a tarball of the Protocol's `main` at `822aea4` (`b5fb659`), made the way `docs/feedback/sdp-feedback-01.md` says under "2026-10-01, adopting pull request 26". +- The owner's `ready` statements, each an approval to build (OD-163). `spec:application.history-projection` carries no unruled `owner` row since OD-174, and the third read of the history Specs, after round 5 of the unit's fold-in, found it ready to state with the version-change and installation examples; nothing gates its `ready` but the owner's word. `spec:application.history-rebuild` and its five examples wait for OD-157 (`spec:application.history-rebuild#question.verifyPassUnderPause`). In the Protocol, the four Specs this round implemented, `spec:extraction.pack-member-order`, `spec:model.open-question-keys`, `spec:validation.next-rung-floor` and `spec:consumers.agent-surface.address-and-cycle-recipes`, still state `defined` at `822aea4` and sit with their examples in the drift alarm (recipe 2) until the owner states `ready`, as R5 expects. - 5d, the build of the history view, once the history projection and the history rebuild state `ready`; `ROADMAP.md` says what it binds. - The dedicated pull request of O16, after 5d or beside it, as the owner chooses. The owner: "Now it is perfect ground for demonstation in a dedicated PR. I am preparing the ground for that." It would show the graph giving, as projections, the views the owner once made of the earlier platform with a 20-hour workflow of Opus agents, a snapshot "Outdated the moment it was created.": "The Graph, when properly implemented, gives all of these as projections." This unit's Pack page, recipes 25 and 26, question keys, next-rung data and Studio slice are its ground. Nothing from that private repository is quoted in a public one without the owner's word. - The hosted tier's first runs, the owner's steps 10 and 11 of `design-hosted-tier.md`, after the merge of #11: first from the owner's machine with `npm run test:hosted`, then the workflow on `main`, which the `hosted` environment admits, since GitHub runs a schedule only from the default branch. They settle the design's eight "built when" items, OD-036's count, and Leads 39 and 43's assumptions about a hosted deployment. @@ -389,12 +389,10 @@ The key check is done ("Next unit"). For the record, the procedure that worked w What waits for the owner at this close: -- The three pull requests of "Next unit": #11, `feature/round-2` into `main`; #12, stacked on it; and the Protocol's pull request of `feature/adopter-round-2`. -- Before the pushes, one question from the main thread: the new section of `docs/feedback/sdp-feedback-01.md` and both pull requests quote the owner's words on gen 1 verbatim, and they go public with the push. -- The `ready` statements, each an approval to build (OD-163): `spec:application.history-projection` after round 5 and a short third read of the history Specs; `spec:application.history-rebuild` and its five examples after the same read and once OD-157 is ruled; the Protocol's four implemented Specs and their examples. No Spec of this corpus states `ready` yet. +- The `ready` statements, each an approval to build (OD-163): `spec:application.history-projection`, which the third read found ready to state, with the version-change and installation examples; `spec:application.history-rebuild` and its five examples once OD-157 is ruled; the Protocol's four implemented Specs and their examples. No Spec of this corpus states `ready` yet. - OD-157, the verify pass under the write pause (convex lens). Under the pause no source changes, so the pass finds nothing over a covered generation and doubles the pause; the option kept is the pass, as D9 and Sc L2-6 read, and whether a paused generation is `verified` when its backfill ends is the owner's. The domain pass added what the pass can find: a missing or lagging row, never a fold that disagrees with itself (`spec:application.history-rebuild#design.historyVerify`). - OD-171, the terms of the history form: history projection or history view, source version with its meaning on each form, and binding, and whether Read model and Fold widen to rows fed by events. -- Annotations. The owner ruled on the annotations arc on 2026-10-10, and the Protocol's branch `feature/annotations-v0` carries the rulings at `f23e358`, the pin since `04a6aff`. Every item this queue held for it closed: the layers, the contexts, `example/` as architecture, the reference direction and the whole-Spec satisfies (decision 69; `docs/feedback/sdp-feedback-01.md`, section "2026-10-10, the rulings at `f23e358`", holds the per-Spec table). One item remains: +- Annotations. The owner ruled on the annotations arc on 2026-10-10; the Protocol's `main` carries the rulings since the merge of its #29 (`822aea4`), the pin since `b5fb659`, after the branch `feature/annotations-v0` at `f23e358`, the pin from `04a6aff`. Every item this queue held for it closed: the layers, the contexts, `example/` as architecture, the reference direction and the whole-Spec satisfies (decision 69; `docs/feedback/sdp-feedback-01.md`, section "2026-10-10, the rulings at `f23e358`", holds the per-Spec table). One item remains: - The capability steps' name. "Layer" names one of the seven steps of capability in this corpus and, as the Protocol's `layer`, a component's architectural layer; `CONTEXT.md` now writes the second in full as "architectural layer". Renaming the capability steps, with "stage" as the candidate, is the one-word-one-meaning answer. It touches a Spec identity (`spec:platform.layers-and-profiles`), 143 numbered uses across 65 carriers and the decisions document the rubric binds this corpus to follow, so it is an adopter-language decision for the owner. - The 25 departures of `pack:spec-studio-v1`, each a keyed open question, five of them blocking, where a ruled record of the Protocol goes another way than the original design: among them the patch loop against `spec:consumers.edit-model`, HTML first against the Markdown Design Review, and seven rungs against four. The Protocol's pull request lists them. - Words this unit used that the language lacks. In this corpus's `CONTEXT.md`: handoff and protected abort (OD-174's procedure), question key, next rung, target rung, dependency cycle. In the Protocol's: the same four, and from the Studio slice Spec Studio, lens, panel, shell, custom element, gathered intent, hand-off, build stamp, hosted preview, harness. The history view's "handoff" and the Studio's "hand-off" name two different things. From f9eb362e447aadab2c2d22c7c83250e89a1d9c65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Darko=20Miji=C4=87?= Date: Sat, 10 Oct 2026 12:21:17 +0200 Subject: [PATCH 60/60] docs: re-measure the PR 12 section at the pin 822aea4 Co-Authored-By: Claude Fable 5.1 --- docs/feedback/pr-12-annotations-section.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/feedback/pr-12-annotations-section.md b/docs/feedback/pr-12-annotations-section.md index af0bf2f..f256d95 100644 --- a/docs/feedback/pr-12-annotations-section.md +++ b/docs/feedback/pr-12-annotations-section.md @@ -1,6 +1,6 @@ ## Now: anchors in the code they bind, under the rulings of 2026-10-10 -Until this arc, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design: an anchor can be written as a doc comment, code can name a design it answers to without claiming to build it, and an anchor can say what architectural part its code plays. The owner ruled on the arc on 2026-10-10, and all three of its decisions now state `ready`. This branch pins the Protocol at `f23e358` (`04a6aff`), the head that carries the rulings, and applies them (`ecba393`); a second read by `gpt-6.1-sol` checked that pass against the code, and its fold-in follows `ed4f97f`. +Until this arc, every implementation anchor of this corpus lived in a test. The platform's runtime code may not import the Protocol package, so `byFile` on a source file returned nothing, a hand-kept join (`design/tools/anchor-sites.json`) stood in for the binding, and code could name a design only by claiming to realize it. The Protocol's annotations arc, its plan 40 on the branch `feature/annotations-v0`, moves closer to the Protocol's original design: an anchor can be written as a doc comment, code can name a design it answers to without claiming to build it, and an anchor can say what architectural part its code plays. The owner ruled on the arc on 2026-10-10, and all three of its decisions now state `ready`. This branch pins the Protocol at `822aea4` (`b5fb659`), its `main` after the merge of #29, `feature/annotations-v0`, which carries the rulings, and applies them (`ecba393`); a second read by `gpt-6.1-sol` checked that pass against the code, and its fold-in follows `ed4f97f`. **1. Anchors in the code they bind.** A comment-form anchor is a top-level `/** … */` block of reserved `@sdp` tags. The source carries it with no Protocol import, so the runtime pays nothing. The 22 implementation anchors that lived in nine test files are 46 units in `src/`, `example/` and `fixture/`, one per realizing file or site, beside 12 component anchors; the harness keeps its 18 constant-form anchors. No test file keeps an implementation anchor. The file is the binding grain of both forms: a block's line locates the anchor and names no declaration. The online rebuild, at the top of [`src/read-model/rebuild.ts`](https://github.com/libar-dev/libar-platform/blob/unit/design-in-the-graph/src/read-model/rebuild.ts#L2): @@ -46,7 +46,7 @@ Until this arc, every implementation anchor of this corpus lived in a test. The ### The rulings -The Protocol's branch rules the arc through three decision Specs, and the owner states `ready` on all three. The paths are in the Protocol's repository on `feature/annotations-v0`; the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. +The Protocol's branch rules the arc through three decision Specs, and the owner states `ready` on all three. The paths are in the Protocol's repository, on `main` since the merge of #29 (`822aea4`); the pinned package ships the same files under `node_modules/@libar-dev/software-delivery-protocol/`. | Ratified name | Ruling | Spec | |---|---|---| @@ -56,7 +56,7 @@ The Protocol's branch rules the arc through three decision Specs, and the owner ### Try it -From the repository root, after `npm ci`. Measured on 2026-10-10 at `e2c77e8`, the fold of the sol check of the review repairs, after the merge of `feature/round-2` with its review repair (`09224b5`) and its follow-up (`ab7a13f`). Re-run the commands rather than inherit these numbers. +From the repository root, after `npm ci`. Measured on 2026-10-10 at `b5fb659`, the pin at `822aea4`, after the fold of the sol check of the review repairs (`e2c77e8`) and the merge of #11 into `main` (`a758ba4`). The re-pin moved no number below. Re-run the commands rather than inherit them. ```sh npx sdp q 'return g.byFile("src/read-model/rebuild.ts")' --json @@ -121,7 +121,7 @@ entry addresses outside the Specs: 497; dependsOn cycles: 0 architecture: 76 code units; roles: codec 1, contract 6, decider 2, event-store 1, operator-entry 1, projection 2, query 5, read-model 1, schema 6, service 10, use-case 2; layers: adapter 3, application 3, domain 3, infrastructure 3; contexts: inventory 2, orders 2, orders-inventory 1, platform 7; 49 references edges from 41 units; platform isolation: 7 platform components, 21 uses edges from them, 0 into another context … Pack pages current: 1 of 1 -protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-f23e358.tgz +protocol: file:vendor/libar-dev-software-delivery-protocol-0.0.0-822aea4.tgz OK ```