mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-05 15:08:24 +00:00
issue: update fc4d - clarify that deletion requests should always be broadcast
This commit is contained in:
@@ -9,13 +9,17 @@
|
|||||||
|
|
||||||
## Problem Statement
|
## Problem Statement
|
||||||
|
|
||||||
When ngit-grasp runs in "deletion request disrespector" mode (`deletion_request_disrespector = true`), it accepts kind 5 (NIP-09 deletion request) events but intentionally does NOT process them. The events should be:
|
**Deletion requests (kind 5) should ALWAYS be broadcast to subscribers with matching filters, regardless of whether the relay honors the deletion.**
|
||||||
|
|
||||||
|
When ngit-grasp runs in "deletion request disrespector" mode (`deletion_request_disrespector = true`), it accepts kind 5 (NIP-09 deletion request) events but intentionally does NOT process them (doesn't delete the target events). However, the deletion request events themselves MUST be:
|
||||||
|
|
||||||
1. **Stored in the database** (for historical record)
|
1. **Stored in the database** (for historical record)
|
||||||
2. **Broadcast to active WebSocket subscribers** with matching filters (standard relay behavior)
|
2. **Broadcast to active WebSocket subscribers** with matching filters (standard relay behavior)
|
||||||
|
|
||||||
**Current uncertainty:** We need to verify that rust-nostr's `nostr-relay-builder` actually broadcasts kind 5 events to active subscribers when `WritePolicyResult::Accept` is returned from the WritePolicy.
|
**Current uncertainty:** We need to verify that rust-nostr's `nostr-relay-builder` actually broadcasts kind 5 events to active subscribers when `WritePolicyResult::Accept` is returned from the WritePolicy.
|
||||||
|
|
||||||
|
**Expected behavior:** Deletion requests are events like any other. Whether a relay chooses to honor the deletion is a separate concern from whether it broadcasts the deletion request event to subscribers.
|
||||||
|
|
||||||
### Why This Matters
|
### Why This Matters
|
||||||
|
|
||||||
**Archive relay use case:**
|
**Archive relay use case:**
|
||||||
@@ -94,27 +98,20 @@ If rust-nostr is accidentally not broadcasting kind 5 events when `WritePolicyRe
|
|||||||
- Accepted events should always be broadcast to matching subscribers
|
- Accepted events should always be broadcast to matching subscribers
|
||||||
- This is standard relay behavior regardless of event kind
|
- This is standard relay behavior regardless of event kind
|
||||||
|
|
||||||
### Option 2: Add Configuration (if it's intentional)
|
### Option 2: Fix Intentional Behavior (if it's by design)
|
||||||
|
|
||||||
If rust-nostr intentionally doesn't broadcast kind 5 events:
|
If rust-nostr intentionally doesn't broadcast kind 5 events:
|
||||||
|
|
||||||
**Change:** Add configuration option to control kind 5 broadcast behavior
|
**Change:** Remove special-casing of kind 5 events - they should follow standard event flow
|
||||||
|
|
||||||
```rust
|
|
||||||
pub struct RelayOptions {
|
|
||||||
// ... existing fields ...
|
|
||||||
|
|
||||||
/// Broadcast deletion requests (kind 5) to subscribers
|
|
||||||
/// When false, kind 5 events are saved but not broadcast
|
|
||||||
/// Default: true (standard relay behavior)
|
|
||||||
pub broadcast_deletion_requests: bool,
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Rationale:**
|
**Rationale:**
|
||||||
- Some relays may want to suppress deletion request broadcasts
|
- **Deletion requests are events, not commands** - they should be broadcast like any other event
|
||||||
- Archive relays need full transparency (broadcast everything)
|
- **Separation of concerns:** Broadcasting events vs honoring deletions are separate decisions
|
||||||
- Configuration provides flexibility for different relay policies
|
- **Standard relay behavior:** All accepted events should be broadcast to matching subscribers
|
||||||
|
- **No configuration needed:** There's no legitimate reason to suppress deletion request broadcasts
|
||||||
|
- **Transparency:** Clients should be able to see deletion requests regardless of relay policy
|
||||||
|
|
||||||
|
**Strong position:** We should NOT add a configuration option to suppress broadcasts. Deletion requests are events and should always be broadcast. The relay's choice to honor or ignore the deletion is orthogonal to broadcasting the event.
|
||||||
|
|
||||||
### Option 3: No Change Needed (if configurable)
|
### Option 3: No Change Needed (if configurable)
|
||||||
|
|
||||||
@@ -183,6 +180,13 @@ If rust-nostr already has a way to control this behavior:
|
|||||||
- **Uncertainty:** Need to verify this pattern applies to kind 5 events
|
- **Uncertainty:** Need to verify this pattern applies to kind 5 events
|
||||||
- **Next:** Investigate current behavior with test client, then examine rust-nostr source
|
- **Next:** Investigate current behavior with test client, then examine rust-nostr source
|
||||||
|
|
||||||
|
### 2026-01-15 [Session 10:15]
|
||||||
|
- **Position clarified:** Deletion requests should ALWAYS be broadcast
|
||||||
|
- **Rationale:** Deletion requests are events, not commands - broadcasting is separate from honoring
|
||||||
|
- **Updated issue:** Strengthened stance against configuration options for suppressing broadcasts
|
||||||
|
- **Key principle:** Separation of concerns - broadcasting events vs processing deletions are orthogonal
|
||||||
|
- **Next:** Test current behavior, then prepare PR if needed (no configuration option, just fix)
|
||||||
|
|
||||||
## Notes
|
## Notes
|
||||||
|
|
||||||
**Key insight from user:**
|
**Key insight from user:**
|
||||||
|
|||||||
Reference in New Issue
Block a user