Skip to content

Latest commit

 

History

History
131 lines (113 loc) · 7.85 KB

File metadata and controls

131 lines (113 loc) · 7.85 KB

Changelog

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.

Removed

  • Archived Obsolete Module: depth_canonical module superseded by ADR-019 backend architecture
    • Moved to archive/depth_canonical/ with full git history preserved
    • Replacement: src/transformation_portal/depth/backends/ (implemented in PR #906)
    • Associated tests moved to archive/depth_canonical_tests/ and archive/test_depth_canonical_yaml.py
    • See: archive/depth_canonical/ARCHIVE_README.md for migration path and rationale

Added

  • Ingest Contract v1.0.0: Audit-grade provenance and schema validation for RAW/TIFF ingest
    • Versioned Schemas: Pydantic models for ProvenanceSidecar (v1.0.0) and IngestManifest (v1.0.0)
    • Complete Metadata Extraction: exiftool integration captures all EXIF tags + groups
    • Provenance Capture: Toolchain versions, git SHA, CLI args, timestamps, host/OS metadata
    • Deterministic Output: Sorted JSON keys, stable serialization (except run_id UUID)
    • Schema Validation: Hard-fail on missing fields, type mismatches, unknown fields (drift detection)
    • Quality Firewall: 8-bit conversion detection, gamma correction detection, dtype/range validation
    • CI Enforcement: .github/workflows/ingest_contract_validation.yml gates PRs on violations
    • Atomic Writes: Temp file + rename pattern prevents corruption
    • 30 Comprehensive Tests: Schema validation, drift detection, determinism, gamma/8-bit checks
    • Exit Codes: 0=pass, 1=schema_fail, 2=8bit, 3=gamma, 4=drift, 5=other
    • Contract Documentation: docs/apex/ingest_contract.md defines binding guarantees
    • Dependencies: Added pydantic>=2.0 to core requirements
    • See: Ingest Contract v1.0.0

Fixed

  • CRITICAL: Lux Depth V3 Pipeline Bug Fixes (6 issues):
    • Fix #1: Double EXIF rotation in v2_enhance.py - Strip EXIF data after exif_transpose() to prevent viewers from rotating twice (pixels already rotated + EXIF tag says rotate again)
    • Fix #2: Dimension mismatch in preprocessing/orchestrator - Resize depth maps back to original dimensions after multiple-of-14 padding/cropping required by Depth Anything V3
    • Fix #3: Quadratic complexity in batch_stats.py - Pre-compute median once for outlier detection (O(n²) → O(n log n) for large batches)
    • Fix #4: Redundant processing in parallel mode - Pass pre-computed paths to avoid duplicate manifest reads and hash computation (~15-20% I/O reduction)
    • Fix #5: Alpha channel safety in v2_enhance.py - Resize alpha channel if V2 processing changes resolution to prevent shape mismatch crashes
    • Fix #6: Output directory trap in input_discovery.py - Explicitly exclude output_dir when scanning to prevent processing own outputs
    • Impact: Data integrity (EXIF, dimensions, alpha), performance (batch stats, parallel I/O), robustness (output exclusion)
    • Tests: 15 new regression tests, all 83 lux_depth_v3 tests passing
    • See: CRITICAL_FIXES_SUMMARY.md

Added

  • Performance Ledger v1.7 Upgrade: Major enhancement with backward compatibility

    • Optional NumPy Dependency: Pure Python fallback for environments without NumPy
    • Bootstrap Confidence Intervals: 95% CI for mean using configurable iterations (default 1000)
    • Expanded Exit Codes: 0=success, 1=regression, 2=backend_mismatch, 3=insufficient_data
    • Backend Mismatch Detection: Prevents comparing incompatible runs
    • Input Validation Bounds: DoS prevention (max 10K bootstrap iterations, min 3 samples)
    • Strict Mode: --strict flag fails on potential regressions (recommended for CI)
    • Backward Compatibility: --version deprecated but functional (use --baseline-version)
    • Enhanced Statistics: Added std_sec and bootstrap CI to baseline schema
    • Performance: NumPy mode maintains v1.0 speed, pure Python ~50x slower (acceptable for small datasets)
    • Tests: 50+ new tests (CLI integration, property-based math validation, benchmarks)
    • Migration Guide: docs/performance_ledger_v1.7_migration.md
    • See: Performance Ledger v1.7 Verdict
  • Backend Registry Integration (ADR-019): Depth backend orchestration with fallback

    • DA3Backend adapter wrapping DA3InferenceEngine for unified interface
    • DepthBackendRegistry integration in orchestrator
    • Automatic fallback to DA3 when requested backend unavailable
    • Backend selection metadata captured in manifests
    • License enforcement for research-only backends (Depth Pro)
    • CLI flags: --depth-backend {da3,depth_pro}
    • Tests: Unit tests for DA3Backend, integration tests for orchestrator
    • Docs: README updated with backend selection guide
    • See: ADR-019: Backend Registry Integration
  • Performance Ledger (ADR-023 Phase 2): Standalone tool for performance regression detection

    • Parse manifests from batch runs and compute runtime statistics
    • Compare current runs against versioned baselines
    • Detect regressions using configurable thresholds (p95 > 10%, mean > 15%, failure_rate > 0%)
    • Generate markdown reports for human review and JSON for CI integration
    • Manual baseline governance (no automated updates)
    • Tool: tools/performance_ledger.py
    • Docs: docs/performance/README.md
  • Backend Selection Truth (ADR-023 Phase 3): Enhanced transparency and debugging

    • Backend selection metadata in manifests (backend_selection field)
    • Truth-line logging on every batch run (requested vs resolved backend)
    • Fallback warnings when requested backend unavailable
    • Backward-compatible manifest schema (old manifests still parse)
    • Additive-only changes (no enforcement yet, deferred to v2.1.0)

Breaking Changes

  • Drop Python 3.10 Support: Minimum required Python version is now 3.11
    • Rationale: Align with ecosystem evolution (scikit-learn 1.8.0 dropped 3.10 support)
    • Impact: Users must upgrade to Python 3.11 or later
    • See: ADR-020: Drop Python 3.10 Support

Fixed

  • Coverage Quality Gate: Adjusted baseline threshold from 33% to 25% to reflect actual combined coverage
    • PR #832 fixed coverage artifact consolidation, revealing accurate combined coverage of 25.44%
    • Previous 33% threshold was aspirational, not historical
    • Added Coverage Improvement Plan with roadmap to 33% by Q2 2026
    • Baseline gate now prevents regression while allowing incremental improvement

Changed

  • ML Stack Upgrades: Major ML framework and dependency updates
    • torch: 2.4.1 → 2.10.0
    • torchvision: 0.19.1 → 0.25.0
    • scikit-learn: 1.7.2 → 1.8.0
    • timm: 0.6.7 → 1.0.24
    • diffusers: 0.31.0 → 0.36.0
    • transformers: 4.53.0 → 4.57.6
    • Benefits: Latest features, performance improvements, security fixes
    • Dependencies: Requires Python >=3.11 (see PR #794)
    • Validation: Comprehensive smoke tests added for ML stack compatibility

2.0.0 - 2025-11-14

Added

  • First stable release with production-ready contracts
  • Versioned API contracts (schema-aligned payloads)
  • Preset stability taxonomy (stable / canary / experimental)
  • Service hardening with /ready readiness checks
  • Context-aware rendering workflows
  • Depth Pro integration (experimental)
  • Unified depth backend contract

Changed

  • Improved preset discovery via CLI
  • Enhanced documentation and architecture decision records

Fixed

  • Various stability and correctness improvements