Remove AdminSellVault from arena deploy path #314
Labels
No labels
agent:fix_bugfix
agent:fix_conflicts
agent:fix_security
agent:gap_analysis
agent:implement
agent:open_issues
agents
agent:security_audit
agent:verify
area
timecurve
arena
arena-v2
audit
block:feature_review
block:security
bug
contracts
design
devops
docs
documentation
enhancement
epic
feature
frontend
indexer
low priority
megaeth
operations
ops
performance
QA
qa checklist
referrals
removal
security
smart-contracts
tech-debt
testing
time-arena
timecurve
visual-qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
code/yieldomega#314
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
Gap analysis follow-up from #309.
Current codebase
AdminSellVault.sol— legacy swap/rescue vault;notifyFundednever called fromTimeArena(0% admin on buys #300).TimeArena.initializestill requires non-zeroadminSellVault(TimeArena.solL208–237).AdminSellVaultfor Anvil/mainnet fixtures.docs/operations/references admin share history.Why needed
Approved: Remove
AdminSellVaultlegacy surface; no platform take on buys.Constraints / guardrails
DeployDev, Anvil fixtures) and registry JSON.Relevant files
contracts/src/arena/AdminSellVault.solcontracts/src/arena/TimeArena.sol—adminSellVaultstoragecontracts/script/deploy scriptscontracts/test/AdminSellVault.t.sol,DevStackIntegration.t.solscripts/lib/anvil_deploy_dev.sh, deployment registriesRecommended direction
adminSellVaultfromTimeArenastorage/initialize or make optional zero-address.AdminSellVault.solif no other consumers.AdminSellVault.t.solor reduce to historical note.Acceptance criteria
AdminSellVault.Test plan
cd contracts && forge test.bash scripts/verify-evm-dev-wallet-seed-anvil.sh.bash scripts/start-local-anvil-stack.sh --no-frontendsmoke.Attack / abuse test plan
Verification criteria
test_buy_routes_doub_splitshows zero admin vault balance.mentioned in issue #309
mentioned in commit
7f6694d84fmentioned in merge request !464
mentioned in commit
868a79120cmentioned in commit
1a7b8ed5d0mentioned in commit
28fbbba370mentioned in merge request !465
Verification — issue #314 (Remove AdminSellVault from arena deploy path)
Result: FAIL — primary acceptance criteria are not met on
main. Implementation work is still outstanding.Acceptance criteria
AdminSellVaultTimeArena.initializestill takesAdminSellVault _adminSellVaultand reverts on zero (TimeArena.solL208–223).DeployDev.s.sol/DeployProduction.s.solstill deploy and wireAdminSellVault.UUPSDeployLibpasses it intoinitialize.forge test --match-test test_buy_routes_doub_split—assertEq(doub.balanceOf(address(adminVault)), 0); noAdminVaultFundedevents.ArenaBuyRoutinghas no admin sink.AdminSellVaultverify-evm-dev-wallet-seed-anvil.shandstart-local-anvil-stack.sh --no-frontendboth log/deployAdminSellVault.contracts/deployments/local-anvil-registry.jsonincludes"AdminSellVault": "0x5FC8…".Test plan (issue body)
cd contracts && forge testDoubAirdropMegaethForktests fail without gitignoredairdrop/doub.csv(known, out of scope).forge test --match-test test_buy_routes_doub_splitbash scripts/verify-evm-dev-wallet-seed-anvil.shAdminSellVaultaddress (contradicts AC).bash scripts/start-local-anvil-stack.sh --no-frontend:5433, Anvil:8545, indexer:3100healthy (curl /v1/status); registry still listsAdminSellVault.DevStackIntegration.t.soltest_deployDev_wiring_adminVault_points_at_arena— confirms vault still wired.Attack / abuse (issue body)
TimeArenabuy path does not calladminSellVault.notifyFunded; onlyPodiumVaultsreceive DOUB.Recommended direction (not done)
adminSellVaultstill required inTimeArenastorage/initialize.AdminSellVault.solandAdminSellVault.t.solstill present.VITE_ADMIN_SELL_VAULT_ADDRESS, and ops docs still reference the contract.Follow-ups
agent:implement— removeadminSellVaultfromTimeArenainit/storage (or accept zero address), delete/archiveAdminSellVault.sol, updateDeployDev/DeployProduction/UUPSDeployLib, registry writers, Anvil scripts, frontend env, indexer registry schema, and tests (DevStackIntegration,AdminSellVault.t.sol).adminSellVault(storage slot cleanup or deprecated read-only getter).AdminSellVaultas a mandatory registry key (INV-INDEXER-156,INV-DEPLOY-259-REGISTRY) where appropriate.Issue left open — criteria not satisfied.
mentioned in merge request !466
mentioned in commit
15e2998f9bVerification — issue #314 (Remove AdminSellVault from arena deploy path)
Result: FAIL — primary acceptance criteria are still not met on
main. Implementation work remains outstanding (agent:implement).Acceptance criteria
AdminSellVaultTimeArena.initializestill requires non-zeroAdminSellVault _adminSellVault(TimeArena.solL208–223).DeployDev.s.sol/DeployProduction.s.solstill deploy and wireAdminSellVault.UUPSDeployLibpasses it intoinitialize.forge test --match-test test_buy_routes_doub_split—assertEq(doub.balanceOf(address(adminVault)), 0); noAdminVaultFundedevents.ArenaBuyRoutinghas no admin sink;TimeArenabuy path never callsadminSellVault.notifyFunded.AdminSellVaultverify-evm-dev-wallet-seed-anvil.shlogsAdminSellVault=0xc3e5….start-local-anvil-stack.sh --no-frontendsmoke PASS (Postgres:5433, Anvil:8545, indexer:3100healthy) butlocal-anvil-registry.jsonstill listsAdminSellVault.Test plan (issue body)
cd contracts && forge testDoubAirdropMegaethForktests fail without gitignoredairdrop/doub.csv(known, out of scope).forge test --match-test test_buy_routes_doub_splitbash scripts/verify-evm-dev-wallet-seed-anvil.shAdminSellVaultaddress.bash scripts/start-local-anvil-stack.sh --no-frontendcurl /v1/statushealthy; registry still includesAdminSellVault.forge test --match-contract DevStackIntegrationtest_deployDev_wiring_adminVault_points_at_arena— confirms vault still wired.Attack / abuse (issue body)
PodiumVaultsonly;adminSellVaultstorage is unused on buys.Follow-ups
agent:implement— removeadminSellVaultfromTimeArenainit/storage (or accept zero address), delete/archiveAdminSellVault.sol, updateDeployDev/DeployProduction/UUPSDeployLib, registry writers, Anvil scripts, frontend env (VITE_ADMIN_SELL_VAULT_ADDRESS), indexer registry schema, invariants (INV-INDEXER-156,INV-DEPLOY-259-REGISTRY), and tests (DevStackIntegration,AdminSellVault.t.sol).adminSellVault.Issue left open — criteria not satisfied.
mentioned in commit
0388c86b3bmentioned in merge request !484
Verification — issue #314 (Remove AdminSellVault from arena deploy path)
Result: FAIL — primary acceptance criteria are still not met on
main. Implementation work remains outstanding (agent:implement).Acceptance criteria
AdminSellVaultTimeArena.initializestill requires non-zeroAdminSellVault _adminSellVault(TimeArena.solL208–223).DeployDev.s.sol/DeployProduction.s.solstill deploy and wireAdminSellVault.UUPSDeployLibpasses it intoinitialize.forge test --match-test test_buy_routes_doub_split—assertEq(doub.balanceOf(address(adminVault)), 0); buy path routes 100% DOUB toPodiumVaultsonly;TimeArenanever callsadminSellVault.notifyFundedon buys.AdminSellVaultverify-evm-dev-wallet-seed-anvil.shlogsAdminSellVault=0x5FC8…/0xc3e5….start-local-anvil-stack.sh --no-frontendsmoke PASS butlocal-anvil-registry.jsonstill lists"AdminSellVault": "0x5FC8…".Test plan (issue body)
cd contracts && forge testDoubAirdropMegaethForktests fail without gitignoredairdrop/doub.csv(known, out of scope).forge test --match-test test_buy_routes_doub_splitbash scripts/verify-evm-dev-wallet-seed-anvil.shAdminSellVaultaddress.bash scripts/start-local-anvil-stack.sh --no-frontend:5433, Anvil:8545, indexer:3100healthy (curl /v1/status); registry still includesAdminSellVault.forge test --match-contract DevStackIntegrationtest_deployDev_wiring_adminVault_points_at_arena— confirms vault still wired.Attack / abuse (issue body)
PodiumVaultsonly;adminSellVaultstorage is unused on buys.Follow-ups
agent:implement— removeadminSellVaultfromTimeArenainit/storage (or accept zero address), delete/archiveAdminSellVault.sol, updateDeployDev/DeployProduction/UUPSDeployLib, registry writers, Anvil scripts, frontend env (VITE_ADMIN_SELL_VAULT_ADDRESS), indexer registry schema, invariants (INV-INDEXER-156,INV-DEPLOY-259-REGISTRY), and tests (DevStackIntegration,AdminSellVault.t.sol).adminSellVault.Issue left open — criteria not satisfied.
mentioned in commit
24dca3ef0bmentioned in merge request !485
mentioned in merge request !496
Verification — issue #314 (Remove AdminSellVault from arena deploy path)
Result: PASS — all acceptance criteria satisfied on
main. No repo changes or MR required.Acceptance criteria
AdminSellVaultTimeArena.initializehas noadminSellVaultparam; former slot is__reservedAdminSellVaultonly (TimeArena.solL70–71, L206–218).AdminSellVault.solandAdminSellVault.t.solremoved.DeployDev.s.sol/DeployProduction.s.sol/UUPSDeployLibdeploy arena stack without admin vault.forge test --match-test test_buy_routes_doub_split— 100% DOUB toPodiumVaults;assertFalse(sawAdminFunded); noAdminVaultFundedevents.AdminSellVaultverify-evm-dev-wallet-seed-anvil.shlogsTimeArena=… PodiumVaults=…only (noAdminSellVault).start-local-anvil-stack.sh --no-frontendsmoke: Postgres:5433, Anvil:8545, indexer:3100healthy (curl /v1/status);local-anvil-registry.jsonomitsAdminSellVaultkey.Test plan (issue body)
cd contracts && forge testDoubAirdropMegaethForktests fail without gitignoredairdrop/doub.csv(known, out of scope).forge test --match-test test_buy_routes_doub_splitbash scripts/verify-evm-dev-wallet-seed-anvil.shbash scripts/start-local-anvil-stack.sh --no-frontendTimeArena,PodiumVaults,ReferralRegistryonly.forge test --match-contract DevStackIntegrationtest_deployDev_wiring_adminVault_points_at_arenaremoved (#314).make check-frontend-envVITE_*present; noVITE_ADMIN_SELL_VAULT_ADDRESS.Attack / abuse (issue body)
TimeArenabuy path routes 100% DOUB toPodiumVaults; nonotifyFunded/ admin vault calls.adminSellVaultslot preserved as__reservedAdminSellVault(do-not-repurpose comment).Verification criteria
test_buy_routes_doub_splitshows zero admin vault balance / eventsFollow-ups
contracts/deployments/README.mdstill listsAdminSellVaultas a required registry key — update to matchINV-DEPLOY-314/ optional legacy key.AdminVaultFundedhandling for historical mainnet logs (zero address inaddress-registry.megaeth-mainnet.json); fine for backfill, document if operators prune.Closing — criteria satisfied.