Introduction: The Boring (But Necessary) Stuff

After a month of rapid feature development, every project needs a cleanup week. This week was about Consolidation—making sure our foundation was solid enough for the "Living City" milestone.

Terminology Matters: "Firm" vs "Company"

We had a confusing mix of terms: "Firms," "Companies," "Businesses." We standardized on Company across the entire stack (Simulation, Web API, Client UI).

  • CompanyId is now the universal identifier.
  • Code became cleaner and easier to reason about.

Stabilizing the Core

We spent the week fixing subtle bugs in the simulation loop:

  • Tick Ordering: Ensuring that wages are paid before rent is due (crucial for NPC survival!).
  • Determinism Checks: Adding rigorous tests to ensure saving/loading produced identical states.

Web Runtime Maturity

Our web API matured significantly. We fleshed out the endpoints needed for a full game client:

  • GET /api/session/status (Current tick, speed)
  • GET /api/companies/sites (Where are the buildings?)
  • POST /api/commands (Player actions)

What's Next?

With a stable core and a clear API, we were ready for the biggest visual upgrade yet. Next week, the city comes alive with Modular Buildings and a Live Dashboard.