Files
proxmox/docs/runbooks/MAINNET_CWUSDC_USDC_PREFLIGHT_RUNBOOK.md
defiQUG b8613905bd
Some checks failed
Deploy to Phoenix / validate (push) Failing after 15s
Deploy to Phoenix / deploy (push) Has been skipped
chore: sync workspace — configs, docs, scripts, CI, pnpm, submodules
- 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
2026-04-21 22:01:33 -07:00

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
  • 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.

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>.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

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