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

Closed
opened 2026-06-13 07:34:27 +00:00 by PlasticDigits · 23 comments
PlasticDigits commented 2026-06-13 07:34:27 +00:00 (Migrated from gitlab.com)

Parent

Gap analysis follow-up from #309.

Current codebase

Dual specs drift:

  • docs/product/time-arena.md — uncapped XP, 150 CRED first-buy vs code MAX_PLAYER_LEVEL=5, FIRST_BUY_CRED_BONUS=1100e18
  • docs/product/arena-v2.md — charmPriceWad vs effectiveCharmPriceWad() (#305)
  • Remainder routing spec said Time Booster; approved: Last Buy (contract issue separate)

UI IA drift:

  • Play surface / not /arena; four-podium grid on AUDIT /arena/protocol only
  • Decision row and ArenaSubnav removed from shipped UI
  • docs/testing/frontend-content-audit.md titles /arena for console now at /

Pause docs wrong:

  • docs/operations/pause-and-final-signoff.md L25: claims claimWarBowFlag works while paused
  • Approved: All actions blocked when paused; fix docs to match code

Indexer design drift:

  • docs/indexer/design.md omits last-buy-epoch-pricing, warbow/latest-bp; lists cursor pagination not implemented

Why needed

Approved: Update product docs, content audit, pause ops docs, and indexer design to match implementation; highlight non-obvious decision points.

Constraints / guardrails

  • INV-FRONTEND-298-UX-DOCS-E2E — docs, code, E2E must agree.
  • Do not reintroduce removed UI (decision row, sub-nav) in docs.
  • Cross-link contract issues for remainder/autoroll economics.

Relevant files

  • docs/product/time-arena.md, docs/product/arena-v2.md
  • docs/frontend/arena-views.md
  • docs/testing/frontend-content-audit.md
  • docs/operations/pause-and-final-signoff.md, docs/operations/final-signoff-and-value-movement.md
  • docs/indexer/design.md
  • frontend/src/app/LaunchGate.tsx, AGENTS.md route table
  1. Merge/reconcile time-arena.md and arena-v2.md with single source of truth sections; note decision points (remainder→Last Buy, pause-all, autoroll).
  2. Update content audit route table: / play, /arena/protocol AUDIT, header nav.
  3. Fix pause docs: flag claim blocked when paused.
  4. Update design.md event map and implemented routes.

Acceptance criteria

  • Progression/CRED constants match TimeArena.sol.
  • Route IA documented consistently across product + audit docs.
  • Pause doc matches on-chain _requireLive() behavior.
  • Indexer design lists implemented API routes and events.

Test plan

  • bash scripts/check-doc-anchors.sh
  • cd frontend && npm test -- surfaceContent / content audit tests
  • Manual review checklist against LaunchGate.tsx

Attack / abuse test plan

  • N/A (docs); ensure ops docs do not instruct users to expect unpaused actions while paused.

Verification criteria

  • No contradictory CRED bonus or level cap across spec files.
  • Content audit E2E paths match LaunchGate.tsx routes.
## Parent Gap analysis follow-up from [#309](https://gitlab.com/PlasticDigits/yieldomega/-/issues/309). ## Current codebase **Dual specs drift:** - `docs/product/time-arena.md` — uncapped XP, 150 CRED first-buy vs code `MAX_PLAYER_LEVEL=5`, `FIRST_BUY_CRED_BONUS=1100e18` - `docs/product/arena-v2.md` — `charmPriceWad` vs `effectiveCharmPriceWad()` (#305) - Remainder routing spec said Time Booster; **approved: Last Buy** (contract issue separate) **UI IA drift:** - Play surface `/` not `/arena`; four-podium grid on AUDIT `/arena/protocol` only - Decision row and `ArenaSubnav` removed from shipped UI - `docs/testing/frontend-content-audit.md` titles `/arena` for console now at `/` **Pause docs wrong:** - `docs/operations/pause-and-final-signoff.md` L25: claims `claimWarBowFlag` works while paused - **Approved:** All actions blocked when paused; fix docs to match code **Indexer design drift:** - `docs/indexer/design.md` omits `last-buy-epoch-pricing`, `warbow/latest-bp`; lists cursor pagination not implemented ## Why needed Approved: Update product docs, content audit, pause ops docs, and indexer design to match implementation; highlight non-obvious decision points. ## Constraints / guardrails - `INV-FRONTEND-298-UX-DOCS-E2E` — docs, code, E2E must agree. - Do not reintroduce removed UI (decision row, sub-nav) in docs. - Cross-link contract issues for remainder/autoroll economics. ## Relevant files - `docs/product/time-arena.md`, `docs/product/arena-v2.md` - `docs/frontend/arena-views.md` - `docs/testing/frontend-content-audit.md` - `docs/operations/pause-and-final-signoff.md`, `docs/operations/final-signoff-and-value-movement.md` - `docs/indexer/design.md` - `frontend/src/app/LaunchGate.tsx`, `AGENTS.md` route table ## Recommended direction 1. Merge/reconcile `time-arena.md` and `arena-v2.md` with single source of truth sections; note decision points (remainder→Last Buy, pause-all, autoroll). 2. Update content audit route table: `/` play, `/arena/protocol` AUDIT, header nav. 3. Fix pause docs: flag claim blocked when paused. 4. Update `design.md` event map and implemented routes. ## Acceptance criteria - [ ] Progression/CRED constants match `TimeArena.sol`. - [ ] Route IA documented consistently across product + audit docs. - [ ] Pause doc matches on-chain `_requireLive()` behavior. - [ ] Indexer design lists implemented API routes and events. ## Test plan - `bash scripts/check-doc-anchors.sh` - `cd frontend && npm test -- surfaceContent` / content audit tests - Manual review checklist against `LaunchGate.tsx` ## Attack / abuse test plan - N/A (docs); ensure ops docs do not instruct users to expect unpaused actions while paused. ## Verification criteria - No contradictory CRED bonus or level cap across spec files. - Content audit E2E paths match `LaunchGate.tsx` routes.
PlasticDigits commented 2026-06-13 07:34:43 +00:00 (Migrated from gitlab.com)

mentioned in issue #309

mentioned in issue #309
PlasticDigits commented 2026-06-13 12:52:48 +00:00 (Migrated from gitlab.com)

mentioned in commit 6cc3d444b3

mentioned in commit 6cc3d444b3e1897240038a454bb65de6b5bd1a80
PlasticDigits commented 2026-06-13 12:53:07 +00:00 (Migrated from gitlab.com)

mentioned in merge request !466

mentioned in merge request !466
PlasticDigits commented 2026-06-13 14:12:28 +00:00 (Migrated from gitlab.com)

mentioned in commit bc74435db9

mentioned in commit bc74435db9558298f2bd32140f3ed74867a9dcc5
PlasticDigits commented 2026-06-14 02:33:18 +00:00 (Migrated from gitlab.com)

mentioned in commit a97976dfeb

mentioned in commit a97976dfeb076703c4a1a68efeb15763dc60e24d
PlasticDigits commented 2026-06-14 02:44:55 +00:00 (Migrated from gitlab.com)

mentioned in commit 4dee4c20a2

mentioned in commit 4dee4c20a2b0a46e2d8ef308ee1e8e4f13104023
PlasticDigits commented 2026-06-14 02:45:24 +00:00 (Migrated from gitlab.com)

mentioned in merge request !476

mentioned in merge request !476
PlasticDigits commented 2026-06-14 02:53:35 +00:00 (Migrated from gitlab.com)

mentioned in commit ac639db066

mentioned in commit ac639db066fab289e33d02b0b95b1322a3cd0b85
PlasticDigits commented 2026-06-14 05:02:49 +00:00 (Migrated from gitlab.com)

mentioned in commit 082d27f3a0

mentioned in commit 082d27f3a08929eca7e48c992cafd35dcf5827e9
PlasticDigits commented 2026-06-14 05:02:52 +00:00 (Migrated from gitlab.com)

mentioned in merge request !463

mentioned in merge request !463
PlasticDigits commented 2026-06-14 05:06:41 +00:00 (Migrated from gitlab.com)

mentioned in commit 08fa6d9b84

mentioned in commit 08fa6d9b84d749194fe020d25384e72179033a14
PlasticDigits commented 2026-06-14 05:38:32 +00:00 (Migrated from gitlab.com)

mentioned in merge request !486

mentioned in merge request !486
PlasticDigits commented 2026-06-14 06:56:15 +00:00 (Migrated from gitlab.com)

mentioned in commit 8ee5e455ac

mentioned in commit 8ee5e455ac7e096c3532a1b2c2eb273e4eebefa7
PlasticDigits commented 2026-06-14 07:10:34 +00:00 (Migrated from gitlab.com)

mentioned in commit b421dbf619

mentioned in commit b421dbf61963e7c96db03205780f1cf3b464dd46
PlasticDigits commented 2026-06-14 11:59:33 +00:00 (Migrated from gitlab.com)

mentioned in commit f5632269af

mentioned in commit f5632269afb011eb9386d589bd2bedd485df6f9f
PlasticDigits commented 2026-06-14 11:59:48 +00:00 (Migrated from gitlab.com)

mentioned in merge request !492

mentioned in merge request !492
PlasticDigits commented 2026-06-14 12:08:50 +00:00 (Migrated from gitlab.com)

mentioned in commit 561063f7c6

mentioned in commit 561063f7c6cb0ba345c811a84be33aaafa34227f
PlasticDigits commented 2026-06-14 12:15:12 +00:00 (Migrated from gitlab.com)

mentioned in commit 358bbbe0d7

mentioned in commit 358bbbe0d7eb1fb712ff854c81f62efeec4dd186
PlasticDigits commented 2026-06-14 12:15:40 +00:00 (Migrated from gitlab.com)

mentioned in merge request !494

mentioned in merge request !494
PlasticDigits commented 2026-06-14 12:27:43 +00:00 (Migrated from gitlab.com)

mentioned in commit a178a9ac37

mentioned in commit a178a9ac37d6033f7ce69c10e69cb52c0687f6b4
PlasticDigits commented 2026-06-14 12:49:57 +00:00 (Migrated from gitlab.com)

mentioned in merge request !495

mentioned in merge request !495
PlasticDigits commented 2026-06-14 13:28:48 +00:00 (Migrated from gitlab.com)

mentioned in commit 2ff23f39d9

mentioned in commit 2ff23f39d9321c192bb91d79fd446bc93a15cbce
PlasticDigits commented 2026-06-14 13:43:57 +00:00 (Migrated from gitlab.com)

Verification — GitLab #320 (PASS)

Verified Reconcile product specs, content audit, and pause docs with shipped UI on main (working tree clean; no MR needed).

Acceptance criteria

Criterion Result How verified
Progression/CRED constants match TimeArena.sol PASS time-arena.md + arena-v2.md document MAX_PLAYER_LEVEL = 5, FIRST_BUY_CRED_BONUS = 1100e18, and effectiveCharmPriceWad() for DOUB buys; manual diff vs ArenaXp.sol / TimeArena.sol
Route IA consistent across product + audit docs PASS frontend-content-audit.md, arena-views.md, AGENTS.md agree: play /, AUDIT /arena/protocol, legacy /arena + /timecurve → /; manual review of LaunchGate.tsx ARENA_ROUTES
Pause doc matches _requireLive() PASS pause-and-final-signoff.md L25 + final-signoff-and-value-movement.md L12: claimWarBowFlag gated by paused; code: claimWarBowFlag() → _requireLiveAndAutoroll() → _requireLive()
Indexer design lists implemented routes/events PASS design.md HTTP map includes last-buy-epoch-pricing, warbow/latest-bp, limit/offset, optional cursor on buys/activity; event tables include LastBuyEpochStarted, FirstBuyCredScheduled, etc.

Invariants (INV-DOCS-320-*)

ID Result
INV-DOCS-320-PRODUCT-CONSTANTS PASS
INV-DOCS-320-ROUTE-IA PASS
INV-DOCS-320-PAUSE-OPS PASS
INV-DOCS-320-INDEXER-ROUTES PASS

Test plan (issue body)

Command Result
bash scripts/check-doc-anchors.sh PASS — 77 invariants + 13 arena-views anchors resolve
cd frontend && npm test -- surfaceContent PASS — 4/4
cd frontend && npm test -- frontendContentAudit arenaCommandConsoleStatic PASS — 11/11
Manual LaunchGate.tsx checklist PASS — routes/redirects match content-audit legacy table

Attack / abuse plan

Check Result
Ops docs do not instruct unpaused actions while paused PASS — pause tables block claimWarBowFlag alongside buys and WarBow DOUB spends

Follow-up (optional)

  • contracts/test/TimeArena.t.sol test comment still says "150 CRED" for the first-buy bonus invariant; behavior/docs use 1100e18 — cosmetic comment-only drift, not spec contradiction.

Closing as verified on main.

## Verification — GitLab #320 (PASS) Verified **Reconcile product specs, content audit, and pause docs with shipped UI** on `main` (working tree clean; no MR needed). ### Acceptance criteria | Criterion | Result | How verified | |-----------|--------|--------------| | Progression/CRED constants match `TimeArena.sol` | **PASS** | `time-arena.md` + `arena-v2.md` document `MAX_PLAYER_LEVEL = 5`, `FIRST_BUY_CRED_BONUS = 1100e18`, and `effectiveCharmPriceWad()` for DOUB buys; manual diff vs `ArenaXp.sol` / `TimeArena.sol` | | Route IA consistent across product + audit docs | **PASS** | `frontend-content-audit.md`, `arena-views.md`, `AGENTS.md` agree: play `/`, AUDIT `/arena/protocol`, legacy `/arena` + `/timecurve` → `/`; manual review of `LaunchGate.tsx` `ARENA_ROUTES` | | Pause doc matches `_requireLive()` | **PASS** | `pause-and-final-signoff.md` L25 + `final-signoff-and-value-movement.md` L12: `claimWarBowFlag` gated by `paused`; code: `claimWarBowFlag()` → `_requireLiveAndAutoroll()` → `_requireLive()` | | Indexer design lists implemented routes/events | **PASS** | `design.md` HTTP map includes `last-buy-epoch-pricing`, `warbow/latest-bp`, `limit`/`offset`, optional `cursor` on buys/activity; event tables include `LastBuyEpochStarted`, `FirstBuyCredScheduled`, etc. | ### Invariants (`INV-DOCS-320-*`) | ID | Result | |----|--------| | `INV-DOCS-320-PRODUCT-CONSTANTS` | **PASS** | | `INV-DOCS-320-ROUTE-IA` | **PASS** | | `INV-DOCS-320-PAUSE-OPS` | **PASS** | | `INV-DOCS-320-INDEXER-ROUTES` | **PASS** | ### Test plan (issue body) | Command | Result | |---------|--------| | `bash scripts/check-doc-anchors.sh` | **PASS** — 77 invariants + 13 arena-views anchors resolve | | `cd frontend && npm test -- surfaceContent` | **PASS** — 4/4 | | `cd frontend && npm test -- frontendContentAudit arenaCommandConsoleStatic` | **PASS** — 11/11 | | Manual `LaunchGate.tsx` checklist | **PASS** — routes/redirects match content-audit legacy table | ### Attack / abuse plan | Check | Result | |-------|--------| | Ops docs do not instruct unpaused actions while paused | **PASS** — pause tables block `claimWarBowFlag` alongside buys and WarBow DOUB spends | ### Follow-up (optional) - `contracts/test/TimeArena.t.sol` test comment still says "150 CRED" for the first-buy bonus invariant; behavior/docs use `1100e18` — cosmetic comment-only drift, not spec contradiction. Closing as verified on `main`.
PlasticDigits (Migrated from gitlab.com) closed this issue 2026-06-14 13:43:58 +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#320
No description provided.