V1 Web PWA · Surface walkthrough

V2 — Frame-data Wiki (Sophia-backed)

A per-surface walkthrough of the V1 Web PWA customer surface: layout, states, interactions, data, and cross-references.

walked
8sections2 minread

On this page

Context. surface customer · domain v2-knowledge · route /v2/wiki · auth anon · source apps/oshun/web/src/app/v2/wiki/page.tsx

Last walked. 2026-05-29 automated runtime walk (Playwright headless) — render, /v1 data (2xx), console/page-errors, expected content, screenshot verified; live screen-reader, touch, offline, and telemetry-delivery checks pending a manual AT pass. Evidence: WALKTHROUGH/results/runtime-sweep-2026-05-29.md

Out of V1 scope. Documented for completeness; route exists under apps/oshun/web/src/app/v2/wiki/page.tsx.

Purpose#

Player-facing reference for V2 frame data, ruleset mechanics, fighter guides, stage walkthroughs, tutorial videos, PDF cheat sheets, and CPU AI behavior. Each answer is grounded by Sophia RAG citations (@sophia/client) with confidence scores and quoted excerpts.

Entry points#

  • Sub-nav "Wiki" item from /v2, /v2/glossary, /v2/roadmap
  • "Sophia knowledge → Wiki" panel link on /v2
  • Direct URL / bookmark — yes, anon
  • Outbound from in-game companion deep links (when V2 ships)

Layout regions#

page.tsx is an async server component: const model = await buildV2KnowledgeSurfaceModel('wiki'); renders <V2KnowledgeSurface model={...} />. The same surface component serves /v2/wiki, /v2/glossary, /v2/roadmap — the only difference is the surface-id passed to the model builder.

  • Header: LWebShell chrome with LCustomerNav active="explore" + LSubNav active="wiki" items (Featured / V2 / Wiki / Glossary / Roadmap)
  • Hero / section head: kicker "Sophia RAG / frame data", title "Frame-data wiki", summary paragraph
  • Coverage strip: 3 metrics — answer citations / source documents / average confidence
  • RAG answer panel: the composed Sophia response body with inline citation chips (each chip is a Link to the citation in the citations rail)
  • Entries panel: list of V2KnowledgeEntry rows
    • title, tag chip, body paragraph
    • per-entry metrics rail (label + value)
    • per-entry citation chips
  • Citations rail (right column or bottom on mobile): each V2KnowledgeCitationView rendered with label, title, source path, section, confidence score, quoted excerpt

States#

  • Loading — server-rendered; no client suspense boundary
  • Empty — N/A (deterministic local RAG corpus; always populated)
  • Populated — entries + citations from createLocalSophiaClient(...).answer({ query })
  • Error — N/A in current implementation (local client deterministic); live BFF swap is a future concern
  • Offline — server-rendered output cacheable; SW serves from cache
  • Gated — N/A; anon-readable
  • Standalone PWA — sub-nav + content render cleanly without URL bar

Interactions#

Top chrome#

  • Customer nav (LCustomerNav) — active="explore"
  • V2 sub-nav (LSubNav) — 5 items
    • Featured/explore
    • V2/v2
    • Wiki (current) → /v2/wiki
    • Glossary/v2/glossary
    • Roadmap/v2/roadmap

Citation chips#

  • Citation chip (Link/anchor) — clicking jumps to the matching citation card in the citations rail; chip text is the citation label, e.g. [1]
    • Keyboard: tab-focusable; enter activates anchor
    • Screen reader: announces label + linked citation title

Entries#

  • Per-entry citation chips — same anchor behavior as above

Data & contracts#

  • Reads: buildV2KnowledgeSurfaceModel('wiki')V2KnowledgeSurfaceModel (composed in-process via createLocalSophiaClient)
  • Writes: none
  • Realtime: none
  • Caching: static at the moment (deterministic local corpus); when swapped to a real @sophia/client BFF target, becomes SWR/ISR
  • Auth/role check: none — anon-readable

Cross-references#

  • Sibling: v2.md, v2-glossary.md, v2-roadmap.md
  • Component source: apps/oshun/web/src/components/v2/V2KnowledgeSurface.tsx
  • Model source: apps/oshun/web/src/v2/sophia-rag.tsbuildV2KnowledgeSurfaceModel, SURFACE_DEFINITIONS['wiki']
  • Scope: ../../matrix/coverage.md "Out-of-V1 (excluded)"

Open questions / known gaps#

  • The local Sophia client is deterministic. Swap to the real @sophia/client RAG target (base URL http://localhost:3737 in dev per V2_SOPHIA_BASE_URL) before V2 launch
  • Citation chips currently anchor to the rail by id — no SEO-friendly URL to a specific citation
  • No copy/share/pin per-citation affordance