The scheduler fails quietly: nothing errors, reminders simply stop arriving, and
the first person to find out is the one who missed a deadline. It now writes the
time of each finished pass where both its own container healthcheck and the
metrics endpoint in the web container can read it, so *Health, metrics and logs*
gains the heartbeat, the two new numbers beside it, and three alerting rules --
one for the loop having stopped, one for it running but not getting through, and
one for deliveries that have been failing for an hour. The reminder count there
also changed meaning: it was every reminder anybody had ever set and not done,
which grows because the instance is being used and so could not be alerted on.
Refs postulo/postulo#221
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Document the whole API surface: every call, the machine endpoints, the plugin API
The API named every call, but the scope each needs lived in prose, and
the discard reasons and what /me answers were not written anywhere. It
gains both, and one list of all 39 calls with method, path and scope,
generated from the API's own routers.
/healthz, /metrics and /logs answer machines about the instance and
were only rows in Configuration. Health, metrics and logs says what
each returns, how it is switched on and guarded, the rate limit, the
parameters /logs takes, and every metric with its labels.
The plugin guide was postulo's docs/PLUGINS.md and never reached the
wiki. It is Writing a plugin now, opening with every kind of plugin,
its entry-point group and the interface it satisfies, and carrying a
reference of all 37 names postulo.plugins.api promises -- eight of
which the guide had never named. It also says plainly that a
notifier's Notification, and the client's DestinationRefused, are used
from outside the surface today.
The sidebar gains a Building on it group for the API and the plugin
guide, and the three pages that linked to docs/PLUGINS.md link here.
postulo's tests/test_wiki_surface.py now reads these three pages
against the code.
Refs postulo/postulo#170
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>