Document ChatGPT Sites portability test
This commit is contained in:
parent
7aa627c92b
commit
eb69feb18b
89
SITES_TEST.md
Normal file
89
SITES_TEST.md
Normal file
@ -0,0 +1,89 @@
|
|||||||
|
# ChatGPT Sites portability test
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Deploy the existing Airship Phaser client to ChatGPT Sites without moving game state, identity, multiplayer authority, persistence, or server-side game logic out of Arrowstack.
|
||||||
|
|
||||||
|
Sites should act only as a replaceable presentation/runtime surface.
|
||||||
|
|
||||||
|
## Source
|
||||||
|
|
||||||
|
Branch: `sites-test`
|
||||||
|
|
||||||
|
Current build:
|
||||||
|
|
||||||
|
- Package manager: npm
|
||||||
|
- Dev server: `npm run dev`
|
||||||
|
- Production build: `npm run build`
|
||||||
|
- Build output: Vite `dist/`
|
||||||
|
- Client framework: Phaser 3
|
||||||
|
- Authentication client: Keycloak JS
|
||||||
|
- Existing API: `https://game.arrowstack.dev`
|
||||||
|
- Existing WebSocket server: `wss://game.arrowstack.dev`
|
||||||
|
|
||||||
|
## Phase 1 — host the client unchanged
|
||||||
|
|
||||||
|
Deploy this existing project with Sites.
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
1. Preserve the existing Phaser game, assets, controls, game logic, and Vite build.
|
||||||
|
2. Do not migrate the Go multiplayer server into Sites.
|
||||||
|
3. Do not add D1, R2, Sites-hosted persistence, or a replacement authentication system.
|
||||||
|
4. Continue using the existing Arrowstack API and WebSocket endpoints.
|
||||||
|
5. If Keycloak authentication or multiplayer is blocked by the new Site origin, keep the game usable in its existing solo/fallback mode rather than replacing the integration.
|
||||||
|
6. Report the exact production Site origin after a successful deployment.
|
||||||
|
7. Do not weaken CORS or WebSocket origin checks.
|
||||||
|
|
||||||
|
Acceptance for Phase 1:
|
||||||
|
|
||||||
|
- Vite production build succeeds.
|
||||||
|
- Phaser canvas loads.
|
||||||
|
- Existing sprites/assets load.
|
||||||
|
- Desktop controls work.
|
||||||
|
- Mobile/touch controls render and accept input.
|
||||||
|
- Solo gameplay reaches the normal playable state.
|
||||||
|
- Browser console has no fatal runtime errors caused by Sites hosting.
|
||||||
|
|
||||||
|
## Phase 2 — reconnect Arrowstack identity and multiplayer
|
||||||
|
|
||||||
|
After Sites returns the production origin, configure Arrowstack for that exact origin.
|
||||||
|
|
||||||
|
Keycloak client: `airship-web`
|
||||||
|
|
||||||
|
Add the Site origin to the client's allowed web origins and add a valid redirect URI covering the Site URL, including the existing `silent-check-sso.html` flow.
|
||||||
|
|
||||||
|
Airship Go server:
|
||||||
|
|
||||||
|
Append the exact Site origin to `ALLOWED_ORIGINS`. The current server intentionally uses this allowlist for both HTTP CORS and WebSocket `CheckOrigin`.
|
||||||
|
|
||||||
|
Then verify:
|
||||||
|
|
||||||
|
- Keycloak check-sso succeeds.
|
||||||
|
- `GET /api/me` succeeds with the bearer token.
|
||||||
|
- `POST /api/ws-ticket` succeeds.
|
||||||
|
- `wss://game.arrowstack.dev/ws` connects using the ticket.
|
||||||
|
- Multiplayer snapshots arrive.
|
||||||
|
- Existing authoritative server behavior is unchanged.
|
||||||
|
|
||||||
|
## Ownership constraint
|
||||||
|
|
||||||
|
Do not move durable game state, identity, multiplayer authority, persistence, or server-side rules into ChatGPT Sites as part of this test.
|
||||||
|
|
||||||
|
The desired boundary is:
|
||||||
|
|
||||||
|
```text
|
||||||
|
ChatGPT Sites
|
||||||
|
└── Airship Phaser client
|
||||||
|
├── HTTPS -> game.arrowstack.dev
|
||||||
|
└── WSS -> game.arrowstack.dev
|
||||||
|
|
||||||
|
Arrowstack
|
||||||
|
├── Keycloak identity
|
||||||
|
├── authoritative game server
|
||||||
|
├── multiplayer state
|
||||||
|
├── persistence
|
||||||
|
└── game rules
|
||||||
|
```
|
||||||
|
|
||||||
|
The experiment is successful if the Sites frontend can be deleted or replaced without migrating any authoritative state back out of Sites.
|
||||||
Loading…
x
Reference in New Issue
Block a user