The gate's record¶
Every count on this site comes from here, and this page comes from the board.
What the board reports¶
bmcd_firmware_promotion_total{result} is read from the health gate's own log
at scrape time. As of 2026-09-09:
| result | count |
|---|---|
| promoted | 18 |
| rolled back | 1 |
The one rollback was deliberate: a v2.8.1-rc1 image with its staged note
tampered to claim v0.0.1, to prove the gate could refuse. It did, in about
35 seconds, and the board came back on the version it had.
Why this page exists¶
An earlier draft of this site said "fifteen consecutive clean promotions", and a later one said nineteen. Both were counted by hand across working sessions and written into prose, and by the time the metric existed to check them the true figure was fourteen. A number that a person maintains is a number that drifts.
This page then said it was generated from a counter while still being typed by
hand, and drifted from 14 to 17 within a day of being written — the same
failure, one level up. just refresh-gate-history <board> now reads the
board's /metrics and rewrites the date, the table and the example below. It
refuses rather than guesses if any of the three moves, so a silent no-op
cannot masquerade as a refresh. The articles link here; only this page carries
the figures.
If you are running this firmware, your own board answers the same question:
$ curl -s http://<board>:9110/metrics | grep promotion_total
bmcd_firmware_promotion_total{result="promoted"} 18
bmcd_firmware_promotion_total{result="rolled_back"} 1
How the count is derived¶
The gate has no single line meaning kept. It can finish through the metrics
check, skip that check on a board with no curl, or promote anyway when there
is no volume to fall back to. So promoted is attempts minus rollbacks,
where an attempt is one tentative boot line and a rollback is one
rolling back to the volume line.
That has one inaccuracy, stated here rather than hidden: a board cut off mid-gate leaves an attempt with no verdict, and it counts as promoted. It over-reports success by one, per interruption.
What a promotion actually proves¶
Three checks, in order, before the volumes are renamed:
- bmcd answers on
https://127.0.0.1/, within 120 seconds. - Every compute module's switch port exists — the case that would leave the BMC reachable and all four modules cut off the network.
- The image is the one that was staged, and it serves metrics — the
version in
/etc/os-releasematches the staged note, and/metricsanswers withbmcd_build_info.
A failure at any of them reboots, which lands on the previous image because nothing has been renamed and the boot variable is one-shot.
What it does not prove
The gate only runs on an image that boots far enough to run it. One that hangs earlier still needs power cut, which hard-cuts the compute modules. A hardware watchdog is the fix and is not built yet.
It also proves the daemon is serving, not that it is correct in every respect. On 2026-09-09 a board that had passed the gate cleanly went on to lose about a megabyte of memory a minute under sustained polling and stopped answering four hours later. The gate was not wrong; it was answering a question about the first ninety seconds.
The modules do not notice¶
Across every promotion and the one rollback, each compute module's
power_on_time advanced by exactly the wall-clock time the reboot took. A
firmware update on this fork does not interrupt what the board is running —
which is the difference that made updating it something you can do on a
Tuesday.