Repository navigation
Conversation
…nfigurable The thermal finding fired at fixed 85/90 °C, which does not suit units in enclosed rooms or on hardware with its own thermal policy. Settings now has healthTempWarnC and healthTempCriticalC (defaults 85 and 90, so behaviour is unchanged). Each must be a number from 40 to 110 and warn must be below critical; PUT /api/settings refuses anything else with 400, and an unusable settings.json falls back to 85/90. The evaluator reads the limits on every sample, the finding text shows them, and alerts follow because they reuse the finding. Per-unit overrides are left for later. Closes MiaAI-Lab#233 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Drive a SparkMonitor with non-default limits and check the Activity event text, and that a limit changed in Settings applies to the next sample. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The button sits under the help text, puts 85 and 90 back in the two fields (applied on Save) and is disabled while they already hold the defaults. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
|
Reviewed and ported: now on main as The 40–110 °C range is fine as proposed. The (Review notes prepared with Claude Code on behalf of the maintainer.) |
78 upstream commits: MQTT publishing (MiaAI-Lab#248), harness occupancy helpers (MiaAI-Lab#208), GPU clock cap from Settings (MiaAI-Lab#218), settings i18n foundation (MiaAI-Lab#226), configurable GPU temperature limits (MiaAI-Lab#273), Locals/Splash engines, TensorFold cache-counter fixes (MiaAI-Lab#252/MiaAI-Lab#260/MiaAI-Lab#272) and the zsh-safe remote probes (MiaAI-Lab#255/MiaAI-Lab#257). Conflict resolutions: - server/collectors/LlmProbe.js + its TensorFold test: took main's implementation, which supersedes this fork's /health `live` + /metrics work with the cache-counter precedence, running/waiting aliases, histogram validation and prefill holds. This drops the fork's parallel /metrics fetch (micro-optimisation only). - SystemCollector: main's zsh-safe find probes merged into the fork's build/parse refactor, keeping the fork-only RAPL package-power reads; _getRemoteNetwork now uses the injected executor (the merge had left the fork body calling sshExec, which made main's zsh-glob corpus test run real SSH). - OverviewPage: FleetKpis keeps the fork's placement but takes all sparks, so hidden cluster workers count in the KPI tiles (main's fix). - SparkPage: main's column layout (History in the hardware column, storage/network in the right column) over the fork's full-width History panel. - SettingsDialog: fork VulnHunter/REA opt-in toggles kept, metrics-history toggle switched to main's i18n keys. - index.js: fork vulnHunt/rea spark cleanup kept alongside MQTT removeUnit/applySettings. - CHANGELOG/README/package.json: both sides' entries kept; test globs unioned so the fork-only models/autopower/vulnhunt suites still run.
Closes #233
What
The GPU temperature Health finding fired at fixed 85/90 °C (
TEMP_WARN/TEMP_CRITICALinserver/health/HealthEvaluator.js). Both are now settings, following the shape agreed in the issue.healthTempWarnCandhealthTempCriticalC, defaults 85 and 90, so behaviour is identical until someone edits them.PUT /api/settingsrefuses anything else with a 400 and saves nothing. A hand-editedsettings.jsonwith unusable values falls back to 85/90 together.thresholdsoption onHealthEvaluator, wired togetSettings()inSparkMonitor), so a change applies on the next sample without a restart. The finding detail shows the configured values.Per-unit overrides are left for a later step, as agreed.
Notes
Testing
npm run typecheck,npm run buildandnpm testpass (1331 server, 720 frontend). New tests cover the evaluator, settings validation and fallback,SparkMonitorActivity events with non-default limits (including a live change), and the dialog (save, refusal of bad input, reset). I also tried the dialog in a running instance.