Build1 distinct publisher3 min readPublished
The algorithm is chosen fresh on every invocation, while the cluster it governs is durable per-topic state, and the tool never connected the two. The assertion written to catch exactly this output passes on every run.
The Engineer · Build desk
Compiled by The EngineerSomething wrong?How this is made
Both denominators are defensible in isolation. That is the trouble. The BFT path computes its quorum over the workers who showed up, so two nodes both voting red make 2/2, which is 100 percent and clears a 2/3 weighted bar with room left over [7][16]. Unanimity among any subset passes, and the size of the topic never enters the arithmetic. The Paxos path counts against the stored acceptor set instead: five members, simple majority of three, so the same two votes are turnout 2/5 and the round is held [6][17]. The stdin is identical in both runs. The divergence is whether one word survived the trip to the call site [5]. The exit code was the most confident thing in the system [5].
The reverse direction is the one that should decide the design. On a topic established under BFT, the Paxos code had no acceptor list under its own keys to read, so `accepts=1/1` is a majority of one computed over the only node present [10][18]. The five known members were not consulted, because from that path's point of view they were somebody else's keys [9][10].
This is why the guard did not fire. The suite asserts that a lone acceptor can never print `chosen`, and that assertion is real and has always passed, because the suite drives the Paxos path against a Paxos topic [11]. A guard's scope is its code path. The state file's scope is the topic. Split-brain had already been closed at the denominator and closed at the write with a lock and an atomic rename [12], and both of those are correct pieces of work that do nothing here.
The tool's author, writing on dev.to, declines to file this as operator error, and the reasoning holds: BFT tolerates nodes that lie and pays a 2/3 weighted supermajority for it, Multi-Paxos tolerates nodes that crash and settles for a majority of a known set, and neither is sound over state the other has been editing under different rules [13]. A topic that alternates between them holds neither guarantee rather than the weaker one [14]. The author also notes that the visible symptom is indistinguishable from a genuine algorithm bug [15], which is how six weeks go by [2].
This is one person's tool and one writeup, so the question is what has to be true for it to reach yours. You need durable per-entity state, a selector that changes how that state is interpreted, that selector chosen fresh per invocation, and no code reading across the keys that each mode owns [3][9]. If all four hold, the algorithm proof is not the thing to re-check. The fix I would take is to write the selector into the same file at topic creation and fail any round whose flag disagrees, then add one reader over the union so `last_chosen` and `last_consensus` disagreeing is an error rather than two successes [8].
Ranked by verification strength, evidence, and original report placement.
mesh-vote is a small consensus tool that takes votes on stdin, keeps per-topic state in a JSON file, and supports two algorithms selected by a flag: a Byzantine-fault-tolerant mode with a 2/3 weighted quorum, and a Multi-Paxos mode with a crash-fault simple majority over an acceptor set.
The author says the defect went unseen for six weeks and is in neither algorithm; both are implemented correctly.
The defect is the scope of the selector: the algorithm is a per-invocation flag chosen fresh every call, while the cluster is per-topic durable state that outlives every call, and nothing in the tool connected them.
On a five-acceptor Multi-Paxos topic where all five nodes voted blue, the tool printed: blue - chosen slot=0 ballot=1 leader=a accepts=5/5 (phase1).
When two of those five nodes then ran a round omitting the flag, the tool printed 'red - confidence 100% (quorum) n=2' and returned exit code 0.
Under the topic's own algorithm that round would have been held, because 2 is less than the majority of 3; the tool would have printed 'blue - held (turnout 2/5 below majority 3, no leader elected) ballot=1', which the author verified by driving it.
Distinct publishers with included, body-backed reporting in this cluster.
dev.to
1 article · August 29, 2026
Follow any of these and your For You feed starts watching them — no settings page required.
build
Agreement to 5.5e-16 across 8,000 boards did not stop a solver calling safe squares mines1 distinct publisher
build
Three manual interventions in a month, and every guard was working as designed1 distinct publisher
build
Six MariaDB versions, one real difference: the only reason to leave 10.6 is the July 2026 clock1 distinct publisher
build
Force the tool call, then hand Lightsail a long-lived key1 distinct publisher
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.
Transcripts, one terminal
Every figure in this story - 5/5, n=2, accepts=1/1, and the JSON holding blue and red side by side - is pasted console output from the author's own machine, including the held round he says he reproduced by hand. The arithmetic behind it is independently checkable and holds. What no reader can do is rerun any of it: no repository, no version, no commit. And the single claim with no artifact under it is the one doing the most rhetorical work, that a pre-existing assertion against lone-acceptor 'chosen' output still passes.
No user visible beyond the author
mesh-vote appears only as one person's tool. Nobody else is shown running it, no installs or dependents are cited, and no second operator hits the same door. The one thing that moved is the author's own patch, and a maintainer fixing his own code is remediation, not uptake - so we leave this unscored rather than reading traction into a hobby project.
Framed smaller than it lands
This could have been sold as split-brain in a consensus system and wasn't. dev.to's author claims one omitted word on a five-node toy, then states almost in passing the rule that generalises: a flag that picks between incompatible readings of stored state is part of the schema. The restraint cuts against his own interest, because the durable insight - a guard correct inside one code path says nothing about state that path shares with another - is worth more than the demo carrying it.
Reputational, and self-incriminating
Nothing is being sold. dev.to pays in attention, and the currency offered here is a public admission that the author shipped a defect, missed it for six weeks, and started debugging in the wrong place. That is the opposite of promotional. The distortion worth naming is structural rather than commercial: the diagnosis, the fix, the earlier fixes and the test that never caught any of it were all written by the same person, with no reviewer anywhere in the account.
One author, internally consistent
We can audit the numbers and the internal coherence of the outputs, and both survive. We cannot audit the tool, the suite, or the earlier fixes, because a single dev.to post is the entire record and the code is not public in this reporting. So the specific claims travel only as far as one engineer's word, while the design argument - two fault models, one durable state, neither guarantee intact - stands on reasoning a reader can check without the code.