Skip to content

feat(sea-level): world 40, in some places the sea is going down - #60

Merged
Hotragn merged 1 commit into
mainfrom
world-40-sea-level
Aug 22, 2026
Merged

feat(sea-level): world 40, in some places the sea is going down#60
Hotragn merged 1 commit into
mainfrom
world-40-sea-level

Conversation

@Hotragn

@Hotragn Hotragn commented Aug 21, 2026

Copy link
Copy Markdown
Owner

The other half of a sentence the ice tab makes explicitly: melting sea ice does not raise sea level, the rise comes from land ice and thermal expansion, and neither is computed there. This computes what is measured instead.

Two instruments, two questions
A satellite altimeter measures the sea surface against the centre of the Earth and gives one number for the planet, about 3.2 mm a year. A tide gauge measures it against the land it is bolted to, and the land moves. Over the same decades: Skagway minus 21 mm a year, because the land is rising two centimetres a year as Little Ice Age glaciers unload it; Stockholm and Oslo negative from post-glacial rebound; Manila plus 13, because the groundwater was pumped out from under the city. A spread of over 30 mm a year in one ocean. Both instruments are right, and anyone asking whether their street will flood wants the gauge.

Acceleration
A quadratic fit gives 0.081 mm/yr per year against a published 0.084, so the rate was about 1.9 mm/yr at the start of the record and is about 4.5 now. The famous 3.2 is the average of something that has doubled and describes neither end. Shown again with no curve assumed, as straight lines over ten-year blocks.

Three findings that corrected assumptions made while writing this

  1. The record is not a clean relay. Two satellites report at once for years, because a new altimeter flies in FORMATION with the old one before it retires. That is how the splice is calibrated, so the missions are kept apart and the disagreement measured: 1.93 mm on average over the 3.5-year TOPEX/Jason-1 overlap, worst 5.67 mm, against a signal of 3 mm a YEAR.
  2. A mission's samples are not contiguous either, and the first explanation for that was wrong. It is not coverage holes: during an overlap the two ten-day cycles are out of phase, so samples interleave and each mission's indices step by two. Measured in time there is exactly one real gap in 33 years, 72 days of Jason-1.
  3. The decades are not a tidy staircase. The first two are the same within their error bars and only the third is faster, partly because the 2010-2011 La Nina moved an enormous amount of water onto land. Curvature over thirty years does not oblige a series to rise smoothly inside it. The copy said otherwise until the numbers were on screen.

A disagreement left unresolved on purpose
Our least squares on NOAA's own file gives 3.23 mm/yr where their header says 3.17. Three explanations were tested and rejected: the seasonal treatment (adding harmonics to the seasonal-retained product reproduces the seasonal-removed slope to 0.001, which is a real cross-check of their deseasonalisation and it passes), the start date, and which satellite is preferred during an overlap. Both numbers are on the page. Tuning ours until it matched would have destroyed the only interesting thing there.

Conventions, named
NOAA publishes the same passes four ways and the spatial domain alone moves the trend 2 percent. The figure usually quoted also carries a glacial isostatic adjustment of +0.3 mm/yr, because the ocean floor is still sinking as the mantle relaxes: 3.2 and 3.5 both defensible, answering different questions. Named, not applied. PSMSL values sit above an arbitrary local datum, so the gauge exhibit charts rates and never heights on a shared axis.

29 tests validate against NOAA's own header trends, the published acceleration, Brest starting in 1807, and the known rebound stations. The module refuses trend windows under ten years and acceleration windows under twenty, which is why there is no trend per satellite: three of the five have flown for under a decade and there is no sea level trend in four years of data.

Stated on the page: no projection to 2100, which needs ice sheet dynamics rather than a parabola carried forward; no flood risk, since mean sea level is the baseline a surge starts from and not a forecast; no split between thermal expansion and the ice sheets, which needs GRACE and Argo.

Payload went from 276 KB to 86 KB by hoisting the shared time axis and the shared per-satellite coverage, storing missions sparsely, and dropping the merged series the browser can rebuild.

Verified: 1,488 tests pass, tsc clean, fresh production build, all 40 routes sweep clean, no console errors, no mobile overflow.

What & why

How to test

Checklist

  • npm run build passes locally.
  • npx vitest run passes (added or updated tests for new logic where it makes sense).
  • No fake data. Every number this PR puts on screen traces to a data source or a documented calculation.
  • Anything simulated is labeled as simulated in the UI, right where it appears.
  • If this adds or changes a data source, its license and endpoint are logged in docs/DATA_SOURCES.md in this same PR.
  • The project stays keyless — no new required API keys or .env config (a new source needing a key ships with a keyless fallback).
  • Positioning still goes through lib/geo.ts; the globe mesh is not rotated (coordinate convention is locked).
  • No new per-frame allocations in useFrame loops; heavy scenes stay dynamically imported (60fps budget on integrated graphics).

