Roadmap
Status: draft v0.1, 2026-11-09. Implementation has not started. No application code is written until Jonathan says so (
AGENTS.md§9).
Ordering principle
Milestones are ordered by risk retired, not by feature value. Each one exists to answer a question that, answered badly, would invalidate work downstream. A milestone is done when its question is answered on a real device, not when its code compiles.
The two things most likely to kill this project are:
- The galaxy doesn't render acceptably on a mid-range phone. Everything visual depends on it.
- The check-in loop isn't fun. Three minutes on a phone has to feel worth opening. No amount of systems depth saves a boring check-in.
Both are tested as early as physically possible.
Phase 0 — Planning (current)
| Question | Do we agree on what this game is? |
| Done when | Jonathan has read and reacted to the design docs; the open questions that block Phase 1 are closed |
- [x]
GAME-DESIGN.md— spine - [x]
TRAVEL.md— the two roads, routes, convoys - [x]
SECURITY-AND-SOVEREIGNTY.md— the signature system - [x]
ECONOMY.md,COMBAT.md - [x]
GATHERING.md,SKILLS.md - [x]
COLONIES.md,CORPS.md - [x]
ARCHITECTURE.md,INFRA.md,ART.md - [x]
docs/index.md— the published wiki home - [x]
docs/research/client-stack.md,docs/research/blender-pipeline-proof.md— stack and art-pipeline evidence - [x]
docs/decisions/0001–0005— ADRs for the five load-bearing decisions - [x]
docs/ROADMAP.md— this - [ ] Jonathan's pass over all of it
- [ ] Balance simulator spec — the tax/security curves need a spreadsheet before anyone codes a constant
- [ ] UI design system — colours, type, spacing, the information-encoding rules of
ART.md§1
Phase 1 — Foundations
| Question | Can we ship to production in one command, repeatedly, without drama? |
| Done when | A trivial app is live on HTTPS at a real hostname, deployed by script, and a second deploy rolls it forward and back |
- Repo scaffold: shared core package, server, client, one toolchain
- Deploy pipeline following the house convention on
agnes(INFRA.md) — image tagged by git sha, loopback port, nginx vhost, certbot - Fix the hostname trap first:
galaxy.pukogames.comcurrently resolves and serves the adbtd-admin vhost because nginx has no 443default_server - Staging on the dev box
- Postgres container, migration runner, backup job from day one (the existing boxes have five different backup schemes; pick one and write it down)
Boring, and it is the thing that makes every later milestone cheap.
Phase 2 — The galaxy exists
| Question | Does a seeded Milky Way render beautifully at 60fps on a mid-range Android phone? |
| Done when | Jonathan can open a URL on his phone, fly a camera through a region, and want to keep looking at it |
- The galaxy function: seed → spiral structure → systems → bodies → resources. Deterministic, identical on client and server, tested for exactly that
- Client renders it: procedural starfield, nebulae, stars, planets, all from the seed
- The system view and the region map
- Measured frame times on real hardware, not a desktop browser
This is the highest-risk milestone and it is deliberately second. If the answer is no, we find out before any gameplay is built on top of it.
Phase 3 — One pilot
| Question | Is a three-minute check-in satisfying? |
| Done when | Jonathan plays it on his phone for a week without being asked to |
- Passkey accounts, one character
- A ship. Travel between systems with real travel time. Lane vs free burn
- Scan, mine, cargo
- The report feed — the first screen of the check-in loop
- Imperial price band: sell something, earn credits, buy a repair
Everything in ARCHITECTURE.md §1.2 gets proven here: nothing ticks, state is derived, the loop works while the player is asleep.
If the answer to the question is no, we stop and redesign. This is the real go/no-go gate, not Phase 2.
Phase 4 — Operator
Drones launched from your ship and worked beside it, the first production queues, refining. Act II of the player arc. The spreadsheet game proper begins; this is where session depth has to appear without session length growing.
Phase 5 — The breathing frontier
Colonies on planets, gates and lanes as player infrastructure, road distance, influence and system control, the tax cycle, lapse flags, NPC pirate pressure.
The signature system of the game (SECURITY-AND-SOVEREIGNTY.md). It needs the balance simulator to exist first — the curves get tuned against a synthetic population before a single constant is hardcoded.
Phase 6 — Conflict
Deterministic combat resolution, doctrines, the client-side replay, losses set by the system's state, structure reinforcement windows. Tested properly, because it is both easy to break and silently wrong when broken (COMBAT.md §9).
Phase 7 — Society
Corporations, standings, regional markets, hauling contracts. The content that keeps an eternal universe alive is other players, so everything before this is scaffolding for this.
Phase 8 — Closed test
A small number of real players in one region. The first time the economy, the frontier and the politics meet an adversarial population — which is the only honest test any of this has.
Continuous workstreams
Running alongside, not sequenced:
- Balance simulator — a headless harness that runs synthetic populations against the pure economy and combat functions. Must exist before Phase 5. It is also how we avoid shipping a number nobody can justify.
- Design docs — kept current in the same change as the code. A doc that lies is worse than no doc.
- Art — procedural shaders and the parametric ship pipeline evolve continuously from Phase 2 onward.
- Performance budget — measured on real mid-range hardware at every phase, never assumed.
Changelog
- 2026-11-09 — v0.1. Risk-ordered phases, with the rendering bet and the check-in-fun bet pulled to the front as explicit go/no-go gates.
- 2026-11-09 — v0.2. Phase 0 checklist now lists the documents that exist —
TRAVEL,GATHERING,SKILLS,COLONIES,CORPS,docs/index.md,blender-pipeline-proof.md— instead of implying they are still owed. Phase 4 drones are launched from the ship rather than given standing orders, and Phase 6 losses are set by the three states rather than scaled by a security band.