From c213997e1d4a6f1a7cebd90eafb5374f5b49bf6a Mon Sep 17 00:00:00 2001 From: vitya Date: Tue, 25 Aug 2026 01:04:12 +0300 Subject: [PATCH] =?UTF-8?q?feat(skills):=20=D1=81=D0=B2=D0=B5=D1=80=D0=BA?= =?UTF-8?q?=D0=B0=20mappa-*=20=D1=81=D0=BA=D0=B8=D0=BB=D0=BE=D0=B2=20?= =?UTF-8?q?=D1=81=20=D0=B4=D0=B5=D0=BF=D0=BB=D0=BE=D0=B5=D0=BC=20=E2=80=94?= =?UTF-8?q?=20=D1=80=D0=B5=D0=BF=D0=BE=20=D0=B4=D0=BE=D0=B3=D0=BD=D0=B0?= =?UTF-8?q?=D0=BB=20=D1=83=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B5=201.2.0/1.4.0=20(=D0=B8=D0=BD=D1=82?= =?UTF-8?q?=D0=B5=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D0=B2=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=B0=D0=BA=D1=82=20wiki:2660)?= =?UTF-8?q?=20[skip-tdd:=20visual]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - mappa-task-work 1.1.0→1.2.0, mappa-delegation 1.1.0→1.2.0, mappa-knowledge 1.1.0→1.2.0, mappa-messaging 1.1.0→1.2.0, mappa-brainstorm-promote 1.3.0→1.4.0, mappa-closing-ritual 1.0.0→1.2.0 - репо нёс гибрид ae45a51 (1.1.0, следы 'карв-аут лиза'); установленные (деплой, результат #1040) чище: claim/лиз выпилены, owner=персистентный assignee, живность из session владельца - dist/*.skill пересобраны (build.ps1); установленные уже были в этом состоянии — репо стал источником правды, совпадающим с деплоем - сверка: claim_next/claim_expires/task_heartbeat/admin_release_lease — 0 вхождений в установленных mappa-* (подтверждено и на этом хосте) --- dist/mappa-brainstorm-promote.skill | Bin 11272 -> 11241 bytes dist/mappa-closing-ritual.skill | Bin 3739 -> 3756 bytes dist/mappa-delegation.skill | Bin 6518 -> 6503 bytes dist/mappa-knowledge.skill | Bin 6594 -> 6572 bytes dist/mappa-messaging.skill | Bin 7189 -> 7131 bytes dist/mappa-task-work.skill | Bin 7814 -> 8267 bytes skills/mappa-brainstorm-promote/SKILL.md | 30 ++--- skills/mappa-closing-ritual/SKILL.md | 6 +- skills/mappa-delegation/SKILL.md | 17 +-- skills/mappa-knowledge/SKILL.md | 42 ++++--- skills/mappa-messaging/SKILL.md | 6 +- skills/mappa-task-work/SKILL.md | 152 ++++++++++++----------- 12 files changed, 134 insertions(+), 119 deletions(-) diff --git a/dist/mappa-brainstorm-promote.skill b/dist/mappa-brainstorm-promote.skill index 88249167e88e3ebdaa6029e5676ee7c88e6fade5..bc3b9d30ac5858b955d8ad43e896be99691af8c2 100644 GIT binary patch literal 11241 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 diff --git a/dist/mappa-closing-ritual.skill b/dist/mappa-closing-ritual.skill index 345a517fef2a0f3236b9cee4551b97e2281acc41..4ba667f32690f1e17a1c22bd4844013a9cc81dbf 100644 GIT binary patch delta 3694 zcmV-!4w3Pj9jqM}P)h>@6aWAK2mpBq8C^zRt+5ae003N(7bbt}ZX4GT{=ZLg3jZ+4 za4F|nl#XP$ffE=;Y$J4=1Vy1;lPhT}ic9P+qxhdKC5{a{R-HO&k>=h2{m~YnWzv>) zp#eX^?ko5S`Uw4I=A6AqqM@cKf>z7jv**m2^UXKk%-XhXtLLtGO||0o`>x&Y29e)e zv_n50xLwN~#7loc*i^wFjI0m5F!F<5Q@z-Dsd2*Ucu_m_`!U~|vy@7HOtzA}WGlU4 zrynK5GepF1~Z&;)T{3wdybXHca)RxNw&i#cF?7(_85pta+^PXNV~#$#z2} zU#08(`#K(Nsb^R3(c?+7lip6YlZi^6z{G1XbWFR!k7R`BY(?@g86{)h-G)4(mmcBo zCgxkiqn&i4p-y+~rJxOG1|4s<>n|?FvdRXA?WMP14=yIj6HJJe)YE??-}AgXG)a0J z%W5B-db)pup^D7Hi`SE}f??zI8hHbzSCX%j&lR@1$s5>Z8@AFI6McEd-(J1*=bY*qMLCx#3LgviH(ksuH`=vd!3mBkJUiappwK zUu}ODO}k|bSLvsiYTW>OJ6#t8`tBg|vK>wE_&#QStbK5m=O*XCNR!o{Mq%-6oY*XloQ?_Vh{}|1}_F#hYl*o zGQgO}a;?_L;F_+fXE(nirqMPxf$sv`j4^-Y?E|2*oWoG(oTSA^jHug;O~EwGTxZh| zyE=%kli9dSQG@8-n#vpG{03b6B{l_1k{zD6R@3GotT4+>3M`2l^)?w+tEq}Jl_QI9~$Hj{?P87TGAfk)G%8DCa!Bv0I z_j>bj=q*RT`@J(`Il$>Wz!lOjXK~<$9e&`1UK>uDZwD(YeoVJ;7_=?yl{rqReU^~1 zrx|ji#OAe{Rl#-uc01^Guhf-JEndea6cMLU(4-qg9Y12`$C|As0NzA74GN)X=KPuW zF3q>jv|48`oNugj9L3NFF%#c$T%~_&aQU%gWFEabBJdJS4-h!G*RoYBk3!%{g6HRA zoagfmNALf_IJV9`cEPL-#gYF=7@U}XIAiF8kXpiXw}fg+nX8z$D$Hm< zYjVQw-a2#sQVXZ71CO53UKA6;NXHt8L&c%LxQIaDFrty5$}9woolO;bZbyIN2I3%$ z>l(B84SzcTO|8~i_WMU5Yq;vDbS<+fVq1@CPm>R?u^NQSPPNGBH188m9uuK09Zg$i zCYwj{J4YpctHJ^YEGe#4m&3sAR5g0X$zw^|s)%>&f?d2v7j%C_0H+^YqMvkNJ(2L# zF#v5qb{ZML03iFvRw8M7m1 z>QewfnGssC*N^Dx804&KwZVO=z2vo*LDB!BT`5i>+f2#?*&^&zrM=oAlfUMiI3!f3 zAFIV~aM|rD_&S%Fj~O$?Q6NcS0RB+~GhEjYlU{15xBZSSaB=(bAoPD=*XMF}iuXrB z_wR4-jg;Gt{SUlsi+mEL2&oV-aAzdhUd?0#>QvdEoX-Bda+G%d$*tgg2Z zs}*fhQ@tK_2a9vo>XH|F^HCgt%R9KM&rQ;-#9lI-;|Y?x%tXc%jNz3JQw^H5%xZj~ z*b0kw9f26K!?SPkDw==7wewzXs5gR@J_T7j=*37?aDmB%dXXy8eK9YxInL{6TNf1L z8;+ZE41Dlsqy^6w>x^w4ft{3O`AMEr@~X@yXX79YC?4-~lxF8MB9lN`L&{SWo>e*; zj%nCaVQBBNyGRpJpiFoKQNMX!45LX^4AA*p7#t}HEdGcrh9ZBUNQL+I@d*U&5!7Jr@K^9}G7hh~D-m6w`_}|BQ62h9W{s9l5^>fMd0@ybW zuh{*-@5Qnkqd{Z^k_?cI`;388L^jgNG1qB>DSaO_Ta=7U2nJz16;c_oRzLK-l|ILn zj22_c!bfI!`PqNfKfPKg9XSFxw3%S>-;vCh#oQc!54b)q@(Sqh?mk{&FtN1I2*XN@Y|DSB0hV=ZVj50qm&USrO2m_1 zDIz{TZb(8-2%LGJky?m&C7#|iKGF>E3Mz4ymzFhMJXf?*o_$?v-MPBT`Jk>Oj_Za7 z>ncb4sk$<-#H9cP7iDyus%8;L+GLYLOvK6~CYZZOBl-x}DN*I}_ztQ0^AzE_DuSa% zIuDHxxb}Z!x!TzWM1lk}5iIlLEAx@(hV7+Fe5LQr9@p+TURT-`b=CD@`|OKVhZC}J zrd^C{6tGxgtjo1weh{4Cl!I!Z&IwA0lL{u*^Qy8Bf1FdZLQ)EnljXqIlIG^v5&y#z}Uz2Z= zFOq-1BtInogs)|BtD;r!GAfs@*ID!&-F##dRU5+G9K|-bqc&~)!I{)i8+FVxT`|7! z%86gq`Nif-uf28xLe`*@N-)`v)H!70NK%B6S|r~%!!fz-cS(k;sf|GG4txa|3X(pGw5@@zQ2o-`9H5Znr!#H)FnXS z6yG8i{>Cc%p>|N{cKb_|w)#za$6xSKb``f^9o%;r#at9#WjC7%5Mpsm$#-VS4SOJD z8@w8XovQZsFS#W^iG&Nw{rx2)2^c>UKJmRwE?Oc*zhjZR&P|y8?rB<;WLTBk#22N>KyIt|>Go!oRlfmOL)QI5z(?mi(Rh+P`VC1XO2o+VI>|Bx zg2Xg__H-3Bl)eH@QqLeeF}W2W(c+z|Pwq$+^(nbf`hLd_;WWE6)UpoiCseYAg6Sg6 zA-?)FTxJ?kQHkC;YWI2P=;y^4=yb&QI&F|E;SYz=* z)HiQIYc)nK02rO+t?9-2zpo>r{X~r$tX) zCK-w!&uy0+(gd*%HbJD^JWA8QX_%{+7)p3NNOtw?46ICG+|8V?`Pt-E%~pTXT6@#= zyC_c?P!UyCwOY#qiN~tr#n2R9r$H?Ar5u^b_G~;;G(|A~SmQH9QZxmhC|FU>r_Y@| z-DotREgY~GUs(!LeyKliZbwUY7`b%$>oaeiJ+CglbN08VFP%~6&b&`I`)(A0?K-p0 zj1vdTUT>DF-|L^jUiWek#+ZMOGpDqcvFrqjhP;0V;%ZehHTg-XzP44`mGzil*c%`TjwGN!}0me|uM3YiR*SaDr6A)YQ|LK*f zcbD8)oxgBN#ewPsRu+F@${oak?S1IA2Ncwqpw#(jW1rAhm2xRCQ*y=(D^>>Xuop24F!@iLw)E}Lpoh06r(nL5lr(MjA+k8@l=g+`%;volJ!RhXStz%M zN==}`3hgj}R@Q~Qo}}@6aWAK2mmv-7+n}d1}^^%001_T7bbsgj}zAw{yx9rR(!yA zJl-^Kl}r{yBN8E$1;w;UR8^kAp52|U*JI6$v*8=;CIkdwOG?rz&3hyDLtDu#HZ1#M zB!0onU*H$?C-gbz+&eG3YedsjC}BKv=iYPAea>^9a|YYCt-ibJHPxy+7`S$)7es!4 z$qxN^==Lmk7%zVZVN(UeFtR@I!pIN$P4&yhi;Wkpt`~Jee-QJnla^A+kI8njpKPbs z?ewE$lsrsE3K!G#O0t8$cX74RRLgF^8!RrWH7wz&%4%oOZu8phwtm#+M|G8KC6n|@ zdKEKns^#WF6>GepF1&O8!ui%2wdSw*Hca)RxNw&i#cF?7(wpfzta+sH*9cQglbwc2 zzDhUv_cc7)R!^_orN`4`H@%hYBvX|dAjDhAJ`(FJ4O~3WiP6tKCK*5BCH5M$>j(nPbV2BQ{TQ$QP+UE|*(9&g zDGNHT<7$%Z72K2FezIG~AY5-T_(m{go6d;_V$3Fj zzuJE+ns(C|uF_92)rJA|PP!om4BTPlWjmVU@jcA^Nc-Rl$KgFpaKE_!hGir0tz$<= zy>(3|h{TNQtR#O#cCPzAT z#WeR=Im=C_ZVkN99)!UkyiN=hX`0$pj^16{?>ci%*Tsu-P87TGFrtg$>Z%)F##MhX z@cQjI^j4zZ{oa|g9N@GKaE0{CSsJ=wmmfHx*MXDTonUp<44T=NVC-xz?&+kK_L{)Eu4Ap zV!L&w)jE5Ap|RR^6hj}xOnk?2m9Bro<;RYZdGzX-z)LVaMBw0F%T}#C3V|mHo}Y_x zp3OHLz5fg2*gE&v1+z94NB%=$aANw=oS_dwYB9f19OqdJuzN<{5~?X>u43M*Fr)pf z$qBoA>&(K%7EW0Q9zCPIC?C34y?2L?c0!SqK zHD>V}{&oPGTCKI>51xap;i~7QYne?E+j>lUntXVTwIEz^szpYpc^`A~m8AClMQMVUmC=IPeCT5VRIEW{h-8MTsmp3EqkHYj^Y4Z-o;&gZjxpt_L9*_o*=oyOk_;K7+(1()u2hsti}h5 zt*~g<5r`qXJo`4UqA7n|JMZO&dLvjJP>^+kevDKF7noeA7pW567xN;U2ko8D$F-a>FqN>rV0@=Cd0kj0ql#TQ$O_o~$!{`)vjLRb^l-{%3eelB@l0Q<(_ zWqT0#{aAKmG>EJ~k^!>ufH822$VNIj<~nUKrSHRLi;|HE!61yMLMkKH8iby=I^ejH z(PB(l_{a<|KfQnQr&kN5BS!#-HWMuVY|B0&sT#zD;U=fg)U2MR3$u z=b_0V*PeeUS33uQNRVJAf@OYuxgB|K*jcW`mj~YbaqW)db){WVS3MuL&;PROa6%T& zw2N_#0v1b5bh$Rl4}ue%a!?J_IY9|=Qo+P}UR4g@k8^5PND6eu1de9mEkpN2b@#Xq zoQh#2U^Hu*d_fDcfUIa+xE{R60`Mxu*+~e8H-dluq93lRB@{s<-OAl4A+bDrQ%fiL ztk}(|xU90PQt1(zG3|3m7HnQ_kGO(<-iA;?R@Z0ss^}%0#1k$kVGVCZ2g0ijbs-Em z6&6cwte9$4ADQB_Vp)rAD&l0-D7P ze4*ay|xV9X%wR<)OZ#l=3Q2rd~9c8*N4 z=OCT(N$+Pu&=QgP9n04ZZm%44OVg?(qpI8{X1FhBq6P1JTn_8}bqYi8Rm%r)OTB+j zx3{XS=MAVDvhEiGIy&E}#*t*mZ%71DibeL;>66I~^rUgKuj`|cbPQ;cdIr_0$(jI% zmgQ7ea<8eVJjsR9(K~hoTiK+@Q5Cj7NvUELc_YP z#vQ{Qf^M~`4C#~Q3`&awut45MUW|V=b5lQJon;9XTE*K8HyjzY=j)q-mnh0H>8k!o_2oI zFjkTBOL#m?a`o&CtV}xG$(*m5*JMo1QqnYg)Af5OJQ+|C)l0Qn%L6^fs_TEnPzzqS zLG1IT9GS`EY&=slMKJ$Z=QBjQGo_qpQ_;ky&z(KpXf&W29IzE%SqdV3dC)euqh&jc zT)O=AnYYd^s0;6${q5`-6OHC`o^KRVj=7xso&HSQ+6YSQ}MmitH?15XolrJM&9$ZY;M%_jUd* z#()G%G`xgLv(K#tsT`S9e<)ZH9r0CylO=Nlfv8YT@TWLkO)$4X^AxP%H1dp0Ly;t+ zK|3~A6V0FY8T-F!@*9^GHF_~+q&LYod9|;SuO!>RN0gZC0V#jXupcoCF!|4#w)9od zpoh06r(nK-lr(MjiLp5AjK+lNx#nFFJ!Rg`Su8hxO6{G(3Y{>3R@NoDo}}=lPnso# z@!%XzzXx|ZqXk1Q%|4Avw~^CJHitl3-0`Wj#!Vw{k56@MLXH2~1cTx_A8uKs8eSi> zt0dT&*-tQ1MP7eCV5*_+QwUxbB6!DJ^g^%S@tB^A|CC_nx80^X`ok{s)t_gQU-nvF zI&m}5mddF^cDYMlUG;<5U%YG!qyUdSYD{46cXMjV=E@7*hDk5-$|xJM3M<_uyhoo> z?{a8Nm>WytH5=abdft*t|MG^XY#mm_dAp?`@@6Y@6aWAK2mpBq8C~%>EY{N)000_Ekr*L=ZEqV_cK$9v|KY;^ zu%yBvW9JQ}Y%N?n4T9agAa;-zi@>DFk;E0rVM)rafugXi#P-&X9j8f?22H%#0{OBi zKue-UOCkmM7YzSGenEdi&w0+hckUgMk`n~&2TS5`=DwVB?sJ~=G7f@Zey&+=ghkaT zw_4?(8rH+ra<>+LHRtEb8{M_2T~yIVyE8v`Eo^t_a#5YhpUuBKKUWPqm3FPw#kHmR zIi=zs<3YS1AEOek=!+gLa!5ZPDw!pq8+zkSl0uKAz<1Uft$JR?-_kmtV&^1; zecl_*xf!^B+tedD((8?Hv($JMKi&M&OxP=`Zn?AGxmsz5EQ*(uw}ni2Eo^p+O1`aT z@u<75A^)Ha(oi%Nf9_)h`eTRG(I4N!wx80KZQAw&MGy9QwKT~C+R6_Y49jL=9kMtu z1zj7^s!56Cn*rZWBaT?{@nKPE%L)TtJB{)e_wMn3y&})~{IAnYhX%fHH!$9MevqRZ z&2SKfT%xZ>WM8}biNw^{wyw zebRpU3H%-vRVS>k1m#Yrw%QDlEJn_F1m%K{OJ)Q7kW!m#_B&==jZuuxRI8y5=j z{WBg0lAE8KcB*^RjxZbYzsYgJ1OrHfY@Y;wcZVlb5RW~w(;-ct*aXx_(ootiTQwh{ z@hx6;{AB!)@6washd}yDq)Hd=sSFfzgva={0aU?Kt2M7h>me!B**BKG$66u)>mff(BN^nv=}sXRn|y*?f;$5(6VmXcB=0L&OHcNH zMS>$a?m;q-NLeh%L_B2GE>`6Pe4t-`dY|vs$dt{)&Q7b3*21RhMrxxI!p0s$M*Vo# zYKX*iNXSjU_MjPZC#vM0(vsPd<8gL)E*E`!3}y#xh7L?%5ep0P=eT76h|q>Yn|N4U zSol8%tzQwb^wz!u{3ozQmYVF24!nwg|C|5`%bfohu@uO7Aa&S;e()}Ddy|2MeJM3v4Z=z_q09b{5Zx`vfju z((gS0>=X8LWHUXHTai~Vso4Tu^%Tb!wmlP7e@|e4{+MYO#h~>5X#lfpdP;_G(|8SJk$yJ5RouDfc;l=8+m6!Ng5LJ5#yJw_w!mQNH%7Bi)e>v{%FK`SNPm ztd>hEQ)x$?PS9#ce+(;KC6@()j-SA@d5auxH(MLs4u1&DR9E%bvWtJ*DA#K%H8Q=@ zx#)T`Y%dkgwZm4lL`#_l+VLoVi?KTOja3<8JzOp?2bFRsRCRKLO`Ml+HHPmCMH&g@ zC2Ms#aE4r>py*4gT&aYuZn;?riM-WF8?~~`C%`Q;mMUvuxfMj~>Yr6J46B`>QZH{* zL;G=Uqfu^_@SNbjJjZKJ0bYO=9s-Z~Ofpx4|DoOQ8&a;QN^w zw8}&_fXm-uEPCDte7PIe*8_m|7+wSlZqi47Ad^OGIy!U*ok4OTEG7_FF^2+`v0l8f|iid<+W+j3)eeq&@dQ}$X=_G#vu-S%E|1^GN=}hT# zQ!iD=7zG<&@S=!#kaHe?*xQ-+j2|$!ar9pVgXX<%(oGb*&>g^DrK6gCp~pFw-xMV^_(pa^|^p$W=mI-SzD+FC(=XM}w zv<*vvJFqBoxf`~BIylFmwpqD+n&M>jeky3qysqHUjwJqLTQw~0zUD5LpUR>7!QLx= ziZn#kEfS4M>di31_m0xCK6&c*k=Q_rMVqj5*O5ph9(9cHL}Za>wKxko3Y0_6(k z5CFEj%VdIl4qEl-MqoBTfR&*W5w6tM>AR@19=3C;bAxzsqe`P*e7kV*64-D2jD8;A z_mEH5YOSl*qG-L7=TJ!zh<`-iLPfMQJ+7Xn0UsYenY06(8Pa#dbvCMl_Z2Pt>V%q(HUbmmLqUW0P0X2Xai zw8o0mg=TlH9kpr|b@|foa;mh_j>wXmRSJ)p+S=zne4D=9=x~IlO`X2#YaPOZ61`07 zL;|;I)&M}Y}*ESbQn^j<4`yIc8vRC)Q8g8i0s{~9mza@c`KTPEkSu6;UV ziW+|g{XX+FWtBa|p`wMtLs_x$ro4E=9g(g+lF|10PT(Ph$GUmIBF`gQK zUTWNU-uUseobsFu7)5`hR7M*p<7jWZrQJ9mlH0IDt3Sy==pQ7shcpcF5_s!Ui5UF3 z_(y%bv2tE2DJGy_+em788n8~~!ekWTfJ`6L-_I{0_Wyx1PHYXF$T-(3ch^WiN>D5C z(n}AF`Q?|1aW?5(v>Sz=ZvMDr);1-7Sh86cD+WcU0(E1d=hAsi}VsmN;;0tWVIR?`3ifs zPrLCR(*00f&wYC0=;;CAUACaw6tRQ(fs}0`!R6YWJF=!!LABPY)LQjgGqi($bNm2K z4#qyz*&LGfA;e5az93$l&*$W7*PGGxdRSd$C~~kg4WpJUqM%?5PUSiH;0TGWvr{<7 z9%L!ssLs#*A+gTm3L{08EJ%E)#~x*uegZ)<7CiCCJk9<|ZrmqvNt@}Qb`(l9R+{_`W^ z_HnQ)QKM0V2Xe#~Km#O~g@tmx9$mk>(OPYnt06zZ4yUkEu6M$Zaf9c-%ndZcqbu}TmVW93p)In)DsR7S|gxOrOcVz?C5A|Fusj&-z2<@ z_sW`@8Mdo4@DJfEgx3F{t4>l1u^$RD*Ab$|$w1Ea*&1g@K-yuVM_rac%3c3Sv6*Rsb&H5i6vftzH;HphnERLIZq8p ze}Wk2SE7gUW4OJWNGIE#J&f1vSxEJ1FGOvUrrTp>&LmypLK2TzQl$N`DxfxLor&~c*=l4;45NB$d&Ix^1U zwwxu}8S>+uZh4h|>0faL1iP; zr*I@jOy|x?)+SV$zRY>4Cv75}VB6z7snj3$G#YQBRe_9Te$F9vTS`}eks?vZ^7c*n zo)I^xNNqdFs1bFFhFmc7LUf%Dq9vk=DwSuf+|uQYun45hInBw+QJS@Uf)lZ?d4~YN z-<50ijdrMi8WAz}tTEWfNuEfRgfP(o>zPuk+jbEMK(dV3ZZEv`=DSxIP;f5};x6H- zMAsRh@qwocsRKlfR$ER_&Zzwf4huY_)NGL6*x_9Q6;V9YK5beY z59X9DS@$MpY=Vqg89vjggg7Ea5O$;?AtCEMyRcUUs*&+aGC&q{2Ck9fny#W7xPI?< zvzGL*sHX3a-Bh+@SMZud$ky|X(rHlLU}RgAjtd#ZsAfk3BdG>^Em9l-d3*A=Ov;za z#xL%FzykTF1He(e*8t${3pHrWeWipr}*(b=EwYgc%n-r+BE z3a61B%BI9A$!C!YO}q~U?{KQ^UkWBVDy00Ljhf2UDxce6If~%%vPtHlQE6ShibY+$ zilX1uPS~twI31%OXP03Y5KP>3+mWnw!3Sm8_npS!qX&A`PIeQLwtjmuEf~C6MXV0&i^m1OxJ%<5N zU>C%EA_NcA#k!n$@ciJ^{9M+C9GUn(k($+JI>Q(kFhunj>vv07(}1br{ic{k9pujV$S5bEN~}m~65i3G1YPqoIHH z(2io$=ck#M*Lvi3(v>8s70B93hz^KzpVyQ-r@43gJURz_;w&poT5q!2$g~pWm{{Ex zRVzXTsbd}i8;)B3XM*>z+^(#77ny6IPV=d167ZluS*WA!Gf4|~U>4g;b6eDmNSmqE zn}a))-28w!q$;`jD#@_;#S)W$wI^Dz?UDh%J4D=6Anl1IuMjK92@>Uhk%4KN!Z(uW zvrFEZu%PY?9%Z@IP!p9ssR8y00`HSBZIo}Q@1g3}!uD^#2y{VI-|GocgQ;5(&?lVt zCQVcBF16&QY*T;ZJYmv=$J|XPhNB9!q$SjIB1tR~2~ra5<#Z78(OS8GtKNO@3b$xh zBT2%V6eSJy0LeBn1Pe%FIU1@S;lvxA12?Q8P6_XjMH}Bm2yqKavV?3(D{H15GV!U^ zx!{bd-;s-q5@9%9L{e&$#;2*aNow2#GD{4x3sTt^ZZ3&M$e*lMi&WY?z+HBwy+@oK zECeMk0k}6PzL*B+$(sa!@xRC4#9zeU$N%9MHd(^NUG7G$VEie&ffr+dWCl5hT(Dqc%Y7 z2}Jiml$WD+H#hO(KtGk6MA84nW|hVTZJ~b3%bin?rn`%b&UB_L9wsdseI4d|os2gB z=DTCDd0Sbdb0+ja&ysq)Y$_qA*#W;*GPUzNNhUeHtv2tzu?5hg(^;!5C0=PU<4O(C2@3TbG_6IPYm~is9)%7Ia4PpY+hwz9+mz zcATWVS5S;e4Rva3IqGyQIy;a$y$SWCncSCuWYROO)Wfi=+R;Xr49gUbkCG85edX-e zB2DI{5Vbl5lVNe+UDfYfPt8UB+$m)r-rkakw%~iFba*Q)8!sjwo43g+lLweg5J;mz zH*BfbvyK9!oj^Crx#BOXB=IoO{bxeE8Leo3et|=G76(N%VP%61?gsrugEz`auSV8? zIFDI1NB*!QaORaC9WjVqOFk&c1l>+q+%X&WMP^!^9Wgkee0-R*?@s8}jzfRvebK!1 zTh7Q(F><=9pZ0Er>0;3@J!B`X(#w#!c6n^;vdy~;O@^qo4!ZX{8 z%}r%aGxn55sYT_K(I*=%Sw!N4-5Az?ZD=%wLh?XgaE;FbdW z9vIOU=~M!<(W&Vm$-zu%ebv1YSoWYG-5<;|eOCZ4WY^)X@}x~li`TvzR@=1l^!AA9 zJThs)0-ePUQ;e2Pz@@+0MPuFrj5a_s)-%H)e>1-4E}?)@Ti4b_ z4qK7qcyn8;>?E$Di#@O9q`=Eg+T?jk+5E%{?Axq5e$@fTMQ3G>`HwoL{l6ZNJHl4I zJ&9dyYQk+!nwoXc|I32%Vj|c#;;VtD1t)_j(oba&XCw_LJ+2ezdx=lu<<0-YBKnv} zHQ<#+$CJJBqSF1@qD5{n$!iFIBc9C6#@{#r0J4Lr{}ds?uPJh2z|{>+k`$P#DMM^O z2v@>(*sO$_(>_kbQk?8N@H!I`d(8ROdfiPU)%u?11z#r+STF)CPU5e*d1$&(ic{Ll zGaPIj*JQ5elmgiyswGWIeUP)h>@6aWAK2msTy7+pemd`99J008_*kr*L=Yi}D@dj8H|abSN~ zQsIzst^j3g;l|rVu+0Tgg0u(%&4?UHtVj+!L)zQ2gzu9Bbg-oNt}$~_dSsu!mooQp594DaNqRCbQkWLBq!5d0pA?JL*wbq z>25VSr6-5U5q_+RZs)%dPr%xI@zd=uVan-Uc<3>I%r!~IVtSLNjqy9t2(LR~ zzk|fT0Q7&G{d(19k$c#Y&yv)ENo|bKRHPzBH0(PhcOH}fr)o;Q>XCj@pKm! z9P*Og9wgrXE5cCV{TH8 zWXLX_-bR^!!6JUT@s*k{u8E!(ZAWYM&__AEB&-b-{i}YbR}=hgqePFI%NpZii`Jy8UYOspBD0Y8)lJ`imMT?g(MgSt_RxP08e&{%Dy-~dJx&d&lwA^C4Q z*`L9`+tz6xPw&CDmX`1`qe3d~G2KOC&^w#a6Wp@2R1>%l^YqjAPjMKMSt0Kr$9cyV z&G+B<4AJ-_k_8w%NbC;ICrB{*nC63+Jf$grjKu{~)&NZz&&~8Et~q%;-NT#Y-1kWw zL&4&N3-?5kG;&Ih;cX+*0m`h|xf*Qyph#oawCY1t4?y0K!L(e6dOq*H6$D+i=RHyE z1ij|Q_3AYrpM`-GR?&&hU=KSlC;~7U5;&QEf_&~S?s*4c1YIUs2JC(MdxEmmWe{?RRTBk& zZVXhr78^k*+Sd_r=L%0fWsUXhxI{SWW`NX{);f>OBtyWHui)n)q3L6EXkaffi>-z$ znAK_(u3AdN3;ULFioXY7zqDZ5Wi}?ce;7dR8lGZdGJ3HnW7NRM3g?@ho*#C9yq2kj zqFYgZpjsgVs=5RN+B>xUo_D4+N;pyGC{B0qO1SCwE_s`Nr{TGxSPz3Ja=KygkAA%; z_%fr;;_)qOmuT^Jr`zvE1)dnES(D@P2L7q($ zOiDOZ)aq~Y0Neh$x9-%v$QLbt@OK?NCf`ZCK4K0uVSr0lX%gHbI6ubBmxNcZ``w<` zsrx|AnxKZJN3$_V^L%c7%lEoYuq}QkI=>KuAI(Bv$G!jRsw{mw}Qy8c0HgIfWqI?Nbt0O4efj{SzJtj z86%+Z>AwLV@quC%o8h>?9dPczS)hoBl(G?2>FCviKH6wWabAlu0KmW#ff6V&v)cfW%N+hkpnIY_ysuOk-i<- z&GZ2>7(@3pqQ|(`9k>a9q7t}+&{oKJ<%qd&+2rqW8K`o-iBXo*3%zCw%zOnnRPvvM zGepv**V)5$O!&Bf`ikc-y!`rWr3$#I?%Eom;@TSOW(|z7**EtycON?Vj1LK%#JN=|(&ln#&O1#N#n0DjX9YPd_KZf+RxGHyqL+ z*=%iN5}V-*N7Gw>7#Qu6_HQiWxThS2qB$w%cwdq#&6x4@|Df+=CknC~prlY3se?UM zq%@7fttknz{*xsXilLS-kVs`xZDM2bb<5k}i(jV}y(u;pLV@^+PxxWKC5DMgZxsw+@QK z+R}WSBQ-#Pf3~hbBrLc+3bm} zAlQy75U~k=a5G=SQjwvOxMP$7aujwJHOm{MhQAB9j!bt}7Hn7?knF$>PY5wcQviT} zfUExsXs|<9h-J;O1cu@}XnoV&oHe41Z^~5?6qAJy_-J9sQYl;@1NfFqcSzC5J^GnrYzizFaRU&G$2Sv!mXeC=xzA2A7QX4tsK4@N(GYjq*|HP2*;3l zmI17P8okZF+}VK9uu^ypWy&OlC8Jr#fSe!N{(zk|3rPl!EMXbrCZj4dG`JD`CFwGU z>@2f=-vcpXK$`MdSH*emdtLwSUj6Ta`pd6Y^|z(M>$u8QKO&F24p_V`IR}D?LjI?g zp0ujRbev$F8+>Qf3p##T z0MuN)4!E=tdZk}3f(C`sR>0#%ytOsjnyX{A<5{A*lblqnbZV&vE;mgdMayw zsUnvnTGms_S=wvl7}tmi&jL91H$xq=fc3E#BxZG=07v5kTZ{He%611d#uLdNT=Fjt zaVrjP&Wl$t-#Qz_vH~ZWR61ddp}y%Z`EEQRk_RgFaW+K$2Qu4(L4dG;i*{YNa54E& zo@-h*t`n5vz>j@Ot69?5p5*duaATl<%aG>2Us=IC#1BY=&=4@Caz4(aNzB zTo07xRn~zEci=>X?dnfAeq2#Y%L(9g_D2h+KtvurBVBun7F)FwX*JERkeiNDN@qNz za#xs9(#S>Wa%5lRNzX|5(V{tXr9p3iD;~2S%FxQ`J&bEP7YHY@(QuSxIq1`W&zb=! zl@~~9vGMTCd6UnRKiMUnW;h&~95JvRjt&f4GX|FQ$!RpBdb8VVc6>cHhBQRPiPMf{ zP6?!ZLIQ?kUS+S1XL4q(+nwNA%WrHV`WWb$1y0QiIWm%VCMwsO+f9tw&?uwoMRXY} zm3E`>NotdeiZC^iu7_Qw#S?jdk9Hn|^Cmd&r!dRWSyY1K;JbthF|hPkKgAr~hgYuP zp&-`(JHe1cb6u3N_8k@_oufa_CWPr>%azxJL49z{*d$EWw=kw;moUn6tklT1-Y0r`~@LrL2^ir+7^3aBBi+@=(2?J zT?+4y2^b_8VwEW~EHU2Cxp;9xIetnjWK#6VU=Cz3G@9O~q=QPfDKAx0WjWfb%=qtt zQ()TugDh-u(M5l#@=T|H6cElvX{KYAkUAky9j7YPQSm_k3V|2<#}kmt zrLc9p$_db{tE%OYK(rFBM@jDVKaalpPOScFb@lD{-W7lI-be3Vx%|ODz<58pB(+qc z?B#T>66N~Wu){Qe?+?VFhVh2wZ>(y!6PeKk$kgR>%wK3pr^+?l=2HawqLh5p^ESbT z=$S@vty3asSI)~seO&uvFp-A}&nVyZIgbt;qIiKQ>xFgt@hX;wbzOzz@YJlWJ=Kp= z-BqO*)u~WLg9%r8Ak>0|_WDsxthX@P(Qw5}1($yhYv8tjbfOlIisX*Ca?;4Yt~KL` z`zxY&zH^~0&Uao>^#J{_VqZHHHy$LTWittUsW3MuTXIQT6V?83%JvHf&d3v|JQ%(# zTj?Ze9hfjX#1t(TIS(ZS?@$W_*hj(OZM#C2m?`feD8D>ZeF2EFY5i;8z(a|nIqESn z%nH3_iU(GISWw*|yl%~gi%b|OUytcm)Qrk-env;(NKy97QwlSRV{aFHGX`?aK`NZ@~?mO?uUpYbT6I10e~n6%|$}sV@nTQdn_4stV%Ez9Pot(%%9x_10 zm4UWU(gO$ns+>=^-;~_#K*o09R<76`N)UdTwUVMNIb0%&RC2XDWAjx3#JqH!YI~w6 zA;Sg^xYZ#gF<7vsV-Odqb~Oa^>u=bGWOW z+$5WS&6J%=y4Pt@6v(DDpXE=u+-$X4L1<&{$KEU`9L|E(Ao7BJT*U0b=rKUIdJC*w zQANFAHlgLWpcQE?)MI6O&NdtzZxa}}TNCmQP`r2tzbp$nfapASI08vOvq%c?$e0e+ zNVxw}RZ&khB?c2jWB4};CXRT6~rAqLcD_AU%>i!9p^r=JLWzG|3d}Ub9mc& z(6~+mox9+?Vlto+gQn~oI<(6jaoI|jmuWmI+cP*mW&%g#M0=KG^z8Utp~Rs?(JbPB zaZx2(#7iTXc||<7i)`g?S@s6VI6`{Gv~vn;bySwQk?cG0V;6JgX|+v*K9DzANX07A zBQrj&E$TSrTw12*a9+nDo|zoukT@lMGg1oUUlE)YB_=QL{64c zc@CFNj}S8pRO{HYo1DxBrh-w;BvW^P=oF7R%K-#}+aoL3E@Iqj9(ml2Ou>xEb;*vF zmqg3&^{|4JWZR|++*g!Bpycv8bb}8?&M$~J`7X)B?{JNcJm-!|LLs0a&5U|*2--$a zgA{-k#~B0AXr`$#lZBky(6c<-2qM=VTiq(<0<#kW*P(=Jm9d-wK_f+Cx562Jl2*D` zS=Belcowzp7VQSLv^mZc49G=ghwYemwoV)CD4%DPbjxaPG8^<aUR94e5f2eu!4P) z3)r0~=&2m;cyz5|Dn?0?JK0|p$s|?nnsVavtJadOQ0bTmlqOMQ$x;rvmNx{@yAOiY z(Y#{2C!*K%!(R}r%etn#*Ak(GPcykMk2UU%da}$-O0nhaQht*@pi+Q;3vPy!f3Nh6NP0BGSsA#OUx@<$ekvPB@2J4e=-iWSqf$y47|iuS(_PMqpV`z~ zwo+KgDi>%03)JzAe>($J|swNP_ZfNZ%+>}u&%hC^j#-`t3M|_G*X(9}E z1^)8e3`~{r(yS7&`^Gl3M7}7KY1=Z$w`AUzF0vm6evK^ol4i(oL6YK23plZ;R4OG` z(}L%td~?X1pswVvGgNSC$!2%r|C8N`v)El#toDMgGrfi2|9o5zjG$~#XqhA(633>- z>KPNTV1x|XI4Gun)p1U0$Vh{phI^BTG8IgbQdw|d4C{9|dKsv!ik%Z9omel7D6MOz ziu|Dk*yuFECRhyHzzxa;-QIp@0Kb2+ zv=sWi@H(~Nq5$_9VI?y*8?enL&QvK@<3`NhP$fNoDG$5uMgAHH1)F=4uOyEkPClX1 z!DEh5P``NBCeU=GtY2de>=k46NiP0C!%j!4J%rJy>@%=o!nRywRdtM}$PkT)Gip5Pb?2ohy1mbm24hrg8*kX<=^l1shEE$?sETI4xt~I-mX7>?L}3Y`nm= z!}cVDP$DIq!-R)&8Be%Z2S%DyJjjKNG3o{G%oG=|xU0gSp)8W50w z`1L;6+I9F125)<5D@93pf_c?J{BVFVex^`pNP$h7(>Q4Y=eBKa3-)UZOm!L?QZT~s z64uHQ`x;hiyl?EI|J#W?E%R5=w(=o zJY$R8dUa%m#6~SDuYn<-4yMgfL`rdg8Cr_!H#ux+Sy}do1{+bA)Kf(Te=)s(XDmIL z_h$B7HZW_ninHw`i;B>)7@-Sh7%T3xy3S%IvLN$%nd`CWmsNVk#h2hR?@I2Y+VC9% zIw&%oGXJl0Xd@nHk6w!;J>jTteA!jo8qI9sR1MF$CA%v{pKY4 zW}U1Npj)X*<=538USVC#qzF)dBc}Iy^La)4!h)rIUYd_!?mL@HO};gFJZ1DUe-t5w ztsJ=^&dOdR4(N0B#2oemf5Q*`PTeQ^`Y07iZMHwa>L5rBv22&tWupt1)??-Y-=wHl zRkEwiBCfo5teQn?InCWgY%EyR;>|O11?vQnjp0;}mA)B(EywME!X8O1ruuF0U9Fa9 y<>C}6L}Ctu|1VHW0Rj{N6aWAK2msTy7+pemd`99J008_*lO!2E1{oOu0002`O=krF diff --git a/dist/mappa-knowledge.skill b/dist/mappa-knowledge.skill index ac36e52ca029839abd617479913c4a985d6d93ee..c63cc48503c21a023b6d8a1ff2cfee9eef32a4ba 100644 GIT binary patch delta 6550 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 diff --git a/dist/mappa-messaging.skill b/dist/mappa-messaging.skill index 5244ddcbebaf93f16c3698e02db5c7d4c9dfc7c5..e2b657f844812af55cabc5b6ea8b053ded4c3b6c 100644 GIT binary patch delta 7102 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 diff --git a/dist/mappa-task-work.skill b/dist/mappa-task-work.skill index a1856d0c587c2d4ff4920ebeed137ef30a09d9aa..53fa83f24b2fe852c60d1ed0f7bb885c1c065529 100644 GIT binary patch delta 8251 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 delta 7794 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 diff --git a/skills/mappa-brainstorm-promote/SKILL.md b/skills/mappa-brainstorm-promote/SKILL.md index 26d2858..588f01d 100644 --- a/skills/mappa-brainstorm-promote/SKILL.md +++ b/skills/mappa-brainstorm-promote/SKILL.md @@ -1,12 +1,13 @@ --- name: mappa-brainstorm-promote author: ours -version: 1.3.0 +version: 1.4.0 description: > Finalize a matured brainstorm buffer on the boss's desk (~/projects/.workshop/.brainstorm/): ask routing (workshop-meta → local .wiki/concepts/, domain → target project wiki via knowledge_ingest, - mappa-service → mappa-борд (карв-аут), skill → claude-skills skeleton), + mappa-service → mappa-борд (create — карв-аут без лиза wiki:2660), skill → + claude-skills skeleton), extract action-items into target .tasks, create pointers + review umbrella for impl tasks, archive the buffer. Старое имя — триггер-синоним: workshop-promote-brainstorm. Location-agnostic: fires from ANY folder; all @@ -27,7 +28,7 @@ description: > - **workshop-meta** → локальный `.wiki/concepts/` (методология самой зоны). - **domain** → глобал через `mcp__projects-meta__knowledge_ingest` в `~/projects//.wiki/`. -- **mappa-service** → сервисные борды (mappa, .common, …): таски/вики-сущности через `mcp__mappa__task_create`/`wiki_create` (карв-аут, wiki:2660); review-umbrella — сервисная таска; covering-письмо в инбокс цели. +- **mappa-service** → сервисные борды (mappa, .common, …): таски/вики-сущности через `mcp__mappa__task_create`/`wiki_create` (**create — карв-аут без лиза**, wiki:2660; update — version+409); pointers-таска НЕ нужна, если спека уже в вики проекта (wiki:NNNN); review-umbrella — сервисная таска; covering-письмо в инбокс цели. - **skill** → `~/projects/claude-skills/skills//SKILL.md` (только шапка + пустой каркас тела, локальный коммит без push/install/build-hermes). Буфер уезжает в `.archive/`. Action-items уходят тасками в target-проект. **Всегда, при любом маршруте, в воркшоп-вики остаётся summary-страница.** @@ -63,7 +64,7 @@ description: > │ │ │ │ │ ▼ ▼ ▼ │ knowledge_ingest mcp__mappa__wiki_create dialog: description (trigger contract) - │ │ (карв-аут, wiki:2660) │ + │ │ (карв-аут, wiki:2660) │ │ │ │ ▼ │ │ │ preview + confirm │ │ │ │ @@ -118,9 +119,11 @@ description: > - **Определить канал борда:** есть ли у проекта файловая доска `.tasks/STATUS.md` (file channel) или борд живёт в mappa-сущностях (service channel — сервисные проекты: mappa, .common, …). Проверка: файл `.tasks/STATUS.md` в чек-ауте (file) против `mcp__mappa__task_list(project=)` / `entity_search` (service). Если файловой доски нет, а mappa-сущности есть → **service channel**. 4. **Если domain + service channel (mappa-борд, fold-in 1):** - - **Спека → вики-сущность:** `mcp__mappa__wiki_create(project, slug, body)` (или `wiki_update(project, id, version)`, если страница уже есть). Если спека уже в вики проекта (w:NNNN) — не дублировать, описание импл-тасок ссылается на неё. + - **Create — карв-аут, лиз НЕ нужен** (wiki:2660): `task_create`/`wiki_create` + без claim_token (интерактивный контракт, поллер вне mappa). + - **Спека → вики-сущность:** `mcp__mappa__wiki_create(project, slug, body)` (или `wiki_update(project, id, version, …)`, если страница уже есть). Если спека уже в вики проекта (wiki:NNNN) — не дублировать, описание импл-тасок ссылается на неё. - **Pointers-таска НЕ нужна**, если спека уже в вики проекта — дыра pointers закрыта инлайн (описание импл-тасок прямо ссылается на спеку). - - **Импл-таски:** `mcp__mappa__task_create(project, slug, title, description, status='ready')` (карв-аут, wiki:2660) — **ПОСЛЕДОВАТЕЛЬНО, не батчем** (см. NB в шаге 7). + - **Импл-таски:** `mcp__mappa__task_create(project, slug, title, description, status='ready')` — **ПОСЛЕДОВАТЕЛЬНО, не батчем** (см. NB в шаге 7). - **Review-umbrella:** сервисная таска `mcp__mappa__task_create(status='blocked', blocker=<номера импл-тасок>)`. - **Covering-письмо:** `mcp__mappa__inbox_send(project=, from=<своя>, subject='Промоушен : таски <#N>…', body=<перечень>).` — канон mappa-delegation: таска на борде не пингует живую сессию. @@ -366,9 +369,9 @@ description: > - Если `tasks_create` review-таски упала — сообщить пользователю, **продолжить** к шагу 11 (архивация буфера). Review-таску можно создать вручную позже из `.archive/-.md`. - - **domain (service channel):** review-umbrella — **сервисная таска**: `mcp__mappa__task_create(project=, slug=-review, status='blocked', blocker=<номера импл-тасок через запятую>, description=<шаблон domain выше, спека = w:NNNN в вики проекта>)`. Pointers-таска отсутствует (спека в вики). + - **domain (service channel):** review-umbrella — **сервисная таска**: `mcp__mappa__task_create(project=, slug=-review, status='blocked', blocker=<номера импл-тасок через запятую>, description=<шаблон domain выше, спека = wiki:NNNN в вики проекта>)` — create = карв-аут (без лиза). Pointers-таска отсутствует (спека в вики). - **Covering-письмо в инбокс цели (оба канала; канон mappa-delegation).** После создания тасок — `inbox_send` получателю-проекту: таска на борде не пингует живую сессию, письмо = пинг + контекст. File channel: `mcp__mappa__inbox_send(project=, from=<своя>, subject='[event: created] тасок', body=<перечень: #N slug> )`. Service channel: то же, но `from` = своя папка (или сервисный адрес) и тело ссылается на w:NNNN-спеку. + **Covering-письмо в инбокс цели (оба канала; канон mappa-delegation).** После создания тасок — `inbox_send` получателю-проекту: таска на борде не пингует живую сессию, письмо = пинг + контекст. File channel: `mcp__mappa__inbox_send(project=, from=<своя>, subject='[event: created] тасок', body=<перечень: #N slug> )`. Service channel: то же, но `from` = своя папка (или сервисный адрес) и тело ссылается на wiki:NNNN-спеку. 10. **Workshop-wiki summary (обязательно для всех маршрутов):** @@ -423,9 +426,8 @@ description: > - `mcp__projects-meta` недоступен → abort до записей. - Целевой проект (для domain) не найден в `meta_status` → abort. - `knowledge_ingest` упал → abort до `tasks_create` и `git mv`. Буфер остаётся. -- **Service channel:** create — карв-аут (wiki:2660), 422 busy больше не бывает; 409 на `wiki_update` (version) → retry со свежей версией. -- **Service channel:** `task_create` упал (гонка счётчика/переходный период) → **повторить последовательно**, не батчем; при стабильном отказе — abort до архивации. -- **Service channel:** спека уже существует в вики проекта (w:NNNN) → не дублировать `wiki_create`, ссылаться на неё. +- **Service channel:** create упал (гонка счётчика/переходный период) → **повторить последовательно**, не батчем; при стабильном отказе — abort до архивации. +- **Service channel:** спека уже существует в вики проекта (wiki:NNNN) → не дублировать `wiki_create`, ссылаться на неё. - **domain:** `tasks_create` для `[-pointers]` упал → **abort** до content-тасок и до review-таски. Без pointers оставшиеся таски бесполезны (агент будет угадывать). Сообщить пользователю; буфер оставить на месте для retry. - `tasks_create` упал на N-й content-таске → продолжить остальные. Сообщить partial. **Не делать** `git mv` без подтверждения пользователя. - `tasks_create` упал на review-таске (шаг 8) → не блокировать; перейти к архивации, сообщить пользователю чтобы создал вручную из `.archive/`. @@ -439,7 +441,7 @@ description: > - **Всегда (любой маршрут):** создаёт summary-страницу `.wiki/concepts/.md` в `.workshop/` + добавляет строку в `index.md`. - **workshop-meta:** summary IS контент (шаг 6 записывает полное тело; шаг 9 дополняет секцию «задачи/ссылки» или пропускается если уже полный). - **domain:** создаёт запись в target-wiki через MCP (`mcp__projects-meta__knowledge_ingest`). -- **domain (service channel):** создаёт спека-сущность в вики mappa-проекта (`mcp__mappa__wiki_create` — карв-аут); импл-таски + review-umbrella — сервисные таски (`mcp__mappa__task_create` — карв-аут); covering-письмо в инбокс цели (`inbox_send`). Pointers-таска НЕ создаётся (спека уже в вики). +- **domain (service channel):** создаёт спека-сущность в вики mappa-проекта (`mcp__mappa__wiki_create`, карв-аут wiki:2660); импл-таски + review-umbrella — сервисные таски (`mcp__mappa__task_create`, карв-аут); covering-письмо в инбокс цели (`inbox_send`). Pointers-таска НЕ создаётся (спека уже в вики). - **domain:** создаёт также **mandatory pre-impl** таску `[-pointers]` в target — pre-filled блок текста для `.wiki/CLAUDE.md` Domain conventions (ссылки на global wiki slug + workshop archive trace + local overview.md). Без неё последующий импл-агент попадает в дыру: where_stopped one-liner + пустой Domain conventions stub. - **skill:** создаёт `~/projects/claude-skills/skills//SKILL.md` — **только шапка + пустой каркас**. Локальный коммит в `claude-skills/`. **Без** установки, push, или build-hermes — это всё в созданных baseline-тасках. - Создаёт N тасок в target `.tasks/` через MCP. @@ -459,6 +461,6 @@ description: > - **Skill:** не бампить `version` после первой записи (это работа владельца `claude-skills/`). - **Skill:** не промоутить в существующий скил (см. Failure modes — abort). - **Skill:** не пропускать обязательный preview + confirm перед `Write` — действие выходит за пределы мастерской, изменяет соседний репозиторий. -- **Service channel:** не батчить `task_create` (гонка счётчика, инцидент 2026-08-24: 6/7 упали) — только последовательно; `wiki_update`/`task_close` со свежей version (409 → retry). -- **Service channel:** не плодить pointers-таску, если спека уже в вики проекта (w:NNNN) — описание импл-тасок ссылается на неё инлайн. +- **Service channel:** не батчить `task_create` (гонка sha-CAS счётчика, инцидент 2026-08-24: 6/7 упали) — только последовательно. Create — карв-аут, лиз не нужен. +- **Service channel:** не плодить pointers-таску, если спека уже в вики проекта (wiki:NNNN) — описание импл-тасок ссылается на неё инлайн. - **Service channel:** не забывать covering-письмо в инбокс цели — таска на борде не пингует живую сессию. diff --git a/skills/mappa-closing-ritual/SKILL.md b/skills/mappa-closing-ritual/SKILL.md index cf08f41..3ad4b95 100644 --- a/skills/mappa-closing-ritual/SKILL.md +++ b/skills/mappa-closing-ritual/SKILL.md @@ -1,7 +1,7 @@ --- name: mappa-closing-ritual author: ours -version: 1.0.0 +version: 1.2.0 description: > Финиш-фаза форкфлоу: handoff write (mcp__mappa__handoff_write, версия h:N) + PROPOSE wiki-ingest + PROPOSE закрытий тасок. Мутации — только после @@ -78,13 +78,13 @@ Forward-looking, не timeline: handoff = связка новых вещей к ### 5. Propose wiki-ingest (не писать!) Если за сессию появилось durable-знание — **ПРЕДЛОЖИТЬ** ingest -(`mappa-knowledge`: mappa wiki_create/update — version+409, wiki:2660), перечислив кандидатов. +(`mappa-knowledge`: mappa wiki create — карв-аут, update — version+409, wiki:2660), перечислив кандидатов. Ничего не писать без подтверждения. ### 6. Propose task-board closes (не закрывать!) Если есть задачи, выглядящие закрытыми — **ПРЕДЛОЖИТЬ** закрытия -(`mappa-task-work`: task_close — version+409). Уважать ralph-loop: verifier-задачи +(`mappa-task-work`: task_close с version+409, wiki:2660). Уважать ralph-loop: verifier-задачи закрывать только через verifier (attempt/harness-record). ### 7. Формат предложения — один блок diff --git a/skills/mappa-delegation/SKILL.md b/skills/mappa-delegation/SKILL.md index 1be429c..3c22967 100644 --- a/skills/mappa-delegation/SKILL.md +++ b/skills/mappa-delegation/SKILL.md @@ -1,7 +1,7 @@ --- name: mappa-delegation author: ours -version: 1.1.0 +version: 1.2.0 description: > Цикл делегирования задачи другому агенту/проекту: pre-flight gate → шаблон тела → dry-run preview → confirm → covering-письмо в инбокс @@ -44,10 +44,10 @@ steering-loop поля (notify/weight), парную review-таску для im Номер задаче присваивает сервер (`tasks_create` из счётчика agenda/task-counter) — постановщик номер не придумывает и не резервирует. Возвращённый `#n` из preview/confirm — машинный ключ задачи: им ссылаются блокеры, письма, decision-trail. -> **Интерактивный контракт (wiki:2660).** `task_create` — карв-аут, лиз НЕ -> нужен (create = INSERT, входной контур). `task_close`/`task_update` — optimistic -> version+409 (конфликт → свежая version из `task_get` → retry). File channel — -> sha-CAS через Gitea (projects-meta), там свои правила. +> **Контракт (interactive, wiki:2660).** `task_create` — **карв-аут без +> лиза** (create-без-лиза как принцип); update/close — version+409 (409 → +> re-GET → retry). file channel — sha-CAS через Gitea. Claim/TTL нет — +> «взять таску» = conditional update по version (поллер вне mappa). ## Steps (цикл) @@ -64,7 +64,7 @@ steering-loop поля (notify/weight), парную review-таску для im 4. **notify — кому докладывать о завершении/затыке?** (slug проекта; обычно `.workshop` или `OpeItcLoc03/workshop`) 5. **Session-break после этой задачи?** — нужен ли разрыв сессии после её закрытия (domain-switch, milestone, heavy infra)? - Если **да** → проставить `session_break` в теле задачи (см. шаблон): `true` или строка-hint с названием следующего трека. `mappa-task-work` остановится после close и предложит завершить сессию, не клеймя следующую задачу. - - Если **нет** → поле не добавлять (дефолт — агент продолжает `claim-next`). + - Если **нет** → поле не добавлять (дефолт — агент продолжает цикл). ### 2. Составить тело задачи по шаблону @@ -132,7 +132,8 @@ mcp__mappa__inbox_send( ) ``` -(`task_create` — карв-аут (wiki:2660), доставка письма — карв-аут.) +(Мутации update/close — version-based (409 → retry); доставка письма — +карв-аут, лиза не требует.) Причина: таска на борде **не пингует живую сессию** получателя. Поллер подхватит по `Weight`/`Notify`, но живая интерактивная сессия узнаёт только @@ -175,7 +176,7 @@ task» — общий случай (шаг 7 — его частность дл ## Side effects -- Создаёт таску в target-проекте через `tasks_create` (file channel — Gitea commit; service channel — mappa-сущность карв-аутом, wiki:2660). +- Создаёт таску в target-проекте через `tasks_create` (file channel — Gitea commit; service channel — mappa-сущность, create = карв-аут без лиза wiki:2660). - Опционально создаёт парную review-таску (status=blocked). - Covering-письмо в инбокс получателя (кросс-проектная делегация). diff --git a/skills/mappa-knowledge/SKILL.md b/skills/mappa-knowledge/SKILL.md index 955c01d..3c2b388 100644 --- a/skills/mappa-knowledge/SKILL.md +++ b/skills/mappa-knowledge/SKILL.md @@ -1,7 +1,7 @@ --- name: mappa-knowledge author: ours -version: 1.1.0 +version: 1.2.0 description: > Цикл работы со знаниями проекта в Mappa (Karpathy LLM Wiki, канал = mappa-сущности): ingest → query → lint + граф-слой для @@ -10,8 +10,8 @@ description: > «запроси вики», «проверь вики», «use project wiki», «query the wiki», «что связывает X и Y», «как связаны», «путь между X и Y», «what connects X and Y», «что ссылается на X», «backlinks of X», «сироты», «битые ссылки», - «orphan pages». Wiki = сущности type=wiki (чтение — карв-аут лиза; запись — - version+409, wiki:2660). Реляционные вопросы — через graph_* (BFS на + «orphan pages». Wiki = сущности type=wiki (чтение — карв-аут; create — + карв-аут, update — version+409; контракт wiki:2660). Реляционные вопросы — через graph_* (BFS на стороне сервиса), guarded failure-mode: одна страница и стоп, без многохоповых цепочек чтением. Skip для одно-страничных контентных вопросов. --- @@ -25,7 +25,8 @@ query / lint) + **граф-слой** для реляционных и стру сущностями читают через граф (graph_*). Канал — Mappa (`mcp__mappa__*`), НЕ файлы. Страница — сущность `type=wiki` -(`wiki:N`); чтение — карв-аут, запись — version+409 (wiki:2660). +(`wiki:N`); чтение — карв-аут; **create — карв-аут без лиза; update — +optimistic concurrency (version+409 → retry)** (контракт wiki:2660, v0.12.0). Файлового `.wiki/` больше нет; `setup-wiki` умер (нечего настраивать). ## Когда использовать @@ -64,19 +65,19 @@ README/ADR (не персистентная база знаний), проект | Операция | Тул | Примечание | |---|---|---| -| Чтение страницы | `mcp__mappa__wiki_get(project?, slug)` | чтение — карв-аут (решение 19) | +| Чтение страницы | `mcp__mappa__wiki_get(project?, slug)` | чтение — карв-аут | | Поиск страниц | `mcp__mappa__entity_search(q, type='wiki', project?, scope?, limit)` | ILIKE по body/title | -| Создать страницу | `mcp__mappa__wiki_create(project, slug, body)` | карв-аут (wiki:2660), лиз не нужен | -| Обновить страницу | `mcp__mappa__wiki_update(project, id, title?, body?, version)` | version+409; id — internal | +| Создать страницу | `mcp__mappa__wiki_create(project, slug, body)` | **карв-аут без лиза** | +| Обновить страницу | `mcp__mappa__wiki_update(project, id, title?, body?, version)` | **version-based**: конфликт → 409 → retry со свежей version из wiki_get | | Путь между сущностями | `mcp__mappa__graph_path({from, to})` | кратчайшая цепочка, BFS | | Соседи / исходящие | `mcp__mappa__graph_neighbors({id})` | рёбра узла с резолвом целей | | Входящие ссылки | `mcp__mappa__graph_backlinks({id})` | кто ссылается на узел | | Здоровье графа | `mcp__mappa__graph_stats()` | nodes/edges/components | -**Запись — version+409 (wiki:2660 interactive contract).** `wiki_create` — -карв-аут (лиз не нужен); `wiki_update` несёт `version` из последнего чтения, -конфликт → 409 → `wiki_get` заново → retry. Долгих лизов/TTL/heartbeat больше -нет — живость владельца из session live-ingest. +**Запись — карв-аут (create) / version-based (update), без лиза (interactive +contract, wiki:2660).** `wiki_create` не требует claim_token; `wiki_update` +принимает ожидаемую `version` (свежую из `wiki_get`) — конфликт → 409 → +re-GET → retry. **Рефы и id (#1037/#1028).** Публичная поверхность несёт per-type реф полным именем первым полем: `ref: "wiki:3"` (решение 20, конвенция #1028), `num` @@ -97,10 +98,11 @@ per-type рефы полными именами (`[[task:N]]`/`[[inbox:N]]`). 3. Создай `sources/` — одну страницу-резюме на источник (~50–150 строк; ссылку на raw клади в frontmatter `raw_path` + `ingested:`). 4. Для каждой затронутой страницы: - - есть → обнови (`wiki_update(project, id, body, version)`). **Противоречия - помечай явно** блоком `> **Противоречие:** источник A говорит X, источник B — Y`. + - есть → обнови (`wiki_update(project, id, body, version)` — version свежая + из `wiki_get`; 409 → re-GET → retry). **Противоречия помечай явно** блоком + `> **Противоречие:** источник A говорит X, источник B — Y`. Не затирай молча. - - нет → создай (`wiki_create`). + - нет → создай (`wiki_create`, карв-аут). 5. Обнови `index` (каталог: одна строка на страницу) — опционально; каталог по умолчанию — `entity_search` (решение 1). 6. Отчитайся пользователю: что создано, что обновлено, какие противоречия. @@ -113,8 +115,9 @@ per-type рефы полными именами (`[[task:N]]`/`[[inbox:N]]`). **Один ingest может затронуть 10–15 страниц. Это нормально — для того LLM и нужны.** -Порядок записи: все wiki-мутации одним циклом; `wiki_update` — со свежей -`version` из чтения (409 → retry). Создание новых страниц — карв-аут. +Порядок записи: все wiki-мутации одним циклом; create — карв-аут, update — с +version (свежей из `wiki_get`); 409 → re-GET → retry. Лиз/claim для записи НЕ +нужен (wiki:2660). ### Query — вопрос по вики @@ -231,8 +234,9 @@ level/since/component/entity, retention 14d). Ручную `log`-страниц - **Не-ASCII слаги.** Ломают grep и кросс-платформенность. Транслитерируй. - **Пропущенные противоречия в lint.** Ценность вики — во вскрытых напряжениях, а не в ложном консенсусе. -- **Запись — version+409 (wiki:2660).** `wiki_create` — карв-аут; `wiki_update` со свежей `version` (конфликт → 409 → retry). -- **Держать лиз на чтение/раздумья.** Лиз — на время записи. Чтение — карв-аут. +- **Запись без version (update).** `wiki_update` без свежей version → + last-write-wins, риск затирания чужого; бери version из `wiki_get`, 409 → retry. +- **Держать claim на чтение/раздумья.** Claim — на время работы; чтение — карв-аут. - **Реляционный вопрос чтением одной страницы.** Это тот самый 0%-recall провал — зови graph_*. - **Слаги/пути в graph-тулы.** Только internal id, и только свежие (удалённая @@ -244,7 +248,7 @@ level/since/component/entity, retention 14d). Ручную `log`-страниц - Реляционный вопрос → читаешь страницу вместо `graph_*`. - Правка `sources/` или молчаливая перезапись противоречия. -- Wiki-мутация без лиза (422) или лиз держится на чтение. +- Wiki-мутация update без version (last-write-wins) или create с выдуманным claim. - Нарративный оп-лог руками. --- diff --git a/skills/mappa-messaging/SKILL.md b/skills/mappa-messaging/SKILL.md index d1445e3..ef66887 100644 --- a/skills/mappa-messaging/SKILL.md +++ b/skills/mappa-messaging/SKILL.md @@ -1,7 +1,7 @@ --- name: mappa-messaging author: ours -version: 1.1.0 +version: 1.2.0 description: > Цикл межсессионной почты через Mappa: SEND (inbox_send) → RECEIVE (inbox_monitor) → POLICY (peer ≠ authority). Адрес = имя папки проекта из @@ -156,8 +156,8 @@ mcp__mappa__inbox_send( lifecycle-уведомления («таска создана», «закрыта», «заблокирована»). Не больше. - **Задачи — только через `mcp__mappa__task_*`.** Доска — единственный источник правды о задаче: существование, статус, скоуп, решения создаются и - меняются через `task_create` / `task_close` (карв-аут + version+409, wiki:2660) - — никогда не «решаются» внутри письма. + меняются через `task_create` / `task_close` — никогда не «решаются» внутри + письма. (Create — карв-аут; update/close — version+409, wiki:2660.) Следствие: **если это не на доске — это не задача и не решение, это разговор.** Значимый дизайн-выбор должен лечь на доску (или в вики), инбокс лишь указывает diff --git a/skills/mappa-task-work/SKILL.md b/skills/mappa-task-work/SKILL.md index db88bac..8766cb2 100644 --- a/skills/mappa-task-work/SKILL.md +++ b/skills/mappa-task-work/SKILL.md @@ -1,36 +1,33 @@ --- name: mappa-task-work author: ours -version: 1.1.0 +version: 1.2.0 description: > Центральный цикл работы с тасками в Mappa: ориентация → выбор работы - (owner, priority/due) → исполнение → сдача (close + review-umbrella) + - loop-mode «поработай очередь». Борд = сущности mappa (решения 14/15/20); - мутации — version+409 (wiki:2660 interactive contract), «взять таску» = - status→active + owner, живность владельца из session live-ingest. Поглощает - using-tasks + task-format + task-loop (loop-mode ВНУТРИ) + priority-due-раздел - (старые имена — триггер-синонимы). Триггеры: «что на досках», «возьми таску», - «какой статус», «update status», «pause», «switch to X», «где мы остановились», - «work the queue», «поработай очередь», «прогони доску». Приоритет = территория - человека: агенты ставят P0-P2/дедлайн только при создании, дефолт P1; - просрочка → notify, без авто-бампа. НЕ про делегирование (→ mappa-delegation), - НЕ про доску-обзор (→ ops/using-system-snapshot). + (priority/due) → исполнение → сдача (close + review-umbrella) + + loop-mode «поработай очередь». Борд = сущности mappa (решения 14/15/19/20); + create — карв-аут, update/close — optimistic concurrency (version+409), + owner = персистентный assignee, живость — из session владельца + (interactive contract, wiki:2660). Поглощает using-tasks + + task-format + task-loop (loop-mode ВНУТРИ) + priority-due-раздел (старые + имена — триггер-синонимы). + Триггеры: «что на досках», «возьми таску», «какой статус», «update status», + «pause», «switch to X», «где мы остановились», «work the queue», «поработай + очередь», «прогони доску». Приоритет = территория человека: агенты ставят + P0-P2/дедлайн только при создании, дефолт P1; просрочка → notify, без + авто-бампа. НЕ про делегирование (→ mappa-delegation), НЕ про доску-обзор + (→ ops/using-system-snapshot). --- # mappa-task-work Центральный цикл работы с задачами: **ориентация → выбор работы → исполнение → -сдача**. Борд — сущности mappa (`type=task`, `task:N`): чтение — карв-аут, -**мутации — optimistic concurrency** (wiki:2660 interactive contract): -version+409, конфликт → retry со свежей version из `task_get`. Скилл = цикл, -не тул: одна механика на выбор/исполнение/сдачу, плюс **loop-mode** («поработай -очередь») внутри — отдельный скил не создаётся. - -> **Интерактивный контракт (wiki:2660).** claim/TTL/heartbeat выпилены: -> поллер не клиент mappa (живёт на файловых досках projects-meta), клиент — -> интерактивные сессии. «Взять таску» = `task_update(status=active, owner=<сессия>)` -> с верной version; конфликт (уже взято) → 409 → выбор другой таски. Живость -> владельца — из session live-ingest (сессия `pi` пишется сама), не таймер. +сдача**. Борд — сущности mappa (`type=task`, `task:N`): чтение — карв-аут; +**create — карв-аут без лиза; update/close — optimistic concurrency +(version+409 → retry)**; **owner = персистентный assignee; живость таски — +из session владельца** (interactive contract, wiki:2660; поллер вне mappa). +Скилл = цикл, не тул: одна механика на выбор/исполнение/сдачу, плюс +**loop-mode** («поработай очередь») внутри — отдельный скил не создаётся. > **Переходное (file channel).** Пока поллер/кэш читают файловые борды > (`.tasks/STATUS.md`), legacy-канал живёт: блоки в файле обязаны строгому @@ -51,29 +48,32 @@ version+409, конфликт → retry со свежей version из `task_get | Операция | Тул | Примечание | |---|---|---| -| Взять таску | `mcp__mappa__task_update(project, id, status='active', owner=<сессия>, version)` | «взять» = conditional update; 409 → уже взята | -| Сбросить/отдать | `mcp__mappa__task_update(project, id, status='ready', owner='', version)` | release = обычный update | -| Создать таску | `mcp__mappa__task_create(project, slug, title?, description?, status?, priority?, due?)` | карв-аут, лиз не нужен (wiki:2660) | -| Закрыть таску | `mcp__mappa__task_close(project, id, version)` | version+409 (конфликт → retry) | -| Прочитать таску | `mcp__mappa__entity_get(id)` | id internal из search; несёт version | +| Взять следующую ready-таску | `mcp__mappa__task_update(project, id, owner=<своя>, status=active…, version)` | **conditional update**: status→active, owner=X, version+409 (кто первый с верной version — тот и взял) | +| Создать таску | `mcp__mappa__task_create(project, slug, title?, description?, status?, priority?, due?)` | **карв-аут без лиза**; per-type номер (решение 20) | +| Закрыть таску | `mcp__mappa__task_close(project, id, version)` | **version-based**: конфликт → 409 → retry со свежей version из task_get | +| Обновить таску | `mcp__mappa__task_update(project, id, parent?, owner?, status?, reason?, version)` | version-based; 409 → retry | +| Прочитать таску | `mcp__mappa__entity_get(id)` | id internal из search | | Список борда | `mcp__mappa__entity_search(q, type='task', project=<имя>, limit)` | все статусы | | Дерево parent_of | `mcp__mappa__graph_tree(root, depth?, fields?, limit?)` | зонтики/иерархия | | Связанные сущности | `mcp__mappa__graph_neighbors/backlinks(id)` | рефы к таске | | Просрочка | `mcp__mappa__admin_overdue_scan(project?)` | P2-джоба: notify в инбокс, без мутаций | +| Живость владельца | `mcp__mappa__session_list(project, stale_minutes?)` | сессия владельца жива/стала stale → таска active or not | | Уведомление при закрытии | `mcp__mappa__inbox_send(project=, from=<своя>, subject, body)` | письмо комиссионеру | -**Взятие таски = version+409, не лиз.** Каждая таска несёт `version`; conditional -update (`status=active, owner=<сессия>, version=N`) проходит, только если никто -не изменил её после твоего чтения. Конфликт → **409** → `task_get` заново → -выбирай другую. Конкуренции «проект занят» нет: два агента берут разные таски -свободно. Живость — из сессии: пока твоя pi-сессия активна (end-state≠clean), -твои 🔴 видны как «в работе». +**Owner = персистентный assignee; живость — из session (interactive contract, +wiki:2660).** Нет TTL/claim/таймера на таске: «взял таску» = conditional +update (`status→active, owner=X` + version, 409 при конфликте — кто первый, +тот и взял). Живость владельца — сессия: таска с owner=X активна, пока сессия +X жива (end-state≠clean, не stale; `session_list(project)`); краш = stale → +решает человек/оркестратор (поллер вне mappa, работает на файловых досках +projects-meta). Write-пути (create/update/close) лизов/claim не требуют — +только version на update/close (409 при конфликте). -**Рефы и id (#1037/#1028).** Таски наружу несут `ref: "task:N"` полным именем -первым полем (конвенция #1028), `num` следом, глобальный `id` — internal -(последним, для addressing в тулах). Ссылайся на таску `[[task:N]]`/`task:N` -в прозе (слаг/имя первым, реф как якорь: «таска `mappa-task-work` (task:1062)»), -никогда `#<глобальный id>`. +**Рефы и id (#1037/#1028).** Таски наружу несут `ref: "t:N"` полным именем +первым полем (`task:N`, конвенция #1028), `num` следом, глобальный `id` — +internal (последним, для addressing в тулах). Ссылайся на таску +`[[task:N]]`/`task:N` в прозе (слаг/имя первым, реф как якорь: «таска +`mappa-task-work` (task:1062)»), никогда `#<глобальный id>`. ## Статусы (эмодзи для презентации) @@ -101,19 +101,19 @@ update (`status=active, owner=<сессия>, version=N`) проходит, то 4. Подтверди одним предложением: «Мы в середине X, следующий шаг — Y». 5. Спроси, верен ли план, перед действиями. -### Фаза 1 — Выбор работы (owner, priority/due) +### Фаза 1 — Выбор работы (priority/due) -1. Собери кандидатов: `entity_search(q, type='task', project=<имя>)` → - готовые ⚪ ready. Порядок приоритета: **P0-пул первый, внутри по дедлайну - (просроченные первыми), потом P1, потом P2**; отсутствующий priority = P1 - (сортировка — клиентская, wiki:2660). +1. **Выбор таски — из списка борда** (`entity_search(q, type='task', project)`): + порядок — **P0-пул первый, внутри по дедлайну (просроченные первыми), + потом P1, потом P2**; отсутствующий priority = P1 (task-priority-due). + «Взять таску» = `task_update(project, id, owner=<своя>, status='active', + version)` — conditional update: status→active, owner=X, version+409; кто + первый с верной version — тот и взял (interactive contract, wiki:2660). + `owner` = `::`. 2. **Локально-первая рекомендация** — борд cwd первым; кросс-проект — футонота (`Cross-project: N 🔴 active — см. tasks_aggregate`) только если N>0 и в cwd нет активной 🔴. Кросс-проектные ургенты — информация, не драйвер «что делать здесь». -3. **Взять таску:** `task_update(project, id, status='active', owner='::', version=<из чтения>)`. - - 200 → таска твоя (🔴, owner=твоя сессия). - - **409** → кто-то уже взял (version устарела) → `entity_get` → бери следующую. -4. **Priority/Due — территория человека (раздел task-priority-due):** +3. **Priority/Due — территория человека (раздел task-priority-due):** - Агент ставит `priority`/`due` **только при создании** таски (явные параметры или строки `**Priority:** P0|P1|P2` / `**Due:** yyyy-mm-dd` в description). Отсутствует → дефолт P1, без дедлайна. @@ -127,10 +127,10 @@ update (`status=active, owner=<сессия>, version=N`) проходит, то - **Одна активная таска** 🔴 на проект. Не параллель. - Читай description + per-task файл (`.md`, где есть) до старта. -- Heartbeat не нужен: живость = живая pi-сессия (session-sync пишет её в mappa; - stale-детект — по сессии владельца, не таймер на таске). +- Живость — из сессии владельца (`session_list(project)`), не таймер; долгие + таски heartbeat не требуют (interactive contract, wiki:2660). - **`session_break` gate** (из task-loop): если в description таски есть маркер - `session_break` — после close НЕ бери следующую: печатай + `session_break` — после close НЕ клейми следующую: печатай `🔚 SESSION BOUNDARY …` и останавливайся (домен-свитч / milestone / тяжёлая инфра). ### Фаза 3 — Сдача (close + review-umbrella) @@ -139,8 +139,8 @@ update (`status=active, owner=<сессия>, version=N`) проходит, то каждого — evidence: тест в диффе, артефакт, ссылка на дизайн. Нет evidence на критерий → спроси user'а «закрывать или подождать coverage'а». 2. Resolve/drop открытые вопросы. -3. `task_close(project, id, version=<из чтения>)` → статус `done`. - **409 на конфликт** → `entity_get` → повтори close со свежей version. +3. `task_close(project, id, version)` → статус `done`. `version` — + свежая из `entity_get(id)`/`task_get(id)`; конфликт (409) → re-GET → retry. 4. **Notify-письмо (кросс-проектные таски).** Если таска пришла из другого проекта (в description/meta есть `from:`/`notify:`) — `inbox_send` комиссионеру: `project=`, `subject="[event: closed] "`, @@ -158,7 +158,8 @@ update (`status=active, owner=<сессия>, version=N`) проходит, то 1. Текущая 🔴 → `task_close` если завершена (см. Фазу 3), иначе пометь `status=paused` (owner остаётся; «where stopped» — в description или handoff). 2. **Инбокс-свип** на границе тасок (`inbox_monitor`). -3. Возьми следующую: `task_update(status=active, owner=<сессия>)`. Прежняя остаётся 🟡. +3. Возьми следующую: `task_update(owner, status='active', version)` — прежняя + остаётся 🟡. 4. Подтверди ориентацию перед стартом. > **Never lose Where I stopped** — критичное поле: в description (последний @@ -174,19 +175,19 @@ update (`status=active, owner=<сессия>, version=N`) проходит, то пока очередь не пуста или user не сказал стоп. **Интерактивный цикл, не демон.** ``` -search(ready) → пусто? → STOP «борд пуст» (не поллить) - ↓ кандидат -task_update(status=active, owner=<сессия>, version) → 409? → следующий кандидат - ↓ взято +task_update(owner, status=active, version) → 409? re-GET → retry → пусто? → STOP «борд пуст» + ↓ таска работа в этой сессии (read description + .md) ↓ -завершена? нет → park: blocked (внешний) | paused (возобновляемо) → дальше +завершена? нет → park: blocked (внешний) | paused (возобновляемо) → следующая ↓ да -pre-close coverage check → task_close(version) +consult_policy: human-only/strict-human → STOP перед close/commit, спросить user + ↓ auto +pre-close coverage check → task_close ↓ session_break на таске? → да: печатай 🔚 SESSION BOUNDARY, STOP ↓ нет -следующий кандидат … +следующая … ``` - **Пустая очередь — естественный стоп, не wait-loop.** Нет `CronCreate`, нет @@ -196,8 +197,12 @@ session_break на таске? → да: печатай 🔚 SESSION BOUNDARY, S - **Не завершаемая таска:** внешний блокер → `status=blocked` + blocker (конкретный факт + что нужно); прервал ты (бюджет/стоп) → `status=paused` + where_stopped. Одна упавшая таска не останавливает цикл — паркуй и дальше. -- **409 на взятие** → таска только что взята другим (сессия жива) → следующий - кандидат; 409 на close → свежая version из `entity_get`, повтор. +- **Heartbeat не нужен** — живость владельца из session (wiki:2660); долгая + таска с живой сессией не «протухает». +- **Consult-гейт:** `auto` → автопилот до close; `human-only`/`strict-human` → + работай, затем **STOP перед close/commit** и спроси user. Push никогда не + автоматический (project-discipline Rule 4: commit freely, push по явному + гранту). --- @@ -205,8 +210,8 @@ session_break на таске? → да: печатай 🔚 SESSION BOUNDARY, S ### Primary: mappa task_create -Создание задач — **через тул, не руками** (решение 20): карв-аут, лиз не нужен -(wiki:2660). Номер `task:N` назначает сервер — не выдумывай. +Создание задач — **через тул, не руками** (решение 20): карв-аут, лиз/claim +для create НЕ нужен (wiki:2660). Номер `task:N` назначает сервер — не выдумывай. ``` mcp__mappa__task_create( @@ -251,7 +256,9 @@ Slug-правила: короткий, lowercase, kebab-case, латиница. Поля, которые разбирает поллер: `**Weight:**` (cheap-ok | needs-claude | needs-human — **обязателен** для авто-взятия), `**Notify:**` (/), `**Requirements:**`, `**Runtime allowed:**`, `**Consult policy:**`, `**Blocker:**` -(только на 🔵), `**Priority:**`/`**Due:**` (как выше). +(только на 🔵), `**Priority:**`/`**Due:**` (как выше). `**Owner:**/`**Claim +token:**/`**Claim expires at:**` — claim-штамп, пишет и чистит поллер; залипший +штамп на ⚪ блокирует поллер. **Weight — поле, решающее взятие:** без `**Weight:**` поллер паркует в 🔵 (`no backend for weight_tier: unknown`). Обычный код → `needs-claude`; @@ -261,10 +268,11 @@ needs-human — **обязателен** для авто-взятия), `**Notif ## Failure modes -- **409 на взятие** → таска уже взята (живая сессия владельца) → следующий - кандидат; не «бейся о замок». +- **version conflict** на update/close → version устарела; re-GET свежую version, + retry. Не «решай конфликт» перезаписью без version (last-write-wins). - **task_close на незавершённую** → никогда. Park (blocked/paused). -- **409 на close** → конфликт version → `entity_get` → повтори со свежей version. +- **owner на таске без живой сессии** → таска формально active, но владелец + stale; спроси человека (адvisory, не замок). - **notify не указан (legacy)** → без него boss не узнает о завершении. - **weight не указан (legacy)** → поллер паркует (no backend for weight_tier). - **update Priority/Due после создания** → сервер отклоняет; паркуй вопрос @@ -273,11 +281,11 @@ needs-human — **обязателен** для авто-взятия), `**Notif ## What NOT to do - **Не выдумывай номера** — `task:N` назначает сервер (решение 20). -- **Version-дисциплина:** мутации несут version из последнего чтения; 409 → - перечитай, не перезаписывай вслепую. +- **Version-дисциплина:** update/close — всегда с version (409 при конфликте → + re-GET → retry). Create — карв-аут без лиза (wiki:2660). - **Одна активная таска** — только одна 🔴 на проект. - **Never close без coverage check** — evidence на каждый acceptance criterion. -- **Не закрывай незавершённое** — park, не close; не оставляй взятое. +- **Не закрывай незавершённое** — park, не close. - **Не бампай priority/due после создания** — территория человека. - **Не «решай» задачи письмом/в чате** — борд — единственный источник правды (канон mappa-messaging: «если это не на доске — это не задача»).