docs(rust): phase 15 as built — the map and events on a phone (PLAN.md §31.5–§31.7)

- PLAN.md §31.5: what was built in website and Android-app, where the
  build departed from §31.2, and the seven-step emulator walk.
- §31.6: what the walk found: the zoom lost twice (fixed), the tally a
  stand-in cannot feed, the off-grid row the frame clamps, the "wiped
  Dec 31, 1" header, the card that outlives its marker.
- §31.7: what is not proven (a real player, a counted tally, a UO site).
- Phase row 15 and the Android plan's M17 marked built and walked.
- EVENTS.md § API surface: the public calendar's run entries carry
  runId (D125). BACKEND_DESIGN defers event routes to that table.
- PLAYER_WALK.md: the map and events on a phone, for the person-parts.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
2026-09-25 12:30:49 -05:00
parent a3fcc42a57
commit 42a0482a9e
4 changed files with 143 additions and 3 deletions

View File

@@ -359,3 +359,22 @@ clan and builds a base. This walk needs two accounts.
**What counts as a pass:** a player sees themselves and their online clan mates and nobody else; a mate
drops off the map when they leave the clan or the server; switching the view off removes it; and a
real base shows to staff only.
## The map and events on a phone (phase 15, Android leg D)
Added 2026-09-25. The parts of [`PLAN.md`](../modules/rust/PLAN.md) §31.3 that need somebody in the
game (§31.7). The app's gates, polling, event link and results screens were walked on an emulator
with stand-ins and a seeded tally (§31.5). A stand-in is asleep and has no connection, so the game's
tally never counts one (§31.6). Use the two accounts and the clan from the map walk above, with A
signed in to the app and a staff member at the website.
| # | Do this | You should see |
|---|---|---|
| 1 | A opens the server's **Map** tab on the phone, in game with B nearby | A's own dot (cyan) and B's (green), and nobody else. Walk A somewhere; within ten seconds the dot follows. Tap it: *You · Grid* and the square A stands in |
| 2 | A player hacks a locked crate. Tap the crate | The card counts the hack down, refreshed every ten seconds |
| 3 | Staff start a run of a **listed** event whose first phase opens a zone and a participation tally and whose last collects and publishes the results. A stands in the zone for a few minutes and B stays outside | The zone is drawn on the ground. Its card has **Open event**, and it opens that event's page in the app |
| 4 | When the run completes, A opens *My events* | The run, with A's rank and a score in minutes present (with decimals). The event page's results table names A as the game knows A, and does not list B |
| 5 | Put the phone in your pocket for a minute, then open it | The map asked nothing while it was away, and asks at once on return (staff can see this in the site's request log) |
**What counts as a pass:** a player's own dot moves on the phone, a site-event zone opens its event in
the app, and a tally counted from a real person reaches *My events* with its fractional score.