← World map and portals · all tasks

Areas and Portals in the database, and travel between them unblocked

done priority 1 estimate L

world-map-and-portals/003 · created 2026-08-15 · updated 2026-08-18

What landed

The Area model and the portal graph, in Postgres, plus the change that made authored travel possible at all.

Why the worlds table wasn’t renamed to areas

Closed 2026-08-16. The rename this section defers happened, as world-map-and-portals/015 — protocol, database and GDScript in one cutover, which is exactly the condition this reasoning set for doing it. The section stays as written: it is why the wait was right, not a mistake to erase.

“worldId” is the wire protocol, the GDScript, the CLI harnesses and every handoff doc. Renaming the table alone leaves the vocabulary split in two, which is worse than either consistent state. New code reads in Area terms via src/areas.ts; a full rename (protocol, DB and GDScript together) is its own deliberate change, the way migrate-v2 was.

Verification

npm test in game/director — 139 passing, including portals-table.test.ts (bidirectional expansion, one-way, cascade, cell collisions) and portal-authored.test.ts, where a stranger joins a public area they have never been a member of, walks into a table-authored portal, and arrives at the authored destination cell.

View source in repository · also available as raw markdown.