Implements Johan's design: - Primary POP (e.g., Calgary) replicates writes to Backup POP (e.g., Zurich) - Backup serves READ-ONLY traffic when primary fails - Same wire format preserved for replication - Async, non-blocking replication with queue + retry Database Schema: - Added replication_dirty BOOLEAN column to entries table - Index idx_entries_dirty for fast dirty entry lookup - EntryMarkDirty() - mark entry needing replication - EntryMarkReplicated() - clear dirty flag on ACK - EntryListDirty() - get pending entries (fast path) Commercial-Only Files: - edition/replication.go - core replication queue/worker - edition/backup_mode.go - backup mode detection, write rejection - edition/commercial.go - wire up IsBackupMode, IsBackupRequest Backup Mode: - CLAVITOR_BACKUP_MODE env var sets backup mode - BackupModeMiddleware rejects writes with 503 - X-Primary-Location header tells client where primary is - IsBackupMode() and IsBackupRequest() edition functions Community: - No replication functionality (privacy-first, single-node) - IsBackupMode() always returns false - StartReplication() is no-op Documentation: - SPEC-replication.md - full design specification |
||
|---|---|---|
| .. | ||
| .opencode | ||
| build | ||
| src | ||
| types | ||
| vendor | ||
| .clangd | ||
| CLAUDE.md | ||
| Makefile | ||
| OpenCode.md | ||
| clavitor-cli | ||
| jsconfig.json | ||
| skill.md | ||