Implements tombstone merge semantics per design in bd-zvg: - Add tombstone fields to merge.Issue struct (deleted_at, deleted_by, etc.) - Add IsTombstone() and IsExpiredTombstone() helper functions - Implement tombstone-wins-unless-expired logic - Add tombstone vs tombstone merge (later deleted_at wins) - Add merge3WayWithTTL() for configurable TTL - Update mergeStatus() to handle tombstone status as safety measure Merge rule summary: | Left | Right | Condition | Result | |-----------|-----------|-------------|-----------------------| | Live | Tombstone | Not expired | Tombstone | | Live | Tombstone | Expired | Live (resurrection) | | Tombstone | Live | Not expired | Tombstone | | Tombstone | Live | Expired | Live (resurrection) | | Tombstone | Tombstone | - | Later deleted_at wins | 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
48 KiB
48 KiB