Skip to content

feat: add dynamic market ops planner - #426

Draft
Seranged wants to merge 1 commit into
developmentfrom
feat/market-ops-dynamic-planner
Draft

Seranged wants to merge 1 commit into
developmentfrom
feat/market-ops-dynamic-planner

Conversation

@Seranged

@Seranged Seranged commented Jul 29, 2026

Copy link
Copy Markdown

Summary

Add a dynamic, request-scoped EVK planner boundary for Market Ops. It accepts a complete desired cluster state, projects it through the existing ManageClusterBase semantics, and emits deterministic non-broadcast artifacts at an exact chain block.

Changes

  • add a strict evk-market-ops-cluster-input-v1 parser for dynamic assets, vaults, routers, IRMs, oracle providers, caps, and LTV matrices
  • add a dynamic cluster entrypoint backed by existing EVK management semantics
  • add explicit Safe, timelock, risk-steward, emergency, direct, and deployer-direct route validation
  • emit request-scoped Batches.json, Cluster.json, and MarketOpsManifest.json artifacts
  • bind the canonical input plus exact Batches and Cluster artifact hashes into the non-broadcast manifest
  • add a fail-closed runner that pins source and block hashes, strips signing keys, never broadcasts, and isolates request input, output, and cache paths
  • preserve existing script output behavior when request-scoped output variables are absent

This PR provides the EVK semantic core and local provider runner. It does not add a hosted HTTP service, signing, or transaction broadcasting.

Tests

  • forge build
  • forge test --match-path "test/MarketOps/*.t.sol" -vv (7 passed)
  • shellcheck script/production/market-ops/plan.sh
  • bash -n script/production/market-ops/plan.sh
  • git diff --check
  • exact-block Ethereum dry run for a dynamic one-vault request; independently recomputed Batches and Cluster hashes matched the manifest, which reported broadcast: false

Add a request-scoped EVK cluster input, route validation, exact-fork safeguards, isolated artifacts, and a fail-closed non-broadcast provider runner.
@Seranged
Seranged force-pushed the feat/market-ops-dynamic-planner branch from a5a5a76 to 4041ab7 Compare July 29, 2026 12:49
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