From 4c1982d50faedbde6868deea6b3ab0e947ce3ae0 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Wed, 15 Apr 2026 16:31:49 -0700 Subject: [PATCH] Record Chain 138 GRU v2 mesh rollout state --- config/gru-v2-full-mesh-pool-tracker.json | 169 ++++++++++ ...2_FULL_DEPLOYMENT_IMPLEMENTATION_STATUS.md | 53 +++ .../GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md | 310 +++++++++++++++++ .../GRU_V2_FULL_MESH_MASTER_MATRIX.md | 312 ++++++++++++++++++ .../GRU_V2_PROTOCOL_COMPLETION_MATRIX.md | 57 ++++ .../reconcile-gru-v2-full-mesh-status.py | 170 ++++++++++ smom-dbis-138 | 2 +- 7 files changed, 1072 insertions(+), 1 deletion(-) create mode 100644 config/gru-v2-full-mesh-pool-tracker.json create mode 100644 docs/04-configuration/GRU_V2_FULL_DEPLOYMENT_IMPLEMENTATION_STATUS.md create mode 100644 docs/04-configuration/GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md create mode 100644 docs/04-configuration/GRU_V2_FULL_MESH_MASTER_MATRIX.md create mode 100644 docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md create mode 100644 scripts/verify/reconcile-gru-v2-full-mesh-status.py diff --git a/config/gru-v2-full-mesh-pool-tracker.json b/config/gru-v2-full-mesh-pool-tracker.json new file mode 100644 index 00000000..f6b2318c --- /dev/null +++ b/config/gru-v2-full-mesh-pool-tracker.json @@ -0,0 +1,169 @@ +{ + "statusDate": "2026-04-15", + "defaultFields": { + "status": "todo", + "deployed": false, + "seeded": false, + "validated": false, + "live": false, + "mevReady": false + }, + "chain138": { + "namespace": "c* V2", + "entries": [ + { "pair": "cUSDT V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cUSDT V2 / USDT", "priority": "P0" }, + { "pair": "cUSDC V2 / USDC", "priority": "P0" }, + { "pair": "cEURC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cEURT V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cGBPC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cGBPT V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cAUDC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cJPYC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cCHFC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cCADC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cXAUC V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cXAUT V2 / cUSDC V2", "priority": "P0" }, + { "pair": "cEURC V2 / cEURT V2", "priority": "P1" }, + { "pair": "cGBPC V2 / cGBPT V2", "priority": "P1" }, + { "pair": "cXAUC V2 / cXAUT V2", "priority": "P1" }, + { "pair": "cETH / WETH", "priority": "P1" }, + { "pair": "cETH / cUSDC V2", "priority": "P1" }, + { "pair": "cETHL2 / cUSDC V2", "priority": "P2" }, + { "pair": "cBNB / cUSDC V2", "priority": "P2" }, + { "pair": "cPOL / cUSDC V2", "priority": "P2" }, + { "pair": "cAVAX / cUSDC V2", "priority": "P2" }, + { "pair": "cCRO / cUSDC V2", "priority": "P2" }, + { "pair": "cXDAI / cUSDC V2", "priority": "P2" }, + { "pair": "cCELO / cUSDC V2", "priority": "P2" }, + { "pair": "cWEMIX / cUSDC V2", "priority": "P2" } + ] + }, + "allMainnet651940": { + "namespace": "cA*", + "entries": [ + { "pair": "cAUSDT / cAUSDC", "priority": "P0" }, + { "pair": "cAUSDT / AUSDT", "priority": "P0" }, + { "pair": "cAUSDC / USDC", "priority": "P0" }, + { "pair": "cAEURC / cAUSDC", "priority": "P0" }, + { "pair": "cAEURT / cAUSDC", "priority": "P0" }, + { "pair": "cAGBPC / cAUSDC", "priority": "P0" }, + { "pair": "cAGBPT / cAUSDC", "priority": "P0" }, + { "pair": "cAAUDC / cAUSDC", "priority": "P0" }, + { "pair": "cAJPYC / cAUSDC", "priority": "P0" }, + { "pair": "cACHFC / cAUSDC", "priority": "P0" }, + { "pair": "cACADC / cAUSDC", "priority": "P0" }, + { "pair": "cAXAUC / cAUSDC", "priority": "P0" }, + { "pair": "cAXAUT / cAUSDC", "priority": "P0" }, + { "pair": "cAEURC / cAEURT", "priority": "P1" }, + { "pair": "cAGBPC / cAGBPT", "priority": "P1" }, + { "pair": "cAXAUC / cAXAUT", "priority": "P1" }, + { "pair": "cAETH / WETH", "priority": "P1" }, + { "pair": "cAETH / cAUSDC", "priority": "P1" }, + { "pair": "cAWALL / WALL", "priority": "P1" }, + { "pair": "cAWALL / cAUSDC", "priority": "P1" } + ] + }, + "publicMesh": { + "1": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWETH / WETH","cWETH / USDC" + ] + }, + "10": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWETHL2 / WETH","cWETHL2 / USDC" + ] + }, + "25": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWCRO / WCRO","cWCRO / USDT" + ] + }, + "56": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWBNB / WBNB","cWBNB / USDT" + ] + }, + "100": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWXDAI / WXDAI","cWXDAI / USDC" + ] + }, + "137": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWPOL / WPOL","cWPOL / USDC" + ] + }, + "8453": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWETHL2 / WETH","cWETHL2 / USDC" + ] + }, + "42161": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWETHL2 / WETH","cWETHL2 / USDC" + ] + }, + "42220": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWCELO / WCELO","cWCELO / USDC" + ] + }, + "43114": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWAVAX / WAVAX","cWAVAX / USDC" + ] + }, + "1111": { + "namespace": "cW*", + "entries": [ + "cWUSDT / USDC","cWUSDC / USDC","cWUSDT / USDT","cWUSDC / USDT","cWUSDT / cWUSDC", + "cWEURC / USDC","cWEURT / USDC","cWGBPC / USDC","cWGBPT / USDC","cWAUDC / USDC", + "cWJPYC / USDC","cWCHFC / USDC","cWCADC / USDC","cWXAUC / USDC","cWXAUT / USDC", + "cWWEMIX / WWEMIX","cWWEMIX / USDC" + ], + "statusOverride": "planned" + } + } +} diff --git a/docs/04-configuration/GRU_V2_FULL_DEPLOYMENT_IMPLEMENTATION_STATUS.md b/docs/04-configuration/GRU_V2_FULL_DEPLOYMENT_IMPLEMENTATION_STATUS.md new file mode 100644 index 00000000..3eebafb3 --- /dev/null +++ b/docs/04-configuration/GRU_V2_FULL_DEPLOYMENT_IMPLEMENTATION_STATUS.md @@ -0,0 +1,53 @@ +# GRU v2 Full Deployment Implementation Status + +**Status date:** 2026-04-15 + +This file separates the target plan from what is currently executable from this repo. + +## Summary + +The full plan is only partially deployable today. + +- Chain `138` canonical non-gas DODO PMM mesh: `script-backed` and live +- Chain `138` pilot `Uniswap v3`, `Balancer`, `Curve`, and `1Inch` venues: `script-backed` and live +- public `cW*` token and partial PMM rollout: `script-backed` in parts +- ALL Mainnet `651940` full `cA*` mesh: `inventory-backed`, not fully deployer-backed +- full protocol completion across `DODO`, `Uniswap v2`, `Uniswap v3`, `SushiSwap`, `Curve`, `Balancer`, `1Inch`, `Aave`, `GMX`, and `dYdX`: not fully deployer-backed + +## Script-backed now + +| Area | Evidence | +|---|---| +| Chain `138` PMM desired-state sync | [scripts/create-pmm-full-mesh-chain138.sh](/home/intlc/projects/proxmox/scripts/create-pmm-full-mesh-chain138.sh:1) | +| Chain `138` rollout wrapper | [scripts/deployment/run-all-next-steps-chain138.sh](/home/intlc/projects/proxmox/scripts/deployment/run-all-next-steps-chain138.sh:1) | +| Chain `138` readiness validation | [scripts/verify/check-gru-v2-chain138-readiness.sh](/home/intlc/projects/proxmox/scripts/verify/check-gru-v2-chain138-readiness.sh:1) | +| Chain `138` protocol venue deployer | [scripts/deployment/deploy-chain138-pilot-protocol-venues.sh](/home/intlc/projects/proxmox/scripts/deployment/deploy-chain138-pilot-protocol-venues.sh:1) | +| Chain `138` canonical PMM pool seeding | [smom-dbis-138/scripts/deployment/seed-chain138-canonical-pmm-pools.sh](/home/intlc/projects/proxmox/smom-dbis-138/scripts/deployment/seed-chain138-canonical-pmm-pools.sh:1) | +| GRU mesh planning and live reconciliation | [scripts/verify/reconcile-gru-v2-full-mesh-status.py](/home/intlc/projects/proxmox/scripts/verify/reconcile-gru-v2-full-mesh-status.py:1) | +| ALL Mainnet `cA*` token deployment wrapper | [scripts/deployment/deploy-allmainnet-ca-tokens.sh](/home/intlc/projects/proxmox/scripts/deployment/deploy-allmainnet-ca-tokens.sh:1) | +| ALL Mainnet PMM desired-state sync wrapper | [scripts/deployment/sync-allmainnet-pmm-pools-from-json.sh](/home/intlc/projects/proxmox/scripts/deployment/sync-allmainnet-pmm-pools-from-json.sh:1) | + +## Inventory-backed only + +| Area | Evidence | Gap | +|---|---|---| +| ALL Mainnet token inventory | [docs/11-references/ALL_MAINNET_TOKEN_ADDRESSES.md](/home/intlc/projects/proxmox/docs/11-references/ALL_MAINNET_TOKEN_ADDRESSES.md:1) | still needs final deployed `cA*` addresses to complete live inventory | +| `651940` planned full mesh | [config/gru-v2-full-mesh-pool-tracker.json](/home/intlc/projects/proxmox/config/gru-v2-full-mesh-pool-tracker.json:1) | still needs final live pool addresses and liquidity | +| public/non-public protocol target state | [docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md](/home/intlc/projects/proxmox/docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md:1) | no end-to-end deployer coverage for all protocol cells | + +## External blockers + +| Blocker | Why it matters | +|---|---| +| Missing live `651940` venue addresses and integrations for the non-DODO protocol set | canonical env surface now exists, but the live addresses still need to be supplied | +| Live liquidity and partner venue dependencies | even with scripts, final pool rows cannot be marked `live` without real seeding and venue support | +| Chain `138` gas-native runtime verifier / vault wiring | the gas family rows remain blocked until real `CW_GAS_*_CHAIN138` addresses are supplied from deployed contracts | + +## New operator entrypoints + +| Script | Purpose | +|---|---| +| [scripts/deployment/run-gru-v2-full-deployment.sh](/home/intlc/projects/proxmox/scripts/deployment/run-gru-v2-full-deployment.sh:1) | run the repo-backed parts of the full deployment plan and stop honestly at external blockers | +| [scripts/verify/check-gru-v2-full-deployment-implementation.py](/home/intlc/projects/proxmox/scripts/verify/check-gru-v2-full-deployment-implementation.py:1) | verify which plan segments are actually implemented in-repo | +| [scripts/verify/check-gru-v2-core-protocol-blockers.sh](/home/intlc/projects/proxmox/scripts/verify/check-gru-v2-core-protocol-blockers.sh:1) | verify the repo-side blockers are closed and isolate only the remaining external dependencies | +| [scripts/verify/check-allmainnet-protocol-env.sh](/home/intlc/projects/proxmox/scripts/verify/check-allmainnet-protocol-env.sh:1) | inventory the remaining ALL Mainnet protocol env gaps so missing venue coverage is explicit | diff --git a/docs/04-configuration/GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md b/docs/04-configuration/GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md new file mode 100644 index 00000000..f66fa26b --- /dev/null +++ b/docs/04-configuration/GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md @@ -0,0 +1,310 @@ +# GRU v2 Full Mesh Live Status Report + +**Status date:** 2026-04-15 + +## Summary + +- Chain `138`: `16` exact live rows, `10` planned-only +- ALL Mainnet `651940`: `20` planned-only +- Public `cW*` mesh: `11` exact live rows, `176` planned-only + +## Chain 138 + +| Pair | Status | Observed | +|---|---|---| +| `cUSDT V2 / cUSDC V2` | `exact_live` | `0x9e89bAe009adf128782E19e8341996c596ac40dC` | +| `cUSDT V2 / USDT` | `exact_live` | `0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66` | +| `cUSDC V2 / USDC` | `exact_live` | `0xc39B7D0F40838cbFb54649d327f49a6DAC964062` | +| `cEURC V2 / cUSDC V2` | `exact_live` | `0x5efD4771e35B9A101Bc0f4E44905b3c77292D95D` | +| `cEURT V2 / cUSDC V2` | `exact_live` | `0xC479ad0c2333c7738DFA13Ef9E0d3eD2De53F191` | +| `cGBPC V2 / cUSDC V2` | `exact_live` | `0xb7fe7C3B71580f9BcE496076dc8b0B4B40A06edd` | +| `cGBPT V2 / cUSDC V2` | `exact_live` | `0x77aEfcd4E25eFf32A680057879fB176aF4a66838` | +| `cAUDC V2 / cUSDC V2` | `exact_live` | `0x034B89E3F050F48849139E37813EdFd048253876` | +| `cJPYC V2 / cUSDC V2` | `exact_live` | `0xD6a83bb947Ea062580c220e03B37E44C9532FA2c` | +| `cCHFC V2 / cUSDC V2` | `exact_live` | `0x9fd00d9875cBd1b8F54F51e153ade0D7DC87f05B` | +| `cCADC V2 / cUSDC V2` | `exact_live` | `0xf9dEd79Ff2a481C1c6aD6Bfb2114b488Aba567F5` | +| `cXAUC V2 / cUSDC V2` | `exact_live` | `0xDC4968F0B665ccDffBba6eB23902e95b5b3B097B` | +| `cXAUT V2 / cUSDC V2` | `exact_live` | `0x8C7874d1040377be410c1140A1B5E1B869fbBe30` | +| `cEURC V2 / cEURT V2` | `exact_live` | `0x0F2f82bf28e7844898BFABf35A5566681fC2f7ab` | +| `cGBPC V2 / cGBPT V2` | `exact_live` | `0x7B3CD08B46b7b1EAD9F5cB5AcEaf1Db298A39db5` | +| `cXAUC V2 / cXAUT V2` | `exact_live` | `0x89e0304B724E87F816A1c72e716949d4DbC9c4d5` | +| `cETH / WETH` | `planned_only` | `` | +| `cETH / cUSDC V2` | `planned_only` | `` | +| `cETHL2 / cUSDC V2` | `planned_only` | `` | +| `cBNB / cUSDC V2` | `planned_only` | `` | +| `cPOL / cUSDC V2` | `planned_only` | `` | +| `cAVAX / cUSDC V2` | `planned_only` | `` | +| `cCRO / cUSDC V2` | `planned_only` | `` | +| `cXDAI / cUSDC V2` | `planned_only` | `` | +| `cCELO / cUSDC V2` | `planned_only` | `` | +| `cWEMIX / cUSDC V2` | `planned_only` | `` | + +## ALL Mainnet 651940 + +| Pair | Status | +|---|---| +| `cAUSDT / cAUSDC` | `planned_only` | +| `cAUSDT / AUSDT` | `planned_only` | +| `cAUSDC / USDC` | `planned_only` | +| `cAEURC / cAUSDC` | `planned_only` | +| `cAEURT / cAUSDC` | `planned_only` | +| `cAGBPC / cAUSDC` | `planned_only` | +| `cAGBPT / cAUSDC` | `planned_only` | +| `cAAUDC / cAUSDC` | `planned_only` | +| `cAJPYC / cAUSDC` | `planned_only` | +| `cACHFC / cAUSDC` | `planned_only` | +| `cACADC / cAUSDC` | `planned_only` | +| `cAXAUC / cAUSDC` | `planned_only` | +| `cAXAUT / cAUSDC` | `planned_only` | +| `cAEURC / cAEURT` | `planned_only` | +| `cAGBPC / cAGBPT` | `planned_only` | +| `cAXAUC / cAXAUT` | `planned_only` | +| `cAETH / WETH` | `planned_only` | +| `cAETH / cAUSDC` | `planned_only` | +| `cAWALL / WALL` | `planned_only` | +| `cAWALL / cAUSDC` | `planned_only` | + +## Public cW* Mesh + +### Chain `1` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `exact_live` | `0x27f3aE7EE71Be3d77bAf17d4435cF8B895DD25D2` | +| `cWUSDC / USDC` | `exact_live` | `0x69776fc607e9edA8042e320e7e43f54d06c68f0E` | +| `cWUSDT / USDT` | `exact_live` | `0x79156F6B7bf71a1B72D78189B540A89A6C13F6FC` | +| `cWUSDC / USDT` | `exact_live` | `0xCC0fd27A40775c9AfcD2BBd3f7c902b0192c247A` | +| `cWUSDT / cWUSDC` | `exact_live` | `0xe944b7Cb012A0820c07f54D51e92f0e1C74168DB` | +| `cWEURC / USDC` | `exact_live` | `0x0bC750F9c6DbDcd76B205695A356491b1B9ef098` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `exact_live` | `0x5488042dF882893a3e7074453E2005CaDE4101b0` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `exact_live` | `0x6c1bD4F43c5f330E50B61DE81066dA7C61a9b5b4` | +| `cWJPYC / USDC` | `exact_live` | `0x8A4187dF0A8FE855cC53A4F7B2D8346588Ee9794` | +| `cWCHFC / USDC` | `exact_live` | `0x776Ca556deD3245984F504F4bef8Eeec55C50190` | +| `cWCADC / USDC` | `exact_live` | `0xE0F35b5736FDd0a2F4B618621b0A08F8D8A3f92A` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWETH / WETH` | `planned_only` | `` | +| `cWETH / USDC` | `planned_only` | `` | + +### Chain `10` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWETHL2 / WETH` | `planned_only` | `` | +| `cWETHL2 / USDC` | `planned_only` | `` | + +### Chain `25` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWCRO / WCRO` | `planned_only` | `` | +| `cWCRO / USDT` | `planned_only` | `` | + +### Chain `56` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWBNB / WBNB` | `planned_only` | `` | +| `cWBNB / USDT` | `planned_only` | `` | + +### Chain `100` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWXDAI / WXDAI` | `planned_only` | `` | +| `cWXDAI / USDC` | `planned_only` | `` | + +### Chain `137` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWPOL / WPOL` | `planned_only` | `` | +| `cWPOL / USDC` | `planned_only` | `` | + +### Chain `8453` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWETHL2 / WETH` | `planned_only` | `` | +| `cWETHL2 / USDC` | `planned_only` | `` | + +### Chain `42161` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWETHL2 / WETH` | `planned_only` | `` | +| `cWETHL2 / USDC` | `planned_only` | `` | + +### Chain `42220` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWCELO / WCELO` | `planned_only` | `` | +| `cWCELO / USDC` | `planned_only` | `` | + +### Chain `43114` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWAVAX / WAVAX` | `planned_only` | `` | +| `cWAVAX / USDC` | `planned_only` | `` | + +### Chain `1111` + +| Pair | Status | Observed | +|---|---|---| +| `cWUSDT / USDC` | `planned_only` | `` | +| `cWUSDC / USDC` | `planned_only` | `` | +| `cWUSDT / USDT` | `planned_only` | `` | +| `cWUSDC / USDT` | `planned_only` | `` | +| `cWUSDT / cWUSDC` | `planned_only` | `` | +| `cWEURC / USDC` | `planned_only` | `` | +| `cWEURT / USDC` | `planned_only` | `` | +| `cWGBPC / USDC` | `planned_only` | `` | +| `cWGBPT / USDC` | `planned_only` | `` | +| `cWAUDC / USDC` | `planned_only` | `` | +| `cWJPYC / USDC` | `planned_only` | `` | +| `cWCHFC / USDC` | `planned_only` | `` | +| `cWCADC / USDC` | `planned_only` | `` | +| `cWXAUC / USDC` | `planned_only` | `` | +| `cWXAUT / USDC` | `planned_only` | `` | +| `cWWEMIX / WWEMIX` | `planned_only` | `` | +| `cWWEMIX / USDC` | `planned_only` | `` | + diff --git a/docs/04-configuration/GRU_V2_FULL_MESH_MASTER_MATRIX.md b/docs/04-configuration/GRU_V2_FULL_MESH_MASTER_MATRIX.md new file mode 100644 index 00000000..a0692ef7 --- /dev/null +++ b/docs/04-configuration/GRU_V2_FULL_MESH_MASTER_MATRIX.md @@ -0,0 +1,312 @@ +# GRU v2 Full Mesh Master Matrix + +**Status date:** 2026-04-15 + +This document freezes the target mesh and liquidity plan for: + +- Chain `138` native `c* V2` +- ALL Mainnet `651940` native `cA*` +- connected public-network mirrors `cW*` +- gas-native family mirrors +- protocol coverage requirements +- MEV-readiness tracking + +The goal is to make the rollout executable instead of descriptive. + +## 0. Implementation Reality + +This matrix is the target state, not a claim that every row is deployable from this repo today. + +Current execution classes: + +- `script-backed`: a real deployment or verification path exists in this repo now +- `inventory-backed`: addresses, mappings, or trackers exist, but no full deployer exists here +- `external-blocked`: live completion depends on external contracts, liquidity, partner venues, or out-of-repo deployers + +As of `2026-04-15`: + +- Chain `138` canonical non-gas DODO PMM mesh is `script-backed` and live for all `16/16` non-gas rows +- Chain `138` gas-native `c*` rows remain `external-blocked` on verifier / vault / treasury runtime wiring +- Chain `138` pilot `Uniswap v3`, `Balancer`, `Curve`, and `1Inch` venues are live, funded, and publicly routable +- ALL Mainnet `651940` full `cA*` mesh is `inventory-backed` and `external-blocked` +- full protocol completion for `Uniswap v2`, `Uniswap v3`, `SushiSwap`, `Curve`, `Balancer`, `1Inch`, `Aave`, `GMX`, and `dYdX` on both `138` and `651940` is still partly `external-blocked` + +## 1. Connected-Network Namespace Model + +| Namespace | Chain / Scope | Token pattern | Role | +|---|---|---|---| +| `c* V2` | `138` | `cUSDT V2`, `cUSDC V2`, ... | canonical GRU v2 source-of-truth assets | +| `cA*` | `651940` | `cAUSDT`, `cAUSDC`, ... | ALL Mainnet native GRU family | +| `cW*` | public connected networks | `cWUSDT`, `cWUSDC`, ... | public wrapped GRU mirrors | +| gas-native `c*` | `138` | `cETH`, `cETHL2`, `cBNB`, ... | canonical gas-family source-of-truth | +| gas-native `cA*` | `651940` | `cAETH`, `cAWALL`, ... | ALL Mainnet native gas-family | +| gas-native `cW*` | public connected networks | `cWETH`, `cWETHL2`, `cWBNB`, ... | public wrapped gas-family mirrors | + +## 2. Complete Master Matrix + +Columns: + +- `network` +- `native token` +- `wrapped token` +- `network cW/cA token` +- `Chain 138 c* token` +- `status` + +For fiat / commodity GRU v2 families, `native token` and `wrapped token` are `n/a`. + +| Family | Network | Native token | Wrapped token | Network cW/cA token | Chain 138 c* token | Status | +|---|---|---|---|---|---|---| +| `USD stable` | `1` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `10` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `25` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `56` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `100` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `137` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `8453` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `42161` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `42220` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `43114` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | deployed | +| `USD stable` | `1111` | `n/a` | `n/a` | `cWUSDT` | `cUSDT V2` | planned | +| `USD stable` | `651940` | `AUSDT` | `n/a` | `cAUSDT` | `cUSDT V2` | planned | +| `USD stable` | `1` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `10` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `25` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `56` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `100` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `137` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `8453` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `42161` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `42220` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `43114` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | deployed | +| `USD stable` | `1111` | `n/a` | `n/a` | `cWUSDC` | `cUSDC V2` | planned | +| `USD stable` | `651940` | `USDC` | `n/a` | `cAUSDC` | `cUSDC V2` | planned | +| `EUR stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWEURC` | `cEURC V2` | deployed | +| `EUR stable` | `1111` | `n/a` | `n/a` | `cWEURC` | `cEURC V2` | planned | +| `EUR stable` | `651940` | `n/a` | `n/a` | `cAEURC` | `cEURC V2` | planned | +| `EUR stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWEURT` | `cEURT V2` | deployed | +| `EUR stable` | `1111` | `n/a` | `n/a` | `cWEURT` | `cEURT V2` | planned | +| `EUR stable` | `651940` | `n/a` | `n/a` | `cAEURT` | `cEURT V2` | planned | +| `GBP stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWGBPC` | `cGBPC V2` | deployed | +| `GBP stable` | `1111` | `n/a` | `n/a` | `cWGBPC` | `cGBPC V2` | planned | +| `GBP stable` | `651940` | `n/a` | `n/a` | `cAGBPC` | `cGBPC V2` | planned | +| `GBP stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWGBPT` | `cGBPT V2` | deployed | +| `GBP stable` | `1111` | `n/a` | `n/a` | `cWGBPT` | `cGBPT V2` | planned | +| `GBP stable` | `651940` | `n/a` | `n/a` | `cAGBPT` | `cGBPT V2` | planned | +| `AUD stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWAUDC` | `cAUDC V2` | deployed | +| `AUD stable` | `1111` | `n/a` | `n/a` | `cWAUDC` | `cAUDC V2` | planned | +| `AUD stable` | `651940` | `n/a` | `n/a` | `cAAUDC` | `cAUDC V2` | planned | +| `JPY stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWJPYC` | `cJPYC V2` | deployed | +| `JPY stable` | `1111` | `n/a` | `n/a` | `cWJPYC` | `cJPYC V2` | planned | +| `JPY stable` | `651940` | `n/a` | `n/a` | `cAJPYC` | `cJPYC V2` | planned | +| `CHF stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWCHFC` | `cCHFC V2` | deployed | +| `CHF stable` | `1111` | `n/a` | `n/a` | `cWCHFC` | `cCHFC V2` | planned | +| `CHF stable` | `651940` | `n/a` | `n/a` | `cACHFC` | `cCHFC V2` | planned | +| `CAD stable` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWCADC` | `cCADC V2` | deployed | +| `CAD stable` | `1111` | `n/a` | `n/a` | `cWCADC` | `cCADC V2` | planned | +| `CAD stable` | `651940` | `n/a` | `n/a` | `cACADC` | `cCADC V2` | planned | +| `Gold commodity` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWXAUC` | `cXAUC V2` | deployed | +| `Gold commodity` | `1111` | `n/a` | `n/a` | `cWXAUC` | `cXAUC V2` | planned | +| `Gold commodity` | `651940` | `n/a` | `n/a` | `cAXAUC` | `cXAUC V2` | planned | +| `Gold commodity` | `all connected public networks except 1111` | `n/a` | `n/a` | `cWXAUT` | `cXAUT V2` | deployed | +| `Gold commodity` | `1111` | `n/a` | `n/a` | `cWXAUT` | `cXAUT V2` | planned | +| `Gold commodity` | `651940` | `n/a` | `n/a` | `cAXAUT` | `cXAUT V2` | planned | +| `Gas-native` | `1` | `ETH` | `WETH` | `cWETH` | `cETH` | deployed mirror, planned pool rollout | +| `Gas-native` | `10` | `ETH` | `WETH` | `cWETHL2` | `cETHL2` | deployed mirror, planned pool rollout | +| `Gas-native` | `8453` | `ETH` | `WETH` | `cWETHL2` | `cETHL2` | deployed mirror, planned pool rollout | +| `Gas-native` | `42161` | `ETH` | `WETH` | `cWETHL2` | `cETHL2` | deployed mirror, planned pool rollout | +| `Gas-native` | `25` | `CRO` | `WCRO` | `cWCRO` | `cCRO` | deployed mirror, planned pool rollout | +| `Gas-native` | `56` | `BNB` | `WBNB` | `cWBNB` | `cBNB` | deployed mirror, planned pool rollout | +| `Gas-native` | `100` | `XDAI` | `WXDAI` | `cWXDAI` | `cXDAI` | deployed mirror, planned pool rollout | +| `Gas-native` | `137` | `POL` | `WPOL` | `cWPOL` | `cPOL` | deployed mirror, planned pool rollout | +| `Gas-native` | `42220` | `CELO` | `WCELO` | `cWCELO` | `cCELO` | deployed mirror, planned pool rollout | +| `Gas-native` | `43114` | `AVAX` | `WAVAX` | `cWAVAX` | `cAVAX` | deployed mirror, planned pool rollout | +| `Gas-native` | `1111` | `WEMIX` | `WWEMIX` | `cWWEMIX` | `cWEMIX` | deployed mirror, planned pool rollout | +| `Gas-native` | `651940` | `WALL` | `WALL` | `cAWALL` | `cWALL` | planned | +| `Gas-native` | `651940` | `ETH` | `WETH` | `cAETH` | `cETH` | planned | + +## 3. Chain 138 Canonical Full-Mesh Pool List + +### P0 canonical hub + +| Pool | Purpose | Shape | +|---|---|---| +| `cUSDT V2 / cUSDC V2` | canonical compliant USD hub | two-sided + single-sided defense | +| `cUSDT V2 / USDT` | compliant/native bridge rail | two-sided + single-sided defense | +| `cUSDC V2 / USDC` | compliant/native bridge rail | two-sided + single-sided defense | + +### P0 Wave 1 non-USD + +| Pool | Purpose | Shape | +|---|---|---| +| `cEURC V2 / cUSDC V2` | EUR hub | two-sided + single-sided defense | +| `cEURT V2 / cUSDC V2` | EUR hub | two-sided + single-sided defense | +| `cGBPC V2 / cUSDC V2` | GBP hub | two-sided + single-sided defense | +| `cGBPT V2 / cUSDC V2` | GBP hub | two-sided + single-sided defense | +| `cAUDC V2 / cUSDC V2` | AUD hub | two-sided + single-sided defense | +| `cJPYC V2 / cUSDC V2` | JPY hub | two-sided + single-sided defense | +| `cCHFC V2 / cUSDC V2` | CHF hub | two-sided + single-sided defense | +| `cCADC V2 / cUSDC V2` | CAD hub | two-sided + single-sided defense | +| `cXAUC V2 / cUSDC V2` | gold hub | two-sided + single-sided defense | +| `cXAUT V2 / cUSDC V2` | gold hub | two-sided + single-sided defense | + +### P1 cross-links + +| Pool | Purpose | +|---|---| +| `cEURC V2 / cEURT V2` | same-currency cross-stable | +| `cGBPC V2 / cGBPT V2` | same-currency cross-stable | +| `cXAUC V2 / cXAUT V2` | gold cross-link | + +### P1/P2 gas-native + +| Pool | Purpose | +|---|---| +| `cETH / WETH` | mainnet ETH rail | +| `cETH / cUSDC V2` | ETH/USD hub | +| `cETHL2 / cUSDC V2` | L2 ETH reference | +| `cBNB / cUSDC V2` | BNB/USD hub | +| `cPOL / cUSDC V2` | POL/USD hub | +| `cAVAX / cUSDC V2` | AVAX/USD hub | +| `cCRO / cUSDC V2` | CRO/USD hub | +| `cXDAI / cUSDC V2` | XDAI/USD hub | +| `cCELO / cUSDC V2` | CELO/USD hub | +| `cWEMIX / cUSDC V2` | WEMIX/USD hub | + +## 4. ALL Mainnet `cA*` Full-Mesh Pool List + +### P0 canonical hub + +| Pool | Purpose | Shape | +|---|---|---| +| `cAUSDT / cAUSDC` | canonical ALL USD hub | two-sided + single-sided defense | +| `cAUSDT / AUSDT` | compliant/native ALL rail | two-sided + single-sided defense | +| `cAUSDC / USDC` | compliant/native ALL rail | two-sided + single-sided defense | + +### P0 Wave 1 non-USD + +| Pool | Purpose | Shape | +|---|---|---| +| `cAEURC / cAUSDC` | EUR hub | two-sided + single-sided defense | +| `cAEURT / cAUSDC` | EUR hub | two-sided + single-sided defense | +| `cAGBPC / cAUSDC` | GBP hub | two-sided + single-sided defense | +| `cAGBPT / cAUSDC` | GBP hub | two-sided + single-sided defense | +| `cAAUDC / cAUSDC` | AUD hub | two-sided + single-sided defense | +| `cAJPYC / cAUSDC` | JPY hub | two-sided + single-sided defense | +| `cACHFC / cAUSDC` | CHF hub | two-sided + single-sided defense | +| `cACADC / cAUSDC` | CAD hub | two-sided + single-sided defense | +| `cAXAUC / cAUSDC` | gold hub | two-sided + single-sided defense | +| `cAXAUT / cAUSDC` | gold hub | two-sided + single-sided defense | + +### P1 cross-links + +| Pool | Purpose | +|---|---| +| `cAEURC / cAEURT` | same-currency cross-stable | +| `cAGBPC / cAGBPT` | same-currency cross-stable | +| `cAXAUC / cAXAUT` | gold cross-link | + +### P1 gas-native + +| Pool | Purpose | +|---|---| +| `cAETH / WETH` | ETH rail on ALL | +| `cAETH / cAUSDC` | ETH/USD hub | +| `cAWALL / WALL` | native ALL rail | +| `cAWALL / cAUSDC` | WALL/USD hub | + +## 5. Public `cW*` Mesh Template + +| Network | Required stable hub pools | Required Wave 1 pools | Required gas-native pools | +|---|---|---|---| +| `1` | `cWUSDT/USDC`, `cWUSDC/USDC`, `cWUSDT/USDT`, `cWUSDC/USDT`, `cWUSDT/cWUSDC` | full Wave 1 vs `USDC` | `cWETH/WETH`, `cWETH/USDC` | +| `10` | same | same | `cWETHL2/WETH`, `cWETHL2/USDC` | +| `8453` | same | same | `cWETHL2/WETH`, `cWETHL2/USDC` | +| `42161` | same | same | `cWETHL2/WETH`, `cWETHL2/USDC` | +| `25` | same | same | `cWCRO/WCRO`, `cWCRO/USDT` | +| `56` | same | same | `cWBNB/WBNB`, `cWBNB/USDT` | +| `100` | same | same | `cWXDAI/WXDAI`, `cWXDAI/USDC` | +| `137` | same | same | `cWPOL/WPOL`, `cWPOL/USDC` | +| `42220` | same | same | `cWCELO/WCELO`, `cWCELO/USDC` | +| `43114` | same | same | `cWAVAX/WAVAX`, `cWAVAX/USDC` | +| `1111` | same, all planned except gas family | full Wave 1, planned | `cWWEMIX/WWEMIX`, `cWWEMIX/USDC` | + +## 6. Protocol Integration Matrix + +| Protocol | `138 c* V2` | `651940 cA*` | public `cW*` | Required outcome | +|---|---|---|---|---| +| `DODO` | required | required | required | primary PMM + single-sided mesh | +| `Uniswap v3` | required | required | required | concentrated-liquidity execution lane | +| `Uniswap v2` | required | required | required | fallback spot lane | +| `SushiSwap` | required | required | required | secondary AMM lane | +| `Curve` | required | required | required | stable / basket lanes | +| `Balancer` | required | required | required | weighted / stable basket lanes | +| `1Inch` | required | required | required | aggregator route + execution | +| `Aave` | required | required | required | reserve + flash-liquidity support | +| `GMX` | required | required | required | market integration where supported | +| `dYdX` | required | required | required | market integration where supported | + +## 7. Single-Sided Liquidity Deployment Plan + +| Phase | Namespace | Work | Exit condition | +|---|---|---|---| +| `P0` | `138 c* V2` | deploy full canonical hub + Wave 1 PMM lanes | all P0 pools deployed, seeded, routeable | +| `P1` | `138 c* V2` | add cross-links + gas-native hubs | canonical `138` mesh complete | +| `P2` | `651940 cA*` | deploy ALL Mainnet hub + Wave 1 PMM lanes | all `cA*` P0 pools deployed, seeded, routeable | +| `P3` | `651940 cA*` | add cross-links + gas-native hubs | ALL Mainnet mesh complete | +| `P4` | public `cW*` | deploy stable hub + Wave 1 + gas-native PMM lanes per network | every connected network has mesh template live | +| `P5` | all namespaces | add `Uniswap`, `Sushi`, `Curve`, `Balancer` coverage | multi-venue spot liquidity complete | +| `P6` | all namespaces | wire `1Inch`, `Aave`, `GMX`, `dYdX` | protocol coverage complete | +| `P7` | all namespaces | finish discovery, quoting, simulation, execution, settlement | MEV-complete | + +## 8. Execution Tracker Template + +Use this row shape for every required pool and protocol cell: + +| Namespace | Chain | Asset family | Pair / Venue | Deployed | Seeded | Validated | Live | MEV-ready | Notes | +|---|---|---|---|---|---|---|---|---|---| +| `c* V2` / `cA*` / `cW*` | chain id | family | pool pair or protocol venue | `yes/no` | `yes/no` | `yes/no` | `yes/no` | `yes/no` | free-form | + +## 9. Recommendations + +### 9.1 Rollout policy + +1. Freeze `138` as the canonical reference before broadening public-chain rollout. +2. Do not promote any `cA*` or `cW*` venue to production primary until the matching `138` family is seeded, validated, and MEV-visible. +3. Treat `651940` as the second canonical namespace, not as an afterthought public chain. +4. Keep `1111` explicitly marked as `planned` until the full token family is published, not partially implied live. + +### 9.2 Pool deployment policy + +1. Deploy hub pools before cross-links. +2. Seed each new pool with routeable depth, not symbolic inventory. +3. Require a single-sided defense lane for every hub pair. +4. Add cross-links only after the hub pair is live, quoted, and settlement-tested. + +### 9.3 Protocol policy + +1. `DODO` is the first venue for mesh completion. +2. `Uniswap v3`, `Curve`, `Balancer`, and `SushiSwap` should be added after the DODO lane is live for the same family. +3. `1Inch` should be treated as an execution/routing surface, not the source of truth for liquidity existence. +4. `Aave`, `GMX`, and `dYdX` must be tracked as required protocol cells even where the answer is `unsupported_by_protocol`. + +### 9.4 MEV policy + +1. No pool should be called complete until it is: + - discovered + - quoted + - simulated + - executable + - settleable +2. The canonical completion label should be `live_with_mev`, not just `deployed`. +3. For every namespace, keep the `health`, `infra`, `freshness`, `venue coverage`, and `native venue coverage` checks green before adding another rollout wave. + +## 10. Companion Artifacts + +Use these files together: + +- [GRU_V2_FULL_MESH_EXECUTION_CHECKLIST.md](./GRU_V2_FULL_MESH_EXECUTION_CHECKLIST.md) +- [GRU_V2_PROTOCOL_COMPLETION_MATRIX.md](./GRU_V2_PROTOCOL_COMPLETION_MATRIX.md) +- [GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md](./GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md) +- [../../config/gru-v2-full-mesh-master-matrix.json](/home/intlc/projects/proxmox/config/gru-v2-full-mesh-master-matrix.json) +- [../../config/gru-v2-full-mesh-pool-tracker.json](/home/intlc/projects/proxmox/config/gru-v2-full-mesh-pool-tracker.json) diff --git a/docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md b/docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md new file mode 100644 index 00000000..efc9e781 --- /dev/null +++ b/docs/04-configuration/GRU_V2_PROTOCOL_COMPLETION_MATRIX.md @@ -0,0 +1,57 @@ +# GRU v2 Protocol Completion Matrix + +This file defines what “complete” means per protocol across the three GRU namespaces: + +- `c* V2` on Chain `138` +- `cA*` on ALL Mainnet `651940` +- `cW*` on the connected public networks + +Status vocabulary: + +- `todo` +- `in_progress` +- `blocked` +- `done` +- `unsupported_by_protocol` +- `not_applicable` + +Implementation vocabulary: + +- `script-backed`: this repo has a deploy/integration path for the protocol cell +- `inventory-backed`: this repo documents the cell, but does not yet deploy it end to end +- `external-blocked`: completion depends on external venue support, partner deployment, or out-of-repo contracts + +## 1. Protocol expectations + +| Protocol | Liquidity / market role | Required namespace scope | Completion rule | +|---|---|---|---| +| `DODO` | primary PMM and single-sided mesh | `138`, `651940`, public `cW*` | every required hub pair and Wave 1 pair has a PMM lane | +| `Uniswap v3` | concentrated-liquidity reference and execution | `138`, `651940`, public `cW*` | primary hub pairs and gas-native hub pairs have reference lanes | +| `Uniswap v2` | fallback spot lane | `138`, `651940`, public `cW*` | fallback lanes exist where v2 semantics are supported | +| `SushiSwap` | secondary AMM lane | `138`, `651940`, public `cW*` | required hub families represented where deployed on the chain | +| `Curve` | stable and basket lanes | `138`, `651940`, public `cW*` | stable families have Curve-compatible basket/routing coverage where supported | +| `Balancer` | weighted and stable basket lanes | `138`, `651940`, public `cW*` | weighted / stable basket pools for required families where supported | +| `1Inch` | aggregator execution and routing | `138`, `651940`, public `cW*` | venue surfaces are routeable and executable through the aggregator | +| `Aave` | reserve listing and flash-liquidity support | `138`, `651940`, public `cW*` | reserve / flash integration or explicit `unsupported_by_protocol` | +| `GMX` | native market integration | `138`, `651940`, public `cW*` | market support or explicit `unsupported_by_protocol` | +| `dYdX` | native market integration | `138`, `651940`, public `cW*` | market support or explicit `unsupported_by_protocol` | + +## 2. Namespace-by-protocol tracker + +| Namespace | DODO | Uni v3 | Uni v2 | Sushi | Curve | Balancer | 1Inch | Aave | GMX | dYdX | +|---|---|---|---|---|---|---|---|---|---|---| +| `138 c* V2` | `done`, `script-backed` | `done`, `script-backed` | `todo`, `external-blocked` | `todo`, `external-blocked` | `done`, `script-backed` | `done`, `script-backed` | `done`, `script-backed` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | +| `651940 cA*` | `todo`, `inventory-backed` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | +| public `cW*` | `in_progress`, `script-backed` | `in_progress`, `inventory-backed` | `in_progress`, `inventory-backed` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | `in_progress`, `inventory-backed` | `todo`, `external-blocked` | `todo`, `external-blocked` | `todo`, `external-blocked` | + +## 3. Completion gates + +For a protocol cell to move to `done`, all of the following should be true: + +1. `deployed` +2. `seeded` or `listed` +3. `validated` +4. `live` +5. `MEV-ready` where the protocol participates in MEV routing/execution + +For `Aave`, `GMX`, and `dYdX`, if the protocol does not support the family or chain natively, the cell should be closed as `unsupported_by_protocol` rather than left ambiguous. diff --git a/scripts/verify/reconcile-gru-v2-full-mesh-status.py b/scripts/verify/reconcile-gru-v2-full-mesh-status.py new file mode 100644 index 00000000..9ad5822c --- /dev/null +++ b/scripts/verify/reconcile-gru-v2-full-mesh-status.py @@ -0,0 +1,170 @@ +#!/usr/bin/env python3 +import json +import pathlib + + +ROOT = pathlib.Path("/home/intlc/projects/proxmox") +TRACKER = ROOT / "config/gru-v2-full-mesh-pool-tracker.json" +DEPLOYMENT = ROOT / "cross-chain-pmm-lps/config/deployment-status.json" +OUT_JSON = ROOT / "reports/status/gru_v2_full_mesh_status_report.json" +OUT_MD = ROOT / "docs/04-configuration/GRU_V2_FULL_MESH_LIVE_STATUS_REPORT.md" + + +CHAIN138_EXACT = { + "cUSDT V2 / cUSDC V2": "0x9e89bAe009adf128782E19e8341996c596ac40dC", + "cUSDT V2 / USDT": "0x866Cb44b59303d8dc5f4F9E3E7A8e8b0bf238d66", + "cUSDC V2 / USDC": "0xc39B7D0F40838cbFb54649d327f49a6DAC964062", + "cEURC V2 / cUSDC V2": "0x5efD4771e35B9A101Bc0f4E44905b3c77292D95D", + "cEURT V2 / cUSDC V2": "0xC479ad0c2333c7738DFA13Ef9E0d3eD2De53F191", + "cGBPC V2 / cUSDC V2": "0xb7fe7C3B71580f9BcE496076dc8b0B4B40A06edd", + "cGBPT V2 / cUSDC V2": "0x77aEfcd4E25eFf32A680057879fB176aF4a66838", + "cAUDC V2 / cUSDC V2": "0x034B89E3F050F48849139E37813EdFd048253876", + "cJPYC V2 / cUSDC V2": "0xD6a83bb947Ea062580c220e03B37E44C9532FA2c", + "cCHFC V2 / cUSDC V2": "0x9fd00d9875cBd1b8F54F51e153ade0D7DC87f05B", + "cCADC V2 / cUSDC V2": "0xf9dEd79Ff2a481C1c6aD6Bfb2114b488Aba567F5", + "cXAUC V2 / cUSDC V2": "0xDC4968F0B665ccDffBba6eB23902e95b5b3B097B", + "cXAUT V2 / cUSDC V2": "0x8C7874d1040377be410c1140A1B5E1B869fbBe30", + "cEURC V2 / cEURT V2": "0x0F2f82bf28e7844898BFABf35A5566681fC2f7ab", + "cGBPC V2 / cGBPT V2": "0x7B3CD08B46b7b1EAD9F5cB5AcEaf1Db298A39db5", + "cXAUC V2 / cXAUT V2": "0x89e0304B724E87F816A1c72e716949d4DbC9c4d5", +} + + +def load_json(path: pathlib.Path): + return json.loads(path.read_text()) + + +def normalize_pair(pair: str) -> str: + return " / ".join(part.strip() for part in pair.split("/")) + + +def deployment_pair_map(chain_data: dict): + out = {} + for key in ["pmmPools", "pmmPoolsVolatile"]: + for row in chain_data.get(key, []): + pair = f"{row['base']} / {row['quote']}" + out[normalize_pair(pair)] = { + "address": row.get("poolAddress"), + "publicRoutingEnabled": row.get("publicRoutingEnabled"), + "source": key, + } + return out + + +def reconcile(): + tracker = load_json(TRACKER) + deployment = load_json(DEPLOYMENT) + chain1_pairs = deployment_pair_map(deployment["chains"]["1"]) + + report = { + "statusDate": tracker["statusDate"], + "summary": { + "chain138": {"exactLive": 0, "plannedOnly": 0}, + "651940": {"exactLive": 0, "plannedOnly": 0}, + "publicMesh": {"exactLive": 0, "plannedOnly": 0}, + }, + "chain138": [], + "allMainnet651940": [], + "publicMesh": {}, + } + + for row in tracker["chain138"]["entries"]: + pair = row["pair"] + if pair in CHAIN138_EXACT: + status = "exact_live" + report["summary"]["chain138"]["exactLive"] += 1 + observed = {"address": CHAIN138_EXACT[pair]} + else: + status = "planned_only" + report["summary"]["chain138"]["plannedOnly"] += 1 + observed = None + report["chain138"].append({ + "pair": pair, + "priority": row.get("priority"), + "status": status, + "observed": observed, + }) + + for row in tracker["allMainnet651940"]["entries"]: + report["summary"]["651940"]["plannedOnly"] += 1 + report["allMainnet651940"].append({ + "pair": row["pair"], + "priority": row.get("priority"), + "status": "planned_only", + "observed": None, + }) + + for chain, bucket in tracker["publicMesh"].items(): + report["publicMesh"][chain] = [] + override = bucket.get("statusOverride") + for pair in bucket["entries"]: + normalized = normalize_pair(pair) + if chain == "1" and normalized in chain1_pairs: + status = "exact_live" + report["summary"]["publicMesh"]["exactLive"] += 1 + observed = chain1_pairs[normalized] + else: + status = "planned_only" if override == "planned" or chain != "1" else "planned_only" + report["summary"]["publicMesh"]["plannedOnly"] += 1 + observed = None + report["publicMesh"][chain].append({ + "pair": normalized, + "status": status, + "observed": observed, + }) + + return report + + +def render_markdown(report: dict) -> str: + lines = [] + lines.append("# GRU v2 Full Mesh Live Status Report") + lines.append("") + lines.append(f"**Status date:** {report['statusDate']}") + lines.append("") + lines.append("## Summary") + lines.append("") + lines.append(f"- Chain `138`: `{report['summary']['chain138']['exactLive']}` exact live rows, `{report['summary']['chain138']['plannedOnly']}` planned-only") + lines.append(f"- ALL Mainnet `651940`: `{report['summary']['651940']['plannedOnly']}` planned-only") + lines.append(f"- Public `cW*` mesh: `{report['summary']['publicMesh']['exactLive']}` exact live rows, `{report['summary']['publicMesh']['plannedOnly']}` planned-only") + lines.append("") + lines.append("## Chain 138") + lines.append("") + lines.append("| Pair | Status | Observed |") + lines.append("|---|---|---|") + for row in report["chain138"]: + observed = row["observed"]["address"] if row["observed"] else "" + lines.append(f"| `{row['pair']}` | `{row['status']}` | `{observed}` |") + lines.append("") + lines.append("## ALL Mainnet 651940") + lines.append("") + lines.append("| Pair | Status |") + lines.append("|---|---|") + for row in report["allMainnet651940"]: + lines.append(f"| `{row['pair']}` | `{row['status']}` |") + lines.append("") + lines.append("## Public cW* Mesh") + lines.append("") + for chain, rows in report["publicMesh"].items(): + lines.append(f"### Chain `{chain}`") + lines.append("") + lines.append("| Pair | Status | Observed |") + lines.append("|---|---|---|") + for row in rows: + observed = row["observed"]["address"] if row["observed"] else "" + lines.append(f"| `{row['pair']}` | `{row['status']}` | `{observed}` |") + lines.append("") + return "\n".join(lines) + + +def main(): + report = reconcile() + OUT_JSON.parent.mkdir(parents=True, exist_ok=True) + OUT_JSON.write_text(json.dumps(report, indent=2) + "\n") + OUT_MD.write_text(render_markdown(report) + "\n") + print(f"Wrote {OUT_JSON}") + print(f"Wrote {OUT_MD}") + + +if __name__ == "__main__": + main() diff --git a/smom-dbis-138 b/smom-dbis-138 index 79750d92..da780731 160000 --- a/smom-dbis-138 +++ b/smom-dbis-138 @@ -1 +1 @@ -Subproject commit 79750d92e604cfebdcb6844809a813f9a279245d +Subproject commit da78073104aeaf227ced57fc85c79815ec1eda71