Skip to content

v0.1.10 — metadata backend + a slimmer install

Choose a tag to compare

@db-tycoon-stephen db-tycoon-stephen released this 21 Jul 12:39
· 89 commits to main since this release
32abd2f

v0.1.10 — metadata backend + a slimmer install

Released: 2026-07-21

Headline: tycoon gets dramatically smaller and more focused. The
ingestion rewrite's first milestone lands — a typed MetadataBackend
protocol behind all run history — and the FastAPI web UI, Dagster
orchestration, and Nao/ask AI agent are removed outright, dropping
the lockfile from 174 to 109 packages. The cycle plan is in
docs/proposals/v0.1.10-scope.md; the
rewrite's map is the new
ingestion architecture doc.

Landed

  • MetadataBackend protocol + DuckDB file backend (#82, PRs #136/#137)
    — run history now flows through typed RunStarted / RunCompleted /
    RunFailed events and a structural Protocol instead of raw SQL against
    hardcoded table names. Every dlt dispatch emits lifecycle events
    (best-effort — a metadata write never blocks a run), and
    data history / data status read through the backend. Alternative
    backends (MotherDuck, Postgres, in-memory for tests) become an
    implementation of the Protocol, not a fork of the capture path.
  • Server / Dagster / ask extras removed (#139, PR #147) — ~15 modules
    deleted. tycoon ask and tycoon register llm are gone (typer's
    standard "no such command" error, no stubs). The init wizard is now
    4 steps: ingestion → warehouse → dbt → rill. tycoon start/stop
    manage exactly two servers: Rill dashboards (:9009) and the Quack
    live warehouse (:9494).
  • Ingestion architecture doc (PR #149) — the plain-English map of
    where ingestion is going: Runtime / Destination / MetadataBackend
    protocols, the dlt tier model, and the milestone sequence for #81.

Upgrading from 0.1.9

  • If you used tycoon ask: the AI-agent surface is removed. Existing
    ask: blocks and stack.orchestrator* keys in tycoon.yml are
    ignored harmlessly — no migration needed, no file edits required.
    An AI-assisted surface will be rethought as part of the rewrite (#78).
  • If you used the Dagster integration: tycoon run <tool> still
    forwards to any CLI in your environment, so a self-managed Dagster
    (or Airflow, or cron via tycoon schedule) keeps working — tycoon
    just no longer manages it.
  • If you installed extras: pip install 'database-tycoon[server]',
    [dagster], and [ask] no longer exist. A plain
    pip install database-tycoon carries everything the CLI does.

Behind the scenes

  • Real test coverage rose from ~65% to ~73% with the deletion of the
    largely-untested server/orchestration code; the coverage floor moved
    to 68% with the same drift headroom as before.
  • pandas is now an explicit, pinned core dependency — nothing in
    tycoon imports it, but dlt's on-demand filesystem source needs it for
    CSV reading (optional-extra treatment tracked in #148).
  • All user-facing hints, docs pages, and wizard copy that referenced the
    removed surface were swept, and the CLI-surface stale-string sentinel
    now guards tycoon ask / register llm / Nao references so this
    class of drift fails tests.

What's next

The ingestion rewrite continues milestone by milestone — source catalog
manifest, Runtime protocol implementations, and the dlt tier model. See
the ingestion architecture doc and #81
for the sequence.