Repository navigation
refactor(protocol): separate recognized and implemented capabilities - #479
Merged
Merged
Conversation
SunSi12138
marked this pull request as ready for review
September 4, 2026 13:01
SunSi12138
commented
Sep 4, 2026
SunSi12138
left a comment
Owner
Author
There was a problem hiding this comment.
Overall direction looks sound, and the minor-to-capability history matches the commits that introduced minors 1/2/3. I left two non-blocking engineering comments: one about separating protocol-known capabilities from endpoint-advertised support, and one about making the mixed-minor test scope explicit so it is not mistaken for historical wire-interoperability coverage.
github-actions
Bot
force-pushed
the
fix/401-negotiated-capability-authority
branch
from
September 4, 2026 13:22
786d8aa to
7d452a6
Compare
SunSi12138
force-pushed
the
fix/401-negotiated-capability-authority
branch
from
September 4, 2026 13:24
7d452a6 to
9d7276a
Compare
SunSi12138
marked this pull request as draft
September 4, 2026 13:39
SunSi12138
force-pushed
the
fix/401-negotiated-capability-authority
branch
from
September 4, 2026 13:52
9d7276a to
274ab3b
Compare
SunSi12138
force-pushed
the
fix/401-negotiated-capability-authority
branch
from
September 4, 2026 13:55
274ab3b to
91a6a7a
Compare
SunSi12138
marked this pull request as ready for review
September 4, 2026 13:59
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #401
Refs #397
Summary
This PR is based on
dev.devalready contained the centralProtocolV2Negotiator, immutableNegotiatedSessionOptions, andRpcSession.TryCompleteHandshake(...)publication boundary. The remaining issue #401 authority leak was narrower: endpoint implementation/advertisement was derived from the protocol-recognition set.This change:
KnownCapabilitiestoRecognizedCapabilitiesProtocolV2Negotiator.AlwaysImplementedCapabilitiesan explicit declaration rather than deriving it fromRecognizedCapabilitiesCompressionconditional on configured provider bindingsMinor/version audit on
devCurrent
devhasMinorVersion == 5andMinimumCompatibleMinorVersion == 5; minors 0–4 are outside the current wire generation. No mixed-minor capability-history table is introduced.ProtocolV2Constants/ handshake fieldsProtocolV2NegotiatorRpcSession.TryCompleteHandshakeProtocolV2PayloadCodecCapability authority split
RpcSessionProtocolRules.RecognizedCapabilities: bits understood by protocol/codec/session validationProtocolV2Negotiator.AlwaysImplementedCapabilities: capabilities explicitly implemented unconditionally by the endpointCompression: appended only when local provider bindings existNegotiatedSessionOptions.Capabilities: sole optional-feature authority after successful handshakeAdding a future bit to
RecognizedCapabilitiesalone therefore cannot make Client/Server advertise it.Validation
Staging validation on
dev@bb717ae:KnownCapabilitiesguard — passedSharpLink.UnitTestssuite — passedFormal PR CI on head
91a6a7a401ebe9e69926c3b90cec437011809727:Temporary staging workflows/scripts were never present in the PR branch, and all temporary issue-401 staging branches were deleted after validation.
The PR was merged into
devat 2026-09-04 14:04:33Z; GitHub recordsmerged_by: SunSi12138. Extended validation completed successfully on the same head/tree.