mirror of
https://relay.ngit.dev/npub15qydau2hjma6ngxkl2cyar74wzyjshvl65za5k5rl69264ar2exs5cyejr/ngit-grasp.git
synced 2026-10-05 15:08:24 +00:00
Removing a pending announcement before its database save briefly exposed the previous membership graph. Concurrent reconciliation could then restore an obsolete state after the newly authorized state had aligned Git refs. Keep the announcement through a successful save and remove only the exact saved candidate. Snapshot pending announcements around the database query and merge candidates using NIP-01 ordering, so promotion and concurrent replacement cannot resurrect an older graph. Admission policy and state ordering remain unchanged. A deterministic promotion hook verifies visibility during saving, preservation of a concurrent replacement, and preference for newer database announcements. That regression, the existing invitation/state convergence integration, formatting and all-target Clippy pass. Full workspace confidence runs follow. Assisted-by: Codex (GPT-6)