Two labels, corrected three times, before anyone traced a cable
- date
- 20260820 (first labelled), 20260824 (found crossed), 20260906 (corrected, still wrong), 20260909 (settled by a physical trace)
- what happened
- Which UPS feeds which rack PDU was recorded by intent when the PDUs were configured, found electrically crossed once the units' voltages diverged, corrected once at the rack to a mapping that was itself still wrong, and only settled by a cable-by-cable physical check.
- what it cost
- Three successive wrong or uncertain versions of a fact the rack's failover-risk metric depends on, spanning about three weeks; every failover percentage computed before 20260909 used an unverified pairing.
- what changed
- The pairing is now settled by physical trace rather than by device configuration intent, and the PDU device names, poll targets, access lists and the inventory system all agree.
- the check now
- NetBox's traced power-port records for all four PDUs match the live cable-by-cable check, so the two records can be compared rather than trusted separately.
A rack PDU has a field for the name of the supply feeding it. Whoever wires the rack fills it in. From that moment the field looks like a fact, and every piece of software that reads the PDU inherits it.
Node0 filled those fields in with good intent on the day the PDUs were configured. Four days later, when two of the four UPS units were changed to a different output voltage, the electrical fingerprints of the supplies diverged and the mapping was visibly crossed. Christoph corrected it at the rack about two weeks later, and that correction was also wrong. The answer that held came on 20260909, from following each cable one at a time and checking the result against NetBox’s own power-port records, which are kept independently of whatever the device says about itself.
This matters for more than tidiness. A dual-fed rack’s failover risk is computed from which supply carries which load. If the pairing is wrong, the percentage is not slightly off, it is a number about a different rack. Every such figure Node0 produced before 20260909 was built on an unverified pairing, and nobody could have told from the dashboard.
The rule that came out of it is short. A device’s own naming field records what somebody believed when they typed it, not what the copper does. The moment your uptime arithmetic depends on knowing which supply feeds which load, that mapping needs a physical verification step and a second, independent record to check it against, and it needs re-verifying after any recabling rather than trusting the most recent correction.
That second record is why an inventory system earns its keep. NetBox holds every connection between devices as a record of its own, power cords and network cables alike, from a named port on one device to a named port on another, so a mapping is never only a label on a strip or a belief in a config. Once the pairing was traced by hand and entered there, the site had two independent accounts of the same copper, the inventory and the device, and a disagreement between them is a finding rather than a mystery. It is the same habit as reconciling a ledger: neither side is trusted alone, and what is checked is that they agree. On Node0 the reconciliation runs on every device, and the audits it produced are what closed several of the lessons in this collection.
Source: node0 lessons v0.1, lesson 5.2. Sanitized: checklist v0.1, 20260921; addresses, export filename; voice pass 20260921. Part of oznog.com/node0.
