Changelog

Generated by releaseledger. Manual edits may be overwritten. Update releaseledger entries and rebuild this file instead.

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[0.6.1] - 2026-07-28

Added

  • Added recovery assessment and migration inspection CLI commands

  • Added MigrationCommandResponse dataclass for framework-neutral CLI output

  • Added StorageFingerprint serialization methods (to_mapping, from_mapping)

  • Added CLI error types for migration operations

  • Added test suite for migration recovery scenarios

Changed

  • Improved migration phase transitions to allow recovery from failed state

  • Improved item state transitions for direct pending-to-complete and stage-verified-to-activation paths

  • Changed CLI migrate module to add recovery assessment and inspection commands

Fixed

  • Fixed pytest failures in migration module

  • Fixed Windows test failures in migration CLI tests

[0.6.0] - 2026-07-27

Added

  • Added DestinationPrecondition dataclass for typed before-state fingerprints

  • Added MigrationPhase and MigrationItemState enums for schema-3 state machine

  • Added Schema3MigrationJournal, Schema3ItemJournalState, Schema3ConfigSwitchState dataclasses

  • Added write_schema3_journal and _parse_schema3_journal for schema-3 TOML persistence

  • Added StorageMigrationHooks for lifecycle callbacks (quiescence, staged/activated validation, finalize)

  • Added MigrationLock for advisory project migration locking

  • Added _check_same_filesystem and _validate_same_filesystem for cross-filesystem detection

  • Added _durable_rename for fsync-backed atomic renames

  • Added render_ledger_manifest and render_ledger_local_config for pure TOML rendering

  • Added strict plan-structure validation (_validate_plan_structure) for migration_id, policies, strategies, kinds

  • Added stage/backup collision detection in _check_path_overlaps

  • Added source fingerprint population during planning

Changed

  • Changed file fingerprints (sha256-file-v1) to be path-independent (content hash only, no filename)

  • Changed fingerprint failures to fail closed: state=’invalid’ instead of ‘owned’ with missing fingerprint

  • Changed config inspection to check parent binding even when file is absent

  • Changed noop-if-exact to compare against expected_target_fingerprint (not before-state)

  • Changed replace-owned to use expected_before.fingerprint for before-state validation

  • Changed executor to call validate_storage_migration_plan before first journal write

Fixed

  • Fixed fail-open validation where fingerprint errors allowed owned+replaceable state

  • Fixed missing config file bypassing foreign parent detection

  • Fixed unknown destination policies/strategies falling through to default action

[0.5.0] - 2026-07-17

Added

  • BREAKING: Added a schema-3 storage model with derived paths, binding markers, TOML ownership, and migration

Changed

  • Documented per-ledger sibling storage paths and shared project UUID under one root

[0.5.1] - 2026-07-27

Changed

  • Classified incomplete migration recovery as manual intervention (STORAGE_MIGRATION_MANUAL_INTERVENTION_REQUIRED)

  • Disabled explicit mode=move execution (raises STORAGE_MIGRATION_MOVE_DISABLED)

  • Fixed codecov test configuration

  • Documented Ledgercore 0.5.1 migration containment strategy

  • Migrated releaseledger storage to project-local ledger directory

  • Added project badges

  • Fixed documentation typo

  • Fixed pytest configuration

  • Added tests to reproduce migration journal validation defects

Fixed

  • Fixed completed recovery to return truthful source_removed (False for schema-2 copy, None for schema-1)

  • Fixed schema-1 journal inspection to use None for unknown bindings instead of fabricating storage=project

  • Fixed migration progress metadata in schema-2 journals (items_completed, mode, verify, project_root)

  • Fixed exact migration journal binding identity round-trip (source and destination bindings persisted in schema-2 journals)

[0.2.1] - 2026-06-17

Added

  • Added shared ledger configuration helpers for locating ledger.toml files and selecting project or tool tables

Changed

  • Changed core storage and validation behavior for atomic writes, front matter, IDs, and source-tree versions

  • Documented Sphinx builds with MyST Markdown and myst-parser dependencies

[0.2.0] - 2026-06-13

Added

  • JSON Lines object storage with deterministic writing, comment support, and recoverable line-level error handling

  • SHA-256 content fingerprinting with front matter decomposition for document and metadata hashing

  • Path text normalization for Unicode escapes, punctuation, and filesystem-safe slug generation

  • FrontMatterRenderOptions with key ordering, remaining key sort control, scalar styling, and template placeholder modes

Changed

  • arc42 architecture documentation covering system context, building blocks, runtime, deployment, and quality requirements

  • Version sourcing switched to hatch-vcs for automatic version derivation from git tags

  • Version smoke test and wheel distribution validation script

  • Pre-commit formatting and test assertion fixes

Fixed

  • write_text uses write_bytes on Windows to avoid encoding issues with special characters

[0.1.0] - 2026-06-12

Added

  • Atomic text write and create primitives with fsync guarantees and temp-file safety

  • YAML front matter reader/writer with body mode control and source file iteration

  • Prefixed numeric ID formatting, parsing, and next-ID generation with configurable width and separator

  • UTF-8 text helpers including newline normalization, content hashing, and text merging

  • Validated JSON object/array loading and deterministic JSON writing with sorted keys

  • Safe relative POSIX path validation and config-relative path resolution

  • LedgerIdFormat with configurable segment support for compound IDs like prefix_segment_number

  • YAML store module with validated object/array loading and atomic writing

  • Cross-ledger resource reference system with canonical, file-safe, and local ref formats

Changed

  • atomic_create_text uses O_CREAT|O_EXCL for race-safe file creation instead of check-then-create

  • API reference documentation for all public modules

  • Usage examples for front matter, resource references, and storage operations

  • CI workflows for testing, coverage, and PyPI publishing