Game MCP Heartbeat Fix Candidate and Video Lifecycle Check
The current production owner Worker is 377d494b-8f90-40ad-998f-863d209e1978. Its external-video management lifecycle passed for that exact bundle, but remote availability is not promoted. A 2048 check exposed an idle WebSocket disconnect after pause. This Pages release adds an exact eight-second ping/pong heartbeat, wh
# Game MCP Heartbeat Fix Candidate and Video Lifecycle Check
The exact current production owner Worker version is `377d494b-8f90-40ad-998f-863d209e1978`. That bundle carries the game/video candidate. Video `availableTransports` does not yet include `remote-mcp`, and game `availableTransports` remains empty; this update does not describe the candidate as externally available.
## Browser-game connection-liveness fix
- 2048, Hextris, A Dark Room, and Life Restart continue to expose only audited semantic bridges with bounded observations, the current revision, and opaque `actionId` values. Selectors, scripts, raw keys, coordinates, URLs, DOM commands, and raw saves remain rejected.
- A production 2048 check passed one-time pairing, a semantic action, revision CAS, pause, and old-token revocation. While waiting for the player to resume after pause, the idle WebSocket disconnected and the run ended with `GAME_BROWSER_DISCONNECTED`; complete real acceptance for all four games has therefore not passed.
- The current production Worker already configures exact edge auto-response with Cloudflare Hibernation `setWebSocketAutoResponse("ping", "pong")`. This Pages release makes the browser send exact application-level text `ping` every eight seconds and ignore exact `pong`. Auto-response does not wake the Durable Object, read the game provider, perform an observation or action, change revision, or write relay storage; liveness must not be represented as observation.
- Production Worker remains `377d494b-8f90-40ad-998f-863d209e1978`. After live bytes for the exact Pages commit are verified, acceptance must bind this Worker/Pages pair and cover pairing, action, pause, player resume, confirmed close, and grant revocation for every game under `games:play` OAuth. Final availability promotion will create a new Worker; both video and game lifecycles must then be fully reaccepted against that new bundle before adding `availableTransports`.
- Kittens Game remains `NO_AGENT`; its WET PAWS LICENSE still requires explicit permission or legal confirmation.
## Video MCP phase one
The same `377d494b-8f90-40ad-998f-863d209e1978` bundle completed a production lifecycle for YouTube, Bilibili, and b23.tv external-link records: canonicalization, atomic publish, same-payload `operationId` replay, management readback, metadata refresh, `expectedUpdatedAt` CAS, `confirm: true` deletion, public absence readback, and RFC 7009 revocation all passed, and the temporary record was deleted. This evidence is exact-bundle only. Video `availableTransports` continues to omit `remote-mcp` until final availability promotion and acceptance of that final bundle.
This is still not real video-file upload. The remote MCP does not read local paths, Base64, raw bytes, or client files; true upload needs a separately accepted private R2 binary data plane.
## Quick Transfer governance boundary
This branch inherits the live Quick Transfer v1.0.10 from main. The heartbeat release does not change the registry or Quick Transfer governed paths and does not advance it again; its protocol, rooms, password handling, AES-GCM text, private R2, quotas, multipart, authorization, and 24-hour lifecycle are unchanged.
## Current release boundary
Production Worker remains `377d494b-8f90-40ad-998f-863d209e1978`. This release adds the Pages heartbeat asset; exact live bytes and real four-game acceptance still require verification against the Worker/Pages pair. No game or video candidate has been prematurely marked remote-available in the registry. Historical knowledge acceptance and the current video check cannot be reused across Worker bundles.