From ba97f42d896ac170ed448675de4be6c307281021 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 14:39:57 +0000 Subject: [PATCH 1/3] Initial plan From 872c16b4aaa7a85f06bf7dd500a9c13f296874dd Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 14:44:20 +0000 Subject: [PATCH 2/3] feat: add MGTP minimal decision artefact demo (deterministic canonicalisation) Co-authored-by: LalaSkye <228581229+LalaSkye@users.noreply.github.com> --- .github/workflows/ci.yml | 4 ++ README.md | 54 +++++++++++++++ __pycache__/authority_gate.cpython-312.pyc | Bin 0 -> 2729 bytes __pycache__/invariant_litmus.cpython-312.pyc | Bin 0 -> 4091 bytes __pycache__/stop_machine.cpython-312.pyc | Bin 0 -> 2963 bytes ...uthority_gate.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 15029 bytes ...ariant_litmus.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 20520 bytes ..._stop_machine.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 8582 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 305 bytes .../__pycache__/canonicalise.cpython-312.pyc | Bin 0 -> 1240 bytes .../__pycache__/drift.cpython-312.pyc | Bin 0 -> 4384 bytes .../__pycache__/engine.cpython-312.pyc | Bin 0 -> 4202 bytes ...t_determinism.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 14367 bytes .../test_drift.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 11254 bytes examples/minimal_decision_demo.py | 48 +++++++++++++ mgtp/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes mgtp/__pycache__/types.cpython-312.pyc | Bin 0 -> 3227 bytes mgtp/types.py | 38 ++++++++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 451 bytes .../__pycache__/aggregate.cpython-312.pyc | Bin 0 -> 2557 bytes .../__pycache__/fit_report.cpython-312.pyc | Bin 0 -> 1175 bytes .../__pycache__/hashing.cpython-312.pyc | Bin 0 -> 1585 bytes .../__pycache__/io_jsonl.cpython-312.pyc | Bin 0 -> 1600 bytes .../__pycache__/redlines.cpython-312.pyc | Bin 0 -> 3916 bytes .../__pycache__/schemas.cpython-312.pyc | Bin 0 -> 5100 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 183 bytes .../conftest.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 1787 bytes ...n_determinism.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 8546 bytes ...lassification.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 8748 bytes ...input_hashing.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 6405 bytes ...ive_injection.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 8708 bytes ...dline_scanner.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 8198 bytes ...ma_validation.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 11640 bytes ...t_mgtp_replay.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 5454 bytes ...st_smoke_mgtp.cpython-312-pytest-9.0.2.pyc | Bin 0 -> 645 bytes tests/golden/decision_golden.b64 | 1 + tests/test_mgtp_replay.py | 65 ++++++++++++++++++ 37 files changed, 210 insertions(+) create mode 100644 __pycache__/authority_gate.cpython-312.pyc create mode 100644 __pycache__/invariant_litmus.cpython-312.pyc create mode 100644 __pycache__/stop_machine.cpython-312.pyc create mode 100644 __pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc create mode 100644 __pycache__/test_invariant_litmus.cpython-312-pytest-9.0.2.pyc create mode 100644 __pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc create mode 100644 commit_gate/src/commit_gate/__pycache__/__init__.cpython-312.pyc create mode 100644 commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc create mode 100644 commit_gate/src/commit_gate/__pycache__/drift.cpython-312.pyc create mode 100644 commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc create mode 100644 commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc create mode 100644 commit_gate/tests/__pycache__/test_drift.cpython-312-pytest-9.0.2.pyc create mode 100644 examples/minimal_decision_demo.py create mode 100644 mgtp/__pycache__/__init__.cpython-312.pyc create mode 100644 mgtp/__pycache__/types.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/__init__.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/fit_report.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/hashing.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/redlines.cpython-312.pyc create mode 100644 prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc create mode 100644 prometheus/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_aggregation_determinism.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_fit_report_classification.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc create mode 100644 prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_mgtp_replay.cpython-312-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_smoke_mgtp.cpython-312-pytest-9.0.2.pyc create mode 100644 tests/golden/decision_golden.b64 create mode 100644 tests/test_mgtp_replay.py diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1a42fe5..c0f57a5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -27,3 +27,7 @@ jobs: - name: Run tests run: | pytest -q + + - name: Run MGTP decision artefact demo (check mode) + run: | + python examples/minimal_decision_demo.py diff --git a/README.md b/README.md index 3117775..0bac252 100644 --- a/README.md +++ b/README.md @@ -110,6 +110,60 @@ Deterministic, hash-bound commit authority gate — stdlib-only, no network, no - **CI:** [`commit_gate_ci.yml`](https://github.com/LalaSkye/constraint-workshop/actions/workflows/commit_gate_ci.yml) (Python 3.10/3.11/3.12 matrix) - **Proof:** Determinism + drift-fail validated across Python 3.10/3.11/3.12. +## Deterministic Decision Artefact Demo + +Proves that MGTP `DecisionRecord` serialisation is: +- **Deterministic**: same inputs → byte-identical `canonical_bytes` +- **Stable**: same bytes → same `decision_hash` (sha256) +- **Replayable**: stored golden bytes reproduce the same hash on any run + +### Input parameters + +| Field | Value | +|---|---| +| `transition_id` | `txn-0001` | +| `risk_class` | `LOW` | +| `irreversible` | `false` | +| `resource_identifier` | `res://demo/alpha` | +| `trust_boundary_crossed` | `false` | +| `override_token` | `null` | +| `timestamp` | `2026-01-01T00:00:00Z` | +| `actor_id` | `demo-actor` | +| `authority_basis` | `OWNER` | +| `tenant_id` | `tenant-001` | +| `verdict` | `APPROVED` | + +### canonical_bytes (base64) + +``` +eyJhY3Rvcl9pZCI6ImRlbW8tYWN0b3IiLCJhdXRob3JpdHlfYmFzaXMiOiJPV05FUiIsImlycmV2 +ZXJzaWJsZSI6ZmFsc2UsIm92ZXJyaWRlX3Rva2VuIjpudWxsLCJyZXNvdXJjZV9pZGVudGlmaWVy +IjoicmVzOi8vZGVtby9hbHBoYSIsInJpc2tfY2xhc3MiOiJMT1ciLCJ0ZW5hbnRfaWQiOiJ0ZW5h +bnQtMDAxIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMDowMDowMFoiLCJ0cmFuc2l0aW9uX2lk +IjoidHhuLTAwMDEiLCJ0cnVzdF9ib3VuZGFyeV9jcm9zc2VkIjpmYWxzZSwidmVyZGljdCI6IkFQ +UFJPVEVEIN0= +``` + +### decision_hash + +``` +8523083fc724b22f80fb638a2518133bf03f8c3283fbe7a0f629e04da5e01200 +``` + +### Reproduce + +```bash +python examples/minimal_decision_demo.py +``` + +### Replay test + +```bash +pytest tests/test_mgtp_replay.py -v +``` + +--- + ## Scope boundaries `/prometheus` is an **observability-only island**. It must not be imported by any execution path, gate, or pipeline code. It observes and reports; it cannot allow, hold, deny, or silence anything. diff --git a/__pycache__/authority_gate.cpython-312.pyc b/__pycache__/authority_gate.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51c709de9bd3faf49fa2e016f19a27d1c7da9211 GIT binary patch literal 2729 zcmcguO>7%Q6rNqLf8+d+K-;uQI|T|cY8(Lvs)|OcYEvRwS87vQEF^2YJB~N8ciq|9 zw6@YHpd8u*DwU8@2_aR811KE0!vP@J*N?m zjwb*}tdlhkEP-6bcoH{3@^FlZr$P8yE?@WnvT)|ixl8;xG|Ny1P6uW=5D+R?XO=wk#(RQjD8%^kNC{N`O}q z4w>}3Pllw!GwS_-g%CbFnTC7k=-4^a~`Hi;G4d#?2b0~14Y+XmDA_MWh zJwp;=%M@UNF*A}u-@3=yaq0r>fMRt|fQ19{3>MfR`(Vs&nH$C#pxd&ia20`wr@C#@ zT39-^&H-+^K!3{0WoC#D8LQ6J6ig48=?c8-ng<<{SMKNcghe4Znjhm#c-$@+ogyZ4 zjDSD_tqBlIM1;I0bBfsT3(KB+ScGL2im8ap6+p}>%bj`CiO{y$e@?zo!|{)mIc1KN zHdbknj9O?O*&Znz1d7@fM#E$srBjZenV1hH3k#kOB~{YNPfj-KEYG>aeNBKWf$b+t z;er{}*IZUD^ZgKyiwB~VBZjeBK+P4UQghEXG-X5kOE}{V5DR3rckpiZ+mVO8Z?5(q zXdOKDbMBXe4|10u<@EbGy>;qJYsh%eZ?@9r%HXRvwNH8^ag2>r!WyW{G-Dh~WR6Tj zzq4I{YT6u~tiVk|Xf?04S;7NwiVA=Q5e;>_25@n+8HH0=2D-!0xwuVmK6&8g(DtK+ zSqT6!f-`zRERc4L^gVxj{?>deF)V}k6XBb)J6e8%Y5x~mrsX3K8*XVcA3{;;6Ii!o zo5pkOXcx$q@xC2{@CoTwo5lRBUiC1g!PDHS6<8b2OS-sJ7DQ^5H=p706FbVrQOc?= zqgX&UiQ7CB=J3A&o#ew1NANlvMC}j?S(_5jYkvh{z!D>-t{(t?z`L?cI_02^|VzrdhlN2DS>V+5*pfx zWOVp$rA?sw`q(;lGETWPK6$|#$Ka0&Mmb?@ pMNyupQAPW!hbV*Vv8d8>^V&LrZoMxO=+OP09#)2*5)d+me*v#%l|ujk literal 0 HcmV?d00001 diff --git a/__pycache__/invariant_litmus.cpython-312.pyc b/__pycache__/invariant_litmus.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d93d1bb731c9a56f1045f0881f7cd270fdf1ce2 GIT binary patch literal 4091 zcmcH+U2GG{d3U}3iT`5f7g9KeD+h5&oB*Y8Cpa1sCxHXQC4rMnsBhz$*qhk9?(CW* zmZQ2YCnY^3QWXiLqZPXLfr@)TY9IR6hgMakz9bh;xGPSIT3&cdNuGE(`pwwua1r9E z9m(H(^UXK2^ZkGRMTs36luYlYZu#gb2h^4HU5Mg#?rJN(- z5E)I*$~kAkDGHJ>Bw*)t0lSFffunjp;o?*`P(8$1r@GSuZuneGcwqLz+>jBl@3&&Y zD+xrLYO^1)HDmt+v38>$2ND4sOayUbq7jD@Asi-Q+(epiGijc5;g;)iqJ`6%iF;DU zt*~yLlOk<}HMl|5t|?SiG&7l1&0N7i|0>@?1H>dWr)sKUswtG$4YNQAN@W$pP$yMF zqh4>ny)ckTW=*!K<_x45Xt-}=AbBQ!xo_l5UwjO8&M4Vz1nCs@Ul<)r_Fo#g97CN( zR?m}&cS11;M!JUb844)MDP}68YH6fs7*UcYvr&ZNIy!%@I#ZzQIgJ=b)C*+zFrk`~ zMVRD?hKZI^iGe1_oDRo7rsU(O_ZibtJR(|hOe^GI_QsVQ!DEGdmZaF8J!J#tmM59i;0?*7<(Qq4$1u@R(z*R!jsevRN_ zs7BE9CI|pgyNyx=N?5@ln}GnRX|CX6*vwG9kj~@_kRte%mdAisEAUv$Yosy++#dqI z7=XCXqe4DS6-ZoPcXO`kF}N|SrQvNbmQUHppVLS9_=`ZBxGj_*SW04tFl8qu&Qt{tYWS2LXs_9umrQmeA0^4I7Fe1d2gi1nB<#R&yC#;T zd57t?In4$eD>>{lCa;Q&UWB*U)KMWK7mxR6NNO5QLUz|k)#PXfY@llBFoK+eSvH1U zg1Fo)QG##iS~UKQiT>=HmoHyJK6UZ{0OjPN2w9FS(JXmF*Rz(xASQ%tJT}xfcIHAn z`O$@ufzgOe_rqa&006i!C6nr`<(h%G(Ps=9hzJH{0c-`58O2E2Pov)l+Hv?99{?x| zYk~06{-vV}pb(UkP=u`l8EnlqZ1HtA=6<<;MIQ$az~Z>w6`^tQ-A74Kwy`nF@`M>wvEq(U)Rn0GqEI0v2?d>*p4y}t;)QV7QoajAM!CETs?+t%?GiLG~FQ zlwtF2dp)(!#A-r{nt63-#!m97s>K;@`5M9>(r;2YuD4Z1<}Y9Z&D!RG8jyl8jvP7g!B znKGdhtX1$Rzh#tFb@cv8)EhmDazxR#_mEGpW@uHkT(cN_7h50nlpO(goa* zxp?Duad@O}G&X9EHBUy11yd$CzNsxN8Hu)%bvL<9wcJk z!dng%&vMZXmIIkLz^G(fhT~`n9lo(`E-9^gRRzs V?}#6YOGnlPHs3k1$!D&>{{n)e52*kE literal 0 HcmV?d00001 diff --git a/__pycache__/stop_machine.cpython-312.pyc b/__pycache__/stop_machine.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81d68253276e43e56f1676da189f9b2456f8cc51 GIT binary patch literal 2963 zcmcImO>7fa5Pth>$4&xCXlMv&x6n{FZX8shRti-lAP%%qj2aM?d|7S0FUcnMu6er# z*-5KVMJf@h2vVhhN(JquM5#oN9NSBK=q13R)Z$RJz0i}3k&rl4o!Rv|Hc1XW^d08C znKwIc-pn`i_UD$C2!V0tpRdh|M93e=1VgSaDu2OZg%~7749?&)T$WGqSs^8GgeND6 zAuJL@r2LxT>!(C2&UjV>L;eiX=0*u}+e%wE>zaHjytQqE+uDvHfqV-~hHMI{CeQm2 zcpqNl{nJvBLX#TF{|KDp+Bq$&r>9Me#&ZSb_l3`uql!UY%Ce?qIk+-XK>zvJpI zRZw3E^dpheD0Bvu6XS_QQt2O3j*cBmjN@WFF{~W)t>_sw9zou86q7M}o-)Ur$k4cw zv=wL8%;ijLN}15pvlnz`IPnOGr!w}0o`K`QzNhD!S*m30DKqV{b`Aulqr0YU#UqdL zUMgP_6IMQ367{@mr~Rw?w0dt+c^mi@LP?5)Jo7xE!dg`?B{pzU11A?aur7JGO{$?% zSko*$OEs+&(X^~>%~%5e%0kFEAy^3rk6WAgq!Kp7{K|foVHS2Uy;+ zC>yw7v)O^PZ8H;_g0YxB;_BMXUOinLxnaPc@p zjCh)lIaoc$ur$O8ea2Bq0@;X@!KDNvVu*_(pk6X~Do^r;v?$hM7lK_GcEd)9$_8%; zlcEs@z6s<_Fh>f48ZAXn19--KtQC9D)S)T>l!qEXNr0PpNoLf|Gb@=!hl7EBV;NTB zKvsww$jMBQ=$eF(d7{;%1+vN|Rl$!K7H>(`JczAwCDEaoNe7Qn*bdx+Btr$bnpWIZ z=XgAj?gbsE1;_$<)Y-inaVLtAA1={ zy(^OEWU;N@4^Q+eDq_D`AiwSCxH7jiw;tZJ*#|t|^I;Jd+xg(u!ZZ`$0JMWKdl3AJ zx}ktKxV36ZKH=POAl>?QU9b&l2$V>HSB0WFW}m0Zq|LDC72CqzLUYwt(m&)?O#cv6 zOuTsTxNcdttLVmg-Acnp%+4ZI25Ug6Hj1Pw`2qAw0^?GOoYgaVnqbUkkkOG-;~yR! zAKnz;P}Ov?qdvq{;eN2=Ak-kp(H&QgEFHPgdsDrx-jD8o)V_DU=fs2dlk3eVA9cQR z&AmByeePaotOkXW?CNZay6IYQ!43w|OUJjcsK@U-hoRcQGlaALJJ`d4Ip4(^xZ2YL!h74=2X`)V~5ZEQ#2JRi0s}*lR!>jH6Pm?3N94nrj!k z>T}+(rQ(-ofh>?eqixFvmWFPey*2#J=vSlndJf%>9)k2gY*%l;ekZmX`=xL2Uf8W)&M z%9K1~jjhiUy#?A1CTN?gOgv~GS#KVBu{Q%KcELwUHOjCI8ODJ%0V#zv&9Kv&#;{SB z!Z~K=D02(`V}aeCDM)&eynzIpzt?NM_kwjGiv&UE90LN+usBc=IcZ;6CUR?;=cMlC z{1XCGMF<2HS(M%^H;1I2TZuA(>9$e9>1n$t?eoo}QFItuFhHBaKMq5nc)u7MZyCeq zpJCHu_$)ANTfS3`jy?~+>;JM0u^6aec{|fU$^yr6fAbP2K5Hf1-lwv_wOty1N?0eORd=vlx literal 0 HcmV?d00001 diff --git a/__pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..570ef8df0543d29b43e2448feaf3def7724b565e GIT binary patch literal 15029 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 OpzglE&94sg`~ENS`})iP literal 0 HcmV?d00001 diff --git a/__pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..968677c1ae65c77b0971fea635557b6d8e670e4e GIT binary patch literal 8582 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 literal 0 HcmV?d00001 diff --git a/commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc b/commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3186644c56d8ab06f183ba2ead9f8849be61a07 GIT binary patch literal 1240 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 VLEoiDs9k!1;&!JfhU&BQ{tGI1ekuR} literal 0 HcmV?d00001 diff --git a/commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc b/commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ccfdcb328ed53eaad33894460f8b210698dc0b3f GIT binary patch literal 4202 zcmai1T}&I<6~5#7@y{4+uyKH}o5|)66V^aB8}ipQX+n}_*{}kV?2=T|iD$q=Y>#_q z9AY$9U8xU5n<_-A1X8yW>JuxXipQu=Ri7gD1s0-sN2#=GSE}}nK%|xOQ1#pyk8Mzr zy~vmQcka3Op6`6;%s(3%0tm|J|Nf%>A%xI>NXIRnN@Hsj8gocSV@RfCPnsH|;6I)A zWau%PLNX(>X(q#tu^DEJfj&3J$==_iF|X`{+9&&=_R9gN12PXaF9)Fx7CiBW{6App z^I9gO8p0*XP=tZ(gql@^f0zC!$cmxhjG9$-Lrn^I6)dYsL%@ozrSpcWWfOtGaJ3_7 zSXS`KKwkpnvV}AV2^q;qri7oJ5rzjYUK<$*97zbuyWRWX`^oEAIM8xjZ+r$nPjAXpr9A`SdB?3t7TQ# zOiW37$_iHds;*4ay@|f0`@}?^fgcUOtzSbmhfFj{_SsRED*X%SSGy6q1@c8tkv6GG zBDtfOo~6nTCVi(LA)R`#n?ePOLGbkS^vJMc*S zCd6zEo{qpY#C2QrvEK6w2GE0xGS{TZu;a-q+|;=LR_TiV$G8jT`*FL3zmfClahvpMOC(f&;p+llW9rUE#5|# zV}#L*aS!&xeQjIBIR`V&uDF?u6Z=>pDQ~1StQrN!f)+!dg`+U1b5IfZ2m)>-Yk6^8 z&C1U9xD`ggTad0n1r`psZz3<-I>VIt(8J^RkI!CN`RU*{M?WXCvG%#tqttwH@%CD*Z-#%tx6L13`0X>k|J%r} zjS%d=5k|o#90r}qdQT=twQ*rUV-6YBIn$=s$MjOgCLg0BRkP1zJ+?rS6tjw%qz7mi z{#*-EXawy;ecVLnPQ!-a`wZE^qQ-TCFxMDC zGAR;cfi}DsW;)@g_d-=d-}@V8Z=9cQS62K65Gbz(!(!`a%Vn=|Fr%(JMucl=io>eAxfhuUX zClv@UoyxsrI!|sW7-|OSPRiusiLco@7F=Rl}F zRFFroA>@Nma#x2giXLd$Bmf}+$uyyZB2x!2@*WVcZJJ=9#gf)zZmIH)+v&iiqartf zie97o)(~vGAhx5(-ia!$IPbnx0W6NnzM{|cP7)8_QDncXg+ke>pVSd}hYtR&I)ZgN z27XdU!#i{|zEwx4PDkV&_YK$98NB-#rq>-UdVz-Ft>mV!=%T;o{ATr?iUBfj229Qf zy7F?fjqr#B;T;W-cuG-YwMAdN)Ye&H=;Q$-3L#kL+1rwmT09Wo1FjkuU){Mb!btypc@U@)Zu* zb`Up{>#k;g-SsIP2~B!Mx*AJt-^Kgk0r3G+5udeuZsurlPR3|8x+6{?vHaDv(PHg% z5n__7zOp1x%N{MCn>AYD+Gu4RY;9+ezzO4dT>(1vR$kfiR&rf3A_2MTaTXsXr~H_l zvO!jos!jr_lT^B#V)w!lHelbRA;KPHQQT`24JO`e$3Z*JTAY*v?v^c1*FZqF!smuZ z2QHpFKPp}y7#{iM(A78(>8q1IRgdKo`1V({c=rT^)gWDQ&S{_63RVwGCXd0SPEcP5 z0ViDhlnQF`S(rXS)_nw623l-H;rHh!S3~jA<#J^2LSi-2R~jtG_OBc`wi@d%4ZY$} zWPiD-t=zJ=3@Zz(;dr_APPKOCoJ^lH*|7N+lt!`=OGhe*6v||ykwH#T#{3QK!Xx)FS+}u&OH2%!j_1$(o z>%LC7OQ>b`#+O>@(uNO3_mEf+X@BWuqFib4RRFc@TR6QI?Ja!@SBUN=vuy_Vo?wL2%qS3nlSPyY-mNN}23W+&I0_Li=cna1Z#bd`zD zk1k$VVWR6yUzu-NY42J*y_k5yuC$(6<LyhRTf35ttR%nFElImOinQ zfp~-E6-8M~iXtZI19=-Gl~!-t*S7ELc>F1H6!L-N_&!O!96mTpTJ}K?k`_r)ZBKmd zJDt&F$kfi@Phkvv5b39(+Mp?ldg<{}%vLj^g8xFT|3$|L4BJ*vc#~tP@MbtbHEp)j WRL5q}M{%36V-&ZADK8bacmF>M!YT;> literal 0 HcmV?d00001 diff --git a/commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc b/commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..10f216a9c03fe177cc7c200c18a4907f077cfc96 GIT binary patch literal 14367 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 E4^ig<(EtDd literal 0 HcmV?d00001 diff --git a/examples/minimal_decision_demo.py b/examples/minimal_decision_demo.py new file mode 100644 index 0000000..c950281 --- /dev/null +++ b/examples/minimal_decision_demo.py @@ -0,0 +1,48 @@ +"""Minimal MGTP decision artefact demonstration. + +Proves: +1. Deterministic canonicalisation: same inputs produce byte-identical output. +2. Stable decision_hash: sha256 of canonical_bytes is invariant. +3. Replayable decision reconstruction. + +No randomness. Fixed timestamps. Fixed inputs. +Run with: python examples/minimal_decision_demo.py +""" + +import base64 +import sys +from pathlib import Path + +# Allow running from repo root without installing the package. +sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) + +from mgtp.types import DecisionRecord + +# --------------------------------------------------------------------------- +# Fixed inputs — never change these; they anchor the golden artefact. +# --------------------------------------------------------------------------- +RECORD = DecisionRecord( + transition_id="txn-0001", + risk_class="LOW", + irreversible=False, + resource_identifier="res://demo/alpha", + trust_boundary_crossed=False, + override_token=None, + timestamp="2026-01-01T00:00:00Z", + actor_id="demo-actor", + authority_basis="OWNER", + tenant_id="tenant-001", + verdict="APPROVED", +) + +# --------------------------------------------------------------------------- +# Derive artefact +# --------------------------------------------------------------------------- +canonical = RECORD.canonical_bytes() +b64 = base64.b64encode(canonical).decode("ascii") +h = RECORD.decision_hash() + +print("=== MGTP Minimal Decision Artefact ===") +print(f"verdict : {RECORD.verdict}") +print(f"canonical_bytes : {b64}") +print(f"decision_hash : {h}") diff --git a/mgtp/__pycache__/__init__.cpython-312.pyc b/mgtp/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d34860ea203e2ab5ba2fdba1f41d00802cdcbefa GIT binary patch literal 171 zcmX@j%ge<81R?(xW%2{*#~=2KczG$ Y)vkyYXfz`b7lRldnHd=wiCY-IxX2Ij!%GiOkCnBKB>gLQc>hMQAt3b@JUszs0zwd zU#sdBUDBGLtfnd{g(S!larKA9P0}>gpJ?&Qm5k)4fS*3Y&n5^}-OSVM6D8J^dO6U` zKS{)#CvitAxpQ?3pj-TjZvI@|66p5*M7PjT%>Mu4E@e{@8P|?%$G16$fwmCTtI(%c zYmpZQw(qnLBfIvI$?-T09}`N@RA45hqPmHS=BgFl)hfw`ZYD)$&Et3Ha9N?=TK!xk zR~F`%H&=vqb9w2eNYAY;Z!FKv-YT0Zk+!VBu2RbqS<9-1Zrw*ZZ&_c|Z9kT{1CrNEGdp3G&aiqAP&RWfWOrwrFyIlhy&#&xG2aPm=kls|qS{Q}OfKWuZfG~uB$7Cf0 zd8&S-20MT(jx4xHX>|W)t2na1)arlt>rZ2CRNMe}C%0L+M}srhQ9*|7xB~FzI-3x` zRCAS&flGCu5|T;+rAi8=T9>CwDn->%)Ysf(S0{y3BW-3*8)S`sQKvi-1@K}FSMWi#DlVxd9=iIQd6K@dhZdW&0@3=g4gg`v-MIDfC@@sS%b-K;Oqa@bsa%)JBjpxodOP73A8M5h&>GMs zptFrWvtJbFspD~og*EDg%(XL+5|^vhdSpW|8cZ^caNDpA?ge*%wX(Ev+jtYqhTEP$ zoy{81=IkI0JjeD8PMK%>9+#1J-QXdMs5^C+HjGc#SId`;AT;jncoF3_+o6|@&5gyW zYtwR#&XU%S&39ntj(z3ouZ(}38A^Ya-DbPk6(dpyJAaFK|zsuy@X@|<`jHU{Qn?;wmLyo)e_@E(GJ@FBuS z2$ujv3Ld2EIgv;*8r50gbV>{e307&$LdW+39+Rjm+ih1$V0T-D&r!DBPId1vp#PF| z>aDA|30Hlpbt?5PCi|Y|>K*NMVkY-~zb4Q2#(dHxhP0t^DfW~Bp5o_w$(-IW6R(xa zua)bIrYbTx!9sPB<+Nrq8{Q%pc^dFKqn6Db&)d`M(e~6eC>Gi-4+EjQ^=gfaT(?wH zE|NBnEeCl!bm@0cygBu^Ia>;%7)Y&;{ac z4*Zhrc3lYS?bi7WbsVybMY^YTbii54-f!B@I`s@(?+#@7x4s5b6DfQ`zPBZk@pN__ zwh|e5OYs`)8jMd{xNzq2?Tz=?_l$HA=l&c3tvmefSC76rbe~ULc{XvSIq|Dz>FV>+ zjc27B&C=}O)3ef+Wi!{4fkn!)+|YqKGzsg(sTfz3wMghPBITLc4dnJ@>0clZ0iPa6 zpL|1JX}X?1Dv}E$vPKO)Sba;0dQfhiN$fB#^gXzBq^0z+zYHA{=#B;w`X|aEKOxx1 z6%DsFiwuK{VU}gTM8Mz>8ihY6!&nhX_=`c_iA$@zqWqJ||BNiHSU%(xdhYf*{c-$p z{2iMI6?_By0N_Yf6y*gOctMIUNbV(>d`X60l6Ov$nlg5v9&DTtAWn*^GI6LL!U%|0 zd6LK-y#Ehn bytes: + """Return canonical JSON bytes (sorted keys, no whitespace, UTF-8).""" + return json.dumps( + dataclasses.asdict(self), + sort_keys=True, + separators=(",", ":"), + ensure_ascii=False, + ).encode("utf-8") + + def decision_hash(self) -> str: + """Return sha256 hex digest (lower-case) of canonical_bytes.""" + return hashlib.sha256(self.canonical_bytes()).hexdigest() diff --git a/prometheus/src/prometheus/__pycache__/__init__.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09102d517af81013ceddf3e86c8f63932d4d3b77 GIT binary patch literal 451 zcmZuuJx{|h5KUUDqLhMIm~Sm=?Xn{zc2pr?>SCqwNwJ#vBHIb18^3~`jlTl_peqYw zQMV2Vhc7YohV%2Y&hOpbOTQllK5jl9)tf(Go6B#6KVZG*!9yT}X&}RCShoi4#q*`1 z99@c~g>y}LoYin$nhI+&P>tCMi=r!x<%o1v4?&_slPj&PQwh+_qN(DU%9N`?*(}zQ zMH2$N!=!YIG{mJ#$@pgmp0`PgvdqxfA(&F@FW`kF78%u$63s1(E>wjU8bK(vL<79| zGs%xZX-G(0XJVz@=$6dfrc|(K(P`|CCxh0qD}LOccQW)Pc{r@m$W zt=sg@ OYCkwQy6>5eXFmbbjgxo) literal 0 HcmV?d00001 diff --git a/prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7b861e73a1fe9ae283259d8acac6e20e05561a7e GIT binary patch literal 2557 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 ZC@R**afIjpM6q!=h8M<5G5n@){Xc*@fOG%= literal 0 HcmV?d00001 diff --git a/prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e95053bc1b35320c17681e3f5b05a5306b59c05 GIT binary patch literal 1600 zcmZux-)kd99G}@A*&mnKR&7tH!pdEhC{4I4$0>S3wSsy_54?(8K*Bb&xon#3#+eDZ zlnqo6>_Oog6oMdFeCnA#+`rIgUxc$z)_V|qI-lB$P{@P$olQ20hqL7SYd$mc&38WE z`6ZPy5sbBeescek5c*R%@c=&>y^Ekah@c!Im`D|z!;zM95|O_~IhiORm8O(dH&;Ko zb#wKG^>Oy5Rp)NS<*vgrrunI36J`zOif+YWmhBO%L0t|eakxXPuIDoD79x=4*LkhZ zGv*VKz-j?Uc?^UGN`_zWR}dX^2emLC%?DA22Xa>+U|c~hDUeps7jGlfk^{Lsj1Oi9 zvO9EIN}w>jGZ)~pIypbExi~i(Wj(gWI#9a99Ab^p&N~V+5K+X}9o7<~0N+9v&?Urh zL&E4b!tjaMUHLX@V5s1tsFh_;6f3F~b$Fe65U)U)EWcB@#I�d2#Wr2RPIn zuiz8cyR({BL&dK-UZ^ro-CCHiYv7SkDKj5}6(6ocU}`omg(}=am4&z%DizmrLOohj za|jc4u*B$>vL(OjWNF>=9GY$TbR%2vJpkIS#}|dqN`CEsV>JpZdC94>EZjC{*-R$O zXdychcm2FbtdglULzBY)AGq`dIA8FSIUu&sAIayoK74GXw#n`Xd$0dyym5jQb!p!| zesT6Gl8vS9mE-gCoz3>Df-Qo%~_#$K3b1ef`lZmyV_{pK5?SlVRbB ziIOv0H_pzD?LM1^liDvW&&xl*2I6pDU0%=%aVNkW8u2dyH{L;G?v*D|0ttf;6v(nN zGDk*v#HmpT1t?|^!3WZqH{6IZz;Wof19g(){9HU+PR7<)2RM+RV-p8jcbElmPAX50 z5wS(|_;iejA--`2P2*YKHjN=`&CS;5qL+c5f|eHdhXl4nvs(?9m!9eJqED+f=fG8X z9R$NZWAG9%pYr^M(`47yXdQNgH^TLZSJQeZ`7G3{_J%`T%4iDEp$4XBR~;%Eor=na z3aM9Xp&C6{X?XyX{q-^xHDodf$bvpEpk@S$2uxpvz^p*zL2RMFO{8kyT>t9&cTz`d zYn`d~)SmKadf}mRq+IzguO)SE-+rto?;H1w-3z;4?yWqWIntMob>qHvPuo>?QfDe) z&Jc)GA^J>Q{Gt5j@>Tips`@_Cpue?zp7@1)KKc`M9sp5GMR`3yJ@8SKbYFkB>XUlK od51f=vJil7WOx%m&KKN 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 VcLliU!MS!WbnpYNoqL1H_#gGU;cx%| literal 0 HcmV?d00001 diff --git a/prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2c32ed0aec2ad74818b4c2a06a6726e7dcee0cd7 GIT binary patch literal 5100 zcmdT|-%}gM9pBTPejuHYgaBh%kn<0Sl>l-K_y>*M62Pfze#FRi#yI3g)*a|Ty2E=X zyC|aLWI7#im@%GC$6_4UYLf>t_5+>CL;rxj_2mfCRJq~7o#v%)1n0>Qo$j7=(m}v= zJJW~Wj8?1t{@lIY&-b(Xi`(r4=(+OGKM1r3fWPA(#zU1m&p$z(2Y>_PfFn3df*2<( zfVac}M}AH`Axc`~WO5M2` zLb$<5Vq&h78Ic$zEk>kafz{{P^E5cMFOw2yMCrE3%(ZzIb{A84+UjTbE1x@u*%#lpKkl`1MZ{l`3}^cEVozm zey^z=KNc%5KF$Z=U?loHe+RV>z!aD#l!`n96bn|u&y#Xbw&K@0MNC>EK(Ur&0A#?l z-RM`ppOm}CYf~JCERA08yd`6S%^70aWsFw8IZ|;OzcLoX{vmi&=@WpX2EfE2SN)0YD2tMPy^$Gu1Bdrnt=j4yP%8R{x1H~k^Ps&DuIvSX_kua=47qpKkXQ=t z9Ubo&&THOpOK(v?Ibh_Ssel;gn>mh7fPNxEb?LFIC7j`zC?gBvRDw4_4JX7D1TGAE z#&{(KMVUD+&Ga%iBq`BehKgP$A;`*gS%DLwPF?jv+OHpTMvxg%LV(3!KQC&{Skudd ztdK_8L3|J)K4}miEQo>hMPpKsaWV|#Z>9vua~Pj`8CZja>E^wKWzcrh}1=G2L|nA?I9XA~F}5;&Q0J;U@t1I>Qu zqv;1CN#q%6k_nNe$?Eger|A2EHN=n=qBW<0rYxRm6>FeQpS4BwXEOc*URiWL<^ zr33$#nC?j&EttGWo!9-|-vgr=$6n z&UL!;&fqt8y6C9A=U#MYYrnX)%6~qelhnpjdB^Ezo`G#(vGy*IMOW=|?C$v@U3YJI zaaawWTM-@MXfpd^k-}GpU(dA zmw#6B?L!rv?!2StnccM@fBey==V10|mRkvZ5y^W(Mxa2rK%dz3wfxn0Y~6P(7g??U z{k6O=ToIqo(?5P@_bo@(?M)>Q(<|YpU3pJcrKdojD!RSPfkifdtY_WbV;Bd!zq*=# zdw8Q~MC~3`1MlVO%g;O~@q~Ly6Fz#k_p|9$|7zsRrmwmREvL(d*+_O!J$zCPbQS1s zJo}#S9RLNeeR?VT);b-`PO7d}m1=#C-V4}KrE#6rtMpyeDOG7ysVy0RQ13KGJrmZE z210&-w*NdeZ_QA8jl=f4o=ioT086bI%k-W)8SA8}>Mot75Y}ZZxc-NT^i31mVc5cF zv&yXSVMEksC*JAXu?%upVWOQ8MDw7MnoaQ6v8cTYg%buChAjH#g^g%3A)7{_gC=WM z-Cnbo9l>TK)GX4BMxi4p%b4ZhL&q@iFqYKo>QTjfBxLvo5~0-u@>SI6XTt5dGgw3i zzHzyWwC~=~;!xIKpqro3{(B>fBia63efCEM z`t>arve}{m?OT3*;k-&6gh!F<62o)e7DP_E&0?r=Dbg%kVtcYimjwv1prX~rq?D-0 z?2S2{s2pddNmdYNQ-~ziRpka&?$|mQAoZ>DJJkMv5xgp0d}X3X?Md{k{}Xax z+f5EQJBkDUEeRk8+K1ljuE(I;D2omNjN@;D2CGtMm>AR& z5ugJviC&YT9$Gl(Bgz031QcNkEGdXSyL58+Ta$k@rqiq{Su4*~-jBf2Rlnk_iCmRE z8B#POwmc)-yxkPhz6bek+7|i; zJ0e99dBlsOKPK{6XCjaO^yRA+@+j`Qlj^iP1g+&6TMjr@Fg zxNq#5PU-Yo0Wo!lO<2n+D11`ZNR+om;i{$8@M0>-LsSu95NU)QdIfN|rLaUxe<-l!#fRsR?lAhun=c_;ooZuP^@LSNco*U7 zTBo~SM!3H99D8-b<^2iq-;fnV)x2l6f!*3qRA|nozd0Mr9bJh(rSkrcqPOvZ`@TEp z&slS<+R{_-o_ZF1Ek~~W^zq2b$VRXoh4u9l_Xn2ymTztzYRyHT`U{6TicKw#-79WH zn5?UpS8uNJYv(m{*=pmx(rqpI8~ree;aJg z#a27k+sa2gBTx~85tRin1L(+;J`Af literal 0 HcmV?d00001 diff --git a/prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a145f2b94b5c861d049ea63c2231e02e5b5dea29 GIT binary patch literal 1787 zcmcgs&1)M+6rWwKwX1K{b<%{U$s7zpi7inQ5+9tZrFF3nt%K}*u$N_{9idgE-DPGJ zS-!-k0pnAwlPoBx^yK18kNzKeaZwLudMV`8n}Q30971MRT1gZedT2W^Z{EC*dGGh$ z+x;bxhyuRW-~DK>h5&daF2R}_GN+eh0NTI;I5u1dP>pP`yklqFD`(!m6_nd@mcw3%m>^#mX`zl_(X|AX>hYbmU77R7E4c}B+|}`_DsT8&el|} z4SXl5C86XYM=X{E&dKWE%YSN=fBL_U6`;~TK#|Jq0O2IH!Y{z#P@sQ!j*U8DGt-na z+U5^yWfLO{mh25$$B01Fv7l$tG9-xBJy>!vypP=)qGePkkRn1!HX2=Wh;L1BF$Zk| zT?djT$qpP{XjZGfDXh6xy~6XI6ubeI}-CjjJvgmT%8!eo~)MU;W5+{b4U#@8#4*B=y?){L)K3O|8U z5$Wy2T$xujhwF}maIWFvr@5l*5QGVJYK& zVfCA(_2s1pehIPo?fF^bxX>rZ1@S?rx$p|#XM)c6VmFVKo4$MI0#gmca*Kw+v?q1D zN^OU*_~%~J7~L)#Uem9wNeIH!cAYFn4Qx}yA|nw~16hOATi z9pm6}?~^-6%2B14UfD{VOwY8hx30J6T66oj+vqg9&pXc#HhR|h{&wvMk*=4FNgb7hFF&A)oW*!eY*E+^GeeY_l$Ort zx@1LDNH(2ItJ&VKa7YtNTyL-8Q^|CcGY(GYvxNmskuIfka{iKZk>sE6z+8-Vu_WhpsEVgC|e+ zU4?o)%J-wgYL+&`%mvJLURvg4zUqOC?kwy#fOuQ9*?R7EXNw#Q<8fzEr%j2ot;?bN9(kw7W}T6j7~3ZCYS!!B(S(tP zJXY)J`fRIv=<&AR|J=RsJ0lN&Yxjb+ZSHw598I_v;XT$kU|ZcoFKFw5FAgukTU-vI zM=piZES17qr~UkTEInYCxz|$Iwq#%5Vr6ELEpzbq!Jmh}0DnLH1La_mi8f7;AQ&L+ zK#V|YYC4|ipNz8LdhR6o;Z}_!kz_b)pNogk1!TRTPV= zz4Ah~poYs4ROyeZN4gw~C$Q*fRE>tqT_;Q%@j=@Na+Z~N+$jXkDm=c;bR2r!ZaY3e zjT`)&n$H=W8i#)(8a8}|Vhl+FNk5XKNQRIcH~2y^9;Y-x=>VmJOU)@&RftCC8b20Q zY4NdW1M%aUHAydzKKH`2XQi`0K07h_GC7EaemZ$0e6mo)m?Wi$(JD=+G8u^|1%eST zMHHg}s->xgbVf_(AU0+4prIQ3C3QBxkddjXG?U3sr7}`3l~s(8q^2$^Xu)V2rDKBd zdX|tpG1?`Fy4jQ_DT{?nDn|ovR3wNM$PaKtBKBoYB<>XkyuzS4Bugz;BlXuvN4?FC znN{Wp;zKpkaaDxwyWHd6T;FUytMrkDTuvc+;a7zO^?!KL>dZU&*KbPQzD_9`(SF%$0lqK782513q|<6RiVTJm90# zW52=f$-UNuaCani0FA2&VT1Qrt*7gP4gZH64FEg>_7ZP}1Haa4kHKT99vE;!rM;3? zIPd{16ksjce`777jb|;raO6K*ODC{G2;O}y9Zguv&>p(q$y!1f4O?M!KirvhcBu^` z90Wl-yg~dk{B#Gi&XI>eha3WOugMcxARdw~tf7(Er{v^lm>{+%0Ja&@jpRurN09U& z=|$3qB!(moWIaGmB7Yi)*F`5t!YMKRwB`6sVNk`rgXyHnQ>eL*#;u)uGIAbjakHx4 z00KU;^~q}!)z+upys&(BrT=zEx6XI39MwCzD`NK+kLN9`z?2+X!D3UYy6h(34Q(AI zhXL)|Z4sT1tn}+`k%}1E;_aF{CvX&~tNt!Id90ox@MSg_jB$81ir;v0ZISnKlGQH1zIv#Qc+U)Qmt<;Ms*@9NI z@;l@L=%Mp-{m0s=YHQ#BoBzOk0zSES7lA@vk!E&eUiQn76M>8y%E51zXMEo5PYHYm z`~*9HQf5mK`p^r@VM;}$5Y&TZA7pxb6d>^>Ud?!(!+LK|Lx~4~)QD}|pzdi?C!^%% zLiW&eG7)l<1!Me>RctBwEf^DUVVK8KJ%8rxqqo5r+|@#MYuj41T5Hkvy4SF1$U6sz`{YpKb>F5XSLi2a!IoKK0y=AdZVE#xMnh{0?uB=r`N2GirpV-V(0mO3>RWUR z{KdY5`r%_6WBMyU)93Sdz{#+q+}{}{bc(xeR-MydmGn#js(#6yqE)ANtGW~9n*z&Y z{|Gaow$;b=gE2jE{>I}~;l<_A+hW7Y>lN|A%cB+X;meBv@^rp`?HmwYjI5ojhydyE zyk!-bQk6<3e-rgh)=NR9*7l`}_=L_MS&IYF#V6L{74gUxkLN9`z?7;~GWnaRZ?awr zDz&!FaVOTsbUuOO9;=9nEgsKXR)Hy1sbumudC)gmFWux5y8zS8ZNPMw&j`+b3IYj_ zj$zJ$M<7^-4KQsdTV`DcU2?!pEj)t{0FP**ZDFns)RFyk4<0~J=Y|+Ls5xM9t`0=B z#{wS!Iz9I5?Qxxv0YGy{Qs;A=I|l%0@cHY$M{vMnx6TMO2dvvG2cIBz9m&oX2pRwT zYqI;O-M}x0KIE;uL|7I*c?su(r^gZ^&22|%mkj_o?FLUunmi9}jV9_fRcWe7KjqmT zIJRw<4O?h4Hw}!HEr#T82w%8a|VTY~|0fRSL;{B4lv&ub?_@*pD1;$;mk&UeA4O2Z%mIL3HgB(9FE;vt=-W zn}7AsKwwKQw7%a9URxi2L4WC$s_^Ra=;vbdDyz30uCzR|)e@<+M5-;_Rq@H?GoQB~ zxcumEM|A$s%E0PKMLe{{SbS4N*_c=-MJwjd2%f)i_ig z*1J#M7}u3~eX#^p7q|&p^*jgRx{X_I`nt)-KFfaH;A5i}391>2ZFxMWFb%L27o8!$*XlqL{dT1y2gB=<5J?~L)ll0@n!cPtn{JXmHMK zorhUtF(QUMA7T8w#O`#y(R^E>eWbmxZDbqNV{Zy09Y!2zr=bAtG7>sa)RBps~gpXW7gc#eWJ;c|8vkhNTy4f+5vl@oN%X5!-t;L2v{|bR;M8 zL1bQLO>43t*P@Q>L?;glLM`UR?ub^@_7*@8COkc+&8QJ|Vq>Ba!&YMw@5zYUajrGN zKL##<`@F|j1Z!8QfBHd%)PS}9D*vaDaEliIvCnL5Q50c5!CN$G;|RR>P4vVq>PcJF zi)>L(-lATV>lwbx{b?%yQA=)`2826AzX*A2`&*X z39blSGF-7*bXrKO!;kSFNYGH`WLK@|`JAC;OH)PLZOs+K)ox-M`CQS2kGN>$iq|}? z9bBuLv&S{CkkOoBm_;{ne&~w!>i5o_9i9`PNP~lO;>>Tqey}{9IhwYTH#nCXOd$)h zgQ2koQP!8Xj-+_!bVgKs48={SLLZ+9x2m5KeSR`+rIWSPAR9N+pSB2E$Xwiwz%-Eb zAvuQR1d@}kjFYCc|4BPoya}dH=YKqHQStG)1ntC4e!DzvgQw7R;&y0RJ)cKwC)rY= ztP|61fyWv;0y|f<+*rN@8kW0Lv&KtP;2cm@yOuAF>UpiG7fd&yS^AiXVz=!q9T(ip zIYLUr?ZTBV=(c8FFX#0lbwG0oSH%(76f@yUf4FiyTp0*gPO&L^9rV@JGOWgi%^a(% zov;$HhACd2P6BEb5Y^4{siQv@F?~2qFhk8a&2$L4yXts@s9i{_4<`3)S$b&aG0IZWKh zi%51OIRK>IbC4boxjTG=rVhNSlOn_$iyViC7z%yE2Ai%ebO3pP+@fIu1;Z8>IzV8U zt14J}ZE>Q86!?kSl3H7n@%NBRSkX0-Bsm46b;0GEHN@*G#_KA^>ne@c)y8;T zU7W1qLyXteCAGRHZ09^*CVCz09s zgFc^|HT*N{OVj<`^LYL5-`_#J#?+h)AfZ7U<25;nf3IBdk95x$AjbX;jj#}i+%bUd+1H2&X<+DShhSB;i0 zB^_@aCVgni{YbuG8$Z%$t05U+f@b`f{9|a94HDO#ZqQ3{s$`K~eX*HCZBnghh@klT*uN~l{J~mgA z!8}BYiAJ3$V4@d4+dKdbje2`rF@%XKHX;eMOf=b3@;OjUG(b<$vo;hPQ6^e=vI>}J z(4q;Nx3L9aqKc8&@{GDe{WqCWkT#RBW|Nr&nlOW~n`x#Sps1hucENutG|OiF`6#N9 z{KDSc-w15_=DsGpIqb3T#V8^hGg^#RC+6X^aT~K&T0-x#oy&r|6X*YXe)sTMAD4wt zAQ)}9O|B_MdoAH8PJ({Jk|SC9Q14CfdH8}Q_=2}#o8Su$wQ07xK4QFyUV_iq=(s1* zHAotrMwgTH)%>C&jCA zDh&4q5PeP}7f}Ph(_xH<$xBF5NcJOn8Ohgx zq+7@k^4|p#hL`)om1E(`iE!m)9kzV5u2$E@QSuFc1cpm{&^D_KSomFVP#W(HUV4!R zw#EZFy4K{U&;nn}8h}0UP2q2?dmnY}{zK>e%%goT-5386jkLvXp8r%4yRV8jzyDEt z_pfiYhdU@T>}CQQb4E zE~$stWc+>T30Q4~))>Ex`iu?JRr&D7=#PH{NA z1biU&Lrc?>&6pFRQ5@QYd|=Q9okT-%d>jN0gyXbJU% zUaFxu{)u0M55zM%!0_q0oErfj7|Q9s1D%l9kkEbG50JZrE?z)U94u9WBODc4xkEUdz$Fb^bqzj4#cyYowNGF z&%$=|i6XRg-udS3GmCQS-BBR7&b&Liq^8zn{C&vktg?a?#xA2WW5aY+PSFo7z0-|r zno-JXnyc``HR_+-T^c)%>tWsv&*+I+h2#~E)_jp0_hfY4T&aZ4cp9CkZjZY$IH`m4 zK3AS7<%(|H$Ps!nr)Y2_l{aC??%=?xCpg__m^ZpldKyKMYl?Hx-7vvqnYtRfZgVVO zrfdF0IbA3jQ+e|hQU)b37r`n3`6MEW;$MVA9}B{p!Y>nl6_Otbk++mLl(*X7Xul)g z>AO4d&cNN%@0^~M-jBZ*f4}{`_621nb?W}HKX$Kly}l}3_*gjoX-pKWB6u(H=agQj Slu3{(;*s?oQE@+A*M9-ydYtb7 literal 0 HcmV?d00001 diff --git a/prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..12d6de1d9e8632527462451422049beb91e22f43 GIT binary patch literal 6405 zcmeHLTWl2989p;Rdtcu}Y^N!#14$Vge7_;#DyeWOX#`SBrOHw@S?`STn!V|qF|h8g z1R)imM#4x{4H8nEN>xD41CKoRsV{w5vUW_TJVfe4l(!0`szFuN|37EW%-Afcqf+t0 zc>JILod0qzbN2uKbN<}Yk|6M${P*v3Z)=474J-1Axy+;Y6hc;rNoI(tm}*{`QF$3E zXjxSuh44&75t8UkluKeWF)OyvDINLc!Y-eeoT*sRrn=oy!!Mtr+3Raa&T3hMQR8EV zOl>VB_%&6Oe7xa&YoTqXtC}i#f5m+&O!ZS}ZG;L(nJ`xK5ASVJEB*+g(3GYlC{56rQ%ntQ=F~M9 z4L)YrP702Yg_Pv{a?NGW5VkAeztz`}Tvd^yr9sVhDfdfXv#6M1GxE$vpze4Co+gYS zVn%POOA%N_&5W7xs+LoDEo^tmF$ZS;l5F$KYFPFw%l8!%zKQMabAQIQh?%HGtC4Dy zf45jQ#{LoT-u%18;JYQ!Ch*--J6^Tkfd3}n&3;+VM2?;YEt-74CoNzVQ_p`V1?Jgg z)YXWb-+$4IN0e-_ zV*a+`MA+gS#E{#{V|8juSC%?o-(Ri_>MT7ql}2`0XO22Q1pmVjpF$u*GQ8B9Va%d7 z*BJ#JXdM0OE%>V7V-O8Tbe8y)%cO-baJwH{hIFPUYO;rMw9Z>aU88MakDi8*j361` z($S>oXi`s63?)w7_|dUnoc#Gur+-E)EO5^T7E~J!R<=k+ zgEkYv${~h9HSIr--y4`O6|4ceSS(s};B1MW9>|u8%%+)K(LRWEn0dKrTbY8TJ#Q_t z0bEc)4Gv$1gs*bN+09qmg(YTZX7iSj$t^SM!fI*4}I=_vSqpR%H*XJmrnfp#O2}TPUOVj1*ju;(Je*m`zM6XMYr^| zA0%5Z)89M#2MH5A*$Qb15Zk?qeye0vKaJ|0|C zKisR4nhIWU%kZb_p%dV`S`Bfe(5l+9!uHzu3Hh_oB$fllYaHXjDu5MXyTh|;l0UAw zLXPpi|7J+%jSMi}*YprX_5w5XG+m6}=?HoQew&QI=9xA2BV#I{)i;jhNehno&wWk4 zdDPXAoF8N-0)@gnI|;ie6tTVhJmBdS{|iXY$35xMMIo&gs=yvr;J>DvC3@mG#q@*X zexC42-RXiOprFfNh+DsdzMkO3rd;Z4fn& z-os{5Yxt}u{!G(vMm(`(gW~HIPb}GWO^2R6C657TUq1|yjxmNf{<}A(4{6N<<{gkf z&wy!$@YqvT&p_f{)z}R`fHphGz`+MYV;C*`&=|035>5j@!pOG>pC3&t@gJ zfP6~;?cShj3BGPnLl197lDPVp!uyz6Hb~C7^>K zS?Zq6n66KQW#_FzM!4Q0uuG?{qTA=v%K;01VsppR;->?27&{$7GK$1c0yye#%LKM3 z0dx#)FbxoRFHV4i^mVUAqywXL99o`C1NLo81K{jt!^w>qc&?TAesl_KaUkpuaLe~C zQ-b@+bX_}GPo`Io)sqJ|HGDVR22pG9n&3SOHmk=xxnw;tFkp5+xv#Db)sy>f#p}tT zO%2}-w?Whzye4>$g3YbCCzq@z1_sRjzrOd@wZVFF?`ox<9Ng6K-EbR3t-))8_bAw` zLcW9AAeXEs24-Cw{Q60V6m1k>p?#8pPW*fnsy&`+(i zG-t!LgxBOm-8Qi^aks)va)t3N>qKC$z!i<7EtGOaCu-&>ztxBt;sV)lI{j0Azk8?` zdmoc9o)7Z_JkL7$KD$lmn<&C8^>OTQp=2)Rtsl^Lpo&+_>@1MKhZIHm3wiTPLOviD z<9{WIFG%Q8>_Y5P+l97eWqEjI;@ZT@;cJIi)lZ@yM?Y!%xb04?kv?>H^pCq5T}Ri+ zkG~|xzeu%SJ$mKn)pxJFd%g3c?i<}7?YXh%R!^gM_|B2L2O6pA^YMp~u+samJ)|6X Ll!_=rd|>|pln<$F literal 0 HcmV?d00001 diff --git a/prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98cc4bc5695ef580610734a93f00d401ae85115b GIT binary patch literal 8708 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 literal 0 HcmV?d00001 diff --git a/prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8584e0002c26bcdad6109fdd2025d1ac5b4f38b3 GIT binary patch literal 8198 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 N^2X)0VVQ5jzW|CuJzM|) literal 0 HcmV?d00001 diff --git a/prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae80a4ab3cbbc239c5f605695bd7b39c700b475f GIT binary patch literal 11640 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 HEm*=o&q$@u literal 0 HcmV?d00001 diff --git a/tests/golden/decision_golden.b64 b/tests/golden/decision_golden.b64 new file mode 100644 index 0000000..7b95e3e --- /dev/null +++ b/tests/golden/decision_golden.b64 @@ -0,0 +1 @@ +eyJhY3Rvcl9pZCI6ImRlbW8tYWN0b3IiLCJhdXRob3JpdHlfYmFzaXMiOiJPV05FUiIsImlycmV2ZXJzaWJsZSI6ZmFsc2UsIm92ZXJyaWRlX3Rva2VuIjpudWxsLCJyZXNvdXJjZV9pZGVudGlmaWVyIjoicmVzOi8vZGVtby9hbHBoYSIsInJpc2tfY2xhc3MiOiJMT1ciLCJ0ZW5hbnRfaWQiOiJ0ZW5hbnQtMDAxIiwidGltZXN0YW1wIjoiMjAyNi0wMS0wMVQwMDowMDowMFoiLCJ0cmFuc2l0aW9uX2lkIjoidHhuLTAwMDEiLCJ0cnVzdF9ib3VuZGFyeV9jcm9zc2VkIjpmYWxzZSwidmVyZGljdCI6IkFQUFJPVkVEIn0= diff --git a/tests/test_mgtp_replay.py b/tests/test_mgtp_replay.py new file mode 100644 index 0000000..e312a2c --- /dev/null +++ b/tests/test_mgtp_replay.py @@ -0,0 +1,65 @@ +"""Replay test: golden canonical bytes → decision_hash round-trip. + +Proves: +- Same inputs produce byte-identical canonical_bytes (replay works). +- decision_hash computed from stored bytes equals decision_hash from live record. +- Any byte-level drift in DecisionRecord serialisation fails this test. +""" + +import base64 +import hashlib +from pathlib import Path + +from mgtp.types import DecisionRecord + +GOLDEN_B64_PATH = Path(__file__).parent / "golden" / "decision_golden.b64" + +# Fixed inputs — must match examples/minimal_decision_demo.py exactly. +RECORD = DecisionRecord( + transition_id="txn-0001", + risk_class="LOW", + irreversible=False, + resource_identifier="res://demo/alpha", + trust_boundary_crossed=False, + override_token=None, + timestamp="2026-01-01T00:00:00Z", + actor_id="demo-actor", + authority_basis="OWNER", + tenant_id="tenant-001", + verdict="APPROVED", +) + + +def _load_golden_bytes() -> bytes: + b64 = GOLDEN_B64_PATH.read_text(encoding="ascii").strip() + return base64.b64decode(b64) + + +def test_canonical_bytes_match_golden(): + """Live canonical_bytes must be byte-identical to stored golden fixture.""" + golden = _load_golden_bytes() + live = RECORD.canonical_bytes() + assert live == golden, ( + f"canonical_bytes drift detected.\n" + f" expected : {golden!r}\n" + f" got : {live!r}" + ) + + +def test_decision_hash_stable(): + """decision_hash is sha256 of canonical_bytes — must equal golden hash.""" + golden = _load_golden_bytes() + expected_hash = hashlib.sha256(golden).hexdigest() + assert RECORD.decision_hash() == expected_hash + + +def test_decision_hash_replay(): + """Recomputing decision_hash from stored bytes equals live decision_hash.""" + stored_bytes = _load_golden_bytes() + replayed_hash = hashlib.sha256(stored_bytes).hexdigest() + live_hash = RECORD.decision_hash() + assert replayed_hash == live_hash, ( + f"Replay hash mismatch.\n" + f" replayed : {replayed_hash}\n" + f" live : {live_hash}" + ) From c0584f9b86e3c9eb9dca884792646c2dc3cc151e Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 28 Feb 2026 14:44:40 +0000 Subject: [PATCH 3/3] chore: add .gitignore to exclude __pycache__ and build artifacts Co-authored-by: LalaSkye <228581229+LalaSkye@users.noreply.github.com> --- .gitignore | 7 +++++++ __pycache__/authority_gate.cpython-312.pyc | Bin 2729 -> 0 bytes __pycache__/invariant_litmus.cpython-312.pyc | Bin 4091 -> 0 bytes __pycache__/stop_machine.cpython-312.pyc | Bin 2963 -> 0 bytes ..._authority_gate.cpython-312-pytest-9.0.2.pyc | Bin 15029 -> 0 bytes ...nvariant_litmus.cpython-312-pytest-9.0.2.pyc | Bin 20520 -> 0 bytes ...st_stop_machine.cpython-312-pytest-9.0.2.pyc | Bin 8582 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 305 -> 0 bytes .../__pycache__/canonicalise.cpython-312.pyc | Bin 1240 -> 0 bytes .../__pycache__/drift.cpython-312.pyc | Bin 4384 -> 0 bytes .../__pycache__/engine.cpython-312.pyc | Bin 4202 -> 0 bytes ...est_determinism.cpython-312-pytest-9.0.2.pyc | Bin 14367 -> 0 bytes .../test_drift.cpython-312-pytest-9.0.2.pyc | Bin 11254 -> 0 bytes mgtp/__pycache__/__init__.cpython-312.pyc | Bin 171 -> 0 bytes mgtp/__pycache__/types.cpython-312.pyc | Bin 3227 -> 0 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 451 -> 0 bytes .../__pycache__/aggregate.cpython-312.pyc | Bin 2557 -> 0 bytes .../__pycache__/fit_report.cpython-312.pyc | Bin 1175 -> 0 bytes .../__pycache__/hashing.cpython-312.pyc | Bin 1585 -> 0 bytes .../__pycache__/io_jsonl.cpython-312.pyc | Bin 1600 -> 0 bytes .../__pycache__/redlines.cpython-312.pyc | Bin 3916 -> 0 bytes .../__pycache__/schemas.cpython-312.pyc | Bin 5100 -> 0 bytes .../tests/__pycache__/__init__.cpython-312.pyc | Bin 183 -> 0 bytes .../conftest.cpython-312-pytest-9.0.2.pyc | Bin 1787 -> 0 bytes ...ion_determinism.cpython-312-pytest-9.0.2.pyc | Bin 8546 -> 0 bytes ..._classification.cpython-312-pytest-9.0.2.pyc | Bin 8748 -> 0 bytes ...t_input_hashing.cpython-312-pytest-9.0.2.pyc | Bin 6405 -> 0 bytes ...ative_injection.cpython-312-pytest-9.0.2.pyc | Bin 8708 -> 0 bytes ...redline_scanner.cpython-312-pytest-9.0.2.pyc | Bin 8198 -> 0 bytes ...hema_validation.cpython-312-pytest-9.0.2.pyc | Bin 11640 -> 0 bytes ...est_mgtp_replay.cpython-312-pytest-9.0.2.pyc | Bin 5454 -> 0 bytes ...test_smoke_mgtp.cpython-312-pytest-9.0.2.pyc | Bin 645 -> 0 bytes 32 files changed, 7 insertions(+) create mode 100644 .gitignore delete mode 100644 __pycache__/authority_gate.cpython-312.pyc delete mode 100644 __pycache__/invariant_litmus.cpython-312.pyc delete mode 100644 __pycache__/stop_machine.cpython-312.pyc delete mode 100644 __pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc delete mode 100644 __pycache__/test_invariant_litmus.cpython-312-pytest-9.0.2.pyc delete mode 100644 __pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc delete mode 100644 commit_gate/src/commit_gate/__pycache__/__init__.cpython-312.pyc delete mode 100644 commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc delete mode 100644 commit_gate/src/commit_gate/__pycache__/drift.cpython-312.pyc delete mode 100644 commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc delete mode 100644 commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc delete mode 100644 commit_gate/tests/__pycache__/test_drift.cpython-312-pytest-9.0.2.pyc delete mode 100644 mgtp/__pycache__/__init__.cpython-312.pyc delete mode 100644 mgtp/__pycache__/types.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/__init__.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/fit_report.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/hashing.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/redlines.cpython-312.pyc delete mode 100644 prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc delete mode 100644 prometheus/tests/__pycache__/__init__.cpython-312.pyc delete mode 100644 prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_aggregation_determinism.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_fit_report_classification.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc delete mode 100644 prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_mgtp_replay.cpython-312-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_smoke_mgtp.cpython-312-pytest-9.0.2.pyc diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2f48c0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +__pycache__/ +*.py[cod] +*.pyo +.pytest_cache/ +*.egg-info/ +dist/ +build/ diff --git a/__pycache__/authority_gate.cpython-312.pyc b/__pycache__/authority_gate.cpython-312.pyc deleted file mode 100644 index 51c709de9bd3faf49fa2e016f19a27d1c7da9211..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2729 zcmcguO>7%Q6rNqLf8+d+K-;uQI|T|cY8(Lvs)|OcYEvRwS87vQEF^2YJB~N8ciq|9 zw6@YHpd8u*DwU8@2_aR811KE0!vP@J*N?m zjwb*}tdlhkEP-6bcoH{3@^FlZr$P8yE?@WnvT)|ixl8;xG|Ny1P6uW=5D+R?XO=wk#(RQjD8%^kNC{N`O}q z4w>}3Pllw!GwS_-g%CbFnTC7k=-4^a~`Hi;G4d#?2b0~14Y+XmDA_MWh zJwp;=%M@UNF*A}u-@3=yaq0r>fMRt|fQ19{3>MfR`(Vs&nH$C#pxd&ia20`wr@C#@ zT39-^&H-+^K!3{0WoC#D8LQ6J6ig48=?c8-ng<<{SMKNcghe4Znjhm#c-$@+ogyZ4 zjDSD_tqBlIM1;I0bBfsT3(KB+ScGL2im8ap6+p}>%bj`CiO{y$e@?zo!|{)mIc1KN zHdbknj9O?O*&Znz1d7@fM#E$srBjZenV1hH3k#kOB~{YNPfj-KEYG>aeNBKWf$b+t z;er{}*IZUD^ZgKyiwB~VBZjeBK+P4UQghEXG-X5kOE}{V5DR3rckpiZ+mVO8Z?5(q zXdOKDbMBXe4|10u<@EbGy>;qJYsh%eZ?@9r%HXRvwNH8^ag2>r!WyW{G-Dh~WR6Tj zzq4I{YT6u~tiVk|Xf?04S;7NwiVA=Q5e;>_25@n+8HH0=2D-!0xwuVmK6&8g(DtK+ zSqT6!f-`zRERc4L^gVxj{?>deF)V}k6XBb)J6e8%Y5x~mrsX3K8*XVcA3{;;6Ii!o zo5pkOXcx$q@xC2{@CoTwo5lRBUiC1g!PDHS6<8b2OS-sJ7DQ^5H=p706FbVrQOc?= zqgX&UiQ7CB=J3A&o#ew1NANlvMC}j?S(_5jYkvh{z!D>-t{(t?z`L?cI_02^|VzrdhlN2DS>V+5*pfx zWOVp$rA?sw`q(;lGETWPK6$|#$Ka0&Mmb?@ pMNyupQAPW!hbV*Vv8d8>^V&LrZoMxO=+OP09#)2*5)d+me*v#%l|ujk diff --git a/__pycache__/invariant_litmus.cpython-312.pyc b/__pycache__/invariant_litmus.cpython-312.pyc deleted file mode 100644 index 4d93d1bb731c9a56f1045f0881f7cd270fdf1ce2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4091 zcmcH+U2GG{d3U}3iT`5f7g9KeD+h5&oB*Y8Cpa1sCxHXQC4rMnsBhz$*qhk9?(CW* zmZQ2YCnY^3QWXiLqZPXLfr@)TY9IR6hgMakz9bh;xGPSIT3&cdNuGE(`pwwua1r9E z9m(H(^UXK2^ZkGRMTs36luYlYZu#gb2h^4HU5Mg#?rJN(- z5E)I*$~kAkDGHJ>Bw*)t0lSFffunjp;o?*`P(8$1r@GSuZuneGcwqLz+>jBl@3&&Y zD+xrLYO^1)HDmt+v38>$2ND4sOayUbq7jD@Asi-Q+(epiGijc5;g;)iqJ`6%iF;DU zt*~yLlOk<}HMl|5t|?SiG&7l1&0N7i|0>@?1H>dWr)sKUswtG$4YNQAN@W$pP$yMF zqh4>ny)ckTW=*!K<_x45Xt-}=AbBQ!xo_l5UwjO8&M4Vz1nCs@Ul<)r_Fo#g97CN( zR?m}&cS11;M!JUb844)MDP}68YH6fs7*UcYvr&ZNIy!%@I#ZzQIgJ=b)C*+zFrk`~ zMVRD?hKZI^iGe1_oDRo7rsU(O_ZibtJR(|hOe^GI_QsVQ!DEGdmZaF8J!J#tmM59i;0?*7<(Qq4$1u@R(z*R!jsevRN_ zs7BE9CI|pgyNyx=N?5@ln}GnRX|CX6*vwG9kj~@_kRte%mdAisEAUv$Yosy++#dqI z7=XCXqe4DS6-ZoPcXO`kF}N|SrQvNbmQUHppVLS9_=`ZBxGj_*SW04tFl8qu&Qt{tYWS2LXs_9umrQmeA0^4I7Fe1d2gi1nB<#R&yC#;T zd57t?In4$eD>>{lCa;Q&UWB*U)KMWK7mxR6NNO5QLUz|k)#PXfY@llBFoK+eSvH1U zg1Fo)QG##iS~UKQiT>=HmoHyJK6UZ{0OjPN2w9FS(JXmF*Rz(xASQ%tJT}xfcIHAn z`O$@ufzgOe_rqa&006i!C6nr`<(h%G(Ps=9hzJH{0c-`58O2E2Pov)l+Hv?99{?x| zYk~06{-vV}pb(UkP=u`l8EnlqZ1HtA=6<<;MIQ$az~Z>w6`^tQ-A74Kwy`nF@`M>wvEq(U)Rn0GqEI0v2?d>*p4y}t;)QV7QoajAM!CETs?+t%?GiLG~FQ zlwtF2dp)(!#A-r{nt63-#!m97s>K;@`5M9>(r;2YuD4Z1<}Y9Z&D!RG8jyl8jvP7g!B znKGdhtX1$Rzh#tFb@cv8)EhmDazxR#_mEGpW@uHkT(cN_7h50nlpO(goa* zxp?Duad@O}G&X9EHBUy11yd$CzNsxN8Hu)%bvL<9wcJk z!dng%&vMZXmIIkLz^G(fhT~`n9lo(`E-9^gRRzs V?}#6YOGnlPHs3k1$!D&>{{n)e52*kE diff --git a/__pycache__/stop_machine.cpython-312.pyc b/__pycache__/stop_machine.cpython-312.pyc deleted file mode 100644 index 81d68253276e43e56f1676da189f9b2456f8cc51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2963 zcmcImO>7fa5Pth>$4&xCXlMv&x6n{FZX8shRti-lAP%%qj2aM?d|7S0FUcnMu6er# z*-5KVMJf@h2vVhhN(JquM5#oN9NSBK=q13R)Z$RJz0i}3k&rl4o!Rv|Hc1XW^d08C znKwIc-pn`i_UD$C2!V0tpRdh|M93e=1VgSaDu2OZg%~7749?&)T$WGqSs^8GgeND6 zAuJL@r2LxT>!(C2&UjV>L;eiX=0*u}+e%wE>zaHjytQqE+uDvHfqV-~hHMI{CeQm2 zcpqNl{nJvBLX#TF{|KDp+Bq$&r>9Me#&ZSb_l3`uql!UY%Ce?qIk+-XK>zvJpI zRZw3E^dpheD0Bvu6XS_QQt2O3j*cBmjN@WFF{~W)t>_sw9zou86q7M}o-)Ur$k4cw zv=wL8%;ijLN}15pvlnz`IPnOGr!w}0o`K`QzNhD!S*m30DKqV{b`Aulqr0YU#UqdL zUMgP_6IMQ367{@mr~Rw?w0dt+c^mi@LP?5)Jo7xE!dg`?B{pzU11A?aur7JGO{$?% zSko*$OEs+&(X^~>%~%5e%0kFEAy^3rk6WAgq!Kp7{K|foVHS2Uy;+ zC>yw7v)O^PZ8H;_g0YxB;_BMXUOinLxnaPc@p zjCh)lIaoc$ur$O8ea2Bq0@;X@!KDNvVu*_(pk6X~Do^r;v?$hM7lK_GcEd)9$_8%; zlcEs@z6s<_Fh>f48ZAXn19--KtQC9D)S)T>l!qEXNr0PpNoLf|Gb@=!hl7EBV;NTB zKvsww$jMBQ=$eF(d7{;%1+vN|Rl$!K7H>(`JczAwCDEaoNe7Qn*bdx+Btr$bnpWIZ z=XgAj?gbsE1;_$<)Y-inaVLtAA1={ zy(^OEWU;N@4^Q+eDq_D`AiwSCxH7jiw;tZJ*#|t|^I;Jd+xg(u!ZZ`$0JMWKdl3AJ zx}ktKxV36ZKH=POAl>?QU9b&l2$V>HSB0WFW}m0Zq|LDC72CqzLUYwt(m&)?O#cv6 zOuTsTxNcdttLVmg-Acnp%+4ZI25Ug6Hj1Pw`2qAw0^?GOoYgaVnqbUkkkOG-;~yR! zAKnz;P}Ov?qdvq{;eN2=Ak-kp(H&QgEFHPgdsDrx-jD8o)V_DU=fs2dlk3eVA9cQR z&AmByeePaotOkXW?CNZay6IYQ!43w|OUJjcsK@U-hoRcQGlaALJJ`d4Ip4(^xZ2YL!h74=2X`)V~5ZEQ#2JRi0s}*lR!>jH6Pm?3N94nrj!k z>T}+(rQ(-ofh>?eqixFvmWFPey*2#J=vSlndJf%>9)k2gY*%l;ekZmX`=xL2Uf8W)&M z%9K1~jjhiUy#?A1CTN?gOgv~GS#KVBu{Q%KcELwUHOjCI8ODJ%0V#zv&9Kv&#;{SB z!Z~K=D02(`V}aeCDM)&eynzIpzt?NM_kwjGiv&UE90LN+usBc=IcZ;6CUR?;=cMlC z{1XCGMF<2HS(M%^H;1I2TZuA(>9$e9>1n$t?eoo}QFItuFhHBaKMq5nc)u7MZyCeq zpJCHu_$)ANTfS3`jy?~+>;JM0u^6aec{|fU$^yr6fAbP2K5Hf1-lwv_wOty1N?0eORd=vlx diff --git a/__pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_authority_gate.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 570ef8df0543d29b43e2448feaf3def7724b565e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15029 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 OpzglE&94sg`~ENS`})iP diff --git a/__pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc b/__pycache__/test_stop_machine.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 968677c1ae65c77b0971fea635557b6d8e670e4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8582 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 diff --git a/commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc b/commit_gate/src/commit_gate/__pycache__/canonicalise.cpython-312.pyc deleted file mode 100644 index c3186644c56d8ab06f183ba2ead9f8849be61a07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1240 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 VLEoiDs9k!1;&!JfhU&BQ{tGI1ekuR} diff --git a/commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc b/commit_gate/src/commit_gate/__pycache__/engine.cpython-312.pyc deleted file mode 100644 index ccfdcb328ed53eaad33894460f8b210698dc0b3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4202 zcmai1T}&I<6~5#7@y{4+uyKH}o5|)66V^aB8}ipQX+n}_*{}kV?2=T|iD$q=Y>#_q z9AY$9U8xU5n<_-A1X8yW>JuxXipQu=Ri7gD1s0-sN2#=GSE}}nK%|xOQ1#pyk8Mzr zy~vmQcka3Op6`6;%s(3%0tm|J|Nf%>A%xI>NXIRnN@Hsj8gocSV@RfCPnsH|;6I)A zWau%PLNX(>X(q#tu^DEJfj&3J$==_iF|X`{+9&&=_R9gN12PXaF9)Fx7CiBW{6App z^I9gO8p0*XP=tZ(gql@^f0zC!$cmxhjG9$-Lrn^I6)dYsL%@ozrSpcWWfOtGaJ3_7 zSXS`KKwkpnvV}AV2^q;qri7oJ5rzjYUK<$*97zbuyWRWX`^oEAIM8xjZ+r$nPjAXpr9A`SdB?3t7TQ# zOiW37$_iHds;*4ay@|f0`@}?^fgcUOtzSbmhfFj{_SsRED*X%SSGy6q1@c8tkv6GG zBDtfOo~6nTCVi(LA)R`#n?ePOLGbkS^vJMc*S zCd6zEo{qpY#C2QrvEK6w2GE0xGS{TZu;a-q+|;=LR_TiV$G8jT`*FL3zmfClahvpMOC(f&;p+llW9rUE#5|# zV}#L*aS!&xeQjIBIR`V&uDF?u6Z=>pDQ~1StQrN!f)+!dg`+U1b5IfZ2m)>-Yk6^8 z&C1U9xD`ggTad0n1r`psZz3<-I>VIt(8J^RkI!CN`RU*{M?WXCvG%#tqttwH@%CD*Z-#%tx6L13`0X>k|J%r} zjS%d=5k|o#90r}qdQT=twQ*rUV-6YBIn$=s$MjOgCLg0BRkP1zJ+?rS6tjw%qz7mi z{#*-EXawy;ecVLnPQ!-a`wZE^qQ-TCFxMDC zGAR;cfi}DsW;)@g_d-=d-}@V8Z=9cQS62K65Gbz(!(!`a%Vn=|Fr%(JMucl=io>eAxfhuUX zClv@UoyxsrI!|sW7-|OSPRiusiLco@7F=Rl}F zRFFroA>@Nma#x2giXLd$Bmf}+$uyyZB2x!2@*WVcZJJ=9#gf)zZmIH)+v&iiqartf zie97o)(~vGAhx5(-ia!$IPbnx0W6NnzM{|cP7)8_QDncXg+ke>pVSd}hYtR&I)ZgN z27XdU!#i{|zEwx4PDkV&_YK$98NB-#rq>-UdVz-Ft>mV!=%T;o{ATr?iUBfj229Qf zy7F?fjqr#B;T;W-cuG-YwMAdN)Ye&H=;Q$-3L#kL+1rwmT09Wo1FjkuU){Mb!btypc@U@)Zu* zb`Up{>#k;g-SsIP2~B!Mx*AJt-^Kgk0r3G+5udeuZsurlPR3|8x+6{?vHaDv(PHg% z5n__7zOp1x%N{MCn>AYD+Gu4RY;9+ezzO4dT>(1vR$kfiR&rf3A_2MTaTXsXr~H_l zvO!jos!jr_lT^B#V)w!lHelbRA;KPHQQT`24JO`e$3Z*JTAY*v?v^c1*FZqF!smuZ z2QHpFKPp}y7#{iM(A78(>8q1IRgdKo`1V({c=rT^)gWDQ&S{_63RVwGCXd0SPEcP5 z0ViDhlnQF`S(rXS)_nw623l-H;rHh!S3~jA<#J^2LSi-2R~jtG_OBc`wi@d%4ZY$} zWPiD-t=zJ=3@Zz(;dr_APPKOCoJ^lH*|7N+lt!`=OGhe*6v||ykwH#T#{3QK!Xx)FS+}u&OH2%!j_1$(o z>%LC7OQ>b`#+O>@(uNO3_mEf+X@BWuqFib4RRFc@TR6QI?Ja!@SBUN=vuy_Vo?wL2%qS3nlSPyY-mNN}23W+&I0_Li=cna1Z#bd`zD zk1k$VVWR6yUzu-NY42J*y_k5yuC$(6<LyhRTf35ttR%nFElImOinQ zfp~-E6-8M~iXtZI19=-Gl~!-t*S7ELc>F1H6!L-N_&!O!96mTpTJ}K?k`_r)ZBKmd zJDt&F$kfi@Phkvv5b39(+Mp?ldg<{}%vLj^g8xFT|3$|L4BJ*vc#~tP@MbtbHEp)j WRL5q}M{%36V-&ZADK8bacmF>M!YT;> diff --git a/commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc b/commit_gate/tests/__pycache__/test_determinism.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 10f216a9c03fe177cc7c200c18a4907f077cfc96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14367 zcmd^GU2GdycAg=J{}d%rKcs&(lH*-7mL*HFE!(xTkrUdRtnGL$rA^e`B`D5FqD+y> zosk@=WTD+|u@1Tq4tBAt0(wvud9dIu(8sh7MP3TD=*v))BX!^+1-8J#Z(b))ekgj* zz4Iq}^kdXPHrN4qc0Pc7T!RgRwi09)B<$B)C%-~)CTmR)DHBJlmL2IN&@YW_5l^=J*oW*10%AcD&k1riIIWx;_I?1 zlj(dhuS|D~lUZd_RMhNPzK~bvyTuZbWRfpV^gP0vTu<@3a3iZu>RyH9QXV~;%N9$; zd@ftaE3zK5QW?|(_k;3WwlJGjWxaW9HeZl3M1F4;9-b+UP3b<8&)u5Wh0AYTP3sX! zR&pdiqvlJ+rx6uo#9V25I+2s__36QEPA!p4Uecq$ zLBUL}kW~~tkSi5c`F&My%+9KlB?2|cD7n%MSeP%)Wl26;RH=olUeXNJB5@#kgogo<))yQ)?a3?nB$av4*gB_a!_l(nP*x^oF%Z~>#k=@6rqPp!k#T^ z+u0(!1&LGA#S&W*ED#)8-DEvx{r(8s&iBIF&hoQe+s=}Nw)5@Mc3!LP{LB6Y@R*9T zgv*F71*{Um1@Ip!RQBb0TGFptqrKy)$vP*4WZ7@(Fn@o-OX2tViU+;|^dnA+>;t(< zpbTR&<$~ovIY|2!^cSVz(C^-}JkYbESjO&IjxuguWYudIxu9vY)UfQK^$tlfsj(a~ zS|PmWRtTG#%wMAw0@xCjAhbf0)e4OJ6KsX~aH@G>aHQ|NIGml9#e8vQRuy4dl4f(V zB96_g@`*gm5h_lEVrf>z+gYN@<1j7ttnyDi7cZ{z3)hbxo0%U-DdE2|81bTr+{u)3 z41fDlN-A6tFS6XTrXVne;Aunf3>73W)o{9Jt`ENbtA5=JnvnD%89;Ix$r&VP7xuqJ z%~Hf-Nv*T^X><4$m^NjiQgiyi9$f%EC$H-blAOycIJ4q}4t0ndhMHEMN-3)z@)BAC zk2&=;=1>G?l5gXks5$FXRM0?hHq&FnL)UIxO=oVVzyEf6c*IV>eKkFt9$~c$zd8er z3wR+*^yUn-ZUGR)3;|>?lO?hqh1(ef7HYnz=>9?pBosZFQ6@{X6l~0p%tWCymMvt8 z@Z$7PM#+xLr~$N%mk7-D8D{XbGNH$YXd^&v(}a|W-eQW#@6QynMLO%JB18o1Nhekz zf{$nA`<;nFXW|q~u&144CbL9epHuFnGcn*SblRC1Q~+OcqJ2Hh^iGzhWFx|!nR&g1z5%t*nNKc*6^MzI ze*~$b_FrVhhIxT*D_ zt#uzzycub@Q>sP|Yr^T3u9Zx+>ojm0q`OX6Bd0e6{5&voSh7Zwj9&x3%MfEZmJDhx zRwIWrVPGY`a=qF)0GtNt&Vg!VU_-#q12cyuYc$FDHQ+l9F_y#Vx-jqsyf|(PfWt$xbQ;w1xpg28}f7I4%a%Bsi0FbdQae=zFBmfy$h`lfi zEWo&{1(qaO5Va(g88|>P2o4vl-x}AHG3^ z*HbR=yb|$n<%rp%QOfWv7(KwVoZj#5SvY>|!%_~<`ufL@uiXO2`*s`cBIf(vMb7r5 z{d@GJ1E%J$z>~b-Ns&rmzBzSpp?9SJyyyg+VqT#Ut%58byHzaRE{YhFlEvJloV%6k zAs8PaIGYeeRs_cpg3%9x?L!)oV9y{J9ZVSr7$CBVfcpV0dnN&dPxhxgH&EB7+@rC;Jr8To&%{HpqoMP0rDEkT&R;d zOr9oTF> zywadG^=$6zTDhVnyEhXZUq<|m{>3X_#<*~DDNqZEh@le(2Pp7v{DZR$y8+z0(|`sa^J!B? z*w#$rujHqJ-9TMnH)scqr_AjZM=^80rGZ^rzYEq@ty1Q=4%o^r;fBVZDFN6DHa+%i zQJX`*i$!(|0;1m05?c~12<;+kp>OGrukFGwtnDm6+qLa1Noc$9E^TKAb|Y3`*M2iD z_(O`C-Xt|pycu%@c5$nQUXG`_1yS7syNwvmgf9ek)iz6ywLVZS1Zr*01j+#;^a%k^ zgA>#PX4$e}T3QK}gXNGF7XI8}oqNB;uy8Y$v5~2xj7!fc+u`2$p5M5$H@fr|b-!5? zvmU$l-)BmI2gG-=+-jv=Ttq@48bxQXLQ?1F$PoTIpxzm0;PmX4(Cf)<&|DKka|0Q38oKN@W#j8_hxGt2)yA41m4&XZhU6u0Pp-%g&P>^ z#Jrl#S`ur*jU}IT+ho_NGE0at^y!x9$K7?eLDRii>$b_FCJaIvHfe)fjAQwr_)9+r zq20qDAFc&YE)H!*qIcf?;DRQkS2|bT_^2D0^ufb5TSq(Uf3GDbd+%!jqNzvE^;;+@fjO`g5;M1j@X{HaqrONGJd+o z_Hf+e;p?q&2HVD%;p!J{Q0E2pA+Y?)qUTz3diqP6ezuC2)52hLxI)=;>AR;{! zV(<73UA_9&U-amKIhja#Jefi>*x20-O+!u~=|%EwAlKm_im8g7FCjmK>{VX(epme@i#!f~be+nE$k#B53s?o0(`?zw7OZhP z#2Kb%s9~f8GFU?S2OzMU6Ks06n|Ce2im>a>g{8r2q-#UK&jXfbi5eytyC#4zW1SQv zHX{c$p?ig2NqrOrMvEL=iE0t(E2&ISh~oON)^=s@K0Sw)78Uv~bD%z^lu z@Kt^XWRU|f^wRN9E^8w{)H37R@I;B=DT0Ns#uZ&{y1_!UnwX;il&c8ciDP(PX|M6Eg zPTlUnmTp(4rVLNTxl8#c+WG$b;Ng3hJ{haVh8C|pM0om*pFnQX3B(O{n$alOE1*-$ zvIkaT0!BV;2v>F+z~; z|MHbutZVVg=803EzFX~lYw?N}JyaDALub01Snk=1#{U0ny>+2$he@k@Ti`bwvjF8*2PYL; z_ir{GTB>M`CpMFvD}!3%_-6azKSca-&tmLxE7yML-uS0^?fdU&>36Ha(Z^m-+z(G} zZrO~t8d6W<&C;wFv7)#Nr`7p;pPB|vXrJF69OhExWn85_OX>6Z#7|eVB*G96f zrT|OGG^$^{_v^jC)vx#8^8XZzH3{&W{NLYd{~Z&A|3t$6g)QWpR#6asEf8T^AR_VQ z#AzS9`}0!PCkpw%bWr3^Len95;?ITik?DvisG&QD?8@BxolY0GF(Uc|H46WT8hZq- z;qT6C{O*O1EaJ{lZz;#?l@V!076iM-M?TKUdK<_!=Ub**@~zV_JQ5_KIZ+d*+emo& z5Q+Rkm~JOc06T~bu#-dqc99ssZW0H0c-faqtel=ybwf{1UhJD3dMi1)Xv`O>W-KQO z)n<((Q4KX~XvISR->}_uN;IXL8Drk`>olA4ne8)+T8=0gTTGdwnT2^X%H5PBEzNJMwniWF&bB;*yOqosf* zGRdHku=zc8G}~qFy%eB=%FW?1MkfjY#6wOeOeC-8}<6!@0_NYOXg|&1|k( zUe#QY)|WK?Ha7l{(PqzDDP+%8*-s9Y!zF(yeD@m6N~9Fg|JYzw+Dj2wK^-XLt{~EB zwA;1c>98^PZtI67LGSj|-{o@Hn9*uub|0x%qR#rN5-9j27Jz%Zon6| zdrP_=NNfc+k#2Ih)MTw^`M~R0wrjHQ)_M-XdiKLVQVuW2Qb$&{?&9|q#J(Im#DBjCq#}xIa3z>or zn%9&TGP=GYnm!HSN^9?#h2?>ip49Xtq8C&8hR^gv8G?%|y|-aJIl}r4gH2L31B02- za;VguN}n}1jXDIKMU(q<6&b!haQSI+H>V$GN0XmP48Y1qvT@tJRU*xSM3 zVY`FR;(OYXGlZx_!GY=&wK+(OBOrX%8dB3gTS$^uaxSHx!IJYSJ=IiBj1N1vCE6=`F-xy6# zD%VGEUpJesE-V|cF)A5qwkTOxFbY){XttPN$WYacD0*gA#S(ZrTcr66aI)#l>vLv& zl%X&wW0V%D*=DoA^ye~#4DP427rPOKW)$2)4XvP?!CVnq(#j)Qq!Nh?B<`8N4rjF=v=E*2KGT&P!bI66ZO=J3QzmE_vAoyu^@~*d=qBcc0fb za8AcvE9veM&dKTY< z&LFoZ`WKeXA@*{Ni@Zdc&1kuUEK)iKeZ<{TCtyvi3SV`+_AtDDs?sx1X+OW3eiG|` z(%HMyaq>yB|4C2Z&e0R!%E5SWb^K{uh_>E8^{bJJ^rN*O1NdYFZu0SM=|^yFahek~ zBsjW>%p3(+If=Y`E~sipZn=M^Dj%sxw<Tv^g<=d?}^Afyox?n|N=7N%d<%6JEr$`$Du0F=p8LEOW*GLWUg}G_WlPUb3+g zJfLCc7#JkX47-*i>^ey2_hi`NdiEN2O{uPxBa?$~CEr)`#U(WDm^pzq z+s)D2xBE9F3ef<8#u1>-r|1$RAaEccAO1EV+p&%MfhBh~Es0FB$;<}-S z0i@{>fM&E%baxtx{yptMki>^EihbE-+0f(o^dth@^64oAuOoN^!J7bJTTfUm+WR`a zf)C$9@B;*IBN#?7g5Vz!TtzU7;2i}21YqADOugD)Q;|V^#T$Z3(X}tAJAutfCyJYA*U1m=mXX@g@^=@O797t4as?QhI}q z!{pZA0}EjMLRiWZ=71oD*eKKij(XsWpcCTom3$<`^qZdqz+Ly3BnWW?N`ZzUj&Lae zJ7EMRTnF`g(gu?4l#wQDCk%ROt{38P+&L0uJ7KI8)Od&^bYPdz(P?(;;1b3ycM#{s zM-tXdHS?KbAr73YMj?(CHdn2$YOY8dc?siRj;9W-+`>rTnC)M3Z&)SCd-H0cz8|b7 zN7L7mb-mN!NxGnGh9&bu>n0_LF*VI zuw5apgD-I%Jml5E?f`JyyGLRB)%1O+3U>+pKLG4=S#}b~RpvYX~J3F3Qb6xtJ$h0l6x|!xfNSEc;4g$p=Q7zvORdcz{92!WAHKU?WYmKYx$9s2AIJ z@>RqRS4boTIWNgFyaL8S6;Hr!(Y}M>6#=CqqVj?9LI#T&ULukC=$YYlknu;^_+vO@ z|9{8797)Ajx^ECrAsPgElPr3xJI*S-4qsJW-*m6$pf`}y^*etIWGdLe96?pV%@J;l zw6kv?JXxOSP|zcUNc@Mu_CxsVzXPx;{1*#{KC#20`+dM;Xj2?>Yzpvxj%{%oFt}<+ zaCB1wW{!FxaJV1y_u}_GmiqR8$PpM1ODq2iq=mV^r3u9Uzz?36#IZR%5D>6%aSqby z5B%Q9WXVavmqh|8Q;3L(OZ)@=+`zio?~Y_+?i~`z_yJ=gS@bMmR|enCo}ZgYCJ_UB z&wh96e8Qe|VY{avb^NQ6qZFu@vtH{CC!_}>j{hbxo5WQOZra%$3&vRX{7Usy14}!D z`h&S-Y9Z)JxjJd;atPA@(wq;Xb0J8(o^jHyZhQ6SJIwz|+UU{m~?XEgQR@geq2wWEal zjy*DU-ooG0H`So0QF~?^@Hy|a0iSaqsR3WyZkKdC2(r|Cf^?FuQo=F^nmuut=dY1w zyC(Z?rRMRd3Hl;Y_=n*iE62em?_Rm|E*=~LqZ@Le$yr*=C+T8N)m0;jmN6s@b%@L6 zmU*xur|AZd_F9n#bhlG}GYrRyid4~v83hcotV%WqJDVx%+2Vq#K$bQ;Z%Vhv($|>b z4iXV|6aecp!>~6mGptF~VT)#IS~&0I(+VkX+P%PX&lez}9AKMx%17}u80MTWtauaM zgFNRvm}a{*)N$@$$!#ldj@j*?UZjRf_5_Vn;fo-&AKLkKP*aNQFXNYfA9NVS+D>!s5fe;s@ncR<O8hl=P@84wbRmRBezwgfwjTkT>1P8AP+wPus#Fe^D7TOSf8mK836o~%N4lG1KSc_TUG(5 zYDjU^fgrL5%^@>9w$aCcUg4#i*ph>;&p0Tw!|^>31elSTI%0+tg%q=jVutN=92A$j z*{$#sB>jAmfimi+>ODAG38zP#B3SUej71;eQ0202h8Ey_Wlo!+s9^E%51h6Pg8qZE zI>2C1Gps1HT26%~L0T{7mQ*u{r&0=r*#ZYt>~jT37I8Q9gbK!xoIrrVMT*Om z+5T+NZU}5>Y=u7yznw1!Y&x=GXra72gxTJ{lE202mSbzv+sJ=UMmu E4^ig<(EtDd diff --git a/mgtp/__pycache__/__init__.cpython-312.pyc b/mgtp/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index d34860ea203e2ab5ba2fdba1f41d00802cdcbefa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmX@j%ge<81R?(xW%2{*#~=2KczG$ Y)vkyYXfz`b7lRldnHd=wiCY-IxX2Ij!%GiOkCnBKB>gLQc>hMQAt3b@JUszs0zwd zU#sdBUDBGLtfnd{g(S!larKA9P0}>gpJ?&Qm5k)4fS*3Y&n5^}-OSVM6D8J^dO6U` zKS{)#CvitAxpQ?3pj-TjZvI@|66p5*M7PjT%>Mu4E@e{@8P|?%$G16$fwmCTtI(%c zYmpZQw(qnLBfIvI$?-T09}`N@RA45hqPmHS=BgFl)hfw`ZYD)$&Et3Ha9N?=TK!xk zR~F`%H&=vqb9w2eNYAY;Z!FKv-YT0Zk+!VBu2RbqS<9-1Zrw*ZZ&_c|Z9kT{1CrNEGdp3G&aiqAP&RWfWOrwrFyIlhy&#&xG2aPm=kls|qS{Q}OfKWuZfG~uB$7Cf0 zd8&S-20MT(jx4xHX>|W)t2na1)arlt>rZ2CRNMe}C%0L+M}srhQ9*|7xB~FzI-3x` zRCAS&flGCu5|T;+rAi8=T9>CwDn->%)Ysf(S0{y3BW-3*8)S`sQKvi-1@K}FSMWi#DlVxd9=iIQd6K@dhZdW&0@3=g4gg`v-MIDfC@@sS%b-K;Oqa@bsa%)JBjpxodOP73A8M5h&>GMs zptFrWvtJbFspD~og*EDg%(XL+5|^vhdSpW|8cZ^caNDpA?ge*%wX(Ev+jtYqhTEP$ zoy{81=IkI0JjeD8PMK%>9+#1J-QXdMs5^C+HjGc#SId`;AT;jncoF3_+o6|@&5gyW zYtwR#&XU%S&39ntj(z3ouZ(}38A^Ya-DbPk6(dpyJAaFK|zsuy@X@|<`jHU{Qn?;wmLyo)e_@E(GJ@FBuS z2$ujv3Ld2EIgv;*8r50gbV>{e307&$LdW+39+Rjm+ih1$V0T-D&r!DBPId1vp#PF| z>aDA|30Hlpbt?5PCi|Y|>K*NMVkY-~zb4Q2#(dHxhP0t^DfW~Bp5o_w$(-IW6R(xa zua)bIrYbTx!9sPB<+Nrq8{Q%pc^dFKqn6Db&)d`M(e~6eC>Gi-4+EjQ^=gfaT(?wH zE|NBnEeCl!bm@0cygBu^Ia>;%7)Y&;{ac z4*Zhrc3lYS?bi7WbsVybMY^YTbii54-f!B@I`s@(?+#@7x4s5b6DfQ`zPBZk@pN__ zwh|e5OYs`)8jMd{xNzq2?Tz=?_l$HA=l&c3tvmefSC76rbe~ULc{XvSIq|Dz>FV>+ zjc27B&C=}O)3ef+Wi!{4fkn!)+|YqKGzsg(sTfz3wMghPBITLc4dnJ@>0clZ0iPa6 zpL|1JX}X?1Dv}E$vPKO)Sba;0dQfhiN$fB#^gXzBq^0z+zYHA{=#B;w`X|aEKOxx1 z6%DsFiwuK{VU}gTM8Mz>8ihY6!&nhX_=`c_iA$@zqWqJ||BNiHSU%(xdhYf*{c-$p z{2iMI6?_By0N_Yf6y*gOctMIUNbV(>d`X60l6Ov$nlg5v9&DTtAWn*^GI6LL!U%|0 zd6LK-y#EhnSCqwNwJ#vBHIb18^3~`jlTl_peqYw zQMV2Vhc7YohV%2Y&hOpbOTQllK5jl9)tf(Go6B#6KVZG*!9yT}X&}RCShoi4#q*`1 z99@c~g>y}LoYin$nhI+&P>tCMi=r!x<%o1v4?&_slPj&PQwh+_qN(DU%9N`?*(}zQ zMH2$N!=!YIG{mJ#$@pgmp0`PgvdqxfA(&F@FW`kF78%u$63s1(E>wjU8bK(vL<79| zGs%xZX-G(0XJVz@=$6dfrc|(K(P`|CCxh0qD}LOccQW)Pc{r@m$W zt=sg@ OYCkwQy6>5eXFmbbjgxo) diff --git a/prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/aggregate.cpython-312.pyc deleted file mode 100644 index 7b861e73a1fe9ae283259d8acac6e20e05561a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2557 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 ZC@R**afIjpM6q!=h8M<5G5n@){Xc*@fOG%= diff --git a/prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/io_jsonl.cpython-312.pyc deleted file mode 100644 index 5e95053bc1b35320c17681e3f5b05a5306b59c05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1600 zcmZux-)kd99G}@A*&mnKR&7tH!pdEhC{4I4$0>S3wSsy_54?(8K*Bb&xon#3#+eDZ zlnqo6>_Oog6oMdFeCnA#+`rIgUxc$z)_V|qI-lB$P{@P$olQ20hqL7SYd$mc&38WE z`6ZPy5sbBeescek5c*R%@c=&>y^Ekah@c!Im`D|z!;zM95|O_~IhiORm8O(dH&;Ko zb#wKG^>Oy5Rp)NS<*vgrrunI36J`zOif+YWmhBO%L0t|eakxXPuIDoD79x=4*LkhZ zGv*VKz-j?Uc?^UGN`_zWR}dX^2emLC%?DA22Xa>+U|c~hDUeps7jGlfk^{Lsj1Oi9 zvO9EIN}w>jGZ)~pIypbExi~i(Wj(gWI#9a99Ab^p&N~V+5K+X}9o7<~0N+9v&?Urh zL&E4b!tjaMUHLX@V5s1tsFh_;6f3F~b$Fe65U)U)EWcB@#I�d2#Wr2RPIn zuiz8cyR({BL&dK-UZ^ro-CCHiYv7SkDKj5}6(6ocU}`omg(}=am4&z%DizmrLOohj za|jc4u*B$>vL(OjWNF>=9GY$TbR%2vJpkIS#}|dqN`CEsV>JpZdC94>EZjC{*-R$O zXdychcm2FbtdglULzBY)AGq`dIA8FSIUu&sAIayoK74GXw#n`Xd$0dyym5jQb!p!| zesT6Gl8vS9mE-gCoz3>Df-Qo%~_#$K3b1ef`lZmyV_{pK5?SlVRbB ziIOv0H_pzD?LM1^liDvW&&xl*2I6pDU0%=%aVNkW8u2dyH{L;G?v*D|0ttf;6v(nN zGDk*v#HmpT1t?|^!3WZqH{6IZz;Wof19g(){9HU+PR7<)2RM+RV-p8jcbElmPAX50 z5wS(|_;iejA--`2P2*YKHjN=`&CS;5qL+c5f|eHdhXl4nvs(?9m!9eJqED+f=fG8X z9R$NZWAG9%pYr^M(`47yXdQNgH^TLZSJQeZ`7G3{_J%`T%4iDEp$4XBR~;%Eor=na z3aM9Xp&C6{X?XyX{q-^xHDodf$bvpEpk@S$2uxpvz^p*zL2RMFO{8kyT>t9&cTz`d zYn`d~)SmKadf}mRq+IzguO)SE-+rto?;H1w-3z;4?yWqWIntMob>qHvPuo>?QfDe) z&Jc)GA^J>Q{Gt5j@>Tips`@_Cpue?zp7@1)KKc`M9sp5GMR`3yJ@8SKbYFkB>XUlK od51f=vJil7WOx%m&KKN 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 VcLliU!MS!WbnpYNoqL1H_#gGU;cx%| diff --git a/prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc b/prometheus/src/prometheus/__pycache__/schemas.cpython-312.pyc deleted file mode 100644 index 2c32ed0aec2ad74818b4c2a06a6726e7dcee0cd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5100 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 diff --git a/prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/conftest.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index a145f2b94b5c861d049ea63c2231e02e5b5dea29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1787 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 Slu3{(;*s?oQE@+A*M9-ydYtb7 diff --git a/prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_input_hashing.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 12d6de1d9e8632527462451422049beb91e22f43..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6405 zcmeHLTWl2989p;Rdtcu}Y^N!#14$Vge7_;#DyeWOX#`SBrOHw@S?`STn!V|qF|h8g z1R)imM#4x{4H8nEN>xD41CKoRsV{w5vUW_TJVfe4l(!0`szFuN|37EW%-Afcqf+t0 zc>JILod0qzbN2uKbN<}Yk|6M${P*v3Z)=474J-1Axy+;Y6hc;rNoI(tm}*{`QF$3E zXjxSuh44&75t8UkluKeWF)OyvDINLc!Y-eeoT*sRrn=oy!!Mtr+3Raa&T3hMQR8EV zOl>VB_%&6Oe7xa&YoTqXtC}i#f5m+&O!ZS}ZG;L(nJ`xK5ASVJEB*+g(3GYlC{56rQ%ntQ=F~M9 z4L)YrP702Yg_Pv{a?NGW5VkAeztz`}Tvd^yr9sVhDfdfXv#6M1GxE$vpze4Co+gYS zVn%POOA%N_&5W7xs+LoDEo^tmF$ZS;l5F$KYFPFw%l8!%zKQMabAQIQh?%HGtC4Dy zf45jQ#{LoT-u%18;JYQ!Ch*--J6^Tkfd3}n&3;+VM2?;YEt-74CoNzVQ_p`V1?Jgg z)YXWb-+$4IN0e-_ zV*a+`MA+gS#E{#{V|8juSC%?o-(Ri_>MT7ql}2`0XO22Q1pmVjpF$u*GQ8B9Va%d7 z*BJ#JXdM0OE%>V7V-O8Tbe8y)%cO-baJwH{hIFPUYO;rMw9Z>aU88MakDi8*j361` z($S>oXi`s63?)w7_|dUnoc#Gur+-E)EO5^T7E~J!R<=k+ zgEkYv${~h9HSIr--y4`O6|4ceSS(s};B1MW9>|u8%%+)K(LRWEn0dKrTbY8TJ#Q_t z0bEc)4Gv$1gs*bN+09qmg(YTZX7iSj$t^SM!fI*4}I=_vSqpR%H*XJmrnfp#O2}TPUOVj1*ju;(Je*m`zM6XMYr^| zA0%5Z)89M#2MH5A*$Qb15Zk?qeye0vKaJ|0|C zKisR4nhIWU%kZb_p%dV`S`Bfe(5l+9!uHzu3Hh_oB$fllYaHXjDu5MXyTh|;l0UAw zLXPpi|7J+%jSMi}*YprX_5w5XG+m6}=?HoQew&QI=9xA2BV#I{)i;jhNehno&wWk4 zdDPXAoF8N-0)@gnI|;ie6tTVhJmBdS{|iXY$35xMMIo&gs=yvr;J>DvC3@mG#q@*X zexC42-RXiOprFfNh+DsdzMkO3rd;Z4fn& z-os{5Yxt}u{!G(vMm(`(gW~HIPb}GWO^2R6C657TUq1|yjxmNf{<}A(4{6N<<{gkf z&wy!$@YqvT&p_f{)z}R`fHphGz`+MYV;C*`&=|035>5j@!pOG>pC3&t@gJ zfP6~;?cShj3BGPnLl197lDPVp!uyz6Hb~C7^>K zS?Zq6n66KQW#_FzM!4Q0uuG?{qTA=v%K;01VsppR;->?27&{$7GK$1c0yye#%LKM3 z0dx#)FbxoRFHV4i^mVUAqywXL99o`C1NLo81K{jt!^w>qc&?TAesl_KaUkpuaLe~C zQ-b@+bX_}GPo`Io)sqJ|HGDVR22pG9n&3SOHmk=xxnw;tFkp5+xv#Db)sy>f#p}tT zO%2}-w?Whzye4>$g3YbCCzq@z1_sRjzrOd@wZVFF?`ox<9Ng6K-EbR3t-))8_bAw` zLcW9AAeXEs24-Cw{Q60V6m1k>p?#8pPW*fnsy&`+(i zG-t!LgxBOm-8Qi^aks)va)t3N>qKC$z!i<7EtGOaCu-&>ztxBt;sV)lI{j0Azk8?` zdmoc9o)7Z_JkL7$KD$lmn<&C8^>OTQp=2)Rtsl^Lpo&+_>@1MKhZIHm3wiTPLOviD z<9{WIFG%Q8>_Y5P+l97eWqEjI;@ZT@;cJIi)lZ@yM?Y!%xb04?kv?>H^pCq5T}Ri+ zkG~|xzeu%SJ$mKn)pxJFd%g3c?i<}7?YXh%R!^gM_|B2L2O6pA^YMp~u+samJ)|6X Ll!_=rd|>|pln<$F diff --git a/prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_negative_injection.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 98cc4bc5695ef580610734a93f00d401ae85115b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8708 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 diff --git a/prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_redline_scanner.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index 8584e0002c26bcdad6109fdd2025d1ac5b4f38b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8198 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 N^2X)0VVQ5jzW|CuJzM|) diff --git a/prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc b/prometheus/tests/__pycache__/test_schema_validation.cpython-312-pytest-9.0.2.pyc deleted file mode 100644 index ae80a4ab3cbbc239c5f605695bd7b39c700b475f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11640 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 HEm*=o&q$@u