---
id: ground-types/008
title: Verify, deploy, ship — the ground goes live, on the web and on the phone
epic: ground-types
state: done
priority: 1
blocked_by: []
estimate: M
created: 2026-08-17
updated: 2026-08-18
claimed_by: null
claimed_at: null
delivers: [10]
review_artifact: deliverables/010-the-ground-has-types.md
---

## What to do

- New `game/director/cli-test-client/verify-ground.ts` (`npm run verify-ground`, reusing the
  durable probe account via `probeSession.ts`): the Village's `ground` has 1600 cells and
  contains Water; the Badlands has all eight lower trigrams; a step into a Mountain is rejected.
- Deploy to the droplet per `game/README.md`: back the database up first, bundle, build,
  restart (watch for `[migrate] painted ground for N area(s)` in the service log), then
  `load-world` with the authored files, then `verify-ground`, `verify-world-map`,
  `verify-home-door`, `verify-portal-destinations`, `verify-accounts-e2e` — all green — then
  clear the verifier bodies. Add the entry to `Dev/CLAUDE.md` (backup name; reverse: the column
  is additive, and the protocol bump means old clients see "update needed" until they update).
- Ship the clients, in this order: `export-web.sh` and commit `site/public/embeds/lor-game`;
  `APK_NAME` → `land-of-lor-v10` and `site/src/pages/play.astro`'s `apkUrl` together;
  `export-android.sh --upload`. The "does it run on the phone" check is Kris's.
- Flip `deliverables/010-the-ground-has-types.md` to delivered (`cta: url` = /play, screenshots).
- `docs/handoff/0NN-ground-types.md`; annotate — never delete — the three placeholder comments
  (`grid.gd`, `area_server.gd`, `editor.js`); `game/README.md` layout rows for
  `content/areas/`, `paint-ground` and the editor; note for Kris the `docs/README.md` §3
  "stone is a Mountain-faced hexagram" tension with the spec (not resolved by an agent).
- Epic bookkeeping: regenerate `ground-types/status.md`; move
  `world-traversal-and-ground/001` to `review` with `review_artifact:
  land-of-lor/docs/specs/GROUND_TYPES.md` (Kris wrote the spec that task asked for).

## Definition of done

Live verifiers green; `/play` serves the new web build; the v10 APK is on the droplet;
deliverable 10 is `delivered`. Everything committed and pushed in both repos, and the site
rebuild confirmed from outside the repo.

## Where the work lands

`land-of-lor/` and this workspace (`deliverables/`, `site/`, `epics/`).

## What was done (2026-08-17, laptop session)

- `cli-test-client/verify-ground.ts` (`npm run verify-ground`): 15/15 live.
- Droplet: backup, bundle deploy of `b8dbdb1`, restart (`[migrate] painted ground for 18
  area(s)`), `load-world` (6 painted from files), all five verifiers green, verifier bodies
  cleared, `purge-probes --yes`. Recorded in `Dev/CLAUDE.md` ("Ground Types deploy").
- Web build `b8dbdb1` on `/play` (`06f25df`); `APK_NAME` → v10, exported, uploaded, linked
  from `/play` (`dfb8374`, `c2d8d9e`).
- Deliverable 010 delivered (`cta` = /play). `docs/handoff/ground-types.md` "Shipped";
  `game/README.md` known-limits entry; the three placeholder comments were annotated in
  001/002/007.
- **Not done — needs Kris:** the on-device look and the Badlands frame time on the phone.
- The `docs/README.md` §3 "stone is a Mountain-faced hexagram" tension is noted in the
  handoff for Kris, not resolved.