Build1 distinct publisher3 min readPublished
A Rust ADS-B tracker threw away roughly 11% of good positions because an unread staleness field left every measurement stamped on arrival. The rejections went to a counter, so nothing looked broken.
The Engineer · Build desk

Compiled by The EngineerSomething wrong?How this is made
Put the gate geometry next to the clock error and the failure stops being mysterious. Once a track converges, the innovation standard deviation settles around 36 m, so a five-sigma gate sits at roughly 180 m, and an airliner at 250 m/s covers that in 0.7 seconds [5]. That is the entire timing budget: about 0.72 seconds of wall clock, against a feed whose reported position age has a p90 of 3.97 s, some five and a half times the budget [4].
The worst case in the sampled pair of polls is not marginal. One aircraft's reported age fell by 15.76 s between two polls [8]. Stamped on arrival, that is 3,940 m of apparent displacement, about 109 sigma against a 36 m innovation standard deviation and roughly 22 times the gate radius [2]. Even the ordinary spread does it: the difference between the median age and the p90, 3.66 s, is 915 m of phantom movement, near 25 sigma [3]. The gate was doing its job with room to spare.
The mechanism worth internalising is that magnitude of lag is harmless and variation in lag is fatal. A uniform two-second delay is invisible to a constant-velocity filter, which simply tracks a target two seconds in the past with small innovations and no rejections [10]. What the gate cannot survive is the age changing between updates, which is what a fresh observation after a gap looks like when both the stale reading and the new one are marked "now" [12].
There is a second number in the sample that deserves a note. 17 of 135 contacts, 12.6%, were served identical positions across the two polls [9], which sits within 1.5 points of the 11.1% rejection rate [5]. The author does not connect the two, and on the mechanism above he is right not to: duplicates alone do not move a track. But a rejection log carrying the reported age and the observed time would settle it in an afternoon, and a counter never will.
Then the part that makes this architectural. The plausible repair is to stamp each measurement with arrival minus age and refuse anything older than the filter's current epoch, since you cannot predict backwards [13]. That guard would have made things worse, because the display loop advanced every track to current wall-clock time each cycle so the picture and the collision screen agreed, meaning the track's clock already read later than any measurement that arrived with real age [14]. A Kalman state is valid for exactly one instant, and once a render loop is allowed to move that instant, every measurement is applied to a state from a different moment than the one it describes [15]. Nobody reviews a rendering loop as an estimator mutation, which is how it survives review [15].
The pre-fix system was not inconsistent. Display and measurements shared the same fictional clock, so they agreed with each other, the tests passed and the picture looked right [16][2]. Correctness gates fail this way by design: they hold the invariant and say nothing about which invariant you gave them. A counter answers "how many" and closes the file. The two fields that separate a stale measurement from an implausible one were sitting in the record the whole time, decoded into the struct and never read again [6].
Ranked by verification strength, evidence, and original report placement.
The author built a roughly 2,000-line real-time tracker in Rust that reads a live ADS-B feed, keeps a Kalman-filtered track per aircraft, and screens every pair of aircraft for closest approach against separation minima, handling roughly 150 aircraft with a full cycle in under a millisecond.
The system ran clean: tests passed, the displayed picture looked right, and the numbers were plausible.
The tracker was refusing about one measurement in nine, and the author only found out because the rejections went to a counter instead of a log line.
The tracker runs an innovation gate: when a position arrives the filter predicts where the aircraft should be, and a measurement too far from that prediction is rejected as physically impossible rather than believed.
Once a track converges the innovation standard deviation settles around 36 m, so a five-sigma gate sits at roughly 180 m, and an airliner at 250 m/s covers 180 m in 0.7 seconds.
Every ADS-B record carries a field stating how old the position already was when the response was generated; in the original build it was parsed into the contact struct and never read again, its only other appearance in the codebase being 0.0 in test fixtures, so every measurement was stamped with the tracker's own cycle clock as though observed on arrival.
Follow any of these and your For You feed starts watching them — no settings page required.
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.
Specific instrumented numbers, one unverifiable self-report
The cluster contains exactly one source, a first-person dev.to post. It supplies unusually concrete quantities - a 36 m innovation sigma, a ~180 m five-sigma gate, a median/p90/max reported age of 0.31/3.97/48.53 s, a -15.76 to +3.00 s per-aircraft age delta, and 17 of 135 re-served contacts - and the mechanism it describes is internally coherent and reproduced arithmetically. But no repository, dataset, feed identity, or independent replication is offered, the sampling window is two consecutive polls, and the article's own discard figure is stated two different ways, so the mechanism is better evidenced than the magnitudes.
No adoption evidence in cluster
The supplied material covers one author's personal tracker. There is no release, deployment, third-party usage, benchmark against another implementation, pricing, or licensing signal anywhere in the cluster, so adoption cannot be measured without inventing facts.
Headline inflates a well-argued body
The technical argument is modestly stated and mostly self-limiting - the author explicitly says the gate behaved correctly and that his own first fix would have made things worse. The overstatement is concentrated in framing: the headline's '16% of My Good Data' exceeds the body's repeated one-in-nine / 11% figure by roughly five points, and a single unreplicated hobby project is presented as a general architectural lesson. Small positive gap, not a promotional piece.
Self-published cross-post, no product being sold
The post opens 'Originally published at ai.bedvibe.studio', so it is a syndicated cross-post that routes attention to the author's own site and carries the usual personal-credibility incentive of a war-story engineering write-up, reinforced by a headline percentage larger than the body's number. Against that, no product, service, vendor, sponsor, or commercial claim appears anywhere in the text, and the author documents his own near-miss mistake, which is not the shape of a promotional piece.
Coherent mechanism, single unreplicated observer
Confidence is limited by structure rather than substance: one publisher, one author, one codebase, one third-party feed, a two-poll sampling window, and no artifacts to inspect. The internal reasoning is checkable and the derived arithmetic holds, and the adoption dimension is unmeasurable from this material, so the overall assessment is best treated as a credible engineering account of a real failure mode with unverified magnitudes.
build
The failure modes of AI agents in low-level code have names, and names can be gated in CI1 distinct publisher
build
The click succeeded and nothing happened: your agent harness needs an injected canary1 distinct publisher
build
A Stripe SDK Major Bump Turned One Metadata Lookup Into a Silent Non-Delivery1 distinct publisher
build
A guard that only speaks in exit codes cannot tell you it stopped guarding1 distinct publisher
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 24, 2026