Files
ngit-grasp/tests
DanConwayDev b7f03b8c2e feat: Implement cascade deletion for all NIP-34 event types
Add event dependency tracking and cascade deletion:
- Query all events referencing deleted announcements (via 'a' tags)
- Recursively find dependent events via 'e' tags (PRs, issues, patches, status)
- Move deleted events to holding database with metadata
- Simple cascade algorithm for single-maintainer repositories
- Atomic database migration operations

Cascade delete strategy:
- Delete ALL dependent events when announcement is deleted
- Matches user expectation of "delete everything"
- Recovery available via holding database during retention period
- Archival relays protect community work via disrespector mode

Comprehensive event type support:
- Patches (1617) - tag repos via 'a'
- Issues (1621) - tag repos via 'a'
- Issue status (1630) - tag issues via 'e'
- Patch status (1632) - tag patches via 'e'
- Repository status (1633) - tag repos via 'a'
- PR events (1619, 1631) - tested in recovery tests with real git data

Tests: 61 integration tests covering:
- Disrespector mode behavior (6 tests)
  - Holding DB creation/absence based on config
  - Both memory and LMDB backends
  - Config environment variable parsing
- Cascade deletion and holding DB migration (6 tests)
  - Dependent event discovery (a/e tags)
  - Metadata preservation
  - Nested dependencies
  - Short retention periods for testing
- Deletion request validation (8 tests)
  - Valid deletions (e tags, a tags)
  - Rejection cases (no tags, author mismatch, invalid format)
  - Edge cases (nonexistent events, multiple deletions, mixed tags)
- All NIP-34 event types (41 tests)
  - Patches cascade delete
  - Issues cascade delete
  - Issue status cascade delete
  - Patch status cascade delete
  - Repository status cascade delete
  - Mixed event types comprehensive scenario
  - PR events tested in recovery tests (require real git data)
2026-01-15 10:33:37 +00:00
..
2026-01-09 19:58:41 +00:00
2026-01-09 19:58:41 +00:00