- 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
93 lines
2.8 KiB
Markdown
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
|
|
```
|