Description
Hardware faults, per-node power, firmware inventory and serial numbers come from the server BMC (for example HPE iLO, Dell iDRAC, or the BMCs in NVL72 compute and switch trays) over Redfish. Alloy cannot scrape Redfish JSON, so a Redfish exporter polls the BMC and a central collector scrapes the exporter, while the BMC also sends hardware events as remote syslog. Critical events need serial number, BMC hostname and rack attached so a fault arrives carrying what failed, where and how it is supported. There is no single canonical Redfish exporter, so the signal contract has to follow one real, maintained exporter.
Acceptance Criteria
- #1 One real, maintained open-source Redfish exporter is chosen as the contract source and recorded in signals/redfish.md with repository, version and the reason for the choice
- #2 The construct emits system and chassis health, PSU, fan, temperature sensor, node power consumption, firmware inventory and model or serial information series joinable to the GPU fixture node
- #3 Exporter self-health (poll success, poll duration, HTTP status or authentication failure, last successful collection) is emitted as that exporter exposes it
- #4 BMC hardware events are emitted through the shared syslog mechanic with real event message formats for the chosen BMC family
- #5 Failure modes cover PSU failure, fan failure, memory or drive fault, BMC unreachable and credential failure, and node power stays at or above the sum of DCGM GPU power for the same node
- #6 Every metric, label, attribute and log field is sourced from vendor documentation or a capture at a pinned version and recorded with provenance in the named signals/ area file; anything unconfirmed is a PENDING in cantfind.md, never an invented name
- #7 Rates, counts and cardinality in any shipped blueprint are plausible for a real deployment, with the real-world basis stated in a comment; nothing is raised to force emission
Definition of Done
- #1 just check (fmt-check, lint, gen-check, env-check, docs-check, test, race, hygiene, ui-check, compose-check, helm-test, lab-check, signal-fidelity)
- #2 just gen (only if a blueprint field, construct/workload config struct, or a skill under plugins/synthkit/skills/ changed)
- #3 just dump — inventory diffed against signals/
Implementation Notes
loop47: admitted R07 vendor-contract research; implementation waits for fixture/syslog landing
loop47: SAPCC exporter metric contract sourced, but required AC4 actual Dell iDRAC BMC event message format/examples unavailable after three official403 responses and bounded correction. Exporter metrics are not BMC syslog. Resume with authoritative family/version-pinned event manual or authorized capture and fixture/syslog dependencies; pin actual prometheus-client0.23.1 wire translation for demonstrated temperature name. Implementation0, infra0, review-repairs0, not rejected.