v0.2.0 — pipeline city
v0.2.0
Released: 2026-08-28
Headline: pipeline city. The catalog becomes a place — tycoon city
serves your warehouse as an interactive 3D city, with schemas as
districts, tables as buildings, and lineage as roads. The renderer ships
inside the wheel, so there is nothing extra to install, and it costs
nothing until you run the command.
This is the first release on the 0.2 line. The CLI surface from 0.1.11
is unchanged — city is additive, and nothing else moved.
Landed
tycoon city— the catalog as an interactive 3D city (PR #205).
Schemas become districts, tables become buildings, lineage becomes
roads. With no arguments the command walks up to the project root and
serves it onhttp://127.0.0.1:8000;--pathalso accepts a DuckDB
file or anmd:catalog, and--port,--host,--theme,--dist,
and--pricingare forwarded to the renderer. Binding stays on
localhost by default — the city names real schemas, tables, and
columns, so publishing it is opt-in.- The renderer costs nothing until you run it (PR #205).
tycoon_cityis imported inside the command body, never at module
scope, so registeringcitydoes not pull duckdb and sqlglot into
every other command's startup. - The pipeline-city repo is absorbed and sunset (PR #205). Its
renderer, contract fixtures, and test suite now live here; the spike
scripts are archived in-repo, andtycoon-city/tycoon-city-export
remain invocable as standalone entry points for renderer development
without a project.
Upgrading from 0.1.11
- Nothing breaks. No command or flag was removed, and
tycoon.yml's
schema_versionstays at2— there is no migration to run. - The wheel now bundles the city renderer. The pre-built web bundle
rides along sotycoon cityworks offline out of the box. The
renderer is imported only when you run the command, so nothing else
gets slower. sqlglotbecomes a declared dependency (>=30.15.0). It already
arrived transitively via dbt-core and dlt, so this pins the version
the renderer needs rather than adding an install.
Known limitations
- The city is a static plan, not a simulation. Vehicles, guests, and
the radial layout that places marts downtown and sources on the
periphery are still in review and land in a follow-up release. - Coverage milestones are not surfaced yet. The exporter emits an
achievementsblock, but the renderer does not read it — the panel
will report a milestone as unknown rather than as measured. Tracked
for the next release. - The renderer's own test suite is not CI-gated yet. The vendored
tests/tycoon_citysuite and theweb/front end are excluded from
the pipeline that gates the CLI. Wiring them up is the first item of
the next cycle.
What's next
Closing the renderer's CI gap, then the city simulation engine — radial
layout, planner consolidation, street thinning — and the layer-aware
data CLI (fire, repair, firehouse, data layers, data health),
both already open in review. The ingestion rewrite's M3 (#84) continues
alongside.