SIGN IN SIGN UP

fix(ontology): stop fabricating gpu.0 and passing "n/a" off as measured

Two ontology conformance failures on Linux CI, both real, both invisible
from a Windows machine with three GPUs.

gpu.0.name is declared non-nullable — the schema promising a GPU always has
a readable name — yet all three failure paths in resolve_gpu emitted it as
unavailable. On a headless runner that asserts adapter zero exists and could
not be read, when the truth is no adapter is known to exist at all. They now
report against gpu.<none>, the declared per-domain diagnostic that already
exists for precisely this, carrying the reason so "enumeration failed",
"snapshot failed" and "no GPU on this machine" stay three different facts.

board.firmware.{n}.version resolved to the literal "n/a" with measured
provenance. Virtualised firmware leaves fields unfilled and DMI reports them
as text, so an absence arrived looking exactly like a reading. Guarded in
push_text and push_id rather than in the firmware reader: those are the one
place every text and identifier reading passes through, and this class has
now been caught three times in three different readers. The word list
matches unknown_is_never_dressed_as_a_measurement exactly.

An earlier draft of this added a gpu.count entity before noticing that
gpu.<none> already existed and was generated for every domain. Reverted —
the machinery was there.

Windows cannot reproduce either failure: it has GPUs, so the <none> paths
never run, and its firmware fills the DMI fields. CI is the check.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A
Adam Erickson committed
62b02150c8f6db74009bc40c18795963689c4821
Parent: 64a6c0e