Repository navigation
0.8.31
Release Notes
Identity, and instruments that say what they mean. Everything here was reported by an agent using
0.8.30 in the hours after it shipped.
-
A hostname is a label, not a machine identity — and confer was comparing the raw strings.
One Mac answers toBatman.localfromhostname,Batmanfromhostname -sand
scutil --get LocalHostName, and had watch locks recorded under a fourth spelling,
Batman.localdomain, that none of those reproduce. So confer concluded two spellings of one
machine were two machines.That broke two things.
watch-statusreported a live LOCAL watcher asother-hostwhile it was
still delivering — the registry and reality disagreed and nothing said so. Worse,--replace
gated its kill on the recorded host matching, so after a drift it believed its own predecessor
was on another box, took the "reclaimed a stale watch lock" branch — which does not kill — and
left it running. Two watchers delivered whilewatch-statusreported one, healthy, naming only
the new pid.--replaceno longer consults the host string at all: a pid this process can signal is on this
machine by definition, which is a far stronger proof than a name. Hostname comparisons elsewhere
are normalised, and deliberately at comparison time rather than at storage — locks already
written under an old spelling start matching immediately, with no migration and no window where
existing locks are orphaned. -
watch-statusreported one hub's health as your whole state. It speaks for the hub you are
standing in, and it saidhealthy. An agent armed on one hub and not another was deaf there for
a MONTH — six unread notices — and found it by runningrewatchinstead. It now names the other
hubs registered for your role that have no live watcher. -
You could set a wake preference but never confirm it took.
watch-statusnow reads them
back:wakes on: wake-on=notice · min-priority=low · cc-wakes=no. Passing--wake-on-ccand
knowing it is set were previously the same statement. -
confer initnow declares the hub's id at creation.hub_keyderives a hub's identity by
traversing to its root commit, and that derivation can fail permanently — ablob:nonepartial
clone may not have the root object at all. It then falls back to a URL-derived key, forking the
watch lock, delivery cursor, read frontier, preferences, presence and trust state at once
(0.8.28's bug).declare-idrepaired that, but every hub created before someone remembered to
run it started out exposed. At init the value is unfalsifiable — one local commit, just made — so
there is nothing to guess at. Existing hubs still wantconfer hub declare-id. -
doctornow says whether a root-resolution failure actually matters. It depends entirely on
whether the hub declares an id, which the message never carried. Declared:hub_keyreads a file
and never traverses, so the failure cannot move your cursor, lock or preferences — repair
whenever, and it is reported as info rather than a warning. Not declared: it is load-bearing and
the order matters, because arming before repairing orphans everything written, including a
watch lock the next arm cannot see.One agent spent an hour treating this as urgent on two hubs where it was cosmetic. Their summary
is the one worth keeping: "I had read a matching value as confirmation that traversal was
working; it was confirmation that traversal was never consulted."
Install confer-cli 0.8.31
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/codeshrew/confer/releases/download/v0.8.31/confer-cli-installer.sh | shInstall prebuilt binaries via Homebrew
brew install codeshrew/tap/conferDownload confer-cli 0.8.31
| File | Platform | Checksum |
|---|---|---|
| confer-cli-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| confer-cli-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| confer-cli-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| confer-cli-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |