mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-08-09 08:04:45 +00:00
Bulk NDJSON import/export as first-class geode subcommands, mirroring `strfry import` / `strfry export` (one JSON event per line — the interchange format for seeding a relay, migrating between relays, or taking a backup): geode import [--db …] [--no-verify] [FILE…] # files, or stdin when none geode export [--db …] # NDJSON to stdout Both stream — memory is bounded to one batch (import) / one event (export), so a multi-million-event corpus round-trips in roughly constant memory. `import` verifies signatures by default (same `Event.verify()` the relay's VerifyPolicy uses), upholding the relay's verify-by-default stance rather than trusting the file; `--no-verify` is the trusted-input escape hatch. Verb dispatch is backward-compatible: a bare `geode --port …` (no verb) still serves. This makes the benchmark-only `CorpusServerMain` redundant — a corpus source is now just `geode import` into a DB, then a normal `geode` serve — so it's deleted, removing benchmark-only code from the production geode artifact (the question that started this). The 1M sync-throughput plan is updated to describe sources via `geode import` + serve. Also fixes a native-target CI break: MergeQueryCorrectnessTest used the deprecated `String(CharArray)` (error-level on Kotlin/Native) — switched to `CharArray.concatToString()`. Verified end-to-end through the packaged `geode` binary: import (file + stdin, --no-verify), export round-trip, and verify-on rejecting bad signatures. ImportExportTest covers the counts, duplicate handling, malformed-line skipping, and verify accepting a freshly-signed event while rejecting bad sigs. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012EZeWww5TJnzBZKPoc6mvU