Score every metric equally in the overall total (#218)

The overall climate-shift score was a weighted roll-up (feels-like and humidity
2x, wind and gusts 0.5x, and so on). Make it an equal average instead: every
metric — and, through each metric's own mean over the 10/25/50/75/90 percentiles,
every percentile — counts the same.

- scoring._overall: plain mean of the present metrics' divergences, mapped to
  0-100, replacing the weighted sum. Missing metrics still drop out cleanly.
- Drop the now-unused per-metric weights from the METRICS table and the scored
  entries (nothing rendered them; only the roll-up read them).
- views.SCORE_VER s4 -> s5 so cached weighted scores are recomputed.
- score.js: the hero note now reads "Every metric counts equally" instead of
  "Temperature, feels-like and humidity are weighted most".

Verified against Seattle: overall mad equals the equal mean of the eight metric
mads (7.9), and the entries no longer carry a weight.

Claude-Session: https://claude.ai/code/session_013dRZmX9D3JEntfMKWMTWZ8
This commit is contained in:
Emi Griffith 2026-07-19 22:45:57 -07:00 committed by GitHub
parent e105869363
commit 71e2e6ec97

View file

@ -1,6 +1,6 @@
// Thermograph climate-score subpage — for one location, shows how far the last 6 // Thermograph climate-score subpage — for one location, shows how far the last 6
// years have drifted from the full 45-year record, per metric and season, with a // years have drifted from the full 45-year record, per metric and season, with an
// weighted overall score and a button-revealed summary. Talks to /api/v2/score. // equal-weighted overall score and a button-revealed summary. Talks to /api/v2/score.
import { loadLastLocation, saveLastLocation, locHash } from "./nav.js"; import { loadLastLocation, saveLastLocation, locHash } from "./nav.js";
import { fmtTemp, onUnitChange } from "./units.js"; import { fmtTemp, onUnitChange } from "./units.js";
import "./account.js"; // header sign-in entry + notification bell import "./account.js"; // header sign-in entry + notification bell
@ -123,7 +123,7 @@ function render(data) {
</div> </div>
</div> </div>
<p class="score-note">A net-change total across all metrics: 0 = no change from the long-term <p class="score-note">A net-change total across all metrics: 0 = no change from the long-term
normal · 100 = an extreme shift. Temperature, feels-like and humidity are weighted most.</p> normal · 100 = an extreme shift. Every metric counts equally.</p>
</div>`; </div>`;
// ---- per-metric cards (annual) ---- // ---- per-metric cards (annual) ----