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