Faithful port of the GOLD versioned engine (no reinvention). Replaces the mtime full-copy-into-per-run-dirs remnant with ONE persistent store (.backup_system/versioned/) using GOLD's file-folder packaging: <parent>/<name>/<name> current (copy2, mtime preserved) <parent>/<name>/<stem>-baseline-<date>.<ext> first-run full copy, never touched <parent>/<name>/<name>_diffs/<name>_v<old-mtime>.diff unified-diff per change Patrick's laws, all enforced + tested: - versioned backs up the EXACT same files as snapshot (same scan/ignore; all.py shares one scan between modes) - first versioned run = baseline snapshot of that state - append-only: versioned NEVER deletes (cleanup stays snapshot-only) - change detection is LEDGER-FREE (source mtime vs store-current mtime) — removes versioned's use of shared timestamps.json, killing the snapshot-starves-versioned regression New diff/restore.py (list_versions + restore_file); diff/generator.py wired (binary detection, DIFF include/ignore patterns); path/builder.py file-folder versioned branch (root/ wrap, >50-char hash shortening). +15 tests -> 125. Verified by artifact (audit 100% all 36, pytest 125, ruff clean) + LIVE end-to-end: snapshot-first-then-versioned baselines all 5 files (starvation dead) -> edit -> diff with old-mtime timestamp + current overwritten + baseline intact -> source delete -> versioned store untouched while snapshot mirror-deletes -> restore round-trip byte-identical. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Handlers
Implementation details for BACKUP.
Handlers do the actual work. They are called by modules, never directly by the CLI. Keep business logic in modules, implementation in handlers.