# Mainnet cWUSDC/USDC Repeg Runbook **Purpose:** Turn the latest read-only preflight into an exact inventory plan for restoring the Mainnet `cWUSDC/USDC` rail toward `1:1`. **Scope:** Defended DODO PMM reserve-gap sizing, public Uniswap V2 floor shortfalls, treasury-manager funding needs, and copy-paste operator commands. **Safety:** The planner is read-only. It does not broadcast or move funds. ## What this planner answers - How far the defended PMM is from simple `1:1` reserve parity - How much USDC is needed to fund one max-sized automated defense cycle - How far the public pair is below the current policy floor - Whether the current operator wallet can cover any of those gaps - Exact commands to fund the manager, top up the defended PMM, and reseed the public pair once inventory exists ## Prereqs - Run the preflight first: ```bash bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh ``` - `cast` installed - `python3` installed - `ETHEREUM_MAINNET_RPC` available - Optional but useful: - `PRIVATE_KEY` or `KEEPER_PRIVATE_KEY` so the planner can inspect the current operator wallet ## Command Run from the repo root: ```bash bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh ``` ## Artifacts The wrapper writes: - `reports/status/mainnet-cwusdc-usdc-repeg-plan-.json` - `reports/status/mainnet-cwusdc-usdc-repeg-plan-latest.json` ## Key fields to inspect - `defendedVenue.simpleReserveParity.addQuoteUnits` - `automation.managerFundingForOneMaxCycle.shortfallUnits` - `publicLane.policyFloorBaseShortfallUnits` - `publicLane.policyFloorQuoteShortfallUnits` - `holderState` - `holderFundingChecks` - `blockers` - `operatorCommands` ## Interpretation notes - The defended-pool `1:1` number is an inference from matched 6-decimal tokens and equal reserve targets. - DODO PMM price can still differ from reserve ratio because the PMM curve is not a constant-product pool. - Re-run the preflight after every liquidity move. Treat the planner as a live calculator, not a one-time document. ## Operator sequence once funding exists 1. Fund the treasury manager with at least one max-sized automated tranche. Use `operatorCommands.fundManagerUsdc`. 2. Sell the planned USDC amount into the defended PMM. Use `operatorCommands.tradeDefendedPoolQuoteIn`. 3. Reseed the public pair to at least the current policy floor if public routing / discovery should be healthy again. Use `operatorCommands.reseedPublicPair`. 4. Re-run both read-only checks. ```bash bash scripts/verify/snapshot-mainnet-cwusdc-usdc-preflight.sh bash scripts/verify/plan-mainnet-cwusdc-usdc-repeg.sh ``` 5. Only after the defended lane is re-funded should you consider a managed quote-push cycle. ```bash bash scripts/maintenance/run-mainnet-cwusdc-usdc-support.sh --health-only ```