Skip to content

Changelog

0.2.0

Storage

  • The Parquet tables are replaced by a single SQLite database, store.sqlite, with schema.json as the version marker (SCHEMA_VERSION = 2). A store written by 0.1.x is refused at construction with SchemaMismatchError; see migration.
  • Records keep the same fields and IDs, and evaluation_id relationships are preserved. Column types are declared per record field and encoded by explicit codecs, so reads no longer depend on pandas type inference.
  • The database uses a rollback journal (journal_mode = DELETE, never WAL), which keeps a store portable as one file. Copies are valid only from a flushed, quiescent source.
  • Buffered metrics and conditions, the evaluation context manager, and its rollback semantics are unchanged. Sync merges runs by updated_at and treats evaluations, conditions, metrics, and artifacts as immutable records that conflict on any difference.

Removed

  • path_map and the per-table file attributes (runs_path, metrics_path, and the others). Use db_path.
  • The add_id CLI subcommand — every table now always carries its primary key.

Added

  • research-tracker migrate, which upgrades a v1 Parquet store in place to schema version 2, preserving every record and ID. It supports --dry-run and --no-backup, keeps the old files under parquet-v1/, and refuses to run against a store that is already on version 2.
  • The optional migrate extra, which installs pyarrow for reading the legacy Parquet files. It is not a required dependency.
  • ExperimentStore.update_table for validated whole-table replacement, used by the migration to bulk-load records.