Docs: bulk delete legacy TimeCurve / FeeRouter invariant sections #263
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#263
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?
Summary
Remove retired TimeCurve v1 sale, FeeRouter five-sink CL8Y routing, and closely coupled Burrow / Leprechaun / TimeCurveBuyRouter documentation from the contributor invariant corpus. Arena v2 economics and tests are authoritative in
docs/product/arena-v2.mdand the## TimeArena v2 (GitLab #260)section ofdocs/testing/invariants-and-business-logic.md. The remainder of that file (~1,600+ lines) still documents retired surfaces and misleads agents, QA, and implementers.Parent epic: #238. Follow-up from #260 (Arena QA closure note).
Current codebase
Primary target
docs/testing/invariants-and-business-logic.mdINV-TIME-ARENA-*table (#260), cross-cutting indexer/frontend invariants (#95, #96, #140, #157, …), Anvil E2E (#87). Stale: large Business logic table rows and hundreds of anchored subsections for TimeCurve sale-end/redemption/presale, FeeRouter / five-sink CL8Y, Rabbit/Burrow, Leprechaun, TimeCurveBuyRouter / Kumbaya single-tx matrix, post-end gates (endSale,redeemCharms,distributePrizes), legacy WarBow finalize / refresh-candidates flows, and Contract test suite inventory rows for retired*.t.solfiles.docs/testing/manual-qa-checklists.md/timecurve/arena, post-end settlement, FeeRouter, and retired flows (#79, #78, #129, …).docs/testing/e2e-anvil.mdanvil-arena-*; may still reference retired env or specs.docs/frontend/timecurve-views.md/arena+TimeArenaPageafter #256.docs/testing/contract-fork-smoke.mdTimeCurveForksmoke.docs/onchain/fee-routing-and-governance.mddocs/product/primitives.mdAlready aligned (do not regress)
DeployDev.s.soldeploys TimeArena + vaults only; retired cores removed from dev path.DecodedEventvariants; baseline migrations;GET /v1/arena/*; noTimeCurve*decode (#260)./arena;arenaV2SaleSessionBridge;e2e/anvil-arena-*.spec.ts..cursor/skills/yieldomega-guardrails/SKILL.mdlists retired components (#241–#244).Scale (grep snapshot)
invariants-and-business-logic.md: 215+ mentions of TimeCurve / FeeRouter / related retired terms.INV-TIME-ARENA-*/ indexer-260 rows already live at top of file; must remain the canonical arena economics map.Why this is needed
INV-INDEXER-*foridx_timecurve_*, post-end gate harnesses, FeeRouter rescue paths) instruct automation to preserve or test behavior that is explicitly retired in Arena v2.arena-v2.md; duplicative TimeCurve prose creates contradictory guidance (e.g. sale-end vs always-live Arena, CL8Y fee splits vs DOUB 40/30/30 routing).Constraints and guardrails
docs/testing/archive/, no “see retired doc” stub paragraphs that duplicate Arena content (#260 plan)./arena/ Arena buy surface” where the behavior is unchanged.Relevant files (non-exhaustive)
Must touch
docs/testing/invariants-and-business-logic.mddocs/testing/manual-qa-checklists.mddocs/testing/strategy.mddocs/testing/e2e-anvil.md.cursor/skills/yieldomega-guardrails/SKILL.mdLikely touch (grep-driven)
docs/frontend/timecurve-views.md— trim to/arena, protocol panels still used, or delete file if fully supersededdocs/testing/contract-fork-smoke.mddocs/onchain/fee-routing-and-governance.md— delete or replace with pointer to Arena vault routingdocs/product/primitives.md— remove / relocate TimeCurve-only anchorsdocs/indexer/design.md— removeGET /v1/timecurve/*sections superseded by/v1/arena/*docs/README.md,docs/agent-phases.md,docs/glossary.mdrg 'invariants-and-business-logic\.md#'andrg 'timecurve-views\.md#'Out of scope (unless dead code confirmed)
contracts/src/TimeCurve.sol/FeeRouter.solfrom repo (may remain for history/fork tests until separate retirement issue)Recommended solution direction
rglist of###/<a id=anchors ininvariants-and-business-logic.mdtaggedTimeCurve,FeeRouter,Burrow,Leprechaun,TimeCurveBuyRouter,endSale,redeemCharms,distributePrizes,idx_timecurve.strategy.mdif needed.<a id=where possible; add redirect notes only when external links exist (prefer updating callers over redirects).scripts/check-doc-anchors.sh— fail CI if markdown links to missing#anchorsin invariants file.Acceptance criteria
invariants-and-business-logic.mdhas no standalone sections whose primary subject is retired TimeCurve sale lifecycle, FeeRouter five-sink distribution, Burrow/Rabbit treasury, or Leprechaun (except a single cross-link to epic #238 /arena-v2.mdif needed).anvil-arena-*, notTimeCurve.t.solfor arena economics.docs/testing/archive/or “removed, see below” stub paragraphs.rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.mdreturns zero matches, or only matches inside an explicit “Historical (pre–Arena v2)” appendix of ≤20 lines listing retired issue numbers (optional; default is zero).docs/to deleted anchors are updated or removed (CI or script green).manual-qa-checklists.mdTOC has no duplicate rows; retired-only checklists removed or marked superseded by #260 with link.yieldomega-guardrailsSKILL anddocs/testing/strategy.mdagree with post-deletion doc map.Test plan — documentation paths
invariants-and-business-logic.mdstart-to-finishINV-*row maps to current code or manual QA; no instruction to run removed APIs/arena,TimeArena.t.sol,anvil-arena-*; does not citeendSaleor FeeRouter splitsrg 'invariants-and-business-logic\.md#' docs/+ manual click samplee2e-anvil.mdverbatimscripts/e2e-anvil.shenv (Arena addresses only)Test plan — misuse / “attack” vectors (doc integrity)
Documentation errors are not onchain exploits but can cause wrong deployments, wrong tests, or revived retired code.
VITE_FEE_ROUTER_*from old runbooksverify-timecurve-post-end-gates-anvil.shfrom stale docrg 'post-end-gates' docs/testing/TimeCurve Buyinvariantsstates INV-INDEXER-260-NO-TIMECURVE-DECODE only;decoder.rsunchanged in same PR/timecurve/arenaPvP instead of/arena/arenamarkdown-link-checkif availableTimeCurveBuyRouterrggates in acceptance criteriaVerification criteria (definition of done)
wc -l docs/testing/invariants-and-business-logic.mdreduced by ≥40% vs pre-change baseline (~1,668 → target ≤1,000 lines, adjust if cross-cutting sections grow).cd frontend && npm testandcd indexer && cargo testunchanged (docs-only PR). If anchor script added, it passes in CI.bash scripts/e2e-anvil.shstill passes (no doc-driven env drift).timecurve-views.mdentirely).Suggested labels / links
marked as related to #238
marked as related to #260
mentioned in commit
98efbe6424Summary
Completed #263 documentation cleanup on
main(98efbe6), building on the prior bulk purge incec9dcb.What changed
docs/testing/invariants-and-business-logic.md: Already Arena v2–focused (~235 lines); added#timearena-v2-gitlab-260anchor and #263 cross-link. Zero matches forFeeRouter,TimeCurve.endSale,redeemCharms,idx_timecurve.docs/product/primitives.md: Replaced v1 TimeCurve launchpad prose with pointers toarena-v2.md, shared TimeArena cooldown, referrals, and vesting; explicit retired stack list (#241–#244).docs/testing/manual-qa-checklists.md&docs/testing/e2e-anvil.md: Rewritten for/arena,TimeArena,GET /v1/arena/*,bots/timearena, and Arena env vars (removed FeeRouter / Rabbit / Leprechaun operator paths).docs/testing/anvil-rich-state.md: Short Arena-first note (legacy drill deprioritized).invariants-and-business-logic.md#…links; updatedskills/script-with-timecurve-local/SKILL.mdandskills/contributor-mobile-album-dock/SKILL.mdfor Arena v2.scripts/check-doc-anchors.sh: New local gate — fails whendocs/orskills/link to missing invariant anchors (documented indocs/testing/strategy.md).Verification run
bash scripts/check-doc-anchors.sh— greenrg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.md— zerocd indexer && cargo test— greenbash scripts/e2e-anvil.sh— 4 passed, 1 skipped (ETH pay #251)wc -l docs/testing/invariants-and-business-logic.md— 235 (≥40% reduction vs ~1,668 baseline)Checklist for @brouie
docs/testing/invariants-and-business-logic.mdstart-to-finish — confirm only Arena v2 + cross-cutting rows remain/arena,TimeArena.t.sol,anvil-arena-*, notendSale/ FeeRouterbash scripts/check-doc-anchors.shfrom repo rootdocs/testing/manual-qa-checklists.mdTOC vs#260Arena checklistdocs/testing/e2e-anvil.mdenv table against a freshbash scripts/e2e-anvil.shrundocs/product/primitives.mdmatches onchainTimeArena.buyCooldownSecbehavior on AnvilLeaving issue open for your sign-off. Please reply when verified.
/cc @brouie — verification requested
mentioned in issue #265
marked as related to #266
mentioned in issue #266
mentioned in commit
d6a31767cdVerification (#263) — agent pass
What was done
98efbe6(invariants file 362 lines, ~78% below ~1,668 baseline).issue/263-verify-docsat/home/answorld/repos/yieldomega-issue-263.mainasd6a3176):INV-REMOVAL-243-NO-LAUNCHPAD-LIFECYCLEincorrectly said “NoTimeArena.sol” — corrected to retired v1 launchpad cores (TimeCurve,LinearCharmPrice) and clarifiedDoubPresaleVestingmay deploy without a sale lifecycle.INV-TIME-ARENA-ROUTE-SPLITso acceptancerggate has zero matches forFeeRouter|TimeCurve.endSale|redeemCharms|idx_timecurveininvariants-and-business-logic.md./vestingPlaywright section fromdocs/testing/e2e-anvil.md(route removed #243).Automated checks (this pass)
bash scripts/check-doc-anchors.shwc -l docs/testing/invariants-and-business-logic.mdcd indexer && cargo testcd frontend && npm test -- --runbash scripts/e2e-anvil.shMaintainer checklist (please confirm)
docs/testing/invariants-and-business-logic.md— no standalone retired TimeCurve sale / FeeRouter five-sink / Burrow / Leprechaun sections; TimeArena v2 (#260) table intact.rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.md→ zero.bash scripts/check-doc-anchors.shfrom repo root.bash scripts/e2e-anvil.shon a clean host (no competing Anvil on :8545)./arena,TimeArena.t.sol,anvil-arena-*(notendSale/ FeeRouter ops).manual-qa-checklists.mdTOC — no retired-only duplicate rows; Arena #260 paths primary.docs/indexer/design.md,docs/onchain/cl8y-flow-audit.md,docs/qa/QA-onboarding-gitlab-issue-body.md(operator runbooks).Close criteria
Leaving open until
scripts/e2e-anvil.shpasses on a clean runner and a second reviewer signs off qualitative “no retired economic rules without label” per the issue body. Requesting verification by the other QA agent team.mentioned in issue #260
mentioned in issue #274
marked as related to #274
mentioned in issue #276
mentioned in commit
780c26e64aVerification (#263) — Cloud Agent pass
Branch:
cursor/verify-issue-263-rg-gate-9c0f(pushed) — MR creation via API blocked (404 / no token); please open from GitLab UI if not auto-linked.Fix in branch
Reworded
INV-DOCS-274/INV-DOCS-276indocs/testing/invariants-and-business-logic.mdso issue #263rggate returns zero matches (rows previously quoted forbidden tokens while describing the denylist).Results (PASS / FAIL / SKIP)
wc -linvariants → 480 (≥40% vs ~1,668)rg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.mdbash scripts/check-doc-anchors.shbash scripts/check-doc-retired-terms.shbash scripts/check-doc-satellite-retired-count.sh/arena,TimeArena,anvil-arena-*manual-qa-checklists.mdTOCcd frontend && npm test -- --runcd indexer && cargo test(stable toolchain + libssl-dev)bash scripts/e2e-anvil.sh(default)MockReserveCl8y:from deploy log (pipefail);kill 0from EXIT trap; pre-existing onmainYIELDOMEGA_SEED_EVM_DEV_WALLETS=0 bash scripts/e2e-anvil.shIssue left open per policy.
Follow-up
e2e-anvil.shseed /MockReserveCl8ylog grep soYIELDOMEGA_SEED_EVM_DEV_WALLETS=1does not abort.mentioned in merge request !401
Draft MR opened: https://gitlab.com/PlasticDigits/yieldomega/-/merge_requests/31 (branch
cursor/verify-issue-263-rg-gate-9c0f). Created via API after configuringGITLAB_TOKEN—glab mr createwas resolving the project asyieldomega.git(404).mentioned in commit
2f9cecea12Verification (#263) — Cloud Agent pass (2026-06-03)
Branch:
main@6d520e7— no code/docs/skills changes; closing after full acceptance run.What was verified
invariants-and-business-logic.md#timearena-v2-gitlab-260anchor intactanvil-arena-*, not v1TimeCurve.t.solfor arena economicsdocs/testing/archive/or “removed, see below” stub paragraphsrg -i 'FeeRouter|TimeCurve\.endSale|redeemCharms|idx_timecurve' docs/testing/invariants-and-business-logic.mdbash scripts/check-doc-anchors.shbash scripts/check-doc-retired-terms.shbash scripts/check-doc-satellite-retired-count.shdocs/onchain/fee-routing-and-governance.md— Arena v2 DOUB split (not FeeRouter ops)docs/testing/contract-fork-smoke.md—TimeArenaFork.t.soldocs/frontend/timecurve-views.mdremoved / superseded/arena+arena-views.md)docs/testing/manual-qa-checklists.mdTOC — no #79/#78/#129; Arena #260 primarydocs/testing/e2e-anvil.mdenv table — Arena addresses,anvil-arena-*/arena,TimeArena.t.sol,anvil-arena-*, retired list #241–#244cd indexer && cargo testcd frontend && npm test -- --runbash scripts/verify-e2e-anvil-trap.sh+bash scripts/test-anvil-deploy-cl8y-extract.sh(#279)bash scripts/e2e-anvil.sh(default seed + Kumbaya)How this was verified
glab issue view 263 -R PlasticDigits/yieldomega --commentsfor acceptance criteria + prior passesmainworktreescripts/e2e-anvil.shon port 8545 (fresh Anvil → DeployDev → seed → build → Playwright)Maintainer notes
Prior MR !401 (
cursor/verify-issue-263-rg-gate-9c0f) addressedINV-DOCS-274/276wording for therggate; equivalent fixes are onmain. E2E seed / MockReserveCl8y issues noted in earlier comments are resolved via #279 (verify-e2e-anvil-trap, broadcast fallback).Follow-ups (optional, out of #263 scope)
TimeCurve/idx_timecurvementions in satellite docs (e.g.docs/indexer/design.md“retired” callouts) are within #276 budget; further trim only if operators want zero token hits outside “retired” labels.Closing #263 — documentation cleanup acceptance criteria satisfied on
main.mentioned in issue #284
marked as related to #284
mentioned in merge request !417