Files
ngit-grasp/tests/common
DanConwayDev 9e9cc926eb fix(sync): recover expired invitation dependencies
Reciprocal invitation bootstrap can take longer than the rejected-event hot-cache window. Once the full inviter announcement or state expired, invalidating its cold marker discarded the only exact ID while completed historic filters had no reason to fetch it again. The selected GRASP server then kept an empty bare repository and the client remained at 0/N indefinitely.

Keep dependency-resolvable IDs indexed until policy processing succeeds, and refetch only those exact IDs in bounded background requests across the complete maintainer relay chain. Process announcements before dependent state, preserve failed attempts for throttled retries, and avoid holding the sync manager lock during network waits.

The regression now observes the actual rejection, waits beyond a shortened cache lifetime, and proves the reciprocal announcement still discovers and copies the existing repository without claiming another maintainer's clone URL.
2026-07-26 00:52:43 +01:00
..