A failed health check now shows what the health check said
An ollama container was rolled back with health=unhealthy, and underneath it ten lines of a textbook-clean startup: listening on its port, discovering GPUs, model cache hydrated, no error anywhere.
Nothing in there to act on — because those were the wrong lines. What failed was the probe, and a probe's output does not go to the container's stdout. It goes to .State.Health.Log[].Output, along with the exit code of the command Docker actually ran, and we were not looking there.
Both failure paths report it now, above the container log rather than instead of it: "why did the probe fail" and "what was the container doing" are different questions and both are worth answering.
On the rollback path it is read before the rollback. _rollback_to_old restores the previous container under the same name, so an inspect afterwards would quote the old container's health log and present it as the reason the new one failed.
It stays quiet where there is nothing to say — a container with no healthcheck, a runtime that does not report one, a probe that passed. Long output is trimmed and multi-line output flattened, so a probe printing a stack trace does not turn one notification into forty lines. Podman's older spelling of the field is tried as well.
The Discord bot setup guide
Written by @NotRetarded in #57. He set the bot up from nothing, screenshotted every step while he was doing it, and then corrected the two places that turned out to be wrong once we held them against the code.
It is his walkthrough, with my commentary in the indented notes, and it is better than anything I would have written from the source — I have never clicked through Discord's developer portal, have no bot and no test server.
docs/discord-bot.md, linked from the README and the notifications page, with all sixteen screenshots in the repository rather than hotlinked so the page does not depend on anyone's account still hosting them.