Add WithMedium option so Store archives and Import/Export helpers can
route through any io.Medium implementation (local, memory, S3, cube,
sftp) instead of the raw filesystem. The Medium transport is optional —
when unset, existing filesystem behaviour is preserved.
- medium.go exposes WithMedium, Import, and Export helpers plus a small
Medium interface that any io.Medium satisfies structurally
- Compact honours the installed Medium for archive writes, falling back
to the local filesystem when nil
- StoreConfig.Medium round-trips through Config()/WithMedium so callers
can inspect and override the transport
- medium_test.go covers the happy-path JSONL/CSV/JSON imports, JSON and
JSONL exports, nil-argument validation, missing-file errors, and the
Compact medium route
Co-Authored-By: Virgil <virgil@lethean.io>
Replace fmt, errors, strings, path/filepath with Core primitives
across 8 files. Keep strings for SplitSeq/FieldsSeq/Builder/Repeat.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update module path to dappco.re/go/core/store, require dappco.re/go/core/log v0.1.0,
and update all Go import paths and documentation references.
Co-Authored-By: Virgil <virgil@lethean.io>
Replace all fmt.Errorf and errors.New calls in production code
(store.go, scope.go) with structured coreerr.E() from go-log.
Sentinel errors (ErrNotFound, ErrQuotaExceeded) are now *log.Err
values; errors.Is() chains continue to work via Unwrap(). Update
four coverage_test.go assertions to match the new op-prefixed
error format from the All() iterator.
Co-Authored-By: Virgil <virgil@lethean.io>