Indexer: Arena v2 schema — podium epochs, CRED, XP, WarBow history #254

Closed
opened 2026-05-27 07:07:36 +00:00 by PlasticDigits · 19 comments
PlasticDigits commented 2026-05-27 07:07:36 +00:00 (Migrated from gitlab.com)

Context

Indexer schema and API for TimeArena multi-epoch podiums. Parent epic: #238.

Relevant files

  • indexer/migrations/
  • indexer/src/decoder.rs, indexer/src/api.rs
  • docs/indexer/design.md

Acceptance criteria

  • Tables: idx_arena_buy, idx_arena_podium_epoch, idx_arena_podium_snapshot, idx_play_cred_claim, idx_player_xp, idx_warbow_epoch_score
  • Replace GET /v1/timecurve/* with GET /v1/arena/* (timers, podiums, epochs)
  • GET /v1/arena/podiums: live predictions per category per epoch
  • GET /v1/arena/timers: all five deadlines (Last Buy + 4 podiums)
  • Ingest all TimeArena events; drop TimeCurve-only tables in fresh DB
  • WarBow: store full score history per WarBow epoch for admin finalize UI

Verification checklist

  • integration_stage2.rs coverage for new events
  • SCHEMA_VERSION bump + frontend indexerApi.ts types
## Context Indexer schema and API for TimeArena multi-epoch podiums. Parent epic: #238. ## Relevant files - `indexer/migrations/` - `indexer/src/decoder.rs`, `indexer/src/api.rs` - `docs/indexer/design.md` ## Acceptance criteria - [ ] Tables: `idx_arena_buy`, `idx_arena_podium_epoch`, `idx_arena_podium_snapshot`, `idx_play_cred_claim`, `idx_player_xp`, `idx_warbow_epoch_score` - [ ] Replace `GET /v1/timecurve/*` with `GET /v1/arena/*` (timers, podiums, epochs) - [ ] `GET /v1/arena/podiums`: live predictions per category per epoch - [ ] `GET /v1/arena/timers`: all five deadlines (Last Buy + 4 podiums) - [ ] Ingest all TimeArena events; drop TimeCurve-only tables in fresh DB - [ ] WarBow: store full score history per WarBow epoch for admin finalize UI ## Verification checklist - [ ] `integration_stage2.rs` coverage for new events - [ ] `SCHEMA_VERSION` bump + frontend `indexerApi.ts` types
PlasticDigits commented 2026-05-27 07:07:36 +00:00 (Migrated from gitlab.com)

marked as related to #238

marked as related to #238
PlasticDigits commented 2026-05-27 07:08:00 +00:00 (Migrated from gitlab.com)

mentioned in issue #238

mentioned in issue #238
PlasticDigits commented 2026-05-28 13:58:51 +00:00 (Migrated from gitlab.com)

Implementation summary

  • Migration 20260528130000_arena_v2_schema; decoder/persist for Arena events; GET /v1/arena/* in api_arena.rs.

Acceptance criteria

  • Arena tables + drop legacy timecurve buy/warbow tables
  • /v1/arena/timers, /podiums, /buys
  • SCHEMA_VERSION 2.0.0

Verification checklist

  • cargo test integration_stage2 updates (follow-up)
## Implementation summary - Migration `20260528130000_arena_v2_schema`; decoder/persist for Arena events; `GET /v1/arena/*` in `api_arena.rs`. ## Acceptance criteria - [x] Arena tables + drop legacy timecurve buy/warbow tables - [x] `/v1/arena/timers`, `/podiums`, `/buys` - [x] SCHEMA_VERSION 2.0.0 ## Verification checklist - [ ] `cargo test` integration_stage2 updates (follow-up)
PlasticDigits commented 2026-06-01 03:29:03 +00:00 (Migrated from gitlab.com)

mentioned in commit 27173ca8a3

mentioned in commit 27173ca8a36a9b709a5781e2b036d5565d4e405c
PlasticDigits commented 2026-06-01 03:29:12 +00:00 (Migrated from gitlab.com)

Verification run (2026-06-01)

Verified GitLab #254 in worktree issue/254-arena-indexer-schema, merged to main at 4a0ead5.

What changed

  • idx_warbow_epoch_score ingest: new indexer/src/warbow_score.rs snapshots battlePoints(player) at the log block after BP-affecting events (Buy, WarBowSteal, WarBowRevenge, WarBowFlagClaimed); decode added for revenge/flag events.
  • idx_arena_podium_snapshot: SQL view over idx_arena_podium_epoch (migration 20260601120000_idx_arena_podium_snapshot_view_gl254).
  • GET /v1/arena/vault-funding/recent: fixed axum Query deserialization (was returning 400).
  • GET /v1/arena/podiums: adds indexed epoch per category from idx_arena_podium_epoch.
  • Docs/skills/invariants: INV-INDEXER-254-ARENA-SCHEMA, design §254, play-active-time-arena skill, arena-views.md.
  • integration_stage2.rs: table reset hygiene, idx_warbow_epoch_score persist smoke, donations API smoke ordering fix.

Automated checks

  • cargo test --test integration_stage2 with YIELDOMEGA_PG_TEST_URL (Postgres in Docker): pass
  • cargo clippy -D warnings: pass

Manual verification checklist (QA)

  • Fresh DB migrate: tables idx_arena_buy, idx_arena_podium_epoch, view idx_arena_podium_snapshot, idx_play_cred_claim, idx_player_xp, idx_warbow_epoch_score; no idx_timecurve_* buy tables
  • GET /v1/arena/timers returns Last Buy + four podium_deadlines_sec
  • GET /v1/arena/podiums returns rows[] with epoch and head winners/values
  • After Anvil buys + WarBow steals, idx_warbow_epoch_score has rows for the active WarBow epoch (ingestion + RPC)
  • GET /v1/arena/vault-funding/recent?limit=5 → HTTP 200
  • x-schema-version ≥ 2.4.0 on arena routes
  • Live podium predictions from indexed metrics only (not just head RPC) — see gap below

Open gap (issue stays open)

GET /v1/arena/podiums still builds winner slots from head podium() RPC; epoch is indexed but live per-category predictions from Postgres (pre–sale-end UX in the issue body) are not fully implemented. Requesting QA sign-off on that slice before close.

## Verification run (2026-06-01) Verified GitLab #254 in worktree `issue/254-arena-indexer-schema`, merged to `main` at `4a0ead5`. ### What changed - **`idx_warbow_epoch_score` ingest:** new `indexer/src/warbow_score.rs` snapshots `battlePoints(player)` at the log block after BP-affecting events (`Buy`, `WarBowSteal`, `WarBowRevenge`, `WarBowFlagClaimed`); decode added for revenge/flag events. - **`idx_arena_podium_snapshot`:** SQL view over `idx_arena_podium_epoch` (migration `20260601120000_idx_arena_podium_snapshot_view_gl254`). - **`GET /v1/arena/vault-funding/recent`:** fixed axum `Query` deserialization (was returning 400). - **`GET /v1/arena/podiums`:** adds indexed `epoch` per category from `idx_arena_podium_epoch`. - **Docs/skills/invariants:** `INV-INDEXER-254-ARENA-SCHEMA`, [design §254](docs/indexer/design.md#arena-v2-schema-http-gitlab-254), `play-active-time-arena` skill, `arena-views.md`. - **`integration_stage2.rs`:** table reset hygiene, `idx_warbow_epoch_score` persist smoke, donations API smoke ordering fix. ### Automated checks - `cargo test --test integration_stage2` with `YIELDOMEGA_PG_TEST_URL` (Postgres in Docker): **pass** - `cargo clippy -D warnings`: **pass** ### Manual verification checklist (QA) - [ ] Fresh DB migrate: tables `idx_arena_buy`, `idx_arena_podium_epoch`, view `idx_arena_podium_snapshot`, `idx_play_cred_claim`, `idx_player_xp`, `idx_warbow_epoch_score`; no `idx_timecurve_*` buy tables - [ ] `GET /v1/arena/timers` returns Last Buy + four `podium_deadlines_sec` - [ ] `GET /v1/arena/podiums` returns `rows[]` with `epoch` and head `winners`/`values` - [ ] After Anvil buys + WarBow steals, `idx_warbow_epoch_score` has rows for the active WarBow epoch (ingestion + RPC) - [ ] `GET /v1/arena/vault-funding/recent?limit=5` → HTTP 200 - [ ] `x-schema-version` ≥ **2.4.0** on arena routes - [ ] **Live podium predictions from indexed metrics only** (not just head RPC) — see gap below ### Open gap (issue stays open) `GET /v1/arena/podiums` still builds winner slots from head `podium()` RPC; `epoch` is indexed but **live per-category predictions from Postgres** (pre–sale-end UX in the issue body) are not fully implemented. Requesting QA sign-off on that slice before close.
PlasticDigits commented 2026-06-01 03:31:04 +00:00 (Migrated from gitlab.com)

mentioned in issue #273

mentioned in issue #273
PlasticDigits commented 2026-06-01 12:20:06 +00:00 (Migrated from gitlab.com)

Live podium predictions slice verified and merged via #273 (commit d902d7f): GET /v1/arena/podiums + idx_arena_podium_live + bash scripts/verify-podium-live-anvil.sh. Please re-run the #273 manual checklist on #254 before closing.

Live podium predictions slice verified and merged via #273 (commit d902d7f): `GET /v1/arena/podiums` + `idx_arena_podium_live` + `bash scripts/verify-podium-live-anvil.sh`. Please re-run the #273 manual checklist on #254 before closing.
PlasticDigits commented 2026-06-02 13:22:21 +00:00 (Migrated from gitlab.com)

GitLab #254 verification (Cloud Agent, 2026-06-02)

Verified Indexer: Arena v2 schema — podium epochs, CRED, XP, WarBow history on main @ 7d7d3da. Issue remains open per process (live predictions gap closed via #273; QA sign-off only).

Acceptance criteria (issue body)

Criterion Result How verified
Tables: idx_arena_buy, idx_arena_podium_epoch, idx_arena_podium_snapshot, idx_play_cred_claim, idx_player_xp, idx_warbow_epoch_score PASS Fresh DB after verify-podium-live-anvil.sh: \dt idx_* — all present; idx_arena_podium_snapshot is a view (to_regclass OK)
Replace GET /v1/timecurve/* with GET /v1/arena/* PASS indexer/src/api.rs mounts api_arena::arena_routes() only; integration_stage2.rs::api_legacy_player_reserve_routes_return_404; frontend indexerApi.test.ts uses /v1/arena/*
GET /v1/arena/podiums: live predictions per category per epoch PASS bash scripts/verify-podium-live-anvil.sh — UX order, podium_prediction: true with entrants, idx_arena_podium_live rows; integration_stage2::arena_podiums_live_predictions_smoke
GET /v1/arena/timers: Last Buy + four podium deadlines PASS Live curl during Anvil run: last_buy_deadline_sec + podium_deadlines_sec length 4; api_http_smoke hits /v1/arena/timers → 200
Ingest TimeArena events; no TimeCurve-only buy tables on fresh DB PASS integration_stage2::postgres_stage2_persist_all_events_and_rollback_after; SELECT … WHERE tablename LIKE 'idx_timecurve%' → 0 rows
WarBow: full score history per epoch (admin finalize UI) PASS idx_warbow_epoch_score count 3 after Anvil buys; persist smoke for ArenaWarbowSteal/Guard + ArenaWarbowEpochScore in integration_stage2

Verification checklist (issue + 2026-06-01 comment)

Check Result Command / output
integration_stage2.rs coverage PASS cargo test --test integration_stage2 (3/3) with YIELDOMEGA_PG_TEST_URL
SCHEMA_VERSION + frontend types PASS indexer SCHEMA_VERSION = "2.5.0"; x-schema-version: 2.5.0 on /v1/arena/timers; npm test -- src/lib/indexerApi.test.ts (21/21)
cargo clippy -D warnings PASS cd indexer && cargo clippy --all-targets -- -D warnings (Rust 1.96)
Fresh DB: no idx_timecurve_* buy tables PASS Postgres catalog query → empty
GET /v1/arena/vault-funding/recent?limit=5 PASS HTTP 200, {"items":[],"limit":5,"offset":0} on fresh deploy
Live podium predictions (Postgres, not head RPC only) PASS #273 slice: verify-podium-live-anvil.sh OK (read_block=18, live_rows=12)
WarBow steals → idx_warbow_epoch_score PASS Integration persist asserts idx_warbow_epoch_score count 1; Anvil DB had rows after buys

Docs / invariants cross-check

  • INV-INDEXER-254-ARENA-SCHEMA — matches docs/testing/invariants-and-business-logic.md and docs/indexer/design.md#arena-v2-schema-http-gitlab-254
  • Guardrails .cursor/skills/yieldomega-guardrails/SKILL.md — references #254 arena HTTP
  • Play skill skills/play-active-time-arena/SKILL.md — arena routes + verify-podium-live-anvil.sh

No repository changes required this pass.

Follow-ups (optional)

  • Add a dedicated scripts/verify-arena-indexer-schema-anvil.sh alias doc in docs/testing/ci.md if QA wants a #254-only entrypoint separate from #273 live-podium script.
  • Consider noting in AGENTS.md Cloud VM Postgres: yieldomega role needs CREATEDB when not using Docker yieldomega-pg (native Postgres on port 5433).
## GitLab #254 verification (Cloud Agent, 2026-06-02) Verified **Indexer: Arena v2 schema — podium epochs, CRED, XP, WarBow history** on `main` @ `7d7d3da`. Issue remains **open** per process (live predictions gap closed via #273; QA sign-off only). ### Acceptance criteria (issue body) | Criterion | Result | How verified | |-----------|--------|----------------| | Tables: `idx_arena_buy`, `idx_arena_podium_epoch`, `idx_arena_podium_snapshot`, `idx_play_cred_claim`, `idx_player_xp`, `idx_warbow_epoch_score` | **PASS** | Fresh DB after `verify-podium-live-anvil.sh`: `\dt idx_*` — all present; `idx_arena_podium_snapshot` is a view (`to_regclass` OK) | | Replace `GET /v1/timecurve/*` with `GET /v1/arena/*` | **PASS** | `indexer/src/api.rs` mounts `api_arena::arena_routes()` only; `integration_stage2.rs::api_legacy_player_reserve_routes_return_404`; frontend `indexerApi.test.ts` uses `/v1/arena/*` | | `GET /v1/arena/podiums`: live predictions per category per epoch | **PASS** | `bash scripts/verify-podium-live-anvil.sh` — UX order, `podium_prediction: true` with entrants, `idx_arena_podium_live` rows; `integration_stage2::arena_podiums_live_predictions_smoke` | | `GET /v1/arena/timers`: Last Buy + four podium deadlines | **PASS** | Live curl during Anvil run: `last_buy_deadline_sec` + `podium_deadlines_sec` length **4**; `api_http_smoke` hits `/v1/arena/timers` → 200 | | Ingest TimeArena events; no TimeCurve-only buy tables on fresh DB | **PASS** | `integration_stage2::postgres_stage2_persist_all_events_and_rollback_after`; `SELECT … WHERE tablename LIKE 'idx_timecurve%'` → **0 rows** | | WarBow: full score history per epoch (admin finalize UI) | **PASS** | `idx_warbow_epoch_score` count **3** after Anvil buys; persist smoke for `ArenaWarbowSteal`/`Guard` + `ArenaWarbowEpochScore` in `integration_stage2` | ### Verification checklist (issue + 2026-06-01 comment) | Check | Result | Command / output | |-------|--------|------------------| | `integration_stage2.rs` coverage | **PASS** | `cargo test --test integration_stage2` (3/3) with `YIELDOMEGA_PG_TEST_URL` | | `SCHEMA_VERSION` + frontend types | **PASS** | `indexer` `SCHEMA_VERSION = "2.5.0"`; `x-schema-version: 2.5.0` on `/v1/arena/timers`; `npm test -- src/lib/indexerApi.test.ts` (21/21) | | `cargo clippy -D warnings` | **PASS** | `cd indexer && cargo clippy --all-targets -- -D warnings` (Rust 1.96) | | Fresh DB: no `idx_timecurve_*` buy tables | **PASS** | Postgres catalog query → empty | | `GET /v1/arena/vault-funding/recent?limit=5` | **PASS** | HTTP 200, `{"items":[],"limit":5,"offset":0}` on fresh deploy | | Live podium predictions (Postgres, not head RPC only) | **PASS** | #273 slice: `verify-podium-live-anvil.sh` OK (`read_block=18`, `live_rows=12`) | | WarBow steals → `idx_warbow_epoch_score` | **PASS** | Integration persist asserts `idx_warbow_epoch_score` count 1; Anvil DB had rows after buys | ### Docs / invariants cross-check - **`INV-INDEXER-254-ARENA-SCHEMA`** — matches `docs/testing/invariants-and-business-logic.md` and `docs/indexer/design.md#arena-v2-schema-http-gitlab-254` - **Guardrails** `.cursor/skills/yieldomega-guardrails/SKILL.md` — references #254 arena HTTP - **Play skill** `skills/play-active-time-arena/SKILL.md` — arena routes + `verify-podium-live-anvil.sh` No repository changes required this pass. ### Follow-ups (optional) - Add a dedicated `scripts/verify-arena-indexer-schema-anvil.sh` alias doc in `docs/testing/ci.md` if QA wants a #254-only entrypoint separate from #273 live-podium script. - Consider noting in `AGENTS.md` Cloud VM Postgres: `yieldomega` role needs `CREATEDB` when not using Docker `yieldomega-pg` (native Postgres on port 5433).
PlasticDigits commented 2026-06-02 13:27:44 +00:00 (Migrated from gitlab.com)

mentioned in merge request !400

mentioned in merge request !400
PlasticDigits commented 2026-06-02 14:50:48 +00:00 (Migrated from gitlab.com)

mentioned in issue #282

mentioned in issue #282
PlasticDigits commented 2026-06-03 11:40:13 +00:00 (Migrated from gitlab.com)

mentioned in issue #283

mentioned in issue #283
PlasticDigits commented 2026-06-03 11:40:14 +00:00 (Migrated from gitlab.com)

marked as related to #283

marked as related to #283
PlasticDigits commented 2026-06-03 13:25:50 +00:00 (Migrated from gitlab.com)

GitLab #254 verification (Cloud Agent, 2026-06-03)

Verified Indexer: Arena v2 schema — podium epochs, CRED, XP, WarBow history on main @ 6d520e7a988b307c8e0a7b0a1a88da3dbd7dbeb5. All acceptance criteria and QA checklist items PASS. Closing this issue.

Acceptance criteria (issue body)

Criterion Result How verified
Tables: idx_arena_buy, idx_arena_podium_epoch, idx_arena_podium_snapshot, idx_play_cred_claim, idx_player_xp, idx_warbow_epoch_score PASS Fresh DB after bash scripts/verify-podium-live-anvil.sh: \dt — five base tables present; idx_arena_podium_snapshot view (to_regclass OK)
Replace GET /v1/timecurve/* with GET /v1/arena/* PASS indexer/src/api.rs merges api_arena::arena_routes() only; integration_stage2.rs::api_legacy_player_reserve_routes_return_404; cd frontend && npm test -- src/lib/indexerApi.test.ts (22/22) uses /v1/arena/*
GET /v1/arena/podiums: live predictions per category per epoch PASS bash scripts/verify-podium-live-anvil.sh — UX order, podium_prediction: true with entrants, idx_arena_podium_live rows (live_rows=12); integration_stage2::arena_podiums_live_predictions_smoke
GET /v1/arena/timers: Last Buy + four podium deadlines PASS integration_stage2 api_http_smoke → /v1/arena/timers 200 with last_buy_deadline_sec / rows shape
Ingest TimeArena events; no TimeCurve-only buy tables on fresh DB PASS integration_stage2::postgres_stage2_persist_all_events_and_rollback_after; SELECT … WHERE tablename LIKE 'idx_timecurve%' → 0 rows
WarBow: full score history per epoch (admin finalize UI) PASS idx_warbow_epoch_score count 3 after Anvil buys; persist smoke for WarBow events in integration_stage2

Verification checklist (issue + comments)

Check Result Command / output
integration_stage2.rs coverage PASS YIELDOMEGA_PG_TEST_URL=… cargo test --test integration_stage2 — 4/4
SCHEMA_VERSION + frontend types PASS SCHEMA_VERSION = "2.5.0"; verify script header x-schema-version: 2.5.0 on /v1/arena/podiums; indexerApi.test.ts 22/22
cargo clippy -D warnings PASS cd indexer && cargo clippy --all-targets -- -D warnings
Fresh DB: no idx_timecurve_* buy tables PASS Postgres catalog → empty
GET /v1/arena/vault-funding/recent?limit=5 PASS integration_stage2 api_vault_funding_smoke → HTTP 200
Live podium predictions (Postgres, not head RPC only) PASS #273: verify-podium-live-anvil.sh OK (read_block=28, live_rows=12)
WarBow steals → idx_warbow_epoch_score PASS Anvil DB rows + integration persist assert

Docs / invariants cross-check

  • INV-INDEXER-254-ARENA-SCHEMA — present in docs/testing/invariants-and-business-logic.md; matches docs/indexer/design.md#arena-v2-schema-http-gitlab-254
  • Guardrails .cursor/skills/yieldomega-guardrails/SKILL.md — references #254 arena HTTP
  • Play skill skills/play-active-time-arena/SKILL.md — arena routes + verify-podium-live-anvil.sh

No repository changes required this pass.

Follow-ups (optional)

  • Add a dedicated scripts/verify-arena-indexer-schema-anvil.sh (or CI doc entry) if QA wants a #254-only entrypoint separate from the #273 live-podium script.
## GitLab #254 verification (Cloud Agent, 2026-06-03) Verified **Indexer: Arena v2 schema — podium epochs, CRED, XP, WarBow history** on `main` @ `6d520e7a988b307c8e0a7b0a1a88da3dbd7dbeb5`. All acceptance criteria and QA checklist items **PASS**. Closing this issue. ### Acceptance criteria (issue body) | Criterion | Result | How verified | |-----------|--------|----------------| | Tables: `idx_arena_buy`, `idx_arena_podium_epoch`, `idx_arena_podium_snapshot`, `idx_play_cred_claim`, `idx_player_xp`, `idx_warbow_epoch_score` | **PASS** | Fresh DB after `bash scripts/verify-podium-live-anvil.sh`: `\dt` — five base tables present; `idx_arena_podium_snapshot` view (`to_regclass` OK) | | Replace `GET /v1/timecurve/*` with `GET /v1/arena/*` | **PASS** | `indexer/src/api.rs` merges `api_arena::arena_routes()` only; `integration_stage2.rs::api_legacy_player_reserve_routes_return_404`; `cd frontend && npm test -- src/lib/indexerApi.test.ts` (22/22) uses `/v1/arena/*` | | `GET /v1/arena/podiums`: live predictions per category per epoch | **PASS** | `bash scripts/verify-podium-live-anvil.sh` — UX order, `podium_prediction: true` with entrants, `idx_arena_podium_live` rows (`live_rows=12`); `integration_stage2::arena_podiums_live_predictions_smoke` | | `GET /v1/arena/timers`: Last Buy + four podium deadlines | **PASS** | `integration_stage2` `api_http_smoke` → `/v1/arena/timers` 200 with `last_buy_deadline_sec` / `rows` shape | | Ingest TimeArena events; no TimeCurve-only buy tables on fresh DB | **PASS** | `integration_stage2::postgres_stage2_persist_all_events_and_rollback_after`; `SELECT … WHERE tablename LIKE 'idx_timecurve%'` → **0 rows** | | WarBow: full score history per epoch (admin finalize UI) | **PASS** | `idx_warbow_epoch_score` count **3** after Anvil buys; persist smoke for WarBow events in `integration_stage2` | ### Verification checklist (issue + comments) | Check | Result | Command / output | |-------|--------|------------------| | `integration_stage2.rs` coverage | **PASS** | `YIELDOMEGA_PG_TEST_URL=… cargo test --test integration_stage2` — **4/4** | | `SCHEMA_VERSION` + frontend types | **PASS** | `SCHEMA_VERSION = "2.5.0"`; verify script header `x-schema-version: 2.5.0` on `/v1/arena/podiums`; `indexerApi.test.ts` **22/22** | | `cargo clippy -D warnings` | **PASS** | `cd indexer && cargo clippy --all-targets -- -D warnings` | | Fresh DB: no `idx_timecurve_*` buy tables | **PASS** | Postgres catalog → empty | | `GET /v1/arena/vault-funding/recent?limit=5` | **PASS** | `integration_stage2` `api_vault_funding_smoke` → HTTP 200 | | Live podium predictions (Postgres, not head RPC only) | **PASS** | #273: `verify-podium-live-anvil.sh` OK (`read_block=28`, `live_rows=12`) | | WarBow steals → `idx_warbow_epoch_score` | **PASS** | Anvil DB rows + integration persist assert | ### Docs / invariants cross-check - **`INV-INDEXER-254-ARENA-SCHEMA`** — present in `docs/testing/invariants-and-business-logic.md`; matches `docs/indexer/design.md#arena-v2-schema-http-gitlab-254` - **Guardrails** `.cursor/skills/yieldomega-guardrails/SKILL.md` — references #254 arena HTTP - **Play skill** `skills/play-active-time-arena/SKILL.md` — arena routes + `verify-podium-live-anvil.sh` No repository changes required this pass. ### Follow-ups (optional) - Add a dedicated `scripts/verify-arena-indexer-schema-anvil.sh` (or CI doc entry) if QA wants a #254-only entrypoint separate from the #273 live-podium script.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-06-03 13:25:53 +00:00
PlasticDigits commented 2026-06-03 13:39:33 +00:00 (Migrated from gitlab.com)

mentioned in merge request !415

mentioned in merge request !415
PlasticDigits commented 2026-06-10 09:21:05 +00:00 (Migrated from gitlab.com)

mentioned in issue #306

mentioned in issue #306
PlasticDigits commented 2026-06-13 06:34:51 +00:00 (Migrated from gitlab.com)

mentioned in issue #307

mentioned in issue #307
PlasticDigits commented 2026-06-28 05:40:33 +00:00 (Migrated from gitlab.com)

mentioned in issue #356

mentioned in issue #356
PlasticDigits commented 2026-06-28 05:40:35 +00:00 (Migrated from gitlab.com)

marked as related to #356

marked as related to #356
PlasticDigits commented 2026-07-07 02:38:41 +00:00 (Migrated from gitlab.com)

mentioned in issue #364

mentioned in issue #364
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#254
No description provided.