Skip to content

prometheus's battery is load-bearing for the mains-cut path, and nothing watches it #454

Description

@Gerrrt

fit-the-ups-battery.md states the
design assumption plainly:

prometheus and oracle hang off an unmanaged TP-Link that has no battery at
all. Both are laptops with their own batteries, so on a mains cut they stay
running and go deaf
— the monitoring host survives the event it exists
to observe and cannot report it.

#93 and
#110 closed the deaf half,
by fitting the UPS pack and racking the shelf switch on UPS power.

The running half rests entirely on two thirteen-year-old lithium cells that
nothing monitors and no document names as a dependency.

A dead cell in prometheus silently converts a mains cut from "the monitoring
host survives the event it exists to observe" back into "it dies with it" —
reopening exactly what #110 closed, with no alert, no metric, and no line in any
file saying the guarantee has lapsed. It is the same shape as the UPS card
fabricating a healthy pack: the estate believes it has a property it does not
have.

There is also a plain safety case. A swollen cell in a rack, on a shelf, in an
occupied room is a fire risk, and it is the failure mode a laptop battery of
this age actually has.

What this carries

1. The cell. A1437, which fits the A1425 — the Retina 13" late-2012 that
docs/hardware.md records as prometheus. Roughly $39 bare, or ~$110 for a kit
with tools and adhesive solvent, which is the sensible option for a glued cell in
a machine nobody wants to be learning on.

2. A collector, so the next one is visible. /sys/class/power_supply/BAT0/
exposes energy_full against energy_full_design and a cycle count, all
world-readable. A textfile collector emitting those fits the exporter-less
pattern scripts/collect-*.sh already establishes — no new service, no new
image, no new port, no root
, and it is scraped by the Alloy already running on
the host.

That turns the replacement into something provable rather than assumed, and
gives the next degradation somewhere to show up.

oracle has the same cell problem and the same absent metric. It is second in
line, not first — it holds the wiki and the off-host firewall exports, but
prometheus is the host whose death is the estate going blind.

3. The carve-out in roadmap.md. The list currently ends:

Never, and the documents say so: anything for prometheus or oracle.

That was written about upgrades — money spent making a landfill laptop
faster is money wasted, and the README is proud of the machine precisely as it
is. It was not written about a consumable whose failure is a safety event and
an availability event at once
. The line needs to narrow rather than reverse,
because a document that overstates a rule is worse than one that names its
exception.

Verification

After the swap, energy_full should sit at or near energy_full_design and the
cycle count should read low. Then pull mains and confirm the host stays up
which is the property this issue is actually about, and which has probably not
been tested since the machine was commissioned.

Purchases this needs

The cell. $39, or ~$110 with tools and solvent. Recorded on the roadmap's
list against the carve-out above.


Corrected 2026-09-19

Items 1 and 3 are done and item 2 was never needed.

What keeps this open is step 8 of replace-the-laptop-cell.md: the mains pull on the charged pack and the runtime it measures. The accidental firing at 41 % on 2026-09-18 was not the bounded test and measured no runtime. Two things the fit surfaced and this issue does not own: oracle's cell is #531, and continuous watching of cell temperature and runtime is #532. The RTC reset the swap caused is #519.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestseq/1Step 1 within its milestone; same number = can run in parallel

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions