Reconcile product specs, content audit, and pause docs with shipped UI (#320) #466

Merged
PlasticDigits merged 2 commits from issue-320-reconcile-docs-ui into main 2026-06-14 02:33:17 +00:00
PlasticDigits commented 2026-06-13 12:53:05 +00:00 (Migrated from gitlab.com)

Summary

Reconciles product specs, frontend content audit, pause ops docs, indexer design, and play skills with shipped TimeArena / LaunchGate behavior (#320, parent #309).

  • Constants: MAX_PLAYER_LEVEL = 5, FIRST_BUY_CRED_BONUS = 1100e18, effectiveCharmPriceWad() for DOUB buys — aligned across time-arena.md and arena-v2.md.
  • Route IA: play at /, AUDIT at /arena/protocol, legacy /arena / /timecurve → /; removed ArenaSubnav / decision-row from audit expectations.
  • Pause ops: claimWarBowFlag documented as gated by paused via _requireLive().
  • Indexer: documents GET /v1/arena/last-buy-epoch-pricing, GET /v1/arena/warbow/latest-bp, and limit/offset pagination (not cursor).
  • Decision points: remainder wei shipped to WarBow (cat 3) vs approved Last Buy target — cross-linked in product docs (contract change out of scope).

Acceptance checklist

Criterion Verification Result
Progression/CRED constants match TimeArena.sol Manual diff time-arena.md / arena-v2.md vs TimeArena.sol (FIRST_BUY_CRED_BONUS, MAX_PLAYER_LEVEL via ArenaXp) PASS
Route IA documented consistently docs/testing/frontend-content-audit.md, docs/frontend/arena-views.md, LaunchGate.tsx PASS
Pause doc matches _requireLive() docs/operations/pause-and-final-signoff.md, TimeArena.sol L479–480 PASS
Indexer design lists implemented API routes/events docs/indexer/design.md vs indexer/src/api_arena.rs PASS
Doc anchor integrity bash scripts/check-doc-anchors.sh PASS
Content audit / surface tests cd frontend && npm test -- surfaceContent frontendContentAudit arenaCommandConsoleStatic PASS
Manual review vs LaunchGate.tsx frontend/src/app/LaunchGate.tsx route tables PASS

Third-party verification

bash scripts/check-doc-anchors.sh
cd frontend && npm test -- surfaceContent frontendContentAudit arenaCommandConsoleStatic

Manual: open docs/testing/frontend-content-audit.md and confirm play / vs AUDIT /arena/protocol sections match LaunchGate.tsx and e2e/navigation.spec.ts (/arena → / redirect).

Invariants: INV-DOCS-320-* in docs/testing/invariants-and-business-logic.md#docs-product-ui-reconcile-gitlab-320.


Note

Low Risk
Documentation and content-audit test updates only; no onchain, indexer, or frontend runtime behavior changes in the diff.

Overview
Reconciles GitLab #320 documentation across product specs, frontend content audit, pause ops, indexer design, agent guardrails, and play skills so they match shipped TimeArena, LaunchGate, and indexer HTTP behavior.

Product constants: First-buy CRED bonus is documented as FIRST_BUY_CRED_BONUS = 1100e18 (replacing 150). MAX_PLAYER_LEVEL = 5, level-cap XP behavior, and effectiveCharmPriceWad() / epoch charm growth for DOUB buys are aligned in time-arena.md and arena-v2.md. DOUB buy remainder wei is documented as routing to Last Buy (cat 0), not WarBow.

Route / UI IA: Primary play is /; AUDIT is /arena/protocol. Legacy /arena and /timecurve redirect to /. Docs describe play-surface timer carousel (no four-card podium grid), header AUDIT + Referrals only, and explicitly removed ArenaSubnav / decision-row chrome. AGENTS.md, surfaceContent.ts, and frontendContentAudit.test.ts follow the same paths.

Pause ops: claimWarBowFlag is documented as blocked when paused via _requireLive() (consistent with onchain code), updating security/threat-model and final-signoff runbooks that previously treated flag claim as live during pause.

Indexer: design.md adds GET /v1/arena/last-buy-epoch-pricing and GET /v1/arena/warbow/latest-bp, and states Arena list routes use limit/offset rather than opaque cursors.

New INV-DOCS-320-* invariant rows capture verification expectations for constants, routes, pause docs, and indexer routes.

Reviewed by Cursor Bugbot for commit bc74435db9. Bugbot is set up for automated code reviews on this repo. Configure here.

## Summary Reconciles product specs, frontend content audit, pause ops docs, indexer design, and play skills with shipped `TimeArena` / `LaunchGate` behavior ([#320](https://gitlab.com/PlasticDigits/yieldomega/-/issues/320), parent [#309](https://gitlab.com/PlasticDigits/yieldomega/-/issues/309)). - **Constants:** `MAX_PLAYER_LEVEL = 5`, `FIRST_BUY_CRED_BONUS = 1100e18`, `effectiveCharmPriceWad()` for DOUB buys — aligned across `time-arena.md` and `arena-v2.md`. - **Route IA:** play at **`/`**, AUDIT at **`/arena/protocol`**, legacy **`/arena`** / **`/timecurve`** → **`/`**; removed `ArenaSubnav` / decision-row from audit expectations. - **Pause ops:** `claimWarBowFlag` documented as gated by **`paused`** via `_requireLive()`. - **Indexer:** documents `GET /v1/arena/last-buy-epoch-pricing`, `GET /v1/arena/warbow/latest-bp`, and `limit`/`offset` pagination (not cursor). - **Decision points:** remainder wei shipped to WarBow (cat 3) vs approved Last Buy target — cross-linked in product docs (contract change out of scope). ## Acceptance checklist | Criterion | Verification | Result | |-----------|--------------|--------| | Progression/CRED constants match `TimeArena.sol` | Manual diff `time-arena.md` / `arena-v2.md` vs `TimeArena.sol` (`FIRST_BUY_CRED_BONUS`, `MAX_PLAYER_LEVEL` via `ArenaXp`) | PASS | | Route IA documented consistently | `docs/testing/frontend-content-audit.md`, `docs/frontend/arena-views.md`, `LaunchGate.tsx` | PASS | | Pause doc matches `_requireLive()` | `docs/operations/pause-and-final-signoff.md`, `TimeArena.sol` L479–480 | PASS | | Indexer design lists implemented API routes/events | `docs/indexer/design.md` vs `indexer/src/api_arena.rs` | PASS | | Doc anchor integrity | `bash scripts/check-doc-anchors.sh` | PASS | | Content audit / surface tests | `cd frontend && npm test -- surfaceContent frontendContentAudit arenaCommandConsoleStatic` | PASS | | Manual review vs `LaunchGate.tsx` | `frontend/src/app/LaunchGate.tsx` route tables | PASS | ## Third-party verification ```bash bash scripts/check-doc-anchors.sh cd frontend && npm test -- surfaceContent frontendContentAudit arenaCommandConsoleStatic ``` Manual: open `docs/testing/frontend-content-audit.md` and confirm play **`/`** vs AUDIT **`/arena/protocol`** sections match `LaunchGate.tsx` and `e2e/navigation.spec.ts` (`/arena` → `/` redirect). Invariants: `INV-DOCS-320-*` in `docs/testing/invariants-and-business-logic.md#docs-product-ui-reconcile-gitlab-320`. <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Low Risk** > Documentation and content-audit test updates only; no onchain, indexer, or frontend runtime behavior changes in the diff. > > **Overview** > Reconciles **GitLab #320** documentation across product specs, frontend content audit, pause ops, indexer design, agent guardrails, and play skills so they match shipped **`TimeArena`**, **`LaunchGate`**, and indexer HTTP behavior. > > **Product constants:** First-buy CRED bonus is documented as **`FIRST_BUY_CRED_BONUS = 1100e18`** (replacing **150**). **`MAX_PLAYER_LEVEL = 5`**, level-cap XP behavior, and **`effectiveCharmPriceWad()`** / epoch charm growth for DOUB buys are aligned in **`time-arena.md`** and **`arena-v2.md`**. DOUB buy remainder wei is documented as routing to **Last Buy (cat 0)**, not WarBow. > > **Route / UI IA:** Primary play is **`/`**; AUDIT is **`/arena/protocol`**. Legacy **`/arena`** and **`/timecurve`** redirect to **`/`**. Docs describe play-surface **timer carousel** (no four-card podium grid), **header AUDIT + Referrals** only, and explicitly **removed** `ArenaSubnav` / decision-row chrome. **`AGENTS.md`**, **`surfaceContent.ts`**, and **`frontendContentAudit.test.ts`** follow the same paths. > > **Pause ops:** **`claimWarBowFlag`** is documented as blocked when **`paused`** via **`_requireLive()`** (consistent with onchain code), updating security/threat-model and final-signoff runbooks that previously treated flag claim as live during pause. > > **Indexer:** **`design.md`** adds **`GET /v1/arena/last-buy-epoch-pricing`** and **`GET /v1/arena/warbow/latest-bp`**, and states Arena list routes use **`limit`/`offset`** rather than opaque cursors. > > New **`INV-DOCS-320-*`** invariant rows capture verification expectations for constants, routes, pause docs, and indexer routes. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit bc74435db9558298f2bd32140f3ed74867a9dcc5. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY -->
project_80561744_bot_5118c68a88bff95eacb6ab1c47c19cae commented 2026-06-13 12:53:13 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
project_80561744_bot_5118c68a88bff95eacb6ab1c47c19cae commented 2026-06-13 12:53:24 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
PlasticDigits commented 2026-06-13 13:56:02 +00:00 (Migrated from gitlab.com)

Security review — MR !466

Commit reviewed: 6cc3d444b3e1897240038a454bb65de6b5bd1a80

Scope: 17 files — product/ops/indexer docs, play skills, guardrails, AGENTS.md; minor frontend test assertion (frontendContentAudit.test.ts) and static launch-countdown tooltip (surfaceContent.ts). No contract, indexer, or runtime frontend logic changes.

Method: Diff review; traced attacker-controlled input paths on modified code; cross-checked documented pause scope (claimWarBowFlag + _requireLive()), prize-routing remainder, and indexer route docs against shipped TimeArena.sol / api_arena.rs.

Outcome: FINDINGS: 0 medium+

Inline threads: none (no medium+ findings)

Notes (informational, below reporting threshold)

  • surfaceContent.ts tooltip change is a hardcoded string rendered via HTML title — no user-controlled sink.
  • Pause / claimWarBowFlag doc corrections align with onchain _requireLive() (improves ops accuracy; no new bypass).
  • Indexer endpoints documented (last-buy-epoch-pricing, warbow/latest-bp) already use parameterized SQL and address allowlisting in existing api_arena.rs — documentation only.

Security review: no medium+ findings on this diff.

## Security review — MR !466 **Commit reviewed:** `6cc3d444b3e1897240038a454bb65de6b5bd1a80` **Scope:** 17 files — product/ops/indexer docs, play skills, guardrails, `AGENTS.md`; minor frontend test assertion (`frontendContentAudit.test.ts`) and static launch-countdown tooltip (`surfaceContent.ts`). No contract, indexer, or runtime frontend logic changes. **Method:** Diff review; traced attacker-controlled input paths on modified code; cross-checked documented pause scope (`claimWarBowFlag` + `_requireLive()`), prize-routing remainder, and indexer route docs against shipped `TimeArena.sol` / `api_arena.rs`. **Outcome:** `FINDINGS: 0` medium+ **Inline threads:** none (no medium+ findings) ### Notes (informational, below reporting threshold) - `surfaceContent.ts` tooltip change is a hardcoded string rendered via HTML `title` — no user-controlled sink. - Pause / `claimWarBowFlag` doc corrections align with onchain `_requireLive()` (improves ops accuracy; no new bypass). - Indexer endpoints documented (`last-buy-epoch-pricing`, `warbow/latest-bp`) already use parameterized SQL and address allowlisting in existing `api_arena.rs` — documentation only. Security review: **no medium+ findings** on this diff.
PlasticDigits commented 2026-06-13 14:12:31 +00:00 (Migrated from gitlab.com)

added 31 commits

  • 6cc3d444...8dd57052 - 30 commits from branch main
  • bc74435d - Merge main into issue-320-reconcile-docs-ui and resolve doc conflicts.

Compare with previous version

added 31 commits <ul><li>6cc3d444...8dd57052 - 30 commits from branch <code>main</code></li><li>bc74435d - Merge main into issue-320-reconcile-docs-ui and resolve doc conflicts.</li></ul> [Compare with previous version](/PlasticDigits/yieldomega/-/merge_requests/96/diffs?diff_id=1850345302&start_sha=6cc3d444b3e1897240038a454bb65de6b5bd1a80)
PlasticDigits commented 2026-06-13 14:12:31 +00:00 (Migrated from gitlab.com)

Resolved merge conflicts with main (4 files):

  • .cursor/skills/yieldomega-guardrails/SKILL.md — kept #320 route IA (/ play, /arena/protocol AUDIT); dropped retired VITE_ADMIN_SELL_VAULT_ADDRESS per #314.
  • docs/onchain/security-and-threat-model.md — adopted #313 remainder routing to Last Buy (cat 0).
  • docs/product/arena-v2.md — merged #320 routes/pause docs with main's #310 WarBow bonuses, #311 CRED pool accrual, and #313 prize routing; kept FIRST_BUY_CRED_BONUS = 1100e18.
  • skills/play-time-arena-doub/SKILL.md — merged #315 doubOwedForBuy preview with #320 / play route.

Updated time-arena.md decision table: #313 remainder routing is now resolved onchain.

Sanity: check-doc-anchors.sh PASS; frontend content audit tests PASS.

Resolved merge conflicts with `main` (4 files): - **`.cursor/skills/yieldomega-guardrails/SKILL.md`** — kept #320 route IA (`/` play, `/arena/protocol` AUDIT); dropped retired `VITE_ADMIN_SELL_VAULT_ADDRESS` per #314. - **`docs/onchain/security-and-threat-model.md`** — adopted #313 remainder routing to Last Buy (cat 0). - **`docs/product/arena-v2.md`** — merged #320 routes/pause docs with main's #310 WarBow bonuses, #311 CRED pool accrual, and #313 prize routing; kept `FIRST_BUY_CRED_BONUS = 1100e18`. - **`skills/play-time-arena-doub/SKILL.md`** — merged #315 `doubOwedForBuy` preview with #320 `/` play route. Updated `time-arena.md` decision table: #313 remainder routing is now resolved onchain. Sanity: `check-doc-anchors.sh` PASS; frontend content audit tests PASS.
project_80561744_bot_5118c68a88bff95eacb6ab1c47c19cae commented 2026-06-13 14:12:50 +00:00 (Migrated from gitlab.com)

changed the description

changed the description
PlasticDigits commented 2026-06-13 14:14:28 +00:00 (Migrated from gitlab.com)

Security review — MR !466 (re-review)

Commit reviewed: bc74435db9558298f2bd32140f3ed74867a9dcc5

Scope: 17 files — product/ops/indexer docs, play skills, guardrails, AGENTS.md; minor frontend test assertion (frontendContentAudit.test.ts) and static launch-countdown tooltip (surfaceContent.ts). Merge commit resolves doc conflicts with main (4 files); no contract, indexer, or runtime frontend logic changes.

Method: Full diff review on updated HEAD (post-merge); traced attacker-controlled input on modified code; cross-checked documented pause scope (claimWarBowFlag + _requireLive() at TimeArena.sol L483–484), prize-routing remainder, and indexer route docs against shipped api_arena.rs.

Outcome: FINDINGS: 0 medium+

Inline threads: none (no medium+ findings)

Delta vs prior review (6cc3d444)

Merge conflict resolution retained #320 route IA and pause corrections; adopted #313 remainder routing to Last Buy (cat 0) in threat-model/product docs. No new executable surface introduced.

Notes (informational, below reporting threshold)

  • surfaceContent.ts tooltip is a hardcoded string rendered via HTML title attribute (React-escaped); no user-controlled sink.
  • Pause / claimWarBowFlag doc corrections align with onchain _requireLive() — improves ops accuracy; no bypass introduced.
  • Documented indexer endpoints (last-buy-epoch-pricing, warbow/latest-bp) already use static SQL and address allowlisting in existing api_arena.rs — documentation only.

Security review: no medium+ findings on this diff.

## Security review — MR !466 (re-review) **Commit reviewed:** `bc74435db9558298f2bd32140f3ed74867a9dcc5` **Scope:** 17 files — product/ops/indexer docs, play skills, guardrails, `AGENTS.md`; minor frontend test assertion (`frontendContentAudit.test.ts`) and static launch-countdown tooltip (`surfaceContent.ts`). Merge commit resolves doc conflicts with `main` (4 files); no contract, indexer, or runtime frontend logic changes. **Method:** Full diff review on updated HEAD (post-merge); traced attacker-controlled input on modified code; cross-checked documented pause scope (`claimWarBowFlag` + `_requireLive()` at `TimeArena.sol` L483–484), prize-routing remainder, and indexer route docs against shipped `api_arena.rs`. **Outcome:** `FINDINGS: 0` medium+ **Inline threads:** none (no medium+ findings) ### Delta vs prior review (`6cc3d444`) Merge conflict resolution retained #320 route IA and pause corrections; adopted #313 remainder routing to Last Buy (cat 0) in threat-model/product docs. No new executable surface introduced. ### Notes (informational, below reporting threshold) - `surfaceContent.ts` tooltip is a hardcoded string rendered via HTML `title` attribute (React-escaped); no user-controlled sink. - Pause / `claimWarBowFlag` doc corrections align with onchain `_requireLive()` — improves ops accuracy; no bypass introduced. - Documented indexer endpoints (`last-buy-epoch-pricing`, `warbow/latest-bp`) already use static SQL and address allowlisting in existing `api_arena.rs` — documentation only. Security review: **no medium+ findings** on this diff.
PlasticDigits commented 2026-06-14 02:33:18 +00:00 (Migrated from gitlab.com)

mentioned in commit a97976dfeb

mentioned in commit a97976dfeb076703c4a1a68efeb15763dc60e24d
PlasticDigits (Migrated from gitlab.com) merged commit a97976dfeb into main 2026-06-14 02:33:18 +00:00
Sign in to join this conversation.
No reviewers
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!466
No description provided.