fix(policy): adaptive reverse pool 32→3 (source drifted from intended); rebuild bundle.wasm - #4109
Merged
Merged
Conversation
…); rebuild bundle.wasm The adaptive default's reverse (download) mux was ReverseMux = adaptRevActive(1) + adaptStandbyMax(31) = 32. Live measurement (release-gate validation) showed this is a throughput regression, not resilience headroom: standing up 31 DISJOINT multi-hop reverse routes over the mesh is a setup-node dial storm (each warm-standby leg needs its own route-setup handshake; they fail "setup-node dial: context deadline exceeded" and self-heal re-dials forever), and a bulk download over the 32-leg group STALLS — 10MB timed out; 100KB ran at ~8 KB/s — instead of aggregating. The source const had DRIFTED: the preset tests already assert ReverseMux=3 (1 active + 2 warm standby), i.e. the intended adaptStandbyMax=2, while the const sat at 31 and the committed bundle.wasm encoded 32 — so native (32) and the test/bundle (3) disagreed and TestAdaptiveDecides was effectively broken on develop. Realign the const to 2 and rebuild bundle.wasm from source (TinyGo, replace→worktree) so native↔wazero decisions are byte-identical again (TestDecideParity + TestAdaptiveDecides pass). A proxy wants a small, fully-fillable pool; resilience comes from the pool being HEALTHY, not huge. Complements skycoin#4108 (control-plane no-mux) and the same setup-node churn behind the mux-stall work.
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.
Release-gate validation of the adaptive default (auto-started skysocks-client over :1080) found a throughput regression: the reverse mux was ReverseMux = 1 + adaptStandbyMax(31) = 32 legs. Standing up 31 disjoint multi-hop reverse routes over the mesh is a setup-node dial storm (each warm-standby leg re-dials forever on
context deadline exceeded), and a bulk download over the 32-leg group stalls — 10MB timed out, 100KB ran at ~8 KB/s — instead of aggregating.The source const had drifted: the preset tests already assert
ReverseMux=3(1 active + 2 standby → intendedadaptStandbyMax=2), while the const sat at 31 and the committedbundle.wasmencoded 32 — so native (32) and the test/bundle disagreed andTestAdaptiveDecideswas effectively broken on develop. Realign the const to 2 and rebuild bundle.wasm from source (TinyGo, replace→worktree) so native↔wazero are byte-identical again (TestDecideParity+TestAdaptiveDecidespass).Complements #4108 (control-plane no-mux). A proxy wants a small, fully-fillable pool; resilience comes from the pool being healthy, not huge.