feat: sync the public Lexicons with upstream main #215
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
5 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Grandiras/ATProto.NET!215
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "issue-210-lexicon-sync"
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 #210.
Syncs the SDK with bluesky-social/atproto
mainata7c8604d(2026-10-02); the vendored snapshot and its README pin are refreshed.site.standard.*is unchanged (all 8 record CIDs match).Added
sinceonGetTimelineAsync/GetListFeedAsync, withFeedResponse.StartCursor(returned by those two only);sortonGetQuotesAsync;FeedViewPost.OpThreadPostIndex/OpThreadPostCount(upstream #5493, #5552, #5540).tools.ozone.inboxasOzoneClient.Inbox:AppealActionedSubjectAsyncand its views, including the closedAppealActionunion (#5459).RecommendedLabelson the queue view and on create/update;ConflictingQueueis documented onUpdateQueueAsync(#5459).LiveStats : QueueStatsnow that upstream'sliveStatshas diverged (#5362, #5459).Breaking
The new optional parameters sit before
limit, as CONTRIBUTING's parameter order asks, so positionallimit/cursorarguments must be named.GetLiveStatsResponse.Statsis typedLiveStats. Both are listed in the newdocs/migrating-to-0.8.md.Not included
app.bsky.notification.getGroupedNotificationsis marked "UNSTABLE – DO NOT USE THIS ENDPOINT WHILE THIS NOTE IS HERE" in its own Lexicon, so it is not modelled; the drift README records why.Hardening
Upstream #5584 rejects MSTs that reference one node twice. A new test,
PartialMerkleSearchTreeTests.Load_SameNodeReferencedTwice_ThrowsFormatException, shows that the SDK's key-range checks already reject this. #5582 and #5583 need no change.Build has 0 warnings, including the doc samples; 4971 unit tests pass and the drift test is green.
🤖 Generated with Claude Code
🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
🤖 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.
This sync looks correct and complete. I could not grep the repo for other positional callers of the changed methods, because the shell tool failed twice. The PR reports a 0-warning build including the doc samples, which would catch any remaining positional callers.
since,startCursor,sort,opThreadPost*,recommendedLabels, thetools.ozone.inboxmodels and the new report-stat fields.limit, as CONTRIBUTING asks. The internal callers (EnumerateTimelineAsyncand the BlazorFeedView) are updated.AppealActionis marked as a closed union, matching"closed": true.OpenUnionTestsis updated to expect it.LiveStats : QueueStatskeeps source compatibility for readers. ThePublicAPI.Unshipped.txtremovals and additions are consistent with the signature changes.docs/migrating-to-0.8.mdis linked from the docs index.Load_SameNodeReferencedTwice_ThrowsFormatExceptiontest covers the upstream #5584 hardening.Minor nits:
sinceguard entries inTypedIdentifierGuardTestsare reasonable. The same opaque-string reasoning would apply to a futuresinceelsewhere.🧠 claude-sonnet-5-5 · ⏱ 0m 31s · 4 turns · tokens: 56.1k in / 1.2k out (+147.5k cache-read)
📜 Full session transcript
✅ Verdict: approve — no blocking issues found.
Good to merge. This is a careful sync and I found no correctness or API problems.
What I checked:
a7c8604d876a…, "Version packages (#5566)", 2026-10-02) and I diffed the vendored files against it byte-for-byte:getTimeline,getListFeed,getQuotes,feed/defs,queue/{create,update}Queue,queue/defs,report/defs, and the newtools.ozone.inbox/{defs,appealActionedSubject}andgetGroupedNotificationsall match exactly. The only vendored tree differences from upstream are the documented ones (site.standard files fetched from the network;com.germnetwork.*and the internal snapshot file unused by the SDK).AppealActionunion'sJsonDerivedTypediscriminators correctly expand the Lexicon's local refs (#actionRef/#labelRef/#takedownRef) totools.ozone.inbox.appealActionedSubject#…;SubjectView/EnforcementView/AppealView/ActionViewrequired fields match the Lexicon exactly and resolve by convention in the drift test; reusing the openModerationSubjectunion is right since the subject union is open and has a documented unknown-variant fallback.PublicAPI.Shippedbaselines unchanged with correctUnshippedadd/remove entries; theFeedView.razorpositional call was fixed; all other call sites I grepped (samples, integration tests, docs) already use named arguments.sinceis correctly exempted in the typed-identifier guard.LiveStatsreads correctly: it inherits exactly the counts liveStats shares withqueueStatsand declares the ten new live-only fields, so the drift tests hold (GetPropertiesincludes inherited names).docs/migrating-to-0.8.mdlines up with the actual signatures, and the changelog/index links are correct.Minor, non-blocking: a few XML doc comments now trail upstream's reworded semantics —
HistoricalStats.ActionedCount/AvgHandlingTimeSec/ActionRate(upstream now describes them as closure-breakdown counts and assignment-to-close handling time, not creation-to-close), and the commentsLiveStatsinherits fromQueueStats(e.g.InboundCount's "last 24 hours" — live stats are now the current UTC day, per the updatedGetLiveStatsAsyncsummary). Worth a follow-up wording pass whenever convenient; the JSON names are all correct.⏱ 2m 50s · 41 steps · $0.0981 · tokens: 184.2k in / 3.7k out (+2089.5k cache-read) · Go: 5h 1% · wk 1% · mo 91%
📜 Full session transcript
🤖 Reviewing this PR — the review will link the full session transcript.
📜 Live transcript — updating every ~5 minutes while the review runs.
🤖 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.
This is a re-review. My earlier pass raised no blocking issues, only minor nits, so there is nothing to confirm as resolved. I re-read the diff but did not run the build or the tests.
since,startCursor,sort,opThreadPost*,recommendedLabels, the inbox models with the closedAppealActionunion, and the new historical and live stats.limit, as CONTRIBUTING asks. The internal callers (EnumerateTimelineAsyncand the BlazorFeedView) are updated.PublicAPI.Unshipped.txtlists the added and removed signatures, the CHANGELOG has a breaking entry with a migration note, anddocs/migrating-to-0.8.mdis linked fromdocs/index.md.Minor, non-blocking: some CHANGELOG bullets run past the roughly 300-character guideline.
🧠 claude-sonnet-5-5 · ⏱ 0m 4s · 2 turns · tokens: 56.2k in / 455 out (+12.2k cache-read)
📜 Full session transcript
✅ Verdict: approve — no blocking issues found.
Re-review: the wording drift I flagged last pass is resolved —
HistoricalStats.ActionedCount,ActionRateandAvgHandlingTimeSecnow describe the upstream closure-breakdown / assignment-to-close semantics, and the remaining "last 24 hours" onQueueStats.InboundCountmatches thequeueStatsLexicon verbatim, so it is correct as-is.Also re-checked the mechanics that the new commits touch:
XrpcParams.Adddrops null values, so the optionalsince/sort/recommendedLabelsparameters never emit empty query entries or bake empty strings into JSON; the internalEnumerateTimelineAsyncand BlazorFeedViewcall sites pass arguments positionally correctly for the new signatures; the closedAppealActionunion ([AtProtoUnion(Closed = true)]) matches the two pre-existing closed unions' pattern; andModerationSubjectis an open union with anUnknownModerationSubjectfallback, which is the right reuse forappealActionedSubject's open subject union. PublicAPIUnshippedadd/remove entries stay consistent with the shipped baseline.No blocking issues — good to merge.
⏱ 1m 35s · 14 steps · $0.0235 · tokens: 54.3k in / 1.3k out (+468.6k cache-read) · Go: 5h 2% · wk 1% · mo 91%
📜 Full session transcript