Claude: changes for issue #105 #106
No reviewers
Labels
No labels
breaking-change
bug
documentation
duplicate
enhancement
good first issue
help wanted
performance
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/ATProto.NET!106
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/issue-105"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #105.
🤖 Reviewing this PR — follow along in the action run; the reply will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the task runs.
✅ Verdict: approve — no blocking issues found.
Solid fix for issue #105.
SimpleSpaceAuthorityStorecorrectly bridges the two stores by reading existence/deletion fromISimpleSpaceStore(viaGetSpaceAsync) while keeping the writer set and notification registrations in the wrapped inner store — this exactly mirrors theGranted/SpaceDeleted/SpaceNotFoundsemantics already implemented byInMemorySpaceAuthorityStore.GetSpaceStateAsyncandEfCoreSpaceAuthorityStore<T>.GetSpaceStateAsync, so no behavioral drift between the wrapped and unwrapped cases.The
AddSpaceAuthority<TStore>registration now resolves the wrap lazily inside theISpaceAuthorityStorefactory (checkingsp.GetService<ISimpleSpaceStore>()at resolution time), which correctly handles either registration order — verified against the two newSpaceStoreRegistrationTestscases.TryAddSingletonsemantics mean a caller-suppliedISpaceAuthorityStoreregistered before this call is left untouched, matching the documented contract.InMemorySpaceStoreWarningunwraps the bridge (bridge.Inner) before checking forInMemorySpaceAuthorityStore, so the restart-data-loss warning still fires correctly when simplespace is combined with the in-memory authority store.All write-path endpoints (
listRepos,registerNotify,notifyWrite) callGetSpaceStateAsyncand check forGrantedbefore invoking any mutating method, so the bridge's straight pass-throughRecordWriteAsync/RegisterNotifyAsync(with no existence check of their own) introduces no new race or bypass — this matches the guard pattern the other two store implementations already rely on.Test coverage is thorough: bridge unit tests cover found/deleted/fall-through/not-found paths and write pass-through, and the new integration tests exercise the full HTTP flow (create via
createSpace, notify, list, delete-then-list expectingSpaceDeleted, and unknown-spaceSpaceNotFound). Docs and XML remarks were updated consistently across all four touched files. CHANGELOG entry is accurate and detailed.No correctness or security issues found.
⏱ 0m 59s · 8 turns · tokens: 38.1k in / 5.2k out (+437.3k cache-read)
📜 Full session transcript