V2 no longer owns a standalone apps/v2/web/ marketing stack. The fighting-game
web entry is the /v2 route in apps/oshun/web, surfaced as a V2 tile on
/explore inside the shared Lilith/Oshun shell.
Runtime Contract#
| Surface | Implementation |
|---|---|
| Explore tile | apps/oshun/web/src/components/v2/V2ShellTile.tsx |
| Route surface | apps/oshun/web/src/app/v2/page.tsx |
| Shell model | apps/oshun/web/src/v2/shell-tile.ts |
| E2E smoke | apps/oshun/web/e2e/v2-shell-tile.spec.ts |
The model imports the actual Oshun surfaces instead of the historical monolithic SDK:
@oshun/shell-corefor primary shell entry points and route hrefs.@oshun/auth-clientfor shell-level feature-gating rules.@oshun/developer-portalfor the V2 developer-doc registry article.@oshun/persistencefor contract-backed persistence summaries.
Stack Decision#
apps/oshun/web remains the only web runtime. Standalone Sanity and Contentful
content stacks are not V2 dependencies for this surface. If V2 needs public
content, it must enter through the existing Oshun shell data plane or the
developer-portal/documentation packages named above.
Verification#
The migration is guarded by:
apps/oshun/web/src/components/v2/__tests__/V2ShellTile.test.tsxapps/oshun/web/e2e/v2-shell-tile.spec.tsV2/ue/Tools/check-v2-web-shell-tile.py
The checker validates the route, tile, package dependencies, docs, and CI workflow wiring.