- Submodule pins: dbis_core, cross-chain-pmm-lps, mcp-proxmox (local, push may be pending), metamask-integration, smom-dbis-138 - Atomic swap + cross-chain-pmm-lops-publish, deploy-portal workflow, phoenix deploy-targets, routing/aggregator matrices - Docs, token-lists, forge proxy, phoenix API, runbooks, verify scripts Made-with: Cursor
2.8 KiB
Mainnet cWUSDC/USDC Preflight Runbook
Purpose: Capture a read-only snapshot of the Mainnet cWUSDC/USDC rail before the first rebalance / peg-defense cycle.
Scope: Public Uniswap V2 discovery pair, defended DODO PMM venue, treasury-manager quote availability, receiver surplus, and defended-lane quote sizing inputs.
Safety: Read-only only. No broadcasts, no state writes, no liquidity moves.
What this captures
- Public pair reserves and current price drift
- Defended DODO PMM reserves and mid-price drift
- Policy decision from the health checker
- Treasury-manager quote balance and available quote
- Receiver quote balance and sweepable quote
querySellQuoteoutputs for the current policy tranches
Prereqs
castinstalledpython3installed- Mainnet RPC available through
ETHEREUM_MAINNET_RPC - Optional but recommended:
QUOTE_PUSH_TREASURY_MANAGER_MAINNETAAVE_QUOTE_PUSH_RECEIVER_MAINNET
The wrapper loads env from the repo root .env and smom-dbis-138/.env through load-project-env.sh.
Command
Run from the repo root:
bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh
Artifacts
The command writes:
reports/status/mainnet-cwusdc-usdc-preflight-<UTC timestamp>.jsonreports/status/mainnet-cwusdc-usdc-preflight-latest.json
The latest file is the easiest input for the first rebalance decision.
What to inspect
Use the summary printed by the wrapper first, then open the JSON if something looks off.
Required checks:
summary.publicPairDeviationBpssummary.publicPairBaseReserveUnitssummary.publicPairQuoteReserveUnitssummary.defendedMidPricesummary.managerAvailableQuoteUnitssummary.receiverSweepableQuoteUnitssummary.decisionSeveritysummary.decisionActionsummary.flashQuoteAmountRaw
Deep checks in the JSON:
health.publicPairHealthhealth.defendedVenueHealthtreasuryManagerreceiverdefendedLaneQuoteswarnings
Decision gate before first rebalance
Do not run the first rebalance cycle until all of these are true:
health.publicPairHealth.liveistruehealth.defendedVenueHealth.liveistruewarningsis empty, or every warning is understood and acceptedsummary.flashQuoteAmountRawis non-zero if intervention is expectedtreasuryManager.isReceiverOwnedByManageristruewhen using the managed cyclesummary.managerAvailableQuoteUnitsis enough for planned gas holdback / recycle handling
Related commands
Health-only decision:
python3 scripts/verify/check-mainnet-cwusdc-usdc-support-health.py
Managed-cycle simulation after preflight:
bash scripts/maintenance/run-mainnet-cwusdc-usdc-support.sh --health-only