Brings every user-facing surface into alignment with the live resilience
scorer. Zero behavior change: overall_score is still the 6-domain
weighted aggregate, schemaVersion is still 2.0 default, and every
existing test continues to pass.
Surfaces touched:
- proto + OpenAPI: rewrote the ResiliencePillar + schema_version
descriptions. 2.0 is correctly documented as default; shaped-but-empty
language removed.
- Widget: added missing recovery: 'Recovery' label (was rendering
literal lowercase recovery before), retitled footer data-version chip
from Data to Seed date so it is clear the value reflects the static
seed bundle not every live input, rewrote help tooltip for 6 domains
and 3 pillars and called out the 0.25 recovery weight.
- Methodology doc: domains-and-weights table now carries all 6 rows
with actual code weights (0.17/0.15/0.11/0.19/0.13/0.25), Recovery
section header weight corrected from 1.0 to 0.25, new Pillar-combined
score activation (pending) section with the measured Spearman 0.9935,
top-5 movers, and the activation checklist.
- documentation.mdx + features.mdx: product blurbs updated from 5
domains and 13 dimensions to 6 domains and 19 dimensions grouped into
3 pillars.
- Tests: recovery-label regression pin, Seed date label pin, clarified
pillar-schema degenerate-input semantics.
New scaffolding for defensibility:
- docs/snapshots/resilience-ranking-2026-04-21.json frozen published
tables artifact with methodology metadata and commit SHA.
- docs/snapshots/resilience-pillar-sensitivity-2026-04-21.json live
Redis capture (52-country sample) combining sensitivity stability
with the current-vs-proposed Spearman comparison.
- scripts/freeze-resilience-ranking.mjs refresh script.
- scripts/compare-resilience-current-vs-proposed.mjs comparison script.
- tests/resilience-ranking-snapshot.test.mts 13 assertions auto
discovered from any resilience-ranking-YYYY-MM-DD.json in snapshots.
Verification: npm run typecheck:all clean, 390/390 resilience tests
pass.
Follow-up: pillar-combined score activation. The sensitivity artifact
shows rank-preservation Spearman 0.9935 and no ceiling effects, which
clears the methodological bar. Blocker is messaging because every
country drops ~13 points under the penalty, so activation PR ships with
re-anchored release-gate bands, refreshed frozen ranking, and a v2.0
methodology note.