feat(streaming)!: remove host_selection/host_shuffle_seed; cycle hosts in declared order#1196
Merged
Merged
Conversation
…s in declared order The Theta Terminal cycles its FPSS host list left to right and exposes no host-ordering knob. The SDK invented a per-client fault-domain shuffle (`host_selection = "shuffled"` by default, seedable via `host_shuffle_seed`) with no terminal counterpart — and the shuffled default even contradicted the SDK's own shipped `config.default.toml`, whose comment says the client "tries each host in order". A terminal-parity SDK should dial hosts in declared order, so the shuffle and its seed are removed. Removed across every binding (Rust `StreamingConfig::host_selection` / `host_shuffle_seed`, Python `Config.streaming_host_selection` / `streaming_host_shuffle_seed`, TypeScript `Config.streamingHostSelection` / `setStreamingHostSelection` and the shuffle-seed pair, C++ and C ABI equivalents), the `HostSelectionPolicy` enum, the cross-binding parity rows, and the docs. `order_hosts` collapses to declared order with the last-known-good host promoted to the front on reconnect — the internal reconnect-stickiness resilience feature is kept, since it has no client-facing knob and matches how the terminal recovers. Breaking change to the configuration surface; host ordering is now unconditional declared order. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Why
The Theta Terminal cycles its FPSS host list left to right and exposes no host-ordering knob. The SDK invented a per-client fault-domain shuffle (
host_selection = "shuffled"by default, seedable viahost_shuffle_seed) with no terminal counterpart — and the shuffled default even contradicted the SDK's own shippedconfig.default.toml, whose comment says the client "tries each host in order". A terminal-parity SDK should dial hosts in declared order.What
Removed the two knobs and the
HostSelectionPolicyenum across the whole surface:StreamingConfig::host_selection/host_shuffle_seed, theHostSelectionPolicyenum.streaming_host_selection/streaming_host_shuffle_seed, TypeScriptstreamingHostSelection/setStreamingHostSelection+ shuffle-seed pair, C++ + C ABI equivalents — plus the generated accessors,.pyi,index.d.ts, C header.order_hostscollapses from a policy/seed shuffle to plain declared order. Kept: the last-known-good host is still promoted to the front on reconnect — internal reconnect stickiness with no client knob, matching how the terminal recovers.preferred = None(cold connect) yields declared order unchanged.parity.tomlrows, the parity-checker rename-map entries, the round-trip tests (Rust/Py/TS/C++/FFI), and the generated docs.Breaking
Removes public configuration API on every binding — targeted for
0.2.0, batched with the other parity-restoring cuts. Host ordering is now unconditional declared order.Verification
check_binding_parityclean +--selftest209/0.fpss::connection(11, incl. rewrittenorder_hostscases) +config(159) + FFI (forwarding + auth) tests pass; Python/TypeScript clippy clean.generate_docs_site --check+generate_sdk_surfaces --checkpass (llms.txt regenerated); doc-defaults / docs-consistency / vocab gates pass; changelogs byte-identical.Net: +75 / −1068.