PodiumVaults non-commingled pool integration test #348
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#348
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
Transition Gap Analysis (#342) — P1 #8. Bundles H-C1.
Current codebase
PodiumVaults.solsupportssetActivePool,setSeedPool,setFuturePoolfor external pool addresses (non-commingled wiring).address(vaults)).Why needed
Production may use separate pool EOAs per tranche; without integration tests, roll/payout/tranche promotion with external pools is unverified.
Constraints / guardrails
forge testmust pass withoutdoub.csvfork tests.Relevant files
contracts/src/arena/PodiumVaults.solcontracts/src/arena/TimeArena.solcontracts/test/TimeArena.t.sol(reference patterns)contracts/test/PodiumVaultsNonCommingled.t.sol(suggested)Recommended direction
PodiumVaultswith external EOAs for active/seed/future per category.PARAMETERS.mdortime-arena.mdif missing.Acceptance criteria
forge test.Test plan
cd contracts && forge test --match-contract PodiumVaultsNonCommingledcd contracts && forge test(exclude fork airdrop if nodoub.csv)Attack / abuse test plan
Verification criteria
forge testPASS for new contract test.mentioned in issue #342
We need one, consistent way to always manage podium vaults. We should not have multiple EOA, instead poriudm vaults should be managed by smart contracts with a single global admin/governance address
mentioned in commit
9674d3b1c9mentioned in merge request !529
mentioned in commit
670ba249eaVerification — issue #348 (PodiumVaults non-commingled pool integration test)
Verified on
main(2026-06-28). All acceptance and verification criteria PASS.Acceptance criteria
forge testcd contracts && forge test --match-contract PodiumVaultsNonCommingled— 5/5 passedtest_nonCommingled_lastBuy_buy_roll_payout_promotion— category 0 (Last Buy) wired to threePodiumTranchePoolcontracts; buy → roll → 4∶2∶1 payout → tranche promotionTest plan
cd contracts && forge test --match-contract PodiumVaultsNonCommingleddoub.csv)cd contracts && forge test --no-match-contract DoubAirdropMegaethForkdoub.csv)DoubAirdropMegaethForkairdrop/doub.csvabsent (expected per issue constraints)Attack / abuse coverage
test_nonCommingled_misconfigured_eoa_pool_reverts_on_roll—PodiumVaults: external pool not contracttest_nonCommingled_pushTo_reverts_not_operator—PodiumTranchePool: not operatorDocumentation & invariants
PodiumVaultsNonCommingled.t.solheader documents category-0 external pools + commingled default for categories 1–3PARAMETERS.mdpool wiring section#podiumvaults-pool-wiring-gitlab-348time-arena.mdpool custody section#podiumvaults-pool-custody-gitlab-348INV-PODIUM-VAULTS-348-*docs/testing/invariants-and-business-logic.md§348Notes on comment thread
The optional non-commingled path uses
PodiumTranchePoolsmart contracts (not EOAs) withPodiumVaultsas sole operator — aligned with the direction in the latest comment. DeployDev/production defaults remain commingled (address(PodiumVaults)).Follow-ups
PodiumTranchePoolwiring (deploy order,setArena, ownerset*Poolcalls).Closing as verified — no repo changes required.