Issue 087: what I shipped first said the opposite of the truth #206
@@ -2,7 +2,7 @@
|
|||||||
status: resolved
|
status: resolved
|
||||||
opened: 2026-09-22
|
opened: 2026-09-22
|
||||||
located-in: [mesh-controller internal/link/protocol.go (the report field that was missing), internal/inventory, cmd/mesh-controller (node show and status)]
|
located-in: [mesh-controller internal/link/protocol.go (the report field that was missing), internal/inventory, cmd/mesh-controller (node show and status)]
|
||||||
fixed-by: mesh-controller 7683ba8
|
fixed-by: mesh-controller 7683ba8, corrected by 1d9c102
|
||||||
amended-design:
|
amended-design:
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -54,6 +54,49 @@ Two deliberate refusals to guess:
|
|||||||
for a scheme where `10` sorts before `9`. Said in the code at the place that would have to learn,
|
for a scheme where `10` sorts before `9`. Said in the code at the place that would have to learn,
|
||||||
rather than left as a surprise.
|
rather than left as a surprise.
|
||||||
|
|
||||||
|
## What I shipped first was wrong, and the mesh said so within the hour
|
||||||
|
|
||||||
|
The first version reported *"N machine(s) run an older host than another machine does"* and worked out
|
||||||
|
which by comparing versions as strings. **A host reports its version as a commit, and commits have no
|
||||||
|
order.**
|
||||||
|
|
||||||
|
On the live mesh, with the adopted machine pushed for the first time:
|
||||||
|
|
||||||
|
```
|
||||||
|
3 machine(s) run an older host than another machine does:
|
||||||
|
g14 04a27ca
|
||||||
|
novox 04a27ca
|
||||||
|
shanks 04a27ca
|
||||||
|
```
|
||||||
|
|
||||||
|
Those three run the **newer** host — installed 09:18, against the adopted machine's 01:13. `ced54d4`
|
||||||
|
sorts above `04a27ca` and that is all it means. An arbitrary lexicographic result, presented as a fact,
|
||||||
|
about the one thing this record exists to make trustworthy.
|
||||||
|
|
||||||
|
The code carried a caveat saying versions compare as strings and that this "is enough for the timestamps
|
||||||
|
and commits this mesh uses". That was the error, written down and not noticed: it is enough for
|
||||||
|
timestamps and it is **meaningless** for commits, and the mesh reports commits.
|
||||||
|
|
||||||
|
It now reports the split and claims no ordering:
|
||||||
|
|
||||||
|
```
|
||||||
|
4 machine(s) do not all run the same host:
|
||||||
|
04a27ca g14, novox, shanks
|
||||||
|
ced54d4 ace
|
||||||
|
|
||||||
|
a host refuses a declaration carrying a field it does not know, whole — so the mesh may
|
||||||
|
send only what every one of these understands. Which of them is newer is not readable
|
||||||
|
from a commit; that needs a version the host reports as ordered
|
||||||
|
```
|
||||||
|
|
||||||
|
More useful as well as more honest — the reader sees who is on which side of the split, which is what
|
||||||
|
decides whether a field can be sent — and it leaves the ordering where it belongs: with the host, which
|
||||||
|
would have to report something ordered for anybody to have it.
|
||||||
|
|
||||||
|
**This is [issue 145](../145-a-machine-reads-healthy-while-its-modules-cannot-reach-each-other/00-report.md)
|
||||||
|
arriving by my own door**, an hour after closing it: a report that confidently says the opposite of the
|
||||||
|
truth is worse than one that says less, because it trains a reader to distrust the whole surface.
|
||||||
|
|
||||||
## Measured on the mesh, and one limitation it exposed
|
## Measured on the mesh, and one limitation it exposed
|
||||||
|
|
||||||
All four machines run the identical host binary — same digest, installed within eighteen seconds of each
|
All four machines run the identical host binary — same digest, installed within eighteen seconds of each
|
||||||
|
|||||||
Reference in New Issue
Block a user