Verification: #65 TimeCurveBuyRouter — live router-set state via DeployKumbayaAnvilFixtures #78
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#78
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?
Follow-up tracker for the live-stack items deferred from #65 source closure on Monday 2026-04-27.
Background
#65 closed today on source + selective live verification:
Scope (deferred)
The default scripts/start-local-anvil-stack.sh and contracts/script/anvil_rich_state.sh do NOT call DeployKumbayaAnvilFixtures, so timeCurveBuyRouter remains 0 on a fresh stack. The router-set verification items need that fixtures script run separately.
Pre-conditions
1bdbda8+Acceptance
All 6 rows produce evidence (cast output, tx hash, or event receipt screenshot) and either PASS or have a filed sub-issue. cc @PlasticDigits
mentioned in issue #65
mentioned in commit
54e6ad92b4Fix pushed (issue #78)
Implemented the deferred #65 TimeCurveBuyRouter Anvil scope checklist as an automated path so it is no longer manual-only.
What shipped
scripts/verify-timecurve-buy-router-anvil.sh— optionalYIELDOMEGA_DEPLOY_KUMBAYA=1broadcastsDeployKumbayaAnvilFixtureswhentimeCurveBuyRouter()is zero;castfor router; guards onended(); then setsYIELDOMEGA_FORK_VERIFY=1and runs the fork test.contracts/test/VerifyTimeCurveBuyRouterAnvil.t.sol— forkedforge test: USDM two-hopquoteExactOutputvsexactOutput(≤1 wei delta),buyViaKumbayastable (CHARM + WarBow opt-out), second buy with opt-in (warbowPendingFlagOwnermirrorsBuy.flagPlantedintent),setTimeCurveBuyRouter(0)+buyForrevert. WithoutYIELDOMEGA_FORK_VERIFY, the test no-ops so default CIforge testis unchanged.docs/testing/invariants-and-business-logic.md(#78 anchor),docs/integrations/kumbaya.md(corrected: start-local-anvil-stack = DeployDev only; e2e-anvil / anvil_deploy_dev = fixtures),e2e-anvil.md,local-swap-testing.md,.cursor/skills/yieldomega-guardrails,skills/verify-yo-timecurve-buy-router-anvil/SKILL.md,skills/README.md.Verify checklist (for @brouie)
TimeCurve.ended() == false(e.g.SKIP_ANVIL_RICH_STATE=1with start-local, or fresh anvil + DeployDev); script exits if sale ended.bash scripts/verify-timecurve-buy-router-anvil.shwithRPC_URLpointing at anvil; if buy router is 0, useYIELDOMEGA_DEPLOY_KUMBAYA=1once.test_Forked_issue78_TimeCurveBuyRouter_checklistPASS.cast callline in script output shows non-zerotimeCurveBuyRouterafter fixtures.forge test --match-contract TimeCurveBuyRouterTeststill 3/3 (unchanged contracts).Commit:
54e6ad9onmain. Issue left open per request for your signoff.@PlasticDigits verified on
54e6ad9.Verify-script execution (clean stack)
Output:
That covers your 6 verify-checklist items in a single automated path.
Unit regression
cd contracts && FOUNDRY_PROFILE=ci forge test --match-contract TimeCurveBuyRouterTest:
Stack-state collision caveat (worth noting for future runs)
First attempt failed because I had a swarm running from earlier #73 verification — anvil account #1 (Foundry default ALICE used by the test) had accumulated ~0.99e18 charmWeight from swarm buys, which collides with the test's '1e18 expected after buyViaKumbaya' assertion (got 1.99e18).
Restarted from clean stack (no swarm) and the verify ran green. Worth a one-line note in the script header or skill SKILL.md that the verify path expects an idle stack. Not blocking, just useful future-context.
Closing #78.
mentioned in commit
04d5054b5ementioned in issue #82
mentioned in issue #83
mentioned in issue #84
mentioned in issue #100
mentioned in issue #104
mentioned in issue #117
mentioned in issue #162
mentioned in issue #207
mentioned in issue #263
mentioned in issue #270