v0.17.0 Migration Guide

Runs-store schema moves to version 11Section anchor link

Honest capacity measurement under contention and pipeline change advances the local runs-store schema from version 10 to version 11. The migration is purely additive: it adds five columns to the pipeline_profiles table -- plan_hash (the DAG-topology hash a profile is measured against), floor_cores / floor_memory_bytes (the per-pipeline demand floor a contended run raises without setting the measured peak), and prev_peak_cores / prev_peak_memory_bytes (the predecessor plan's peak a re-measuring version is charged 2x of). No column is dropped or rewritten and no existing row is lost.

The store migrates a database forward the first time a newer binary opens it; migration is one-way, so a database opened by v0.17.0 no longer opens under an older binary. A binary older than the version a database needs refuses it by name (the database stamps the minimum sparkwing version it requires), rather than reporting a bare schema number:

this state database needs sparkwing >= v0.17.0; you have <older>; run sparkwing version update --cli

Upgrade every pinned binary on a machine in one sittingSection anchor link

Admission lives in the compiled pipeline binary, not in the CLI. Each repo's .sparkwing/ pins a sparkwing SDK version, and the pinned version is what decides how that repo's runs get admitted and what schema it expects. Once any binary migrates a shared state database to schema 11, every repo on the machine still pinned to an older sparkwing refuses that database until its pin moves.

So when you upgrade a machine, bump the .sparkwing sparkwing pin for every repo that runs on it, in one sitting -- do not leave one repo on an old pin "for now." Run sparkwing queue or sparkwing doctor to find stragglers; both name a legacy-pinned binary admitting outside the daemon.