Commit Graph

12 Commits

Author SHA1 Message Date
f8829af7a8 Bundle per-file deltas into delta.tar.zst instead of loose files 2026-03-07 01:56:00 +00:00
ba67366cd6 Use numeric indices for delta filenames, document limitations
- Delta files now named 0.zst, 1.zst etc — avoids path length issues
  and ambiguous separator substitution; manifest maps index to path
- PLAN.md: document delta naming rationale
- PLAN.md: document cross-file deduplication limitation and possible
  future approaches (zstd dictionary training, content-addressing, tar stream)
2026-03-07 01:47:31 +00:00
f1faa992c9 Fix missing rename import in run.js 2026-03-07 01:42:58 +00:00
45924cbcd7 Add rsync exit code awareness + plan operation abstraction
- spawn.js: rsync() wrapper handles exit codes 0/24 as OK, 23 as fatal
- spawn.js: capture() accepts allowedExitCodes option
- run.js: all rsync calls go through rsync() wrapper
- PLAN.md: document planned operation abstraction refactor
2026-03-07 01:41:25 +00:00
ab7479e62d Phase 6: replace rm+rename with rsync --delete pend/ prev/ 2026-03-07 01:36:21 +00:00
d1c65a06d5 Replace rm -rf PEND with mkdir -p, use --delete on both rsyncs 2026-03-07 01:32:33 +00:00
e999fca352 Add --base meta-argument to set prev/pend/deltas as subdirs 2026-03-07 01:30:06 +00:00
96e3024991 Implement full run pipeline
- Phase 3: rsync with --itemize-changes captured, parsed into change list
- Phase 4: per-file zstd deltas written to DELTAS/tmp/N/files/
- Phase 5: manifest.json written, atomic rename tmp/N → N
- Phase 6: PEND promoted to PREV via rm+rename
- Dry-run prints all steps without executing
2026-03-07 01:08:30 +00:00
30b90193d7 Add capture() to spawn, add rsync itemize parser 2026-03-07 01:07:51 +00:00
84801a7971 Update plan: use rsync --itemize-changes for change detection, no dir walk 2026-03-07 01:07:21 +00:00
33bd288f9e Initial project outline
- package.json (ESM, bin entry)
- bin/delta-backup.js — entrypoint
- lib/args.js — CLI arg parsing via Node parseArgs
- lib/config.js — config file merging + required path guards
- lib/spawn.js — safe process spawning (no shell strings)
- lib/state.js — sequence number + phase state management
- lib/backends/zstd.js — zstd delta backend
- lib/backends/index.js — backend registry
- lib/commands/run.js — full run skeleton (phases 1-3 wired, 4-6 stubbed)
- lib/commands/status.js — status command
2026-03-07 01:05:46 +00:00
2fbdde541a Add planning document 2026-03-07 01:04:14 +00:00