Build1 distinct publisher3 min readUpdated
A robotics fleet project made a five-profile shaped-network matrix a required gate on main. The asymmetric-uplink profile is the one almost nobody runs, and the one teleop dies on.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Ganglion, a substrate built to reach robots on networks nobody controls, now blocks every push to main unless a full deploy, invoke and verify round trip over the relay passes against five shaped network profiles [1][4]. According to the project's maintainer, who wrote the account and says to treat his enthusiasm accordingly, that reliability claim had until this week been a sentence on a website while CI ran on clean loopback and everything was green [2][3].
The five profiles are clean, lossy with light reordering, high-latency at 250ms round trip, asymmetric, and nat-relay [5]. Asymmetric means plentiful downlink and starved uplink, which the maintainer calls the profile nobody tests and the one teleop actually dies on, because control acknowledgements travel the starved direction [6]. The nat-relay profile removes any route between endpoints, forcing hole punching to fail so relay fallback has to carry the session [7]. His framing is worth borrowing: loss and latency are what people imagine a bad network is, while asymmetry and no direct route are what a bad network usually is [8].
The interesting part is the wrong turn. The original design was two lossy profiles, one with a pinned netem seed to gate the build and a nastier randomized one running nightly and allowed to fail [9]. That does not work, because netem's loss and jitter draw from the kernel RNG and there is no seed parameter [10]. A gate that fails randomly does not catch regressions; it teaches everyone to re-run the job until it passes, and after a month nobody reads red as meaning anything [11].
So the gate was rebuilt out of only the mechanisms that reproduce exactly: fixed netem delay with zero jitter, tbf rate caps, which are a token bucket rather than a distribution, and route blocking, where either a route exists or it does not [12]. Loss comes from `iptables -m statistic --mode nth`, which drops precisely every Nth packet instead of N percent on average, so every 33rd packet is roughly three percent loss and the same three percent every run [13]. That is 3.03 percent by construction [14]. Randomized netem still runs nightly in a separate non-blocking job, where a failure opens an issue rather than stopping a merge [15]. Its parameters come from a recorded seed, but replay reproduces the impairment distribution, not the packet-level draw, which is documented in the README and is the stated reason chaos never blocks a merge [16].
The rig choice generalizes further than the tooling does. The obvious build is a fresh veth pair or dedicated namespaces; instead the matrix rides the existing end-to-end dispatch harness, because a second rig would have produced a network test that never touches the real product path [17]. Shaping is applied inside the robot and operator containers before the agent starts, and netem inside Docker had already been proven green by an existing mobile-CGNAT scenario [18]. Every run writes a JSON artifact with mode, seed, the exact shaping commands issued, duration and result, a practice the maintainer credits to a ROS Discourse conversation with someone building replay tooling for robot fleets, who argued that injected faults which are not recorded are the problem [19][20].
What to watch: whether the nightly chaos issues get closed or quietly accumulate, and whether the asymmetric profile ever fails on its own. If it does, it will be catching something the loss and latency profiles cannot see [6].
Follow any of these and your For You feed starts watching them — no settings page required.
Ranked by verification strength, evidence, and original report placement.
Every push to main now runs the full deploy, invoke and verify round trip over the relay against five shaped network profiles, and all five must pass before anything merges.
You cannot pin netem's seed: its loss and jitter draw from the kernel RNG and there is no seed parameter to set, so a deterministic lossy netem profile does not exist.
Rather than build a fresh veth pair or dedicated network namespaces, the matrix rides an existing end-to-end dispatch harness that already ran the real deploy, invoke and verify round trip through the relay; a second rig would have produced a network test that did not exercise the actual product path.
Shaping is applied inside the robot and operator containers before the agent starts, and netem inside Docker had already been proven green in CI by an existing mobile-CGNAT scenario.
Ganglion exists to reach robots on networks nobody controls, including warehouse Wi-Fi, carrier CGNAT, a hospital VLAN, and a customer firewall configured once in 2019.
Until this week the field-reliability claim was a sentence on a website; CI ran on clean loopback, everything was green, and the failure modes that matter in the field were the ones the test suite could never produce.
Evidence-backed comparisons of source perspectives and observed adoption signals. Read the methodology
Which Builder, Operator, and Investor concerns the observed source mix emphasized—not a truth score.
Evidence, demonstrated adoption, hype gap, incentives, and confidence are assessed independently, each on its own current evidence. How these are measured.
Detailed but wholly first-party and unverified
The account is mechanically specific about profiles, shaping primitives, artifacts and even its own design error, which raises credibility, but every fact rests on one self-published post by the project's author. No repository link, CI log, artifact sample or third-party reproduction is available in the cluster, and the central prevalence argument about asymmetric links carries no data.
One project's own CI pipeline
Adoption evidence is confined to the author's own repository: the gate is enabled on main, five profiles reportedly pass, and a nightly chaos job is scheduled. No external users, downstream projects, fleet deployments or third parties adopting the pattern are disclosed.
Slightly understated relative to what is shown
The piece repeatedly narrows its own claim: it discloses the author's stake, leads with a design error rather than a win, states that replay reproduces the impairment distribution and not the packet-level draw, admits a one-retry concession, and explicitly refuses the framing that Ganglion now works on bad networks. Against thin external evidence the net effect is mild understatement rather than overselling, though the headline generalization about what teleop dies on outruns its support.
Author-owned product, disclosed
The writer builds and promotes Ganglion and publishes on a self-service developer platform, so there is a direct interest in the reliability narrative reading well. The explicit disclosure and the decision to foreground a mistake temper but do not remove that incentive; no independent editorial layer exists in the cluster.
Moderate on mechanics, low on generalization
Confidence is reasonable that the described CI design exists as stated, because the account is internally consistent, unusually specific and self-correcting. Confidence is low on the broader claims about how bad networks typically fail and on any durability of the result, given one publisher, one first-party source and no external corroboration or adoption signal.
build
Before you spend quota on an agent skill, make it pass an eval harness1 distinct publisher
build
A RAG stack lived seven hours before a hosted embedding endpoint returned 4041 distinct publisher
build
The stopping problem: an LLM rewrite loop that converged on code javac rejected1 distinct publisher
build
A cached COPY --from=builder shipped yesterday's artifact under today's tag1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 19, 2026