v0.1.11 — tycoon.yml learns its own schema version
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 carriesschema_version(an integer, currently2) plus
runtimes:andmetadata:blocks, both defaulted so existing files
load unchanged.tycoon init --upgrademigrates 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 futureschema_version
exits cleanly with "upgrade tycoon-cli" instead of tracebacking. See
theschema_versionreference. - Config singleton on its way out (#94, PR #190) — the ingestion
commands (sources,run-all,sync,explore) construct their
config at invocation through aload_config()factory rather than an
import-time singleton, which is what keeps--helpand
init --upgradesafe 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
whateveruvx ruffresolved to, so upstream releases broke builds),
ruff format --checkgating 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 thattycoon.ymlis at an older
schema version; runtycoon init --upgradein the project directory
to migrate. The migration adds ametadata:block with defaults and
stampsschema_version: 2— nothing else in your file is touched. - No command or flag was removed. New runtime dependency
ruamel-yamlinstalls automatically with the package. - Dependency floors moved (PR #180):
dbt-core1.12.0 andtyper
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.ymlformatting, a dead conditional insave_projectis
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.