upleb.uk

Public git repos — served from a NIP-34 GRASP relay at git.upleb.uk

summaryrefslogtreecommitdiff
path: root/src/nostr/policy
diff options
context:
space:
mode:
authorDanConwayDev <DanConwayDev@protonmail.com>2026-02-17 11:43:40 +0000
committerDanConwayDev <DanConwayDev@protonmail.com>2026-02-17 11:43:40 +0000
commitcad58fccae7ed84bb033e56de0f1323b714a854d (patch)
tree9635381a3a8c35d8e4f83f2686304874b1523433 /src/nostr/policy
parentefbbcc49ae8e8f598a24c939b35ad9cda0541663 (diff)
docs: clarify why fetch_repository_data excludes purgatory
Add comments explaining that PR event processing (both incoming and purgatory) should only use database announcements, not purgatory ones. This is intentional because: - Incoming PR events should only be accepted for validated announcements - Purgatory PR events should only be released when announcement is promoted - This prevents accepting PR events for announcements that fail validation Differs from state event processing which uses fetch_repository_data_with_purgatory because state events check authorization without releasing from purgatory.
Diffstat (limited to 'src/nostr/policy')
-rw-r--r--src/nostr/policy/pr_event.rs8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/nostr/policy/pr_event.rs b/src/nostr/policy/pr_event.rs
index 00e09c3..072e445 100644
--- a/src/nostr/policy/pr_event.rs
+++ b/src/nostr/policy/pr_event.rs
@@ -127,6 +127,10 @@ impl PrEventPolicy {
127 .ok_or_else(|| anyhow::anyhow!("No identifier in PR event"))?; 127 .ok_or_else(|| anyhow::anyhow!("No identifier in PR event"))?;
128 128
129 // Fetch repository data 129 // Fetch repository data
130 // NOTE: Only fetch from database, NOT purgatory. Incoming PR events should
131 // only be accepted for announcements that have been promoted (validated).
132 // If the announcement is still in purgatory, the PR event should also go
133 // to purgatory and wait for the announcement to be promoted.
130 let db_repo_data = fetch_repository_data(&self.ctx.database, &identifier).await?; 134 let db_repo_data = fetch_repository_data(&self.ctx.database, &identifier).await?;
131 135
132 // Extract owner pubkey from source repo path 136 // Extract owner pubkey from source repo path
@@ -203,6 +207,10 @@ impl PrEventPolicy {
203 let identifier = parts[2]; 207 let identifier = parts[2];
204 208
205 // 2. Fetch repo data 209 // 2. Fetch repo data
210 // NOTE: Only fetch from database, NOT purgatory. Incoming PR events should
211 // only be accepted for announcements that have been promoted (validated).
212 // If the announcement is still in purgatory, the PR event should also go
213 // to purgatory and wait for the announcement to be promoted.
206 let db_repo_data = fetch_repository_data(&self.ctx.database, identifier).await?; 214 let db_repo_data = fetch_repository_data(&self.ctx.database, identifier).await?;
207 215
208 // 3. Extract list of maintainers from "a 30617:<maintainer>:<identifier>" tags 216 // 3. Extract list of maintainers from "a 30617:<maintainer>:<identifier>" tags