The honesty rule

This project's credibility rests on one rule: every number on screen traces to a real data source or a documented calculation, and anything simulated is labeled as simulated. By opening this PR you confirm your change respects it.

Screenshots / recording

The other half of a sentence the ice tab makes explicitly: melting sea ice does
not raise sea level, the rise comes from land ice and thermal expansion, and
neither is computed there. This computes what is measured instead.

Two instruments, two questions
A satellite altimeter measures the sea surface against the centre of the Earth
and gives one number for the planet, about 3.2 mm a year. A tide gauge measures
it against the land it is bolted to, and the land moves. Over the same decades:
Skagway minus 21 mm a year, because the land is rising two centimetres a year as
Little Ice Age glaciers unload it; Stockholm and Oslo negative from post-glacial
rebound; Manila plus 13, because the groundwater was pumped out from under the
city. A spread of over 30 mm a year in one ocean. Both instruments are right,
and anyone asking whether their street will flood wants the gauge.

Acceleration
A quadratic fit gives 0.081 mm/yr per year against a published 0.084, so the
rate was about 1.9 mm/yr at the start of the record and is about 4.5 now. The
famous 3.2 is the average of something that has doubled and describes neither
end. Shown again with no curve assumed, as straight lines over ten-year blocks.

Three findings that corrected assumptions made while writing this
1. The record is not a clean relay. Two satellites report at once for years,
   because a new altimeter flies in FORMATION with the old one before it
   retires. That is how the splice is calibrated, so the missions are kept apart
   and the disagreement measured: 1.93 mm on average over the 3.5-year
   TOPEX/Jason-1 overlap, worst 5.67 mm, against a signal of 3 mm a YEAR.
2. A mission's samples are not contiguous either, and the first explanation for
   that was wrong. It is not coverage holes: during an overlap the two ten-day
   cycles are out of phase, so samples interleave and each mission's indices
   step by two. Measured in time there is exactly one real gap in 33 years,
   72 days of Jason-1.
3. The decades are not a tidy staircase. The first two are the same within their
   error bars and only the third is faster, partly because the 2010-2011 La Nina
   moved an enormous amount of water onto land. Curvature over thirty years does
   not oblige a series to rise smoothly inside it. The copy said otherwise until
   the numbers were on screen.

A disagreement left unresolved on purpose
Our least squares on NOAA's own file gives 3.23 mm/yr where their header says
3.17. Three explanations were tested and rejected: the seasonal treatment
(adding harmonics to the seasonal-retained product reproduces the
seasonal-removed slope to 0.001, which is a real cross-check of their
deseasonalisation and it passes), the start date, and which satellite is
preferred during an overlap. Both numbers are on the page. Tuning ours until it
matched would have destroyed the only interesting thing there.

Conventions, named
NOAA publishes the same passes four ways and the spatial domain alone moves the
trend 2 percent. The figure usually quoted also carries a glacial isostatic
adjustment of +0.3 mm/yr, because the ocean floor is still sinking as the mantle
relaxes: 3.2 and 3.5 both defensible, answering different questions. Named, not
applied. PSMSL values sit above an arbitrary local datum, so the gauge exhibit
charts rates and never heights on a shared axis.

29 tests validate against NOAA's own header trends, the published acceleration,
Brest starting in 1807, and the known rebound stations. The module refuses trend
windows under ten years and acceleration windows under twenty, which is why
there is no trend per satellite: three of the five have flown for under a decade
and there is no sea level trend in four years of data.

Stated on the page: no projection to 2100, which needs ice sheet dynamics rather
than a parabola carried forward; no flood risk, since mean sea level is the
baseline a surge starts from and not a forecast; no split between thermal
expansion and the ice sheets, which needs GRACE and Argo.

Payload went from 276 KB to 86 KB by hoisting the shared time axis and the
shared per-satellite coverage, storing missions sparsely, and dropping the
merged series the browser can rebuild.

Verified: 1,488 tests pass, tsc clean, fresh production build, all 40 routes
sweep clean, no console errors, no mobile overflow.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
h-o-t-earth Ready Ready Preview Aug 21, 2026 11:49pm
1 Skipped Deployment
Project Deployment Actions Updated (UTC)
hot-earth-docs Ignored Ignored Aug 21, 2026 11:49pm

@Hotragn
Hotragn merged commit e2c96b6 into main Aug 22, 2026
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant