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

93 lines
2.8 KiB
Markdown

# 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-<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
## 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
```