Skip to content

feat(deploy): spike-level vault config spike.json (SOLU-3373) - #29

Draft
Jvandeseijp wants to merge 1 commit into
mainfrom
jarmo/solu-3373-spike-deploy-config
Draft

feat(deploy): spike-level vault config spike.json (SOLU-3373)#29
Jvandeseijp wants to merge 1 commit into
mainfrom
jarmo/solu-3373-spike-deploy-config

Conversation

@Jvandeseijp

@Jvandeseijp Jvandeseijp commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

SOLU-3373 — spike-level deploy config deployments/configs/spike.json

The live-spike deploy config. Modeled on mainnet-spike-g2.json.

Locked spike-level values

  • 24h timelock (timelockMinDelaySec: 86400) — per decision, exercise the governance gate live during the spike.
  • Spike caps (SOLU-3373): depositCap 500 USDC, maxDepositPerAddress 100 USDC — off the $100 test values, sized for the 10-account matrix (~175 USDC total exposure + headroom).
  • Non-zero fees: perfFeeBps 1500 (15%), mgmtFeeAnnualBps 200 (2%) — deliberately non-zero so the perf-fee realization (scenario h) and mgmt-fee accrual (scenario i) battle-test scenarios actually exercise. (The g2 config had 0/0, which would make them no-ops.)
  • Canonical USDC (index 0, 8dp) routed through Circle's CoreDepositWallet (G2), not the dead legacy bridge.

Human-decision TODOs (flagged in the _TODO field)

  • operator / emergencyAdmin / feeRecipient — three DISTINCT key-controlled EOAs (sentinels 0x…a001/a002/a003 are placeholders; feeRecipient must be key-controlled to recover fees at wind-down).
  • whitelistPerps (the ONE strategy market; placeholder [0] = BTC perp), leverageCapBps (30000), slippageBandBps (200).
  • escapeGraceSeconds, the SLA requestFulfillmentWindow, and the soft barriers are not config fields — set post-deploy via the 24h timelock (runbook in PR-7).

Verification

STRATEGY_CONFIG=deployments/configs/spike.json forge script script/Deploy.s.sol --rpc-url $HYPEREVM_RPC_MAINNET WITHOUT --broadcastSIMULATION COMPLETE: H3 role-distinctness, the 24h timelock floor, and the CoreDepositWallet linkage (wallet.token() / tokenSystemAddress() against the live wallet) all pass. (The precompile evmContract check is skipped in simulation — revm has no HyperCore precompiles — but is proven live in the G2 spike.)

Draft — do not merge. The human replaces the TODO addresses/market before the real funded deploy.


Summary by cubic

Adds spike-level deploy config deployments/configs/spike.json with a 24h timelock, raised deposit caps, and non-zero fees for the live HyperVault spike. Aligns with SOLU-3373 by moving off the $100 test caps.

  • New Features
    • Spike parameters: 24h timelock; depositCap 500 USDC; max per address 100 USDC; fees 15% performance / 2% management.
    • USDC routing: canonical USDC (index 0, 8dp) via Circle CoreDepositWallet.
    • Pre-deploy TODOs: replace placeholder EOAs (operator, emergencyAdmin, feeRecipient) and market settings (whitelistPerps, leverageCapBps, slippageBandBps); set SLA/escape windows via the timelock post-deploy.

Written for commit 0c5015a. Summary will update on new commits.

Review in cubic

… (SOLU-3373)

Live-spike deploy config modeled on mainnet-spike-g2.json:
- 24h timelock (timelockMinDelaySec 86400) — exercise the governance gate live.
- Spike-level caps (SOLU-3373): depositCap 500 USDC, maxDepositPerAddress 100 USDC
  (off the $100 test values, sized for the 10-account matrix).
- NON-ZERO fees: perfFeeBps 1500, mgmtFeeAnnualBps 200 — so the perf-fee and
  mgmt-fee battle-test scenarios actually exercise (the g2 config had 0/0).
- Canonical USDC (index 0, 8dp) routed through Circle's CoreDepositWallet (G2),
  not the dead legacy bridge.
- operator/emergencyAdmin/feeRecipient are DISTINCT sentinel placeholders and
  whitelistPerps/leverageCapBps/slippageBandBps are placeholders — all flagged as
  human-decision TODOs in the _TODO field. escapeGraceSeconds / SLA window /
  barriers are post-deploy timelock actions, not config.

Validated via 'forge script script/Deploy.s.sol' WITHOUT --broadcast against
mainnet: SIMULATION COMPLETE — role-distinctness (H3), the 24h timelock floor,
and the CoreDepositWallet linkage (wallet.token()/tokenSystemAddress()) all pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant