4.8 KiB
Scripts
size-inventory.cjs
Regenerates I_T^* (inventory target) and suggested D_0 per chain per cW token from config/simulation-params.json. Output includes assumptions (σ, T_refill/T_epoch, β, γ). Keeps configs honest and PRs reviewable.
Run from repo root (cross-chain-pmm-lps):
node scripts/size-inventory.cjs
Options:
--sigma 1.8— override USD stress multiplier (default 1.5)--refill-ratio 0.33— T_refill / T_epoch (default 0.33)--depth-mult 0.75— D_0 = depth_mult * I_T^* (default 0.75)--v-epoch '{"1":100000,"56":80000,"137":60000}'— per-chain V_epoch (JSON object)
Environment: V_EPOCH_<chainId> overrides V_epoch for that chain (e.g. V_EPOCH_1=100000).
Output: JSON with assumptions and per-chain per-token I_T_star, D_0, V_epoch, sigma, beta, gamma, and EUR stress flag where applicable.
validate-deployment-status.cjs
Validates config/deployment-status.json for minimum viable deployed graph. Use in CI so deployment-realistic sim cannot run with half-filled state.
Rules:
- If
bridgeAvailable === trueon a chain,cwTokensmust include at least cWUSDT and cWUSDC (phase 1). - For each
pmmPooland eachpmmPoolsVolatile[]entry:role∈ {defense, public_routing, truu_routing};feeBpsandkpresent;base/quote(ortokenIn/tokenOut) exist incwTokensoranchorAddresses(e.g. mainnet TRUU underanchorAddresses.TRUU). Non-zeropoolAddressmust not be the zero address.
Run:
node scripts/validate-deployment-status.cjs
Exit code: 0 if valid, 1 if invalid (errors to stderr).
Native protocol-only examples:
node scripts/validate-deployment-status.cjs config/validation-examples/native-protocol-only.valid.json
node scripts/validate-deployment-status.cjs config/validation-examples/native-protocol-only.invalid.json
The invalid example intentionally includes a placeholder scaffold and a non-native live 1inch row to exercise the rejection path.
Parent proxmox repo: live Mainnet cW/TRUU pool deploy and ratio-matched top-up scripts live under scripts/deployment/ (deploy-mainnet-pmm-cw-truu-pool.sh, add-mainnet-truu-pmm-topup.sh); see docs/03-deployment/MAINNET_PMM_TRUU_CWUSD_PEG_AND_BOT_RUNBOOK.md §11.
run-scenario.cjs
Builds the real routing graph from configs, runs epochs with PMM state updates, path enumeration + waterfilling, arb step (implied-price deviation, capped corrective trades, profit gate), bot step (inject/withdraw at 0.5×/1.5× I_T^* with intervention cost β/γ/ρ), and optional bridge shock trades. Emits a real scorecard (PR#2). Runs are deterministic when scenario.seed is set or derived from scenario name.
Scenarios may also include an optional microTradePolicy for gas-budgeted support trades in selected USD wrapper rails. This is meant to model tiny, controlled cWUSDC / cWUSDT turnover-seeding or inventory-corrective activity, not to turn the PMM into a venue.
Configs used: simulation-params.json, token-map.json, routing-controls.json; deployment-status.json only when graphMode = deployed. Pool topology from pool-matrix.json and scenario topology / fullQuoteChains.
Tuning constants (in script):
| Constant | Value | Purpose |
|---|---|---|
PROBE_SIZE |
1000 | Units for path cost probe (k-shortest by cost) |
K_PATHS |
5 | Max candidate paths per trade for waterfilling |
CHUNK_FRACTION |
0.05 | 5% of trade per chunk; marginal-equalization step size |
AMM_DEPTH_UNITS |
10e6 | Background AMM depth (notional; infinite-depth approx in code) |
AMM_FEE_BPS |
5 | Fee for anchor↔anchor stable swaps |
Run:
node scripts/run-scenario.cjs hub_only_11
node scripts/run-scenario.cjs --scenario full_quote_1_56_137
node scripts/run-scenario.cjs bridge_shock_137_56
node scripts/run-scenario.cjs micro_support_usd_wrappers_1_56_137
Output: JSON scorecard including: capture_mean, churn_mean, drain_half_life_epochs, path_concentration_index; intervention_cost_total / intervention_cost_inject_total / intervention_cost_withdraw_total / intervention_cost_by_chain / intervention_cost_per_1M_volume; micro_trade_count / micro_trade_volume_total / micro_trade_gas_cost_total; peak_deviation_bps (post-arb), peak_deviation_bps_pre_arb, peak_deviation_bps_post_arb, peak_deviation_bps_post_bot; arb_volume_total, arb_profit_total (execution-based, not mid). See docs/12-sim-scorecard.md and config/scorecard-schema.json.
Orderflow: Trade sizes use distribution: "uniform" by default. Scenario schema supports lognormal / pareto for skewed (many small + occasional whale) flows; implement in sampleTrade() when needed.