Resolve more pre-1.0 spec gaps - #122
Open
maximmaxim345 wants to merge 12 commits into
Open
Conversation
maximmaxim345
force-pushed
the
feat/split-readme-source
branch
from
July 21, 2026 08:46
c395fd2 to
9c7ea2b
Compare
maximmaxim345
force-pushed
the
fix/remaining-spec-gaps
branch
from
July 21, 2026 08:56
f534ea4 to
4308bde
Compare
maximmaxim345
force-pushed
the
feat/split-readme-source
branch
from
July 21, 2026 11:39
9c7ea2b to
ea7dfce
Compare
maximmaxim345
force-pushed
the
fix/remaining-spec-gaps
branch
from
July 21, 2026 12:10
a99f6ce to
228b277
Compare
maximmaxim345
changed the base branch from
feat/split-readme-source
to
docs/reorg-readme-sections
July 21, 2026 12:12
maximmaxim345
marked this pull request as ready for review
July 21, 2026 12:21
maximmaxim345
force-pushed
the
docs/reorg-readme-sections
branch
from
July 21, 2026 13:40
e16b6b7 to
81cda95
Compare
Clarifications and fixes across the role definitions (player, source, controller, metadata, artwork, visualizer) and the preamble: codec framing, source format and trust rules, group volume/mute for mixed and player-less groups, artwork channel and lateness semantics, metadata clock domain, normative-language boilerplate, and role-versioning/binary-ID notes. Core-file changes (connection, messaging, pairing, management) are not included here and land separately.
Found while implementing the source role.
maximmaxim345
force-pushed
the
fix/remaining-spec-gaps
branch
from
July 21, 2026 15:03
228b277 to
75f2cb5
Compare
arturpragacz
requested changes
Jul 22, 2026
| - `pin_length_unacceptable` (client) - the `pin_length` in [`server/pair-init`](#server--client-serverpair-init) is below the client's `min_pin_length` or outside the 4–12 range | ||
| - `pin_mismatch` (client or server) - PAKE key-confirmation failed, or (in dynamic PIN pairing) the PIN binding check failed | ||
| - `user_cancelled` (client or server) - operator aborted the pairing | ||
| - `user_cancelled` (client) - operator aborted the pairing through a local UI |
Contributor
There was a problem hiding this comment.
Why did you remove or server here?
Member
Author
There was a problem hiding this comment.
I dropped it since this PR also introduces the cancelling server/activate ("A server MAY send such a cancelling server/activate at any point during a pairing attempt", deliberately not touching the lockout counter), so the server has its own cancel path and user_cancelled (server) would be a second overlapping way to do the same thing. Happy to restore it if you see a case the server/activate route doesn't cover.
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.
Resolves a batch of pre-1.0 ambiguities across the spec.
ws://transport, discovery name precedence, provisional connection caps, prologue hashing,psk_iduniqueness across PSK categories (collisions rejected asalready_exists), and a device-specific pre-provisioned fallback record.version/suitetyping, re-handshake framing and key-swap boundary, required role support objects andsupported_pair_methods, per-role trust folded into the centralserver/activaterules, state merge depth and initial full-state baselines, andclient/goodbyereason cleanup.start/stop, clarify per-connection streaming state, chunks in flight after a stop, capture timestamps under encoder delay, chunk duration bounds and stall backlog, and rate estimation from the delivered sample stream.Breaking: the group volume/mute formula, which fixes edge cases for groups with no volume- or mute-capable members. Breaking for servers only.
Three
client/helloandclient/staterules are formally new MUSTs but match what existing implementations already do, so they carry no practical adoption cost: a role's support object (e.g.player@v1_support) is now required whenever that role version is listed insupported_roles,supported_pair_methodsis now required (it can never be legitimately absent, every client implements at least Pairing PSK), and clients with only display stream roles (artwork,visualizer) now also send the initialclient/state.