Add permanent arena event pages and audit event directory #364
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#364
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
Child of #363 — Improve top of funnel marketing and shareability.
Current codebase
/auditrendersArenaProtocolPage.tsx(legacy/arena/protocolredirects). The page hero is AUDIT only — no event directory, filter, or search at the top.idx_arena_podium_epoch—PodiumEpochRolledsettlements (winners, pool paid, block/tx metadata) · #254idx_arena_last_buy_epoch_started—LastBuyEpochStarted/ charm anchor rows · #278idx_arena_buy— full buy log withactual_seconds_added,new_deadline, BP fields, etc. · #282 / #283GET /v1/arena/activity— mixed feed (buys, WarBow, podium rolls, epoch starts, feature unlocks) · #345GET /v1/arena/session-summary?since_ms=…— 30-day absent-session aggregate only · #338GET /v1/arena/buys— paginated buy list (no per-epoch bundle)StandingsVisuals(deadline pressure / raise climb) lives inside the audit Raw data accordion — not exposed as standalone shareable event pages.injectSocialMetainjects static OG/Twitter tags at build time; SPA routes have no per-event title/description/canonical today.referralPathReserved.ts— new top-level segments must not collide with reserved slugs (audit,referrals, etc.).Why needed
Arena activity currently lives inside the live app and audit feed. Epoch rollovers and podium settlements disappear from casual discovery once the play surface moves on. Permanent, indexable event pages plus an audit-top directory turn historical competition into searchable marketing surface — readable titles, winners, charts, and tx replay — without requiring wallet connection.
Constraints / guardrails
INV-FRONTEND-301-INDEXER-FIRST-DISPLAY· arena-views §301.LaunchGate.tsxbefore the/:referralSegmentcatch-all.indexer/src/reorg.rs.Relevant files
ArenaProtocolPage.tsx,ArenaLiveBuysActivitySection.tsx,LaunchGate.tsxArenaSections.tsx(StandingsVisuals,TxHash),AddressInline,WalletProfileModalindexer/src/persist.rs,indexer/src/arena_podium_epoch.rs,indexer/src/arena_session_summary.rsindexer/src/api_arena.rsfrontend/src/lib/indexerApi.tsfrontend/vite.config.ts,frontend/index.htmldocs/frontend/arena-views.md,docs/testing/frontend-content-audit.mdRecommended direction
Indexer — event catalog API
GET /v1/arena/events(or split list endpoints) returning stable event ids, kind (podium_settlement,last_buy_epoch_start, optionallymajor_settlementcomposite), human title, subtitle, unix time, podium/category, epoch number, tx hash, and deep-link slug.GET /v1/arena/events/{id}(or{kind}/{slug}) with: winners + prize breakdown, epoch window stats, related buys sample, chart series (deadline/raise or epoch-local metrics), and explorer tx link fields.idx_arena_podium_epoch+idx_arena_last_buy_epoch_started; extend only if list/search needs denormalized title/slug columns. Cap page sizes; index forblock_timestamp DESCsearch.Frontend — permanent event pages
/audit/events/:eventIdor/events/:slug, lazy-loaded page component with readable H1, winner cards (blockie +AddressInline→ profile), chart section reusing/adaptingStandingsVisualspatterns, tx replay block (tx hash, block time, key log fields), and CTA back to/play +/audit.Frontend — audit directory (top of
/audit)Search / indexability
Acceptance criteria
/audittop section exposes filter + searchable list linking to permanent event pages./) and audit (/audit).Test plan
cd indexer && cargo clippy --all-targets -- -D warnings && cargo testbash scripts/verify-podium-live-anvil.sh(or dedicated verify script if added)cd frontend && npm run typecheck && npm run lint && npm testfrontendContentAudit.test.tsor arena static tests for/auditevent directory presencefrontend/e2e/with--workers=5Attack / abuse test plan
limit/offset/search query; assert caps (≤200), no SQL injection, stable 400 on bad cursors/ids.rate_limit.rs.audit,referrals,home, …) still resolve correctly; event slugs cannot shadow referral codes.Verification criteria
cd indexer && cargo clippy --all-targets -- -D warnings && cargo test— PASScd frontend && npm run typecheck && npm run lint && npm test— PASSmentioned in issue #363
mentioned in commit
f7e9817f43mentioned in merge request !537
mentioned in commit
ed8dea0040mentioned in commit
c6229c6dd1mentioned in merge request !538
mentioned in commit
25329b9e81Verification — GitLab #364 (agent:verify)
Scope: Permanent arena event pages and audit event directory.
Acceptance criteria
/audittop section: filter + searchable list linking to event pagesArenaEventDirectorySection.test.tsx; Playwrighte2e/anvil-audit-events.spec.ts(directory visible, filter chips, search, link navigation)/and/auditverify-arena-events-anvil.shdetail APIbash scripts/verify-arena-events-anvil.sh;INV-INDEXER-364-ARENA-EVENTSintegration smoke inintegration_stage2.rsaudit/events/:eventIdregistered before/:referralSegmentinLaunchGate.tsx;referralPathReserved.test.tsblocksaudituseArenaEventDirectory+ArenaEventPageoffline copy;ArenaEventDirectorySectionempty/search states (unit + E2E)· Yield Omegatitle; no TimeCurve/sale-end strings in event components;frontendContentAudit.test.tsPASSTest plan / verification criteria
cd indexer && cargo clippy --all-targets -- -D warnings && cargo testbash scripts/verify-arena-events-anvil.shlast_buy_epoch_startfilter, detail 200, bad id → 400cd frontend && npm run typecheck && npm run lint && npm testArenaEventDirectorySection.test.tsx,indexerApi.test.ts)frontendContentAudit.test.ts+ arena-views §364 docsYIELDOMEGA_E2E_INDEXER=1 PLAYWRIGHT_SPECS="e2e/anvil-audit-events.spec.ts" bash scripts/e2e-anvil.shAttack / abuse checks (spot)
limit=9999clamped to ≤200integration_stage2.rs::api_arena_events_smoke)?kind=&q=queriesEnvironment
:5433—bash scripts/verify-cloud-postgres.shPASSOverall: PASS — implementation on
mainmeets all acceptance and verification criteria. Closing #364.