Klimaspirale Part 4: CO₂, and What Was Under the Post
The project sat still for two weeks. When I opened the page again, I started with something that wasn’t in any review report:
“I’m not satisfied with how the events and Super El Niño are shown. It looks (even individually) confusing and overloaded. And the time axis with the years still doesn’t feel right somehow.”
Until then the event labels hung freely in the 3D scene and overlapped at some camera angles.
Claude Code and I moved them into a sorted column at the edge of the frame, each one connected to its point in the spiral by a line. The crossings aren’t entirely gone, but the picture was already much cleaner.
Three agents just before the launch
I ordered the final polish as a review:
“You are architect and reviewer. You use Opus subagents for the actual tasks. Review the website […] This review is meant to give the final polish before publication. Can you think of anything else we should improve?”
Three agents ran in parallel: one checked the data against the sources, one read code and translations, one operated the page in the browser.
Two findings were clear right away. At 1280 pixels width the control panel painted over the first letters of the German heading. And in English mode there were still German tooltips, plus a decimal comma in the El Niño note. The review’s sentence gets it about right: “on a product whose whole selling point is DE/EN parity, that is the most visible localization leak”.
The data check delivered the finding that actually changed something. June 2026 was available by then, and seven earlier months had shifted retroactively, by hundredths of a degree. In the spiral that doesn’t change a single visible pixel. But the claim “these are the NASA data” isn’t really verifiable without a point in time.
“About the back-revised months: so we should always state the date of our data status as well (in the same place where we name the sources).”
It’s visible now as “data as of” with a date in the source line.
A script distributes it into all versions and checks it in fourteen places, so that no version shows a different date than the numbers sitting inside it.
That the most recent values are provisional anyway is something GISS says itself: missing station reports simply get filed later, and that’s why the last months of a series still shift even without a change of method.
A few smaller things came along as well, among them the Aeterna Labs wordmark under the sources and different logic for the control bar. It used to fade out by itself after a few seconds.
Now it waits until you’ve touched it once: “Thinking new users look at the spiral first and don’t notice that there was a play bar down there”.
Why a CO₂ curve gets added
The occasion came from outside. I’d watched a climate video and discussed with Claude Code whether to build more facts and data into the page.
Claude advised against it: the spiral shows data, not messages; everything narrative belongs somewhere else.
What we did agree on was CO₂. Not as “more data is better”, but for a concrete reason. The spiral shows the effect. The most common objection, though, aims at the cause: that all of it is natural variation.
A temperature series doesn’t really have an answer to that, no matter how cleanly it’s calculated. So the driver now runs alongside, as a strip on the same time axis.
Ice core up to 1958, measuring station after that
That raised the same problem as on the first day, only harder. There’s no single measurement series covering 146 years of CO₂. The continuous direct measurement starts in 1958 in Hawaii. Everything before that comes from air trapped in ice.
Nothing gets mixed, though. Up to February 1958 the curve draws the ice-core series from Law Dome in Antarctica, after that the series from the Mauna Loa measuring station, published by NOAA’s Global Monitoring Laboratory. The ice-core part is dashed, the measured series solid.
At the seam the jump stays visible: February 1958 ends at 315.01 ppm, March 1958 begins at 314.44. A drop of 0.57 ppm, deliberately there to see.
The finished series has 1,758 months without a gap. 1880 stands at 289.71 ppm, June 2026 at 429.06 ppm in the seasonally adjusted curve. From just under 290 to 429 is almost half again, over exactly the period the rings next to it unwind.
The seasonally adjusted curve goes up year after year, without the swings the temperature series has.
Both versions of the CO₂ series, raw and adjusted, come straight out of the NOAA file. Nothing was smoothed locally. That sounds like a detail, but it’s actually pretty important: a self-smoothed curve would be a calculation of my own on somebody else’s data, and that would need justification and documentation on top.
Where two sources overlap you can check whether they say the same thing. In the window from 1958 to 2004, Mauna Loa sits almost consistently higher than the ice-core curve, on average by 2.29 ppm.
The explanation is the gradient between the hemispheres. Mauna Loa lies at 19 degrees north, close to the regions where most of the CO₂ is emitted. Law Dome lies deep in the south.
Mixing takes time, so the north reads higher. And because emissions have risen over the decades, the gap grows along with them.
That’s not an error at the seam. It’s the reason to switch at 1958: a mean of north and south would be a quantity measured at neither of the two places.
An early draft of the explainer text claimed the opposite: that the two series don’t diverge in the overlap window. That was simply wrong; the measurement disproved it.
The side view
The CO₂ strip was in place, and then I noticed something about it:
“Because the spiral is tilted the CO₂ curve gets distorted by perspective, and someone could accuse us of exaggerating the CO₂ rise… make CO₂ fixed?”
The same objection as in Part 3, on a new object. There I’d asked for the strongest counter-argument and got it from the review. Here it came on its own.
What got built is a side view: the camera at eye level with the middle of the strip, so that top and bottom are the same distance away. The distortion goes from around 1.25 to exactly 1.
What was under the post
For this text I went back to the Reddit post it all started with: the old climate spiral, no source attribution, no baseline period.
Two things were there that nobody knew about while building.
The first is the opening frame. The clip shows a black ground, the month abbreviations in a circle, the year 1880 in the center, and three reference circles at minus 1, 0, and plus 1 degree. No source attribution, no baseline period, no line at 1.5 degrees.
The video that set off the idea didn’t have the very problem that later cost the most honesty work.
The 1.5-degree cylinder, the Paris rings, the offset between the baseline periods, the explainer overlay: all of that hangs on a reference this clip never established.
The care that went into Part 2 answers a question my own version raised.
The second is the comments under the post. They read almost like the review Claude put together for us weeks later.
One comment pointed to the Roman and the medieval warm periods and to 150 years being a tiny sample. That reasoning is exactly why the CO₂ curve stands next to the spiral today.
Another asked what happened in 2016; the reply in the thread named El Niño. The Super El Niño markers stand against that today.
Then this one:
“Scientists determine the global temperature by combining air temperature measurements […] then calculating how each reading differs from a 1951–1980 baseline to produce temperature anomalies. This video is a lie.”
The method is correctly described in it. The conclusion is the opposite of what follows from it. And there was no baseline period in the picture against which the suspicion could have been checked. The ⓘ overlay is the answer to exactly that gap, built without knowledge of this comment.
And one that anticipated the review’s strongest finding weeks before it:
“I’ve noticed you’ve used distance from center and color to both mean temperature. If you opted to instead use one of these as a display for the year you could probably display the over year trend without needing to do the third dimension”
The question about the starting year was there too, why 1880, answered with the reliability of the measurements and the note that before it there’s only indirect evidence, ice cores for example. That’s the transition the seam of the CO₂ curve now depicts.
Four weeks of work on baselines, markers, explainer texts, and a CO₂ curve. The list for it had been sitting under the video that supplied the idea from the start. I only read it while writing this text.
The post itself has since been removed by a moderator, the title replaced with a placeholder, the video no longer reliably retrievable. The thing that set the project off no longer exists at its address, while what came out of it is going online right now.
What is online now
The interactive spiral runs at climate.aeternalabs.io: bilingual, with a Paris switch, top-down view, side view, height slider, the CO₂ strip, the explainer overlay, and the snapshot export. Plus eight video versions in 4K, which now live in the video gallery.
Under all of it the data-as-of date stands next to the sources; the last month of the series is July 2026, global +1.23 °C. The Europe view came back out before the launch, for the reason laid out in Part 3.
Two things are planned but not built yet. The facts timeline sits as an idea for a subpage of its own. And the annual data update deliberately comes only after the launch. The sentence the project started with was “it’s automatable after all”. Delivering on it after the launch turns it into a built proof instead of an announcement.
Part 4 of 4 in the Klimaspirale series.
← Klimaspirale Part 3: The Objection I Missed
The spiral from this series is a project: Climate Spiral.