QA onboarding: local stack, swarm, QA wallet funding, TimeCurve checklist #35
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#35
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
Onboarding task for a new QA engineer: run the full local YieldOmega stack (infra, frontend, bot swarm), fund a personal test wallet on Anvil alongside bots, and complete the TimeCurve verification checklist below (copied from the repository).
Prerequisites
Install on the machine:
anvil,forge,castonPATHClone and stay at repo root unless noted:
1. Full local infra + frontend
From repository root:
This brings up Postgres, Anvil, deploys
DeployDev, runs the indexer, and writesfrontend/.env.local(chain31337, contract addresses, indexer URL). See the script header inscripts/start-local-anvil-stack.shfor:SKIP_ANVIL_RICH_STATE=1— skip prefilled “rich” chain state so the TimeCurve sale stays live for demos (defaultSTART_BOT_SWARM=1in that mode).START_BOT_SWARM=0— skip automatic swarm if you only want infra.Start the frontend:
Open the printed URL (typically
http://127.0.0.1:5173).Vite env: Build-time
VITE_*variables are documented indocs/testing/e2e-anvil.md(table). The stack script already writesfrontend/.env.local.2. Bot env + QA wallet “airdrop” (Anvil only)
Sync bot env from the frontend file (RPC + addresses):
Install the TimeCurve bot package:
Edit
bots/timecurve/.env.local(gitignored). Add your browser test wallet address (MetaMask or similar) so it receives the same one-shot funding as swarm bots:Also ensure Anvil funding is allowed when running swarm (the local stack sets this when it spawns swarm):
YIELDOMEGA_ALLOW_ANVIL_FUNDING=1YIELDOMEGA_CHAIN_ID=31337Security: Only addresses belong in shared docs; private keys stay local.
3. Start the swarm (if not already started by the stack)
If you used
SKIP_ANVIL_RICH_STATE=1, the stack may already have started the swarm. Otherwise, from repo root with env loaded:Details:
bots/timecurve/README.md.4. External spec note
The older ecosystem-qa verification spec v2.0 incorrectly described four reserve podium categories including WarBow. Canonical: three reserve podium categories; WarBow is PvP BP — see the checklist section below (“Delta vs ecosystem-qa”) and
docs/product/primitives.md.Acceptance criteria — setup and TimeCurve page
Tooling and repository
anvil,forge,cast),jq,curl, Node/npm, Python 3.11+ available.mainor assigned branch).Local stack (infra)
bash scripts/start-local-anvil-stack.shcompletes without fatal errors.8545).frontend/.env.localexists withVITE_CHAIN_ID=31337and contract addresses.INDEXER_PORT, often3100).Frontend
cd frontend && npm ci && npm run devsucceeds.http://127.0.0.1:5173).http://127.0.0.1:8545, chain31337).Bots, swarm, and QA wallet
bash scripts/sync-bot-env-from-frontend.shrun sobots/timecurve/.env.localmatches frontend RPC and addresses.cd bots/timecurve && pip install -e ".[dev]"(or.venv) succeeds;timecurve-bot --helpworks.YIELDOMEGA_ANVIL_EXTRA_FUNDED_ADDRESSESset inbots/timecurve/.env.localto the same address(es) you use in the browser (0x only, no private keys in shared files).SKIP_ANVIL_RICH_STATE=1path) or you rantimecurve-bot --allow-anvil-funding swarmmanually or you intentionally skipped swarm (START_BOT_SWARM=0) and documented why.YIELDOMEGA_ANVIL_EXTRA_FUNDED_ADDRESSES.TimeCurve page (smoke during onboarding)
Process
Acceptance criteria — indexer smoke
curl -s "http://127.0.0.1:<INDEXER_PORT>/v1/timecurve/buys?limit=5"returns HTTP 200 and JSON (adjust<INDEXER_PORT>from stack output).data/ rows as applicable)./v1/timecurve/*routes used by the frontend respond without 5xx.Buyevent fields, not offchain guesses.TimeCurve QA checklist
YieldOmega — TimeCurve QA checklist (local + release-oriented)
Scope: Manual and semi-automated verification for TimeCurve, aligned with this repository.
Canonical mechanics:
docs/product/primitives.md,contracts/src/TimeCurve.sol,docs/onchain/fee-routing-and-governance.md,contracts/PARAMETERS.md.Delta vs PlasticDigits/cl8y-ecosystem-qa (GitLab spec v2.0)
The external YO-TimeCurve-Verification-Spec.md v2.0 and YO-TimeCurve-Release-Checklist.md v1.0 are partly outdated for:
TimeCurve(last buy, time booster, defended streak). WarBow is Battle Points / PvP and not a fourth reserve prize slice. The WarBow Ladder top-3 is display-only (warbowLadderPodium()), not paid fromPodiumPool.distributePrizes: Splits the accepted asset balance held byPodiumPoolat call time: 50% / 25% / 25% across those three categories (seeTimeCurve.distributePrizes()), with 4∶2∶1 within each category. This is not the same as buy-timeFeeRouterrouting (see fee-routing doc).A. Local full stack (Anvil + indexer + frontend + bots)
Prerequisites: Docker, Foundry (
anvil,forge,cast),jq,curl, Node/npm, Python 3.11+.bash scripts/start-local-anvil-stack.sh— Postgres, Anvil, deploy, indexer,frontend/.env.localwritten.SKIP_ANVIL_RICH_STATE=1for live sale + default swarm (see script header) — sale stays active for bots/UI;START_BOT_SWARM=0to skip bots.cd frontend && npm ci && npm run dev— app athttp://127.0.0.1:5173(or configured port).bash scripts/sync-bot-env-from-frontend.sh—bots/timecurve/.env.localaligned withVITE_*.cd bots/timecurve && pip install -e ".[dev]"(or use.venv) —timecurve-botavailable.YIELDOMEGA_ANVIL_EXTRA_FUNDED_ADDRESSES=<0x...>tobots/timecurve/.env.local(addresses only); re-run swarm or stack so one-shot funding includes your wallet — same 10k ETH + mock CL8Y mint as swarm bots (Anvil 31337 +--allow-anvil-fundingonly).curl -s http://127.0.0.1:<INDEXER_PORT>/v1/timecurve/buys?limit=5— JSON rows after activity.B. TimeCurve behavior (contract-aligned)
TIMER_RESET_*inTimeCurve.sol.distributePrizes: 50/25/25 of podium pool balance — not FeeRouter percentages.redeemCharmsafterendSale— pro-rata DOUB per charm weight.!endedwhere applicable — confirm post-end behavior inTimeCurve.solfor deployment.C. Frontend (TimeCurve page)
FeeRouteron chain if labels drift.References
docs/testing/e2e-anvil.md—VITE_*table, Playwrightbots/timecurve/README.md— swarm, env varsscripts/start-local-anvil-stack.sh— stack env toggleschanged the description
mentioned in commit
5322f4b3ffchanged the description
mentioned in commit
55b38e6fdachanged the description
mentioned in issue #36