4 Commits
Author SHA1 Message Date
Hanzo AI 8918348dd6 zapdb: swap minio-go/v7 → hanzos3/go-sdk v1.0.2
Canonical S3 SDK across the stack is the Hanzo S3 fork at
github.com/hanzos3/go-sdk (package `s3`, not `minio`). The fork
already had `module github.com/hanzos3/go-sdk` and `package s3`
landed on its `main` branch (5c5ecda); tagged v1.0.2 with the
Go 1.26.3 security bump on top of v1.0.1.

Replicator changes:
- import: `s3 "github.com/hanzos3/go-sdk"` (alias for clarity since
  package name `s3` differs from last path segment `go-sdk`)
- field `Replicator.s3` → `Replicator.cli` so the field name no
  longer shadows the package qualifier in struct literals
- all `minio.X` → `s3.X` (Client, New, Options, PutObject,
  GetObject, ListObjects, *Options types)

No behavioral changes. All Replicator tests pass.
2026-06-03 10:04:07 -07:00
Hanzo AI 2f6f0fb9de fix: add streaming TODO for memory-buffered backup in Replicator
Incremental and Snapshot methods buffer the entire backup in a
bytes.Buffer before encrypting and uploading. Marked for future
io.Pipe streaming conversion to avoid 3x memory overhead.
2026-04-09 18:59:17 -07:00
Hanzo AI 9a96d340a1 feat: E2E encrypted streaming replication to S3 via luxfi/age
- replicate.go: Replicator with Start/Stop, Incremental, Snapshot, Restore
- ZAP binary format (NOT protobuf) — .zap/.zap.age extensions
- Fixed stale "protobuf-encoded" comments in backup.go
- Age encryption (X25519, upgradeable to X-Wing/ML-KEM-768)
- S3 via minio-go/v7 (works with hanzoai/s3, AWS, GCS, R2)
- S3 path: {prefix}/{service}/{pod}/{version}.zap.age
- E2E test: 100 keys → full backup → 50 more → incremental → encrypt → restore → verify 150 keys
- 6 tests, all pass

Compatible with hanzoai/replicate (SQLite) for the full encryption stack.
2026-04-09 17:46:23 -07:00
Hanzo AI a9f86e5805 feat: encrypted streaming replication to S3 via age (luxfi/age)
Continuous incremental backup with age encryption.
- ReplicatorConfig: S3 endpoint, bucket, age keys, intervals
- Incremental: db.Backup(sinceVersion) -> age.Encrypt -> S3 PutObject
- Snapshot: full backup every hour (configurable)
- Restore: S3 GetObject -> age.Decrypt -> db.Load
- Compatible with minio-go for any S3-compatible storage
2026-04-09 17:41:40 -07:00