Gate roll, claimCred, and topUpPodiumPools on pause (#349) #520
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!520
Loading…
Reference in a new issue
No description provided.
Delete branch "issue-349-pause-blocks-roll-claim-topup"
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 #349 — During incident pause, settlement and claims must not move value or advance epochs.
_requireLive()torollPodiumEpoch,claimCred, andtopUpPodiumPoolsinTimeArena.sol.test_pause_blocks_rollPodiumEpoch,test_pause_blocks_claimCred, andtest_pause_blocks_topUpPodiumPools.pause-and-final-signoff.md,final-signoff-and-value-movement.md), invariants (INV-TIME-ARENA-PAUSE-MUTATING,INV-DOCS-320-PAUSE-OPS), product docs, andplay-active-time-arenaskill._requireLiveAndAutorollchecks_requireLive()first (documented in ops runbook).ReferralRegistry.registerCode(always live).Acceptance checklist
paused == truecd contracts && forge test --match-test pauseforge testPASScd contracts && forge test --match-contract TimeArenaTestdocs/operations/pause-and-final-signoff.md,docs/testing/invariants-and-business-logic.mdReferralRegistry.registerCodeReferralRegistry.soltest_pause_blocks_rollPodiumEpochPASSpause-and-final-signoff.mdtable matches on-chain gatesTimeArena.sol_requireLive()call sitestest_pause_blocks_rollPodiumEpochsetPaused(true)blocks rolls without upgradeFull
forge test(non-TimeArena): 6 pre-existing failures without gitignoredairdrop/doub.csvand Warbow benchmark env — unrelated to this MR (SKIP for #349 scope).Verification for third parties
cd contracts && forge test --match-test pause— expect 9 PASS (6 existing + 3 new).cd contracts && forge test --match-contract TimeArenaTest— expect 129 PASS.TimeArena.solfor_requireLive()at start ofrollPodiumEpoch,claimCred,topUpPodiumPools.docs/operations/pause-and-final-signoff.mdgated-surfaces table lists roll / claim / top-up aspausedgated.ReferralRegistry.registerCodeunchanged.Related: #342 (parent gap analysis), #316 (existing pause matrix).
Security review summary
SHA reviewed:
81fdb595c8dac9a76e620343064d2252a06f05db(MR !520, GitLab #349)Scope:
TimeArena.sol— add_requireLive()torollPodiumEpoch,claimCred, andtopUpPodiumPools; pause-matrix tests; ops/product/invariant doc updates.Method: Traced attacker-controlled entry points to value sinks (
payPodiumWinners,playCred.mint, DOUB pull/route). Verified_requireLive()ordering,nonReentrantcoverage, and that internal_rollPodiumEpoch/_autorollExpiredPodiumsremain reachable only via_requireLiveAndAutoroll()(buys/WarBow), which already calls_requireLive()before autoroll.PodiumVaultspayout paths remainmsg.sender == arenaonly.Outcome:
FINDINGS: 0medium+Security review: no medium+ findings on this diff. This change closes a pre-existing pause bypass (permissionless roll, CRED claim, and pool top-up could proceed while
paused == true) without introducing new reentrancy, access-control, or autoroll bypass paths.Inline threads: none (no findings).
mentioned in commit
df186aa483