Pause blocks roll, claim, and topUp — contract guards, tests, ops doc #349
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#349
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 #9, P3 #17. Bundles M-C1.
Product decision (approved on #342): Pause should block roll (and claim / top-up).
Current codebase
rollPodiumEpochisexternalwith no_requireLive()— only checks category, armed, deadline (#312 autoroll on buy uses_requireLiveAndAutorollinternally).claimCredandtopUpPodiumPoolscheckarenaStartbut notpaused.INV-TIME-ARENA-PAUSE-MUTATING) cover buy/WarBow/flag only (TimeArena.t.sol~L2100).docs/operations/pause-and-final-signoff.mdlists podium roll as “permissionless liveness” — contradicts approved direction.Why needed
During incident pause, settlement and claims should not move value or advance epochs. Ops runbook and tests must match contract behavior.
Constraints / guardrails
_requireLive()(orrequire(!paused)) torollPodiumEpoch,claimCred,topUpPodiumPools._requireLiveAndAutorollon buy/WarBow: decide whether autoroll runs while paused — likely blocked because_requireLive()fails first on buy; document explicitly.pause-and-final-signoff.mdgated surfaces table.invariants-and-business-logic.md.Relevant files
contracts/src/arena/TimeArena.solcontracts/test/TimeArena.t.soldocs/operations/pause-and-final-signoff.mddocs/testing/invariants-and-business-logic.mdRecommended direction
rollPodiumEpoch,claimCred,topUpPodiumPoolswith_requireLive().test_pause_blocks_rollPodiumEpoch,test_pause_blocks_claimCred,test_pause_blocks_topUpPodiumPools.paused.Acceptance criteria
paused == true.forge testPASS.ReferralRegistry.registerCode(always live per doc).Test plan
cd contracts && forge test --match-test pausecd contracts && forge testAttack / abuse test plan
setPaused(true)immediately blocks new rolls without upgrade.Verification criteria
test_pause_blocks_rollPodiumEpochPASS.pause-and-final-signoff.mdtable matches on-chain gates.mentioned in issue #342
mentioned in commit
81fdb595c8mentioned in merge request !520
mentioned in commit
df186aa483Verification complete — PASS
Verified Pause blocks roll, claim, and topUp on
main(no repo changes; no MR).Acceptance criteria
rollPodiumEpoch,claimCred,topUpPodiumPoolsrevert whenpaused == trueTimeArena.solgates all three with_requireLive(); tests expect"TimeArena: paused"forge testPASScd contracts && forge test --match-test pause→ 9/9 PASS (includestest_pause_blocks_rollPodiumEpoch,test_pause_blocks_claimCred,test_pause_blocks_topUpPodiumPools)docs/operations/pause-and-final-signoff.mdgated-surfaces table lists roll/claim/top-up aspausedvia_requireLive()([#349]);docs/operations/final-signoff-and-value-movement.mdaligned;INV-TIME-ARENA-PAUSE-MUTATINGandINV-DOCS-320-PAUSE-OPSininvariants-and-business-logic.mdReferralRegistry.registerCode(always live)registerCodehas no pause gate; ops doc row "Referral registration … Always live"Verification criteria (issue body)
test_pause_blocks_rollPodiumEpochforge test --match-test test_pause_blocks_rollPodiumEpochpause-and-final-signoff.mdtable matches on-chain gatesTimeArena.sol_requireLive()on roll/claim/top-up/WarBow/buy pathsAttack / abuse plan
test_pause_blocks_rollPodiumEpocharms timer, warps past deadline, setspaused, expects revertsetPaused(true)immediately blocks rollsAdditional checks
cd contracts && forge test→ 227 passed; 4 SKIP —DoubAirdropMegaethForkrequires gitignoredairdrop/doub.csv(documented AGENTS.md exception; unrelated to #349)_requireLiveAndAutorollcalls_requireLive()first; ops doc §2 step 5 documents blocked autorollskills/play-active-time-arena/SKILL.mdblocks roll/claim/top-up when paused ([#349])Summary
Implementation, tests, ops runbook, and invariants for #349 are complete on
main. Closing as verified.