Verification checklist — TimeCurve Sale Lifecycle (approved via cl8y-ecosystem-qa #7) #42

Closed
opened 2026-04-22 03:41:49 +00:00 by Brouie · 1 comment
Brouie commented 2026-04-22 03:41:49 +00:00 (Migrated from gitlab.com)

@PlasticDigits per approval on cl8y-ecosystem-qa #7, TimeCurve Verification Spec v2.1 is now in cl8y-ecosystem-qa/specs/YO-TimeCurve-Verification-Spec.md (commit c93b54f).

Scope: TimeCurve sale lifecycle end-to-end — Buy, Timer, Charms, Podium, WarBow PvP, Redemption. Includes live reactivity section (5d) added in 9ed0ef3 + e06b5c9.

This issue mirrors the ecosystem-qa spec as a working tracker here on the yieldomega repo. Use for per-run verification pass notes and results, referencing the spec file as source of truth.

Linked: https://gitlab.com/PlasticDigits/cl8y-ecosystem-qa/-/blob/main/specs/YO-TimeCurve-Verification-Spec.md

@PlasticDigits per approval on cl8y-ecosystem-qa #7, TimeCurve Verification Spec v2.1 is now in `cl8y-ecosystem-qa/specs/YO-TimeCurve-Verification-Spec.md` (commit c93b54f). Scope: TimeCurve sale lifecycle end-to-end — Buy, Timer, Charms, Podium, WarBow PvP, Redemption. Includes live reactivity section (5d) added in 9ed0ef3 + e06b5c9. This issue mirrors the ecosystem-qa spec as a working tracker here on the yieldomega repo. Use for per-run verification pass notes and results, referencing the spec file as source of truth. Linked: https://gitlab.com/PlasticDigits/cl8y-ecosystem-qa/-/blob/main/specs/YO-TimeCurve-Verification-Spec.md
Brouie commented 2026-04-23 06:24:51 +00:00 (Migrated from gitlab.com)

@PlasticDigits #42 TimeCurve Sale Lifecycle verification consolidated against spec v2.1.

Coverage summary across 4/22 + 4/23 sessions

Per-section status against cl8y-ecosystem-qa/specs/YO-TimeCurve-Verification-Spec.md:

1a. Sale Lifecycle

  • Step 1 Sale starts — contract-level confirmed via on-chain state reads (saleStart() > 0, SaleWillStart event fires on stack bringup)
  • Step 2 Buy charms — verified in #39 B1 partial: per-buy +120s timer extension observed via indexer buy_index 19→20→21. Linear price schedule + FeeRouter routing verified in #39 B3. Referral codeHash path verified today in #41 + #43. Hard-reset path DEFERRED (needs anvil_setNextBlockTimestamp fast-forward; not executed in this session).
  • Step 3 WarBow PvP — verified in #39 B4/B5 + C4. Steal / Guard / Flag all gated by !ended. Finding: warbowRevenge missing !ended guard — filed as #47.
  • Step 4 Sale ends — endSale guards verified in #39 B4 contract review
  • Step 5 Redeem charms — DEFERRED (needs ended sale state; C6 in #39 was not-tested)
  • Step 6 Distribute prizes — verified in #39 B3: 40/25/20/15 split off podium pool balance (matches on-chain distributePrizes)

1b. Frontend (TimeCurvePage)

  • Pre-buy display: Timer hero, min/max bounds, charm weight, podium leaderboard, WarBow stats, FeeRouter sinks — all verified in #39 C3/C4/C5 yesterday
  • Three-view split (Simple / Arena / Protocol): verified today via #40 sign-off, including shared phase state machine (timeCurveSimplePhase.ts) across both Simple + Arena (fixed in fed6cd2)
  • Finding: Sale-phase detection mis-reports 'pre-start' when contract is live — filed as #48. Affects Simple + Arena phase display.
  • Finding: Protocol view 'Indexer unreachable' banner misleading when data IS flowing — filed as #49.

Live reactivity section (5d)

  • Covered indirectly via #39 C4 confirming indexer-backed surfaces (Live Buys feed, Battle Feed, WarBow rules, Chasing Pack) all populate correctly with stream data.

Consolidated findings

# Section Severity Status
#47 B5 warbowRevenge missing !ended guard Medium Open (dev triage)
#48 Sale-phase detection pre-start mis-report Medium Open (dev triage)
#49 Protocol indexer-unreachable banner misleading Low Open (dev triage)
#50 Docs: web3 ModuleNotFoundError install gotcha Low Open (dev triage)
#52 Test: ETH route race in anvil-wallet-writes Low Open (dev triage, test-side)

Deferred (not findings)

  • Step 2 hard-reset at <13min remaining (needs anvil_setNextBlockTimestamp jump)
  • Step 5 redeem path (needs ended sale state)
  • Step 6 UI prize distribution visualization (marked [FUTURE] in spec)

Test counts (relevant to TimeCurve)

  • forge test contracts: 177/177 passing (includes TimeCurveReferral.t.sol, invariant + fuzz suites)
  • Frontend vitest: timeCurveSimplePhase.test.ts 13/13, TimeCurveSubnav.test.tsx 3/3, referralPathCapture.test.ts 5/5
  • Playwright anvil-wallet-writes: 3/4 pass + 1 test-side race flagged as #52

Closing this tracker — the 5 open findings + 3 deferred items are tracked in their own issues or in the spec's [FUTURE] annotations. Fresh per-run trackers can be opened for future full-lifecycle verification passes (e.g. post-end state + hard-reset + redeem).

@PlasticDigits #42 TimeCurve Sale Lifecycle verification consolidated against spec v2.1. ## Coverage summary across 4/22 + 4/23 sessions Per-section status against `cl8y-ecosystem-qa/specs/YO-TimeCurve-Verification-Spec.md`: ### 1a. Sale Lifecycle - **Step 1** Sale starts — contract-level confirmed via on-chain state reads (`saleStart() > 0`, `SaleWillStart` event fires on stack bringup) - **Step 2** Buy charms — verified in #39 B1 partial: per-buy +120s timer extension observed via indexer buy_index 19→20→21. Linear price schedule + FeeRouter routing verified in #39 B3. Referral codeHash path verified today in #41 + #43. Hard-reset path DEFERRED (needs anvil_setNextBlockTimestamp fast-forward; not executed in this session). - **Step 3** WarBow PvP — verified in #39 B4/B5 + C4. Steal / Guard / Flag all gated by `!ended`. **Finding: `warbowRevenge` missing `!ended` guard — filed as #47.** - **Step 4** Sale ends — `endSale` guards verified in #39 B4 contract review - **Step 5** Redeem charms — DEFERRED (needs ended sale state; C6 in #39 was not-tested) - **Step 6** Distribute prizes — verified in #39 B3: 40/25/20/15 split off podium pool balance (matches on-chain `distributePrizes`) ### 1b. Frontend (TimeCurvePage) - Pre-buy display: Timer hero, min/max bounds, charm weight, podium leaderboard, WarBow stats, FeeRouter sinks — all verified in #39 C3/C4/C5 yesterday - Three-view split (Simple / Arena / Protocol): verified today via #40 sign-off, including shared phase state machine (`timeCurveSimplePhase.ts`) across both Simple + Arena (fixed in `fed6cd2`) - **Finding: Sale-phase detection mis-reports 'pre-start' when contract is live — filed as #48.** Affects Simple + Arena phase display. - **Finding: Protocol view 'Indexer unreachable' banner misleading when data IS flowing — filed as #49.** ### Live reactivity section (5d) - Covered indirectly via #39 C4 confirming indexer-backed surfaces (Live Buys feed, Battle Feed, WarBow rules, Chasing Pack) all populate correctly with stream data. ## Consolidated findings | # | Section | Severity | Status | |---|---------|----------|--------| | #47 | B5 warbowRevenge missing !ended guard | Medium | Open (dev triage) | | #48 | Sale-phase detection pre-start mis-report | Medium | Open (dev triage) | | #49 | Protocol indexer-unreachable banner misleading | Low | Open (dev triage) | | #50 | Docs: web3 ModuleNotFoundError install gotcha | Low | Open (dev triage) | | #52 | Test: ETH route race in anvil-wallet-writes | Low | Open (dev triage, test-side) | ## Deferred (not findings) - Step 2 hard-reset at <13min remaining (needs `anvil_setNextBlockTimestamp` jump) - Step 5 redeem path (needs ended sale state) - Step 6 UI prize distribution visualization (marked `[FUTURE]` in spec) ## Test counts (relevant to TimeCurve) - `forge test` contracts: 177/177 passing (includes `TimeCurveReferral.t.sol`, invariant + fuzz suites) - Frontend vitest: `timeCurveSimplePhase.test.ts` 13/13, `TimeCurveSubnav.test.tsx` 3/3, `referralPathCapture.test.ts` 5/5 - Playwright anvil-wallet-writes: 3/4 pass + 1 test-side race flagged as #52 Closing this tracker — the 5 open findings + 3 deferred items are tracked in their own issues or in the spec's `[FUTURE]` annotations. Fresh per-run trackers can be opened for future full-lifecycle verification passes (e.g. post-end state + hard-reset + redeem).
Brouie (Migrated from gitlab.com) closed this issue 2026-04-23 06:24:52 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
code/yieldomega#42
No description provided.