From b994572dde17eb93bb7028595dba50b1686ee5ab Mon Sep 17 00:00:00 2001 From: "m2 (AI Agent)" Date: Thu, 2 Jul 2026 02:43:48 +0200 Subject: [PATCH] wedge: US1 wave 1 converged (T010/T011/T016-T020) + T022 stub adapter inline Smoke-verified on master: install debit/cut/grant math exact, dup-ref and insufficient-funds guarded, refund compensates, InstallState atomic round-trip, adapter factory + all package imports green. Co-Authored-By: Claude Fable 5 --- .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes .../__pycache__/catalog.cpython-312.pyc | Bin 0 -> 6146 bytes .../__pycache__/config.cpython-312.pyc | Bin 0 -> 3324 bytes .../__pycache__/ledger.cpython-312.pyc | Bin 0 -> 5687 bytes .../__pycache__/registry.cpython-312.pyc | Bin 0 -> 6491 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1361 bytes .../apply/__pycache__/base.cpython-312.pyc | Bin 0 -> 7201 bytes cli/src/m2_market/apply/m2core_sync.py | 33 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 148 bytes .../__pycache__/auth.cpython-312.pyc | Bin 0 -> 3127 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 12726 bytes .../test_schemas.cpython-312-pytest-9.1.1.pyc | Bin 0 -> 12566 bytes specs/001-market-first-wedge/tasks.md | 16 +- uv.lock | 616 ++++++++++++++++++ 14 files changed, 657 insertions(+), 8 deletions(-) create mode 100644 cli/src/m2_market/__pycache__/__init__.cpython-312.pyc create mode 100644 cli/src/m2_market/__pycache__/catalog.cpython-312.pyc create mode 100644 cli/src/m2_market/__pycache__/config.cpython-312.pyc create mode 100644 cli/src/m2_market/__pycache__/ledger.cpython-312.pyc create mode 100644 cli/src/m2_market/__pycache__/registry.cpython-312.pyc create mode 100644 cli/src/m2_market/apply/__pycache__/__init__.cpython-312.pyc create mode 100644 cli/src/m2_market/apply/__pycache__/base.cpython-312.pyc create mode 100644 cli/src/m2_market/apply/m2core_sync.py create mode 100644 ledger/src/m2_ledger/__pycache__/__init__.cpython-312.pyc create mode 100644 ledger/src/m2_ledger/__pycache__/auth.cpython-312.pyc create mode 100644 ledger/src/m2_ledger/__pycache__/models.cpython-312.pyc create mode 100644 schemas/tests/__pycache__/test_schemas.cpython-312-pytest-9.1.1.pyc create mode 100644 uv.lock diff --git a/cli/src/m2_market/__pycache__/__init__.cpython-312.pyc b/cli/src/m2_market/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a2e66787ee71c02836061c31312ac7ffa903ade GIT binary patch literal 171 zcmX@j%ge<81VUR}v&4Y(V-N=h7@>^M96-i&h7^V literal 0 HcmV?d00001 diff --git a/cli/src/m2_market/__pycache__/catalog.cpython-312.pyc b/cli/src/m2_market/__pycache__/catalog.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a7d6cf36931262aae9df126b77c5f3c310c0f43 GIT binary patch literal 6146 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 NpR3FYMC|4M`5)wwvd91c literal 0 HcmV?d00001 diff --git a/cli/src/m2_market/__pycache__/config.cpython-312.pyc b/cli/src/m2_market/__pycache__/config.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d34d1d5a70dff0c9c847bfd03af4cd74447b4d5e GIT binary patch literal 3324 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 F{{YB literal 0 HcmV?d00001 diff --git a/cli/src/m2_market/__pycache__/registry.cpython-312.pyc b/cli/src/m2_market/__pycache__/registry.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0bffd2834cf1e7e29d57fe90dbcf3a36a2febbe9 GIT binary patch literal 6491 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 T`~|`KOX+2XNqP1nE4 literal 0 HcmV?d00001 diff --git a/cli/src/m2_market/apply/__pycache__/__init__.cpython-312.pyc b/cli/src/m2_market/apply/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..90c5df9f4e22734555300aa5cc86a1da2a261646 GIT binary patch literal 1361 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 muqPpoyTskP^n_sjR2t{F(XR=@C#U%!cl6fle Changeset: + raise RailsNotLanded(_MSG) + + def apply(self, changeset: Changeset) -> ApplyResult: + raise RailsNotLanded(_MSG) + + def verify(self, bundle: Path, state: InstallState) -> bool: + raise RailsNotLanded(_MSG) + + def rollback(self, changeset: Changeset) -> None: + raise RailsNotLanded(_MSG) diff --git a/ledger/src/m2_ledger/__pycache__/__init__.cpython-312.pyc b/ledger/src/m2_ledger/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6c94d75b2b411d225f448e6cb7158bfd521f708 GIT binary patch literal 148 zcmX@j%ge<81VUR}vq1D?5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!GS<(?&rQ|OH3A~t z+{B{n)Dr!i)RgqpBK_i`WT0R?loubLnU`4-AFo$X`HRCQH$SB`C)KWq6=(({5Ep|O NADI~$8H<>KECA7YA+`Vj literal 0 HcmV?d00001 diff --git a/ledger/src/m2_ledger/__pycache__/auth.cpython-312.pyc b/ledger/src/m2_ledger/__pycache__/auth.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d2dc8318071cd33439d3f8efc6c8cc9bc6852c3 GIT binary patch literal 3127 zcmbVOO>7&-6`onH_$!IFL`inx+5`V2q9T%sV6-uvG0vyP4^f~V`F;p;yRBJ>aO;Xm*#pIQPVw1fiiocsWDn1TG^c@1&5L1$&^Kn zDauH{?$|EVbeCu9l9X05(?x@P`kPb9bToS9mP2m9Qr*%xr+koHb6^ifHG>qGQzX>B zNi5WRY^wyJ5Dr4iREa9@J^dGtqSQc zn2fss#=B+8-6Y`-abW;xXg2uhN^ov!jFW2=P^ZK!mK^3rZ-D_$*(ElmhG|a`*MU96 z)&vYAMaL*xG#&j)WYl;Pdl8G3^SY)_)1=}BF97tEc^wz7TzO-7MtEd8ws{ZY?6pzG z9Oku`Z4qdPnX}Y@B{A-5ZkgwG$Dm%&psr?GUI+r02iv?Lqi&hmdLyr88VhCx;H@n{ zvxHnJ6wUPpOPT^9Yis?gkLQ4GKBL~lZpha#lm#@0uSfjv-QEcJxjuw^F8PuPlvKw( zw8unY-plaT-hpNeVK8$Jy?p|q_b?pL>P+Jde^ZX{CZ4VFOT2_Jy8FC}D(JU?TlfJM zQE1~XGfM!cl77((h@2Hz5b`*anRbdaQ#=X3R8eC$sN0}YhBF<6`8u&OA}Hxn<#FWf z6t(G0iJhB0oCm^init!p&svVIS^QkOIo}5-@Wasj3w=G0{+t+HnON69HveG$@y6oB z(&W9#rMDg>M!(@w;H~%ZXt-Z7{v~Oqz7J}fo2|UMcY3ZxHIrU`c8VeZ{_G_^u&C2E0zE&?q`2D z@?d05UmdR|MmJ-l8|r8cmY}ahEC9byQJdkAk-8B2kBFj7v;#1JL~F(k(x)+o;49-^ z_fzV~11zn3fY^6ob=~$3pY9S;b{rd-z95%)5hxmlX+ZV#RFMvPE7eq3DRCNv z!B6)f^)m#Q16~Nv;inQu8Q()2!Bt6{Q5gIJH;Drv0Z*IoKaJ;il({CS8x%R@Q-sA~ zJK%;oUDR~16K(^@YnnIADNz^$Y(Gr1F46Qu!-Xq^%*&9m1boaM$rm*jDjd&icI7Ed z0Akmf@O7OEo!K>h*Zn+x^illi%B%PF&*LW_b!NZe0;r#mV;B-H06RgBivw9wEEj-Y zCG|XMZ#|ER+!m?Ag)P9etyt$~XLjAFc4jwY*$p)-LnM;epardL0h?y>a8HWR{tvt| zP6gOVR3tXA3+fzl#hiTnYUCG5p4g+;EU8cGF=Y--AlLuvgWd;EXHO5&615H9pG-;Q zUGthn&ou8l&A)HSrOTv#t%2R?q$>TE9AP3oz4kZ9&%b%)!llb2x#1yT*GnMeA}1Q4 z#h&w&_LnF9OLlpoeBN;Me4Yu;vR-JQ2A6H! zbsUQ`;gc6CXmB@|OeQ>F0tRV{7l6BliGQE6z_mn3y#|Zxh70VaQBRbe$KkW}e-P)` z_drG9%)f+YJAg6XQ6gBa^&;H397KRjHM;0i^Uw;ZC?!XK-2Dif)58>tPHi(DtN@cD4!`t=o`th2S!7k4Yt_@XByt;#exNn(ni*8-7iEgJ0 b9UoXbUOo284pL!qVq0|U+5d=6X4iiKv?Jy* literal 0 HcmV?d00001 diff --git a/ledger/src/m2_ledger/__pycache__/models.cpython-312.pyc b/ledger/src/m2_ledger/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48525db42d5b85492a66f5d5e6c91236e1aa034f GIT binary patch literal 12726 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