Skip to content

feat(sync): first-class sneakernet export/import via USB/SD (E-09)#46

Open
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/sneakernet-sync-e-09
Open

feat(sync): first-class sneakernet export/import via USB/SD (E-09)#46
ChelseaKR wants to merge 1 commit into
mainfrom
roadmap/sneakernet-sync-e-09

Conversation

@ChelseaKR

Copy link
Copy Markdown
Owner

Surface the existing end-to-end-encrypted CRDT delta as a file-based
sneakernet workflow, so a tenant on a metered plan or in a no-Wi-Fi room
can keep a case in step by handing over a small encrypted file in person
— no relay, no data plan, no account.

  • sync.py: add suggested_delta_filename(peer) -> habitable-delta-<peerfp8>.hsync,
    a stable, leak-free default name (the file is sealed regardless of its name).
  • cli.py: add sync-export (--peer, --out; reuses export_message) and
    sync-import (one or more file paths, so a USB folder glob works; reuses
    import_messages). Import is not silent — it reports merges/captures like
    sync — and errors cleanly with a non-zero exit when nothing in the files
    was sealed to this device, or on a forged/undecryptable blob (SyncError).
  • docs: new docs/sneakernet-sync.md (identity exchange, export to stick,
    hand-over, import + reply, "a lost stick leaks nothing"), linked from
    README.md and docs/setup-guide.md.
  • tests: tests/test_cli_sync_file.py drives the real CLI end to end —
    A -> file -> B roundtrip (merges/captures), wrong-recipient and forged-blob
    clean errors, idempotent re-import (0 new captures), and the fp8 filename.
  • roadmap: mark E-09 shipped in the synthetic-persona backlog and the
    execution-log ledger.

Co-Authored-By: Claude Fable 5 noreply@anthropic.com


Backfill PR for a completed roadmap item (roadmap/sneakernet-sync-e-09, 1 commit(s) over main). Part of the portfolio roadmap batch.

Surface the existing end-to-end-encrypted CRDT delta as a file-based
sneakernet workflow, so a tenant on a metered plan or in a no-Wi-Fi room
can keep a case in step by handing over a small encrypted file in person
— no relay, no data plan, no account.

- sync.py: add `suggested_delta_filename(peer)` -> `habitable-delta-<peerfp8>.hsync`,
  a stable, leak-free default name (the file is sealed regardless of its name).
- cli.py: add `sync-export` (--peer, --out; reuses `export_message`) and
  `sync-import` (one or more file paths, so a USB folder glob works; reuses
  `import_messages`). Import is not silent — it reports merges/captures like
  `sync` — and errors cleanly with a non-zero exit when nothing in the files
  was sealed to this device, or on a forged/undecryptable blob (SyncError).
- docs: new docs/sneakernet-sync.md (identity exchange, export to stick,
  hand-over, import + reply, "a lost stick leaks nothing"), linked from
  README.md and docs/setup-guide.md.
- tests: tests/test_cli_sync_file.py drives the real CLI end to end —
  A -> file -> B roundtrip (merges/captures), wrong-recipient and forged-blob
  clean errors, idempotent re-import (0 new captures), and the fp8 filename.
- roadmap: mark E-09 shipped in the synthetic-persona backlog and the
  execution-log ledger.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants