PodiumVaults non-commingled pool integration test (#348) #529
No reviewers
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!529
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-348-podium-vaults-non-commingled"
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?
Summary
GitLab #348 — integration coverage for non-commingled PodiumVaults pool wiring.
PodiumTranchePool: smart-contract tranche holder; onlyPodiumVaults(operator) can disburse viapushTo.PodiumVaultsexternal-pool paths:creditTrancheno-ops off commingled ledgers; roll/payout use_moveFromPool(contract check reverts EOAs withPodiumVaults: external pool not contract).PodiumVaultsNonCommingled.t.sol: Last Buy (cat 0) wired to external pools through buy → roll → 4∶2∶1 payout → tranche promotion; asserts no stranded DOUB on seed/future pools after roll.PARAMETERS.md,time-arena.md, and invariants (INV-PODIUM-VAULTS-348-*).address(vaults)for all slots).Acceptance checklist
cd contracts && forge test --match-contract PodiumVaultsNonCommingledtest_nonCommingled_lastBuy_buy_roll_payout_promotionseed/futurebalance 0 post-roll)cd contracts && forge testDoubAirdropMegaethForkfail withoutdoub.csv— expected)test_nonCommingled_misconfigured_eoa_pool_reverts_on_rolltest_nonCommingled_pushTo_reverts_not_operatorVerification for third parties
Review:
contracts/src/arena/PodiumTranchePool.solcontracts/src/arena/PodiumVaults.sol(_moveFromPool,creditTranche)contracts/test/PodiumVaultsNonCommingled.t.solcontracts/PARAMETERS.md(PodiumVaults pool wiring §348)docs/testing/invariants-and-business-logic.md(§348)Follow-ups
PodiumTranchePool+ tests.Security review — MR !529
Commit reviewed:
9674d3b1c9af67f4c51dceae19622862f4d38617Scope:
PodiumTranchePool.sol(new),PodiumVaults.sol(creditTrancheno-op for external pools,_moveFromPool/SafeERC20),PodiumVaultsNonCommingled.t.sol, docs/invariants for #348.Outcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff.
Summary
Reviewed attacker-controlled input paths into the new/changed sinks:
PodiumTranchePool.pushTooperator(PodiumVaults)msg.sender == operator; tested intest_nonCommingled_pushTo_reverts_not_operatorPodiumVaults._moveFromPool→ externalpushToonlyOwner(setActivePool/setSeedPool/setFuturePool)from.code.length > 0blocks EOAs; arena-only callers on payout/rollPodiumVaults.creditTrancheno-opPodiumTranchePoolTimeArenabatching disables when any slot is non-commingledsafeTransferto configured pool addressesThe MR correctly fixes the pre-existing external-pool disburse path:
_moveFromPoolpulls from the configured pool contract viapushToinstead of debiting the commingled vault balance.creditTrancheno-op prevents buy-path reverts for non-commingled wiring without ledger inflation.Residual risks (owner misconfiguration of pool addresses, non-
PodiumTranchePoolcontracts with a compatiblepushTo, mixed commingled/external tranches within one category) requireonlyOwnergovernance actions and are out of scope per threat model.Inline threads: none
mentioned in commit
670ba249ea