---
number: 11
title: Honest connections — the game never pretends to be online, and your home works without the realm
date: 2026-08-18
summary: When the connection stalls the character stops and says so; when it dies the game reconnects in the open or tells you it couldn't; every step you take is answered by the server; and your home is playable offline, its doors to the shared world closed until you're back.
epic: connection-and-sync
status: promised
due-with: connection-and-sync/008
artifacts: []
cta: null
---

Promised 2026-08-18, the day the review landed. Kris played the phone and a browser side by
side and watched them disagree; the review found why — a client that kept walking after its
socket had silently died — and a dozen relatives of the same fault. This deliverable is the
game becoming trustworthy about its own connection.

## Acceptance criteria

- On the phone: put the app in the background for 30 s and return, or switch airplane mode on
  for 20 s — the character freezes and a "Reconnecting…" notice shows within a few seconds;
  then either play resumes with the world caught up, or after ~15 s a "Connection lost" screen
  appears with Retry, and nothing moves until it's back. Never a character walking through
  portal rings on a dead channel.
- Two clients on the same account or two players in the same Area agree: the other body moves
  when it moves, and appears when it arrives — APK and browser alike.
- A connection indicator on the HUD tells the truth (green / amber / red), and "Send
  diagnostics" delivers the phone's own log to the server.
- Areas carry `single_player` / `multiplayer` / `either`; the home is `either`: with no realm
  reachable, Start still puts you in your home (walk-only), and its doors to the shared world
  bump with "That way needs a connection".
- The server answers every step (ack, reject or superseded), delivers every kick with its
  reason, and never shuts an Area down under a player who is still standing in it.

## Artifacts

Pending until delivery: the `/play` page and the APK; `docs/handoff/connection-and-sync.md`;
the fault-injection harness and soak in `game/director/test/`.