You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full audit performed 2026-07-03 covering all 7 scripts + docs. This issue tracks remediation.
P1 — Fix soon
P1-1: Alert spam.avalon_temp_monitor.sh fired health-check alerts on every 5-min poll while a condition persisted. Fixed in f1584ec with per-condition state gating (transition + hourly re-alert while down) and ✅ recovery messages.
P1-2: Softoff dead-end. After emergency softoff, recovery branch will try workmode,set,1 on a miner in standby. Not observed in production (softoff has never fired). Deferred until softon path is built.
P1-3: Silent Discord failures. All webhook curl calls hardened with --max-time 10 + HTTP status logging. Fixed across 5 scripts: avalon_temp_monitor.sh (f1584ec), monitor_btc_stack.sh (5e02ab9), daily_mining_summary.sh (6890fbd), daily_btc_fleet_summary.sh (3a987a8), daily_dgb_summary.sh (81f273b).
P2 — Correctness, portability, user traps
P2-4:daily_dgb_summary.sh labels fleet shares "Shares (NerdQaxe3)" but sums both miners. Fix label + doc.
P2-5: AxeOS bestDiff/bestSessionDiff became numeric on API in v1.0.35. Older firmware returns suffixed strings. Add firmware floor to poller docs.
P2-6:socat -t is inactivity-after-EOF, not connect timeout. Add connect-timeout=5 in Canaan paths.
P2-7: Fleet summaries hardcode 2-3 miner slots in jq payload while docs claim dynamic pickup. Fix doc now, dynamic later.
P2-8: Verify .stratum.pools[0].connected field path.
P3 — Polish
Refresh stale Project knowledge copies of two summaries.
Fix grep -c … || echo 0 double-line quirk.
Remove dead MIN_VALID code from fleet summaries.
Add head -1 and -?[0-9]+ to Avalon getters (negative-temp defensive).
Derive footer rate from POWER_RATE instead of hardcoding "15.476¢/kWh".
Publish full log rotation commands in README (currently ...).
Move GSS_API_POOL to top config block in daily_mining_summary.sh.
Align daily_mining_summary.sh on jq -n for JSON.
Standardize placeholder vs. real IP convention.
Clarify fleet "Peak/Low" semantics (sum of per-miner extremes, not simultaneous).
Enhancements (post-remediation, separate scope)
Dead-man's switch via healthchecks.io.
"Expected offline" miner flag mirroring GSSM disable.
Full audit performed 2026-07-03 covering all 7 scripts + docs. This issue tracks remediation.
P1 — Fix soon
avalon_temp_monitor.shfired health-check alerts on every 5-min poll while a condition persisted. Fixed in f1584ec with per-condition state gating (transition + hourly re-alert while down) and ✅ recovery messages.workmode,set,1on a miner in standby. Not observed in production (softoff has never fired). Deferred until softon path is built.curlcalls hardened with--max-time 10+ HTTP status logging. Fixed across 5 scripts:avalon_temp_monitor.sh(f1584ec),monitor_btc_stack.sh(5e02ab9),daily_mining_summary.sh(6890fbd),daily_btc_fleet_summary.sh(3a987a8),daily_dgb_summary.sh(81f273b).P2 — Correctness, portability, user traps
daily_dgb_summary.shlabels fleet shares "Shares (NerdQaxe3)" but sums both miners. Fix label + doc.bestDiff/bestSessionDiffbecame numeric on API in v1.0.35. Older firmware returns suffixed strings. Add firmware floor to poller docs.socat -tis inactivity-after-EOF, not connect timeout. Addconnect-timeout=5in Canaan paths..stratum.pools[0].connectedfield path.P3 — Polish
grep -c … || echo 0double-line quirk.MIN_VALIDcode from fleet summaries.head -1and-?[0-9]+to Avalon getters (negative-temp defensive).POWER_RATEinstead of hardcoding "15.476¢/kWh"....).GSS_API_POOLto top config block indaily_mining_summary.sh.daily_mining_summary.shonjq -nfor JSON.Enhancements (post-remediation, separate scope)
mining_common.shlibrary.