Files
bee/bible-local/decisions
Mikhail ChusavitinandClaude Sonnet 5 bb2a501a28 feat(sat): fan ceiling check + topology fan tiles
Repurpose the previously-unwired RunFanStressTest into RunFanCheck, a
Load-tier SAT test that drives stressapptest (CPU+memory) and, when a GPU
is present, a GPU burn to 100% simultaneously, then watches every fan
until none has climbed for ~60s. The observed peak RPM per fan is the
"ceiling"; it is persisted through the existing fan-observation store.

MSI G4201 / AMI MegaRAC exposes no host-side fan force (every OEM IPMI
command returns 0xc1; Redfish Thermal is GET-only), so load-driven ramp
is the closest safe equivalent. See
bible-local/decisions/2026-09-04-fan-ceiling-check.md.

- platform.ResolveFanMaxRPM: per-fan max with fallback (persisted peak ->
  peer peak -> current RPM), resolved in platform, not the view.
- platform.ErrTestNotApplicable: no load source or no fan sensors ->
  task lands as cancelled ("not applicable"), never failed, so an
  engineer never sees a false red. executeTaskWithOptions maps the
  sentinel; finalizeTaskForResult honours a pre-set TaskCancelled.
- Verdict FAIL only for a fan at 0 RPM / IPMI cr-nr under load.
- /topo: one small spinning square per fan, sized by RPM / resolved max,
  clickable through to a new "fan" component-detail type; per-fan status
  recorded to the component-status DB from the fan SAT summary.
- Wiring: /api/sat/fan/run route, "fan" task target, Load-page card,
  stress-mode Run All.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019VHG21rgTUiR1G3qFHTVmN
2026-09-04 10:35:34 +03:00
..

Architectural Decision Log

One file per decision, named YYYY-MM-DD-short-topic.md.

Date Decision Status
2026-03-05 Use NVIDIA proprietary driver active
2026-04-01 Treat memtest as explicit ISO content active
2026-04-29 Treat embedded submodules as read-only active
2026-06-12 Skip PCIe link-speed warnings for disabled devices active
2026-07-27 Split the NVIDIA Bandwidth SAT into per-socket passes before the all-GPU pass active
2026-07-27 Stream SAT job output live to disk and kick blackbox sync on job completion active
2026-07-28 Move pci=realloc out of the default/toram/no-GUI GRUB entries active
2026-08-24 PCIe Gen1-at-idle GPU warning: load-bearing link check, not idle sysfs superseded in part
2026-08-31 nvbandwidth: single all-GPU pass in Validate, per-socket matrix only in deep tier active
2026-08-31 bee-nvidia.service: never blocking systemctl restart on units ordered After= itself active
2026-08-31 "Run All" SAT planning happens on the backend, not the browser active
2026-08-31 Support bundle uses private staging and unique atomic output active
2026-09-03 PCIe link verdict comes only from the existing real-traffic GPU bandwidth SAT active
2026-09-03 Runtime Copy to RAM succeeds only after active loop devices move to tmpfs active
2026-09-04 Supported systems have at least 16 GB of RAM active