Journey event  ·  9 Sep 2026

Database schema is declared across 16 modules with no migration mechanism

16 modules each ran CREATE TABLE IF NOT EXISTS on connect with no version tracking, so an ALTER TABLE / column rename had no safe path. FIX 7e648a6: db.migrate(conn, name, steps) —

  state copied from the tracker, never improved

  event date 2026-09-09

Event date 2026-09-09
Version found
Version fixed
Expected kit firmware
Release file
SHA-256
Served count
Source https://app.notion.com/3d62b4cda37081e1b4fae05d8a2a5f29

16 modules each ran CREATE TABLE IF NOT EXISTS on connect with no version tracking, so an ALTER TABLE / column rename had no safe path. FIX 7e648a6: db.migrate(conn, name, steps) — an ordered, append-only list of DDL scripts recorded per database file in a dsc_schema_version table; step i moves the schema from version i to i+1, each step and its version row commit in the SAME transaction (a crash mid-migration leaves either the old or the new version, never a half-applied step), a pre-mechanism database adopts version 1 on first contact, and it is coordinated with schema_once so two threads on first use do not both migrate. db.schema_version(conn, name) reads the recorded version. Tests: test_db_migrate.py (order, resume, failed-step-rolls-back, pre-mechanism adoption). SCOPE: the mechanism now EXISTS and is live in the container; the 16 existing modules still call ensure_schema/schema_once and opt in incrementally by replacing that with migrate(conn, name, [SCHEMA, …alters]) when they next need a column change. So this is the mechanism, not a bulk conversion. Verify: import dsc_brain.db; db.migrate / db.schema_version present (confirmed in the running 8.1.0 image).

All events  ·  DSC  ·  CannaLib  ·  Site  ·  Firmware releases

Empty rows are honest

A blank cell means the tracker has no value for it. Nothing on this page is filled in to look complete.