diff --git a/CHANGELOG.md b/CHANGELOG.md index dd0e87a..cf5114c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,37 @@ one of them changed. An entry says which artefact and which version, so `web 0.1 Every version published to a channel appears here. Nothing is written from memory afterwards: a build cannot be published without its entry. +## 2026-08-28 — A machine that moves between replicas lets go of the old one `api 0.98.0` + +**Only affects deployments running more than one copy of the api.** Nothing here changes a single- +container stack. + +**Reconnections are tidied up immediately instead of being waited out.** When a machine reconnects +to a different replica, the one it left still held its old connection until its own liveness check +noticed — up to thirty seconds in which two replicas each believed they could talk to the same +machine, and a command could be sent down the connection the machine had already abandoned. The +replica that takes over now tells the other one to let go, straight away and precisely: only the +connection that was actually replaced is closed. + +**And you can now see what the presence machinery is doing**, at +`GET /api/admin/agents/presence`, for platform administrators. It reports five counters, added up +across every replica rather than only the one that answered your request: + +- how often a machine's connection moved from one replica to another; +- how often a closing connection was found to have already been replaced, and correctly ignored; +- how often a command followed a machine that moved instead of failing; +- **how often a command could not be delivered at all** — this is the one worth alerting on, because + it is what someone experiences as "the agent is not connected"; +- how often a stored status had to be corrected because it said a live machine was offline. This + should sit at zero; if it does not, please tell us. + +It is JSON, every counter only ever goes up, and a replica that has stopped reporting is excluded +from the totals and counted separately — so you can point a scraper at it with a service account. +There is deliberately no unauthenticated `/metrics` endpoint: your replica count and machine totals +are facts about your estate, not about Jarvis. + +**Nothing to do.** Take the build. + ## 2026-08-28 — Machines no longer flicker offline when they reconnect `api 0.97.0` **Only affects deployments running more than one copy of the api.** On Docker Compose one of these