[
  {
    "id": "barter-marketplace",
    "title": "Barter marketplace",
    "area": "design",
    "summary": "Player-to-player item exchange with no in-game currency — pure barter, with both a web interface and an in-game interface.",
    "repo": "land-of-lor",
    "depends_on": [
      "server-architecture"
    ],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "barter-marketplace/001",
        "title": "Spec the listing/offer data model",
        "epic": "barter-marketplace",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [
          "server-architecture/002"
        ],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — nothing to do here until server-architecture's ownership model exists to design against.",
    "questions": []
  },
  {
    "id": "battle-arena-poc",
    "title": "Battle arena POC",
    "area": "design",
    "summary": "Proof of concept for a battle arena — matched, resetting, opt-in combat with ley-line/conduit resource contention.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "battle-arena-poc/001",
        "title": "Minimal 2-player hot-seat POC of the ley-line-pull mechanic",
        "epic": "battle-arena-poc",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — the hot-seat POC is written up and waiting, but nothing is demanding attention right now.",
    "questions": []
  },
  {
    "id": "building-the-game",
    "title": "Building the Game — one site, the Builder, and the building blocks",
    "area": "ops",
    "summary": "The public site becomes the live front door to the game's building blocks — elements, ground, creatures, the world and its areas — view-only for everyone, editable by Kris (and later by players in their own areas) through a separate admin service, the Builder, with a way to hand an agent a focused task from any section.",
    "repo": "land-of-lor (site/, builder/, game/director for content schemas, tools/) — one repo since 2026-09-03",
    "depends_on": [
      "world-map-and-portals",
      "ground-types",
      "element-table",
      "server-architecture"
    ],
    "updated": "2026-09-03",
    "parked": false,
    "tasks": [
      {
        "id": "building-the-game/002",
        "title": "The Builder's read side, and the hub pages that show every block live",
        "epic": "building-the-game",
        "state": "review",
        "priority": 1,
        "blocked_by": [
          "building-the-game/001"
        ],
        "estimate": "L",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "builder/README.md"
      },
      {
        "id": "building-the-game/003",
        "title": "Sign in on the site with a game account; Kris is admin",
        "epic": "building-the-game",
        "state": "review",
        "priority": 2,
        "blocked_by": [
          "building-the-game/002"
        ],
        "estimate": "M",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "builder/README.md"
      },
      {
        "id": "building-the-game/004",
        "title": "Publish: the editors on the site, the database canonical, snapshots always written, a staging stack",
        "epic": "building-the-game",
        "state": "review",
        "priority": 2,
        "blocked_by": [
          "building-the-game/003"
        ],
        "estimate": "L",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "builder/README.md"
      },
      {
        "id": "building-the-game/005",
        "title": "Ask an agent from any section — browser-side kickoff via the AI Task Runner",
        "epic": "building-the-game",
        "state": "review",
        "priority": 3,
        "blocked_by": [
          "building-the-game/003"
        ],
        "estimate": "M",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "site/src/components/AskAgent.astro"
      },
      {
        "id": "building-the-game/006",
        "title": "Other people editing their own Areas",
        "epic": "building-the-game",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [
          "building-the-game/004"
        ],
        "estimate": "M",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "building-the-game/007",
        "title": "Dirt, and the things that naturally occur in an Area",
        "epic": "building-the-game",
        "state": "needs-input",
        "priority": 3,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "building-the-game/001",
        "title": "One repo, one site: the workspace merged into land-of-lor, the site on spellgrove.com",
        "epic": "building-the-game",
        "state": "review",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-09-03",
        "updated": "2026-09-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "workshop/epics/building-the-game/tasks/001-migration-and-domain.md"
      }
    ],
    "open_questions": [],
    "tag": "needs-review",
    "next": "001–005 built, live and in review. Kris: sign in on spellgrove.com with your game account (Papa), open Building the Game, try an edit on Staging, and paste your task-runner key into an Ask-an-agent panel for a first small task. 006 (other people's areas) is backlog; 007 waits on the rest of the Dirt sentence.",
    "questions": []
  },
  {
    "id": "character-composition-poc",
    "title": "Character composition POC",
    "area": "client",
    "summary": "Choosing your character and clothing from interchangeable parts — the player-facing selection experience.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "character-composition-poc/001",
        "title": "Propose the small hard-coded head/body/colour option set",
        "epic": "character-composition-poc",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "character-composition-poc/002",
        "title": "Wire a basic selection screen against the option set",
        "epic": "character-composition-poc",
        "state": "backlog",
        "priority": 2,
        "blocked_by": [
          "character-composition-poc/001"
        ],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — not being worked right now.",
    "questions": []
  },
  {
    "id": "connection-and-sync",
    "title": "Connection and sync — never pretend to be online",
    "area": "client",
    "summary": "A client–server that tells the truth about its connection — freezes rather than fakes when a channel dies, recovers visibly, answers every intent, never shuts an Area down under a player — and Areas that declare whether they need a connection at all.",
    "repo": "land-of-lor (game/world client + Area server, game/director) and this workspace (board, deliverables, site/play)",
    "depends_on": [
      "world-map-and-portals",
      "ground-types"
    ],
    "updated": "2026-08-19",
    "parked": false,
    "tasks": [
      {
        "id": "connection-and-sync/001",
        "title": "Stop the bleeding — the sticky close flag, the unseeded watchdog, readable kicks, and no Area shut down under a player",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/test/client-liveness.test.ts"
      },
      {
        "id": "connection-and-sync/002",
        "title": "The client connection state machine — freeze rather than fake, reconnect visibly, give up honestly",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/client/game_channel.gd"
      },
      {
        "id": "connection-and-sync/003",
        "title": "Server truth — every intent answered, every kick delivered, no Area shut down under a player",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/area_server.gd"
      },
      {
        "id": "connection-and-sync/004",
        "title": "Observability — the connection indicator, and the phone that reports its own diagnostics",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-19",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/connection-and-sync/004-observability.md"
      },
      {
        "id": "connection-and-sync/005",
        "title": "Area connectivity — single_player, multiplayer, either",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-19",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/connection-and-sync/005-area-connectivity.md"
      },
      {
        "id": "connection-and-sync/006",
        "title": "Local play — your home when there is no realm",
        "epic": "connection-and-sync",
        "state": "ready",
        "priority": 1,
        "blocked_by": [
          "connection-and-sync/005"
        ],
        "estimate": "L",
        "created": "2026-08-18",
        "updated": "2026-08-19",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "connection-and-sync/007",
        "title": "The fault-injection harness and the soak",
        "epic": "connection-and-sync",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-19",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/connection-and-sync/007-fault-harness-and-soak.md"
      },
      {
        "id": "connection-and-sync/008",
        "title": "Ship, verify, record",
        "epic": "connection-and-sync",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [
          "connection-and-sync/003",
          "connection-and-sync/004",
          "connection-and-sync/006",
          "connection-and-sync/007"
        ],
        "estimate": "S",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [
          11
        ],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "agent-ready",
    "next": "006 — local play, the home when there is no realm — is ready (005 signed off, so its blocker is gone); 008 last.",
    "questions": []
  },
  {
    "id": "context-and-docs-architecture",
    "title": "Context and docs architecture",
    "area": "ops",
    "summary": "Keep agent cold-start context flat as the project's documentation grows — full proposal lives in docs/context-architecture.md, not restated here.",
    "repo": "n/a — this workspace (docs/, CLAUDE.md), with the actual design-corpus split happening in land-of-lor/docs/",
    "depends_on": [],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — this is a proposal awaiting Kris's review, not active work.",
    "questions": []
  },
  {
    "id": "element-table",
    "title": "The element table",
    "area": "design",
    "summary": "Author the 64 elements themselves — flavour names, per-element properties, colours, values, spell-kinds, and rarity. The keystone table four other epics lean on and none owns.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-12",
    "parked": true,
    "tasks": [
      {
        "id": "element-table/001",
        "title": "Author the element table — names and properties for all 64",
        "epic": "element-table",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-06",
        "updated": "2026-08-06",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "element-table/002",
        "title": "Conversion-flow POC — the fold-back made visible",
        "epic": "element-table",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-06",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/pocs/conversion-flow/index.html"
      },
      {
        "id": "element-table/003",
        "title": "Author the element definitions in the card editor",
        "epic": "element-table",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-12",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Kris authors element definitions in the card editor (003 — his own task, not an agent's); table authoring (001) still waits on the property schema.",
    "questions": []
  },
  {
    "id": "game-interface",
    "title": "The game interface — first brush",
    "area": "client",
    "summary": "The UI layer over the 3D world — title screen, HUD, the Ingredients collection view and the element-card visual language — plus the card editor Kris authors the 64 with, wrapped as an HTML shell over the live multiplayer world.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-12",
    "parked": false,
    "tasks": [
      {
        "id": "game-interface/001",
        "title": "Claude Design brief for the first interface pass",
        "epic": "game-interface",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-11",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "epics/game-interface/design-brief.md"
      },
      {
        "id": "game-interface/002",
        "title": "Element-card renderer, seeded table data, and the card editor",
        "epic": "game-interface",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-11",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/pocs/game-shell/card-editor.html"
      },
      {
        "id": "game-interface/003",
        "title": "Game shell — title screen, HUD, Ingredients view over the live world, deployed",
        "epic": "game-interface",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-11",
        "updated": "2026-08-12",
        "claimed_by": "laptop-claude-session-2026-08-11",
        "claimed_at": "2026-08-11T10:30:00.000Z",
        "delivers": [
          9
        ],
        "review_artifact": "land-of-lor/game/README.md"
      },
      {
        "id": "game-interface/004",
        "title": "Android build is missing the whole interface — shell is DOM-only, APK ships the bare 3D world",
        "epic": "game-interface",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-11",
        "updated": "2026-08-12",
        "claimed_by": "laptop-claude-session-2026-08-12",
        "claimed_at": "2026-08-11T21:30:00.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/game/README.md"
      }
    ],
    "open_questions": [],
    "tag": "done",
    "next": "Nothing outstanding. Promoting the card editor onto the public site is a later, separate call once more elements are defined; element authoring itself is tracked as element-table/003.",
    "questions": []
  },
  {
    "id": "ground-look-and-levels",
    "title": "Ground look and levels",
    "area": "client",
    "summary": "The ground of Lor gets its look (unshaded, painted = seen; sand a step down; water and lava moving; fewer, better tiles from a fresh Claude Design brief) and its third dimension — three walkable levels joined by ramp hexagrams, same-flavour mountain stacking to a double peak, and a boulder — all inside the one grid, one mesh and one movement rule the ground-types epic built.",
    "repo": "land-of-lor (game + director + tools/world-editor + docs/design), and this workspace (epic, deliverables)",
    "depends_on": [
      "ground-types"
    ],
    "updated": "2026-08-20",
    "parked": false,
    "tasks": [
      {
        "id": "ground-look-and-levels/001",
        "title": "The look — unshaded ground, sink depths, tile pointers with a flat fallback",
        "epic": "ground-look-and-levels",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-look-and-levels.md"
      },
      {
        "id": "ground-look-and-levels/002",
        "title": "Three levels and ramp hexagrams — the edge rule, the height-field mesh, the mirrors and the editor",
        "epic": "ground-look-and-levels",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-look-and-levels.md"
      },
      {
        "id": "ground-look-and-levels/003",
        "title": "Mountains — same-flavour stacking to a double peak, the Volcano crowning, and the kw 15 boulder",
        "epic": "ground-look-and-levels",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-look-and-levels.md"
      },
      {
        "id": "ground-look-and-levels/004",
        "title": "Water and lava move — shader drift, shimmer, glow, shore foam, behind a toggle with a frame-time readout",
        "epic": "ground-look-and-levels",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-look-and-levels.md"
      },
      {
        "id": "ground-look-and-levels/005",
        "title": "The meanings pass with Kris, tile pointers, and the new brief for a fresh Claude Design project",
        "epic": "ground-look-and-levels",
        "state": "done",
        "priority": 3,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-look-and-levels.md"
      },
      {
        "id": "ground-look-and-levels/006",
        "title": "v3 tiles in — kit renders, in-game shots, judged, shipped",
        "epic": "ground-look-and-levels",
        "state": "review",
        "priority": 3,
        "blocked_by": [
          "ground-look-and-levels/005"
        ],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-19",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [
          15
        ],
        "review_artifact": "deliverables/015-the-v3-tiles-are-in.md"
      },
      {
        "id": "ground-look-and-levels/007",
        "title": "A flank texture for mountains — the faces are wearing floor tiles",
        "epic": "ground-look-and-levels",
        "state": "ready",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-19",
        "updated": "2026-08-20",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "needs-review",
    "next": "006 waits on Kris's formal sign-off (the v3 tiles are live). 007 — a flank texture for mountains — was TRIED on 2026-08-20 and rolled back: not better enough for its cost. It stays ready, with the experiment written up in its own file; the root cause is that the ground mesh carries no UVs.",
    "questions": []
  },
  {
    "id": "ground-types",
    "title": "Ground types",
    "area": "client",
    "summary": "Every cell of every Area becomes one of the 64 hexagrams — the ground it is made of — stored, sent, rendered with soft edges, sunken water and lava, standing mountains, painted into every existing Area, and editable in an area map editor.",
    "repo": "land-of-lor (game + director + tools/world-editor) and this workspace (deliverables, site/play)",
    "depends_on": [
      "world-map-and-portals"
    ],
    "updated": "2026-08-18",
    "parked": false,
    "tasks": [
      {
        "id": "ground-types/001",
        "title": "The model — a hexagram is a ground type, in every runtime",
        "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": [],
        "review_artifact": "land-of-lor/game/world/ground_types.gd"
      },
      {
        "id": "ground-types/002",
        "title": "Storage, hydrate, wire — areas.ground, the hydrate file, hello_ack, protocol 4",
        "epic": "ground-types",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-17",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/src/groundPaint.ts"
      },
      {
        "id": "ground-types/003",
        "title": "Client rendering, stage 1 — the lattice mesh, sunken cells, mountains, and people standing in water",
        "epic": "ground-types",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-17",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/client/ground_mesh.gd"
      },
      {
        "id": "ground-types/004",
        "title": "Client rendering, stage 2 — textured transitions, and the renderer check on web and 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": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-types.md"
      },
      {
        "id": "ground-types/005",
        "title": "Content pipeline — ground files, the loader, presets, and the six painted Areas",
        "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": [],
        "review_artifact": "land-of-lor/game/content/areas/the-badlands.ground.json"
      },
      {
        "id": "ground-types/006",
        "title": "The looks — tune the eight ground types and their 64 variations",
        "epic": "ground-types",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-17",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/ground-types/badlands-textured.png"
      },
      {
        "id": "ground-types/007",
        "title": "The area map editor — paint an Area's ground from the world editor",
        "epic": "ground-types",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-17",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/tools/world-editor/area-editor.js"
      },
      {
        "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"
      }
    ],
    "open_questions": [],
    "tag": "done",
    "next": "Done — all eight signed off 2026-08-18. The look itself continues in ground-look-and-levels.",
    "questions": []
  },
  {
    "id": "kickstarter-prelaunch",
    "title": "Kickstarter pre-launch page",
    "area": "comms",
    "summary": "A free \"notify me on launch\" Kickstarter page to build an invested audience — not a funded campaign, since the money isn't the point.",
    "repo": "n/a — this workspace (marketing-and-communication/, site/)",
    "depends_on": [
      "naming-and-brand"
    ],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "kickstarter-prelaunch/001",
        "title": "Draft the pre-launch page copy",
        "epic": "kickstarter-prelaunch",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — not being worked right now.",
    "questions": []
  },
  {
    "id": "naming-and-brand",
    "title": "Naming and brand",
    "area": "comms",
    "summary": "The game's title (Lor: The Ten Thousand Things) and studio name (CoCreations) are decided; domain and trademark filing remain open.",
    "repo": "n/a — this workspace (brand/brand.json, brand/naming.md)",
    "depends_on": [],
    "updated": "2026-08-13",
    "parked": false,
    "tasks": [
      {
        "id": "naming-and-brand/001",
        "title": "Publish the Copyright & IP notice page",
        "epic": "naming-and-brand",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [
          "naming-and-brand/Q004"
        ],
        "estimate": "S",
        "created": "2026-08-12",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "site/src/pages/copyright.astro"
      },
      {
        "id": "naming-and-brand/002",
        "title": "Run the game-name poll",
        "epic": "naming-and-brand",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-13",
        "updated": "2026-08-13",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [
      "naming-and-brand/Q002",
      "naming-and-brand/Q003",
      "naming-and-brand/Q004"
    ],
    "tag": "needs-human-decision",
    "next": "Kris/a lawyer resolves Q004's remaining items (jurisdiction, third-party contributors, AI-art framing, trademark/copyright framing — entity name is answered) to unblock naming-and-brand/001 — plus Q002 (domain) and Q003 (trademark filing) whenever convenient, none urgent. Also new: naming-and-brand/002, Kris runs the public game-name poll (Spellgrove vs Cauldria vs Portilia, optional Rahlands) and records the final title.",
    "questions": [
      {
        "id": "naming-and-brand/Q001",
        "title": "Studio name",
        "epic": "naming-and-brand",
        "blocks": [],
        "status": "answered",
        "raised": "2026-08-05",
        "answered": "2026-07-30T00:00:00.000Z",
        "decision_ref": null
      },
      {
        "id": "naming-and-brand/Q002",
        "title": "Custom domain",
        "epic": "naming-and-brand",
        "blocks": [],
        "status": "open",
        "raised": "2026-08-05",
        "answered": null,
        "decision_ref": null
      },
      {
        "id": "naming-and-brand/Q004",
        "title": "Confirm legal-review items before publishing the Copyright & IP notice",
        "epic": "naming-and-brand",
        "blocks": [
          "naming-and-brand/001"
        ],
        "status": "open",
        "raised": "2026-08-12",
        "answered": null,
        "decision_ref": null
      },
      {
        "id": "naming-and-brand/Q003",
        "title": "File the LOR class-9 trademark?",
        "epic": "naming-and-brand",
        "blocks": [],
        "status": "open",
        "raised": "2026-08-05",
        "answered": null,
        "decision_ref": null
      }
    ]
  },
  {
    "id": "object-system-experiments",
    "title": "Object system experiments",
    "area": "client",
    "summary": "Experiments with objects and deeper/composite objects — building on the base-elements work and the 3D composition POC.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "object-system-experiments/001",
        "title": "Drive one creature's shape/colour from trigram input",
        "epic": "object-system-experiments",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — not being worked right now.",
    "questions": []
  },
  {
    "id": "public-site-and-comms",
    "title": "Public site and comms",
    "area": "comms",
    "summary": "The public-facing Lor website — an Astro static site that renders this workspace's markdown, built agent-legible from day one.",
    "repo": "n/a — this workspace (site/, epics/, deliverables/, brand/)",
    "depends_on": [],
    "updated": "2026-08-06",
    "parked": false,
    "tasks": [
      {
        "id": "public-site-and-comms/001",
        "title": "Consider porting land-of-lor/docs/historic/ artifacts into the deliverables log as backdated entries",
        "epic": "public-site-and-comms",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-06",
        "updated": "2026-08-06",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "blocked",
    "next": "Nothing urgent. The Giscus/Discussions question is closed (2026-08-04 decision: repos permanently private, giscus impossible). Optional, non-blocking: whether /join ever needs a real form backend, and whether/which historic docs get ported into the deliverables log as backdated entries.",
    "questions": []
  },
  {
    "id": "server-architecture",
    "title": "Server architecture",
    "area": "server",
    "summary": "Architect the server software that runs the actual game — the client is substantially an interface, not the core mechanics.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-28",
    "parked": false,
    "tasks": [
      {
        "id": "server-architecture/001",
        "title": "Field-simulation scaling memo",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-02",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/002",
        "title": "Server runtime/engine options memo",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/003",
        "title": "Tick-rate / real-time-vs-lazy-evaluation memo",
        "epic": "server-architecture",
        "state": "done",
        "priority": 3,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-05",
        "updated": "2026-08-02",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/004",
        "title": "Stage 0 — spec approved",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-02",
        "updated": "2026-08-02",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/005",
        "title": "Stage 1 — director service + Postgres + protocol (no Godot)",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-02",
        "updated": "2026-08-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/006",
        "title": "Stage 2 — Godot headless world server with grid movement",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-02",
        "updated": "2026-08-03",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/007",
        "title": "Stage 3 — Godot client with prediction and reconciliation; two clients",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [
          "server-architecture/006"
        ],
        "estimate": "L",
        "created": "2026-08-02",
        "updated": "2026-08-04",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [
          6
        ],
        "review_artifact": null
      },
      {
        "id": "server-architecture/008",
        "title": "Stage 4 — interest management, creatures, flow-field pathfinding at scale",
        "epic": "server-architecture",
        "state": "done",
        "priority": 3,
        "blocked_by": [
          "server-architecture/007"
        ],
        "estimate": "L",
        "created": "2026-08-02",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/pocs/multiplayer-poc/handoff/stage-4.md"
      },
      {
        "id": "server-architecture/009",
        "title": "Android APK export & download link",
        "epic": "server-architecture",
        "state": "done",
        "priority": 3,
        "blocked_by": [
          "server-architecture/007"
        ],
        "estimate": "M",
        "created": "2026-08-03",
        "updated": "2026-08-04",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [
          7
        ],
        "review_artifact": null
      },
      {
        "id": "server-architecture/010",
        "title": "Real accounts — sign up, log in, and attach a device to an existing account",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-12",
        "updated": "2026-08-13",
        "claimed_by": "session-a0f7b92d",
        "claimed_at": "2026-08-12T07:36:15.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/010-accounts.md"
      },
      {
        "id": "server-architecture/011",
        "title": "Google Play Games sign-in on Android",
        "epic": "server-architecture",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [
          "server-architecture/010"
        ],
        "estimate": "M",
        "created": "2026-08-12",
        "updated": "2026-08-13",
        "claimed_by": "session-88fa322b-agent2",
        "claimed_at": "2026-08-13T03:05:00.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/011-play-games-server-half.md"
      },
      {
        "id": "server-architecture/012",
        "title": "Set up Resend for real account emails",
        "epic": "server-architecture",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-12",
        "updated": "2026-08-13",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/013",
        "title": "Account-first boot flow, character-seed placeholder, and client robustness",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-13",
        "updated": "2026-08-13",
        "claimed_by": "session-88fa322b",
        "claimed_at": "2026-08-13T00:45:00.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/013-account-first-flow.md"
      },
      {
        "id": "server-architecture/014",
        "title": "Server hardening batch — the 010 audit's security fixes",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-13",
        "updated": "2026-08-13",
        "claimed_by": "session-88fa322b-agent",
        "claimed_at": "2026-08-13T01:35:00.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/014-server-hardening.md"
      },
      {
        "id": "server-architecture/015",
        "title": "First iOS build — run the game on an iPhone from Kris's Mac",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-13",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/export-ios.sh"
      },
      {
        "id": "server-architecture/016",
        "title": "Split PUBLIC_BASE_URL into EMAIL_VERIFY_BASE_URL and LINK_CODE_BASE_URL",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-13",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/016-base-url-split.md"
      },
      {
        "id": "server-architecture/017",
        "title": "Password reset by hand — a support address, not self-service",
        "epic": "server-architecture",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-13",
        "updated": "2026-08-13",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/018",
        "title": "Register spellgrove.com and set it up for the site and email",
        "epic": "server-architecture",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-13",
        "updated": "2026-08-13",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "server-architecture/019",
        "title": "Account screens redesign — two panels, and this device's remembered logins",
        "epic": "server-architecture",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-26",
        "updated": "2026-08-26",
        "claimed_by": "session-2026-08-26-accounts-spec",
        "claimed_at": "2026-08-26T00:00:00.000Z",
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/019-account-screens-and-remembered-logins.md"
      },
      {
        "id": "server-architecture/020",
        "title": "Apple Game Center sign-in on iOS",
        "epic": "server-architecture",
        "state": "needs-input",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-26",
        "updated": "2026-08-26",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/020-game-center-server-half.md"
      },
      {
        "id": "server-architecture/021",
        "title": "Single-identity accounts + unified account screen",
        "epic": "server-architecture",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-28",
        "updated": "2026-08-31",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/handoff/historic/021-single-identity-accounts.md"
      },
      {
        "id": "server-architecture/022",
        "title": "Multiple characters under one login",
        "epic": "server-architecture",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-31",
        "updated": "2026-08-31",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "blocked",
    "next": "021 (single-identity accounts + unified account screen) built, tested, and DEPLOYED LIVE 2026-08-28 — needs Kris's own visual/on-device look (no display in the building container, same gap as 019) plus the Android APK rebuild+upload before that ships to phones. Remaining, unchanged: 018 spellgrove.com; 011's Play Console setup; 012's iFastNet DNS records; 020's Apple checklist; 017 (backlog) needs a support address picked.",
    "questions": []
  },
  {
    "id": "server-instance",
    "title": "Server instance",
    "area": "ops",
    "summary": "A working, running server instance — hosting, deploy, and environments for whatever server-architecture lands on.",
    "repo": "land-of-lor",
    "depends_on": [
      "server-architecture"
    ],
    "updated": "2026-08-04",
    "parked": false,
    "tasks": [
      {
        "id": "server-instance/001",
        "title": "Provision the droplet via the DigitalOcean API and run deliverable #4's setup",
        "epic": "server-instance",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-02",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "done",
    "next": "Droplet live and now behind HTTPS at lor-server.cocreations.com.au (Let's Encrypt via Caddy, wss for director and game channels, verified 9/9 externally). Remaining follow-up cleanup — DO project assignment, git deploy credentials on the box — none of it blocking.",
    "questions": [
      {
        "id": "server-instance/Q001",
        "title": "Credentials and confirmation needed before automated droplet provisioning",
        "epic": "server-instance",
        "blocks": [
          "server-instance/001"
        ],
        "status": "answered",
        "raised": "2026-08-02",
        "answered": "2026-08-02T00:00:00.000Z",
        "decision_ref": null
      }
    ]
  },
  {
    "id": "spell-crafting-interface",
    "title": "Spell-crafting interface",
    "area": "client",
    "summary": "The in-game interface for crafting — casting recipes onto the ground/casting-bench and filling formula-driven items with ports and stocks.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-05",
    "parked": true,
    "tasks": [
      {
        "id": "spell-crafting-interface/001",
        "title": "Low-fidelity mockups of the two crafting-interaction metaphors",
        "epic": "spell-crafting-interface",
        "state": "backlog",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "spell-crafting-interface/002",
        "title": "Prototype visual treatment for keyed vs. open slots",
        "epic": "spell-crafting-interface",
        "state": "backlog",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — not being worked right now.",
    "questions": []
  },
  {
    "id": "workspace-dashboard",
    "title": "Workspace dashboard",
    "area": "ops",
    "summary": "The public site doubles as Kris's private working surface — an attention-router for supervising many agents, not a project-management tool he fills in by hand.",
    "repo": "n/a — this workspace (site/, epics/)",
    "depends_on": [],
    "updated": "2026-08-12",
    "parked": true,
    "tasks": [
      {
        "id": "workspace-dashboard/001",
        "title": "Secrets audit — current tree and full git history, both repos",
        "epic": "workspace-dashboard",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-04",
        "claimed_by": "task-runner-session-2026-08-03",
        "claimed_at": "2026-08-03T08:45:55.000Z",
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "workspace-dashboard/002",
        "title": "Blocker/question aggregation queue",
        "epic": "workspace-dashboard",
        "state": "done",
        "priority": 2,
        "blocked_by": [
          "workspace-dashboard/001"
        ],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-12",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "https://lor.kris.ai-task-runner.com/now"
      },
      {
        "id": "workspace-dashboard/003",
        "title": "Authenticated control surface, separate from the public static build",
        "epic": "workspace-dashboard",
        "state": "backlog",
        "priority": 2,
        "blocked_by": [
          "workspace-dashboard/001"
        ],
        "estimate": "L",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "workspace-dashboard/004",
        "title": "Kick off an agent session against an epic, from the dashboard",
        "epic": "workspace-dashboard",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [
          "workspace-dashboard/001",
          "workspace-dashboard/003"
        ],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "workspace-dashboard/005",
        "title": "Public-content intake path (never direct task input)",
        "epic": "workspace-dashboard",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [
          "workspace-dashboard/001"
        ],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-05",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked — the /now queue is good enough for now (Kris, 2026-08-12). Pick one of 003-005 when it stops being enough.",
    "questions": [
      {
        "id": "workspace-dashboard/Q001",
        "title": "Do the lor repos ever go public?",
        "epic": "workspace-dashboard",
        "blocks": [],
        "status": "answered",
        "raised": "2026-08-04",
        "answered": "2026-08-04T00:00:00.000Z",
        "decision_ref": null
      }
    ]
  },
  {
    "id": "world-map-and-portals",
    "title": "World map and portals",
    "area": "design",
    "summary": "The map of Lor — how areas link through portals, what rules each area imposes, and the two surfaces that show it (a standalone page on the website and a screen in the game), including a personal map of your own home and your friends' realms.",
    "repo": "land-of-lor (game + director) and this workspace (site/)",
    "depends_on": [
      "server-architecture"
    ],
    "updated": "2026-08-18",
    "parked": false,
    "tasks": [
      {
        "id": "world-map-and-portals/001",
        "title": "Spec the world graph — areas, portals, per-area rules, and the public/private split",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-12",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/design/ClaudeDesignWorldMapBrief/HANDOFF World Map 1 - Data, Portals, Classes.md"
      },
      {
        "id": "world-map-and-portals/002",
        "title": "The two map surfaces — a standalone map page on the website and a map screen in the game",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-12",
        "updated": "2026-08-15",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "world-map-and-portals/003",
        "title": "Areas and Portals in the database, and travel between them unblocked",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-15",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/src/schema.sql"
      },
      {
        "id": "world-map-and-portals/004",
        "title": "Portals you can see and walk through, and a 3D object at every one",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-15",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/client/portal_node.gd"
      },
      {
        "id": "world-map-and-portals/005",
        "title": "The authored world of Spellgrove, its loader, and the public map endpoint",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-15",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/content/spellgrove.world.json"
      },
      {
        "id": "world-map-and-portals/006",
        "title": "The two map surfaces — the public site page and the in-game screen",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-15",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "site/src/pages/world.astro"
      },
      {
        "id": "world-map-and-portals/007",
        "title": "The entity class restructure — ComplexItem, LivingCreature, Player",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 3,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-15",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/complex_item.gd"
      },
      {
        "id": "world-map-and-portals/008",
        "title": "Players pile up on the cell they arrive at",
        "epic": "world-map-and-portals",
        "state": "backlog",
        "priority": 3,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-16",
        "updated": "2026-08-16",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": null
      },
      {
        "id": "world-map-and-portals/009",
        "title": "Homes connect to the world, and the game gets a way out of itself",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/test/home-portal.test.ts"
      },
      {
        "id": "world-map-and-portals/010",
        "title": "What playing it actually found — starting at home, closed doors, a keyboard on iPad, and the builds nobody had shipped",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/client/ui/theme/web_keyboard.gd"
      },
      {
        "id": "world-map-and-portals/011",
        "title": "Seeing where you are — a readable Area name, \"You are here\" on the world map, pinch zoom, and the identity chip off the title screen",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 2,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/client/ui/world_map_screen.gd"
      },
      {
        "id": "world-map-and-portals/012",
        "title": "The door that went nowhere — a portal frame lost to the disconnect behind it, the test map that flashed on every launch, and your own home missing from your own map",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/cli-test-client/verify-home-door.ts"
      },
      {
        "id": "world-map-and-portals/013",
        "title": "Meeting yourself in the Badlands — one account, one body, per world",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "S",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/world/world_server.gd"
      },
      {
        "id": "world-map-and-portals/014",
        "title": "One body everywhere — entity ids move from the world to the account, and the on-screen keyboard finally runs at all",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/shell/verify-touch-keyboard.mjs"
      },
      {
        "id": "world-map-and-portals/015",
        "title": "\"World\" means Area — the rename the schema promised, across protocol, database, GDScript and docs",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "L",
        "created": "2026-08-16",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/src/schema.sql"
      },
      {
        "id": "world-map-and-portals/016",
        "title": "The player who wasn't there — a phone in the background keeps walking against a socket that died in silence",
        "epic": "world-map-and-portals",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-18",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/game/director/test/client-liveness.test.ts"
      }
    ],
    "open_questions": [],
    "tag": "blocked",
    "next": "All built work signed off 2026-08-18. Only 008 (players stacking on the arrival cell) remains, in backlog until player collision exists.",
    "questions": []
  },
  {
    "id": "world-traversal-and-ground",
    "title": "World traversal and ground",
    "area": "design",
    "summary": "Walking around the world and doing things — the mechanism of ground types, their properties, and the player's ability to affect them.",
    "repo": "land-of-lor",
    "depends_on": [],
    "updated": "2026-08-18",
    "parked": true,
    "tasks": [
      {
        "id": "world-traversal-and-ground/001",
        "title": "Write the ground & traversal design spec",
        "epic": "world-traversal-and-ground",
        "state": "done",
        "priority": 1,
        "blocked_by": [],
        "estimate": "M",
        "created": "2026-08-05",
        "updated": "2026-08-18",
        "claimed_by": null,
        "claimed_at": null,
        "delivers": [],
        "review_artifact": "land-of-lor/docs/specs/GROUND_TYPES.md"
      }
    ],
    "open_questions": [],
    "tag": "parked",
    "next": "Parked. 001 signed off 2026-08-18 — GROUND_TYPES.md and the ground-types epic answered the ground half; the traversal half (fertile ground, deliberate ground change, movement feel) waits for a design conversation with Kris, as overview prose, not tasks.",
    "questions": []
  }
]