Summary
Epic: shuttle drive — local git-tag zips (iCloud hub) + append-only cloud upload to Google Drive, OneDrive, and Proton.
Pair with shuttle git for tagging; drive owns everything after the tag exists in git.
CLI convention (local-centric)
| Direction |
Verb |
Command |
| Repos → local store |
ingest |
shuttle drive ingest |
| Local store → cloud |
upload |
shuttle drive upload |
| Inspect local |
status · list |
compare git tags vs zips |
ingest ≈ bulk import into backup.tags_dir; upload ≈ export/send to providers.
Command model
| Command |
Role |
drive status |
Git tags vs local zips (backup.repositories) |
drive ingest |
Zip all tags → backup.tags_dir (all configured repos or one PATH) |
drive list · drive delete |
Local zip CRUD |
drive upload |
Push missing paths to cloud (append-only) |
drive sync |
Ingest all repos, then upload all enabled providers |
Legacy hidden: backup status → drive status, backup repository sync → drive ingest.
Current scaffold (shipped)
Target workflow
shuttle git tag --yes && shuttle git zip # single repo
shuttle drive sync # ingest all + upload all
# or step by step:
shuttle drive ingest
shuttle drive upload [google|onedrive|proton]
Re-run upload skips existing remote paths (append-only v1).
Child issues
Non-goals (v1)
Two-way sync, conflict resolution, remote delete, hash comparison.
Definition of done (epic)
Execution
Close children #12–#15; link PRs to this epic.
Summary
Epic:
shuttle drive— local git-tag zips (iCloud hub) + append-only cloud upload to Google Drive, OneDrive, and Proton.Pair with
shuttle gitfor tagging; drive owns everything after the tag exists in git.CLI convention (local-centric)
ingestshuttle drive ingestuploadshuttle drive uploadstatus·listingest≈ bulk import intobackup.tags_dir;upload≈ export/send to providers.Command model
drive statusbackup.repositories)drive ingestbackup.tags_dir(all configured repos or onePATH)drive list·drive deletedrive uploaddrive syncLegacy hidden:
backup status→drive status,backup repository sync→drive ingest.Current scaffold (shipped)
backup.tags_dir→ iCloudgit-tags/{repo}/{tag}.zipdrive uploadorchestration + append-only diff engineconfig/drives.yamlprovider togglesdocs/drive.md, README,scripts/drive/*.shdrive syncorchestrator (#30)Target workflow
Re-run
uploadskips existing remote paths (append-only v1).Child issues
Non-goals (v1)
Two-way sync, conflict resolution, remote delete, hash comparison.
Definition of done (epic)
drive uploadworks end-to-end per providerdrive ingest+drive uploaddocumented as daily workflowExecution
Close children #12–#15; link PRs to this epic.