# 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 - `querySellQuote` outputs for the current policy tranches ## Prereqs - `cast` installed - `python3` installed - Mainnet RPC available through `ETHEREUM_MAINNET_RPC` - Optional but recommended: - `QUOTE_PUSH_TREASURY_MANAGER_MAINNET` - `AAVE_QUOTE_PUSH_RECEIVER_MAINNET` The wrapper loads env from the repo root `.env` and `smom-dbis-138/.env` through [load-project-env.sh](/home/intlc/projects/proxmox/scripts/lib/load-project-env.sh:1). ## Command Run from the repo root: ```bash bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh ``` ## Artifacts The command writes: - `reports/status/mainnet-cwusdc-usdc-preflight-.json` - `reports/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.publicPairDeviationBps` - `summary.publicPairBaseReserveUnits` - `summary.publicPairQuoteReserveUnits` - `summary.defendedMidPrice` - `summary.managerAvailableQuoteUnits` - `summary.receiverSweepableQuoteUnits` - `summary.decisionSeverity` - `summary.decisionAction` - `summary.flashQuoteAmountRaw` Deep checks in the JSON: - `health.publicPairHealth` - `health.defendedVenueHealth` - `treasuryManager` - `receiver` - `defendedLaneQuotes` - `warnings` ## Decision gate before first rebalance Do not run the first rebalance cycle until all of these are true: - `health.publicPairHealth.live` is `true` - `health.defendedVenueHealth.live` is `true` - `warnings` is empty, or every warning is understood and accepted - `summary.flashQuoteAmountRaw` is non-zero if intervention is expected - `treasuryManager.isReceiverOwnedByManager` is `true` when using the managed cycle - `summary.managerAvailableQuoteUnits` is enough for planned gas holdback / recycle handling ## Related commands Health-only decision: ```bash python3 scripts/verify/check-mainnet-cwusdc-usdc-support-health.py ``` Managed-cycle simulation after preflight: ```bash bash scripts/maintenance/run-mainnet-cwusdc-usdc-support.sh --health-only ```