The environment project made its own plan obsolete, and the team let it
- date
- 20260912
- what happened
- An environment-monitoring project set out to build a Home Assistant based logger that would ingest machine telemetry, BMC temperatures and fan speeds, PDU and UPS wattages, alongside room sensors, on its own timeline. Partway through, the team realised that exact machine telemetry had already landed in the fleet's Prometheus stack as a side effect of unrelated monitoring work.
- what it cost
- Design and early build work on the Home Assistant side of that logger became unnecessary.
- what changed
- The architecture was inverted mid-project rather than finished twice. Prometheus became the one timeline for both machine and room telemetry, and Home Assistant was narrowed to sensor ingestion and actuator control, with derived numbers and alerting living in the monitoring stack.
- the check now
- Live confirmation that Home Assistant's own sensors export outward into the same Prometheus job as everything else, rather than maintaining a second parallel data path.
The plan was reasonable when it was written. Build an environment logger on Home Assistant, feed it room sensors and machine telemetry, and have one place to look at how hot the room gets and why. Work started.
Then, partway through, someone noticed that the machine half of it already existed. BMC temperatures, fan speeds, PDU and UPS wattages had all arrived in the fleet’s Prometheus stack on their own, as a side effect of unrelated monitoring work finished earlier, with alerting and dashboards already built around them. The logger under construction was going to be a second, worse copy of a timeline that was already live.
Finishing it would have been the easy choice. The work was underway, nobody had told the team to stop, and the result would have functioned. Instead the architecture was inverted. Prometheus became the single timeline for both machine and room telemetry, and Home Assistant’s role was narrowed to the two things it uniquely does well: ingesting sensors and driving actuators. Derived numbers and alerting live in the monitoring stack. Home Assistant’s own sensors export outward into the same scrape job as everything else, which is the part that was checked live rather than assumed.
The resulting design is cleaner than either original plan, and it exists only because someone was willing to say the plan needed to change rather than protect work already spent. The transferable habit is to notice when a project has gone obsolete mid-build, and to treat the sunk work as sunk. The question to ask at the halfway point is this: if we were starting today, knowing what now exists, would we build this at all.
Source: node0 lessons v0.1, lesson 5.17. Sanitized: checklist v0.1, 20260921; names pass only; voice pass 20260921. Part of oznog.com/node0.
