← all epics

Building the Game — one site, the Builder, and the building blocks

ops

repo: land-of-lor (site/, builder/, game/director for content schemas, tools/) — one repo since 2026-09-03 · depends on: world-map-and-portalsground-typeselement-tableserver-architecture

Where this stands (2026-09-13)

Signed off by Kris on 2026-09-04 as a line in the sand (APK v26, the web build on /play): one repo and spellgrove.com, the Builder’s read side and hub pages, sign-in and roles, publish with staging and the database canonical, Ask an agent, and Dirt with its inventory and card. The Builder was rebuilt for the 2026-09-13 security audit — three least-privilege database roles, and authored content parsed as data rather than executed. Ideas held, not tasks: other people editing their own Areas (was 006), which needs Kris’s call on how a player gets a named Area first; and a per-Area item limit, noted in game/world/client/items/README.md. No open issues. Past task files (to 2026-09-13): workshop/historic-docs/epics/building-the-game/tasks/.

What this is

Kris, 2026-09-03, by voice and then in conversation: one central, live view of the game’s building blocks — the element table, the same 64 as ground types, the creatures, the world map, and each Area with its properties — with the existing editors linked together and zero duplication of data so nothing can drift. Then the ask grew into its real shape:

The architecture in short:

spellgrove.com  (Caddy on the droplet, auto-TLS)
  /            the static site, built on the droplet from site/ by lor-site-build.timer
  /director/   the game (unchanged; lor-server.cocreations.com.au keeps working alongside)
  /builder/    the Builder — admin API, own process, own database lor_builder
staging.spellgrove.com/director/   the staging game stack

The blocks and where each one lives

Block Source of truth today Editor Public view
Elements (64) game/shell/elements.js (derived JSONs via game/sync-elements.sh) game/shell/card-editor.html coming (/building/elements)
Ground the ground / groundVariant blocks in elements.js; rules in game/shell/ground_rules.mjs the area editor’s palette coming (same page)
Creatures no data file — game/world/entity_factory.gd (kinds), pocs/object-gallery/scenes/creatures/ (models) none coming (/building/creatures)
World game/content/spellgrove.world.json → the DB via npm run load-world tools/hub-ui/ (local) /world, live from the director
Areas the area objects in the world file + game/content/areas/<slug>.ground.json tools/hub-ui/area.html (local) coming

The local hub (tools/hub-ui/, npm run editor in game/director) already shows all five from their canonical files on one page; it is the offline mirror of what the Builder will serve.

The one exception to “the Builder serves everything”

The public world map stays the director’s /director/world-map.json. Fogging private Areas, dropping hidden portals and adding only the caller’s own home are game rules the in-game map already depends on; the Builder must not re-implement them. The Builder’s world.json is the authoring view — the full graph for a signed-in admin.

Agent kickoff is browser-side

Kris’s call (the Moment pipeline pattern): the signed-in admin pastes their task-runner API key once into the site (localStorage, never sent to the Builder) and the “Ask an agent” panel speaks MCP straight to kris.ai-task-runner.com. The Builder only serves the section’s prompt frame. No remote-code-execution credential lives on the droplet; non-admin users never see the panel.

Sequence

001 migration + domain → 002 the Builder’s read side and the hub pages → 003 sign-in → 004 publish with staging → 005 ask an agent → 006 other people’s areas. 007 is Kris’s own half-finished ask (Dirt and natural occurrence), waiting on the rest of his sentence.

Supersedes

workspace-dashboard/003 (authenticated control surface) and /004 (task kickoff) — their intent lands here as 003 and 005. server-architecture/018 (the spellgrove.com domain) — the domain is live as of 001; moving the game client’s base URL onto it is still that task.

Deliverables (2)

Work on this epic

The granular work is GitHub Issues, one label per epic: epic:building-the-game (private repository — sign-in required). The dated Where this stands section above names the open ones. The task files that carried this epic until 2026-09-13 are kept in the repo: task files to 2026-09-13 .

Ask an agent about this epic

    Also available as raw markdown.