Skip to content

v0.1.11 — tycoon.yml learns its own schema version

Choose a tag to compare

@db-tycoon-stephen db-tycoon-stephen released this 07 Aug 20:23
· 57 commits to main since this release
e922f38

v0.1.11

Released: 2026-08-07

Headline: tycoon.yml learns its own schema version. The ingestion
rewrite's second milestone lands — runtimes: and metadata: blocks on
the project model, an integer schema_version with comment-preserving
in-place migration via the new tycoon init --upgrade, and the
config singleton replaced across the ingestion commands. Alongside it:
a pinned, fully-formatted codebase and the first release-time
dependency review.

Landed

  • A versioned, migratable tycoon.yml (#83, PR #190) — the project
    file now carries schema_version (an integer, currently 2) plus
    runtimes: and metadata: blocks, both defaulted so existing files
    load unchanged. tycoon init --upgrade migrates older files in
    place — idempotent, and your comments, blank lines, and own
    version: field survive untouched (ruamel.yaml under the hood). A
    stale file warns and names the remedy; a future schema_version
    exits cleanly with "upgrade tycoon-cli" instead of tracebacking. See
    the schema_version reference.
  • Config singleton on its way out (#94, PR #190) — the ingestion
    commands (sources, run-all, sync, explore) construct their
    config at invocation through a load_config() factory rather than an
    import-time singleton, which is what keeps --help and
    init --upgrade safe in front of any project file. The remaining
    singleton users are tracked in #175, broader enforcement coverage
    in #189.
  • CI that can't drift (PR #174) — ruff pinned (CI previously ran
    whatever uvx ruff resolved to, so upstream releases broke builds),
    ruff format --check gating every PR, and a one-time repo-wide
    format pass.

Upgrading from 0.1.10

  • Existing projects keep working. The first data command prints a
    one-time-per-invocation warning that tycoon.yml is at an older
    schema version; run tycoon init --upgrade in the project directory
    to migrate. The migration adds a metadata: block with defaults and
    stamps schema_version: 2 — nothing else in your file is touched.
  • No command or flag was removed. New runtime dependency
    ruamel-yaml installs automatically with the package.
  • Dependency floors moved (PR #180): dbt-core 1.12.0 and typer
    0.27.0. dbt-core 1.12 pulls metricflow into the tree; if you pin
    tycoon's dependencies downstream, re-lock.

Behind the scenes

  • The T2-4 review round produced four follow-ups (#185–#188), all
    closed in this release: template scaffolding no longer flattens
    tycoon.yml formatting, a dead conditional in save_project is
    gone, the schema surface is documented, and a subprocess-layer test
    now guards the "hostile tycoon.yml bricks the CLI at import time"
    regression class that in-process tests can't see.
  • Dependabot's per-bump PRs are replaced by a release-time dependency
    review (PR #180 is the first) — runtime pins and SHA-pinned actions
    reviewed in one pass, dev-only noise dropped.

What's next

Milestone 3 of the ingestion rewrite — the verified-source catalog
(manifest, SourceSpec models, spec-driven config collection) — is
already in flight on the v0.1.12 branch. Remaining schema-enforcement
coverage (#189) and the rest of the singleton removal (#175) ride with
it. See the ingestion architecture doc
and #81 for the sequence.