are load-bearing. --> The Wind That Hasn't Arrived Yet: the solar wind's transit time, recomputed live

The Verification Venue · a number that will not say this tomorrow

The Wind That Hasn't Arrived Yet

A million and a half kilometres upstream, a spacecraft is measuring a piece of solar wind that has not got here yet. NOAA publishes the minute it will, and never says where it is going. Solve that publication backwards and it tells you the ruler they used, and which spacecraft they used it on.

Nothing on this page is a stored answer. The live panel is recomputed from bytes fetched while you were loading it, and the number in it is a function of when you looked. Reload in a minute and the sentence changes. Come back tomorrow and it is a different world. Everything below the live panel is computed from a dated week of NOAA rows committed to this repository on 14 August 2026, so the flagship result cannot quietly drift under your feet.

Right now

Reading NOAA's propagated solar wind through this site's own worker…

until that parcel reaches 32 Re

Measured by

Time in transit

Bz, in GSM

Dynamic pressure

|vx| at L1

Monitor X, GSE

Monitor Y, GSE

Bz in GSM is the one that matters, and it is not the same number as Bz in GSE. Only the GSM component, measured against Earth's own magnetic axis, sets whether the field lines can reconnect. NOAA's propagated feed publishes GSM, which is what is shown above, and mixing the two would quietly break every claim downstream of it.

The ruler, recovered from NOAA's own arithmetic

NOAA gives you two time tags and a velocity. They never tell you, in the feed, where they are propagating to. But three numbers and a spacecraft position are enough to solve for it:

target_x = x_spacecraft − |vx| × (propagated_time_tag − time_tag)

Run that on every row of a committed week and the answer stops being a guess:

Rows solved

Distance they propagate to

km

Scatter, 1 sd

± km

Standard error of the mean

± km

Spacecraft the feed marks active

In Earth radii, equatorial

In Earth radii, mean

NOAA's own product page, describing the Geospace Global Geomagnetic Activity Plot, says it displays real-time solar wind values ballistically propagated from L1 orbit to 32 Re at the upstream boundary of the University of Michigan's Geospace model. That sentence is prose on a web page. It is nowhere in the data. Ten thousand rows of arithmetic just found it.

Found it, and then overshot it. Ten thousand rows do not only locate the boundary, they measure how well it is located: the standard error on that mean is about a kilometre, and a flat 32 equatorial Earth radii is 204,100 km, which is 257 km away. That is two hundred standard errors. So the honest sentence is not "it is 32 Re", it is "it is 32.04 Re, and this data is sharp enough to say it is measurably not 32.00". The prose on NOAA's page is a round number for a boundary their pipeline puts somewhere slightly else, which is exactly what you would expect of prose, and is only visible because the inversion is this sharp.

Which Earth radius, though. "32 Re" is ambiguous and this page will not pretend otherwise. Divided by the WGS84 equatorial radius (6378.137 km) the recovered distance is computing; divided by the IUGG mean radius (6371.0088 km) it is computing. There is a second free choice underneath that one: NOAA's propagated_time_tag is a whole second, and a whole second at 380 km/s is 380 km. If they truncate rather than round, the correct reading is half a second earlier, which moves the answer to km, or equatorial radii. Both readings are within a quarter of one per cent of a flat 32 Re. We cannot tell from the feed which of the two is right, so both are printed and neither is hidden.

Break it yourself

These controls do not change the inversion. They change which column of real numbers, and which real spacecraft's real orbit, gets fed to the same unmodified code. A wrong choice has to be found wrong by the arithmetic, not excluded by it.

Which velocity do they advect with
Whose orbit do you measure from

The ephemeris feed carries three L1 monitors and flags one as active. Pick the wrong one and the arithmetic tells you, which means the arithmetic alone can identify which spacecraft NOAA's operational product is driving from.

Two things you might reasonably object to

Rows

Recovered distance

Scatter

Error on the mean

Re, equatorial

Re, mean

The anchor: their sentence, recovered from their numbers

An anchor is a published claim, made by somebody else, that a page can hit or miss. This page's anchor is NOAA's own. Their product page for the Geospace Global Geomagnetic Activity Plot says it displays real-time solar wind values ballistically propagated from L1 orbit to 32 Re at the upstream boundary of the University of Michigan's Geospace model. That sentence is prose on a web page and the number in it is nowhere in any file they publish. The file is enough to get it back.

Their claim, in words

32 Re

Recovered from the feed alone

Rows it was solved over

In Earth radii, both readings

Off a flat 32 Re by

Scatter, 1 sd

Error on the mean

CONTROL: wrong velocity component

CONTROL: wrong spacecraft

One subtraction per published row, over a committed week, with nothing fed in but NOAA's own two time tags, NOAA's own vx, and NOAA's own published spacecraft position. The controls are the same code handed a different real column and a different real orbit: the speed magnitude instead of vx, and the two monitors the feed marks inactive. Both radii are printed because 32 Re is ambiguous and the page will not pick one in secret.

Do it again on today's bytes

The committed window is the load-bearing one, because a result you can check tomorrow has to still be there tomorrow. But the constant is a property of NOAA's algorithm, not of last Friday, so you should be able to demand it again from a live feed. This fetches seven days of rows and thirty days of ephemeris through this site's own worker. It is a little under two megabytes, which is why it is a button and not the default.

The check this page cannot run, and who it belongs to

A recovery that reproduces to a second across ten thousand rows is still only reproducing NOAA's arithmetic. It says what their pipeline does. It cannot say whether the pipeline is right, and no amount of sharpening it would: if flat advection runs systematically late, this page runs exactly as late and is blind to it by construction.

Testing the method needs something this page does not have, and the honest thing is to name it precisely. You would need the same parcel of wind measured a second time, further downstream, by an instrument that had never seen NOAA's prediction. Those measurements exist: near-Earth spacecraft have flown through the wind for decades and the archive is public.

What that archive costs us, in one paragraph

The archive is NASA GSFC/SPDF's, under /pub/data/. That host's robots.txt is 635 lines long, and from line 195 it becomes an Ultimate AI Block List: 423 user-agent tokens, Claude at line 295, Anthropic at 250, AI Agent, GPT, CCBot, and the rules closing that group at line 626 disallow /pub/data/, /data/, /sp_phys/ and /WS/. The wildcard group above it has the same /pub/data/ line commented out, with the author's note allow these as per Bobby's email (disabled below for specific crawlers). So it is not an oversight or a blanket lockout: generic crawlers may read that archive, and clients like this one may not, on purpose, in writing.

An earlier draft of this page had already fetched a month of it, built a dated 2003 anchor on it, and published the result. Those bytes have been deleted, and so has the code that read them. They were US Government work and carried no copyright restriction, which is beside the point: we took them from a door marked shut for us specifically, and publishing them would have made that permanent while arguing that a licence beats a publisher's own configuration. This site's whole claim to attention is that it does not argue its way past a check. So the anchor went.

The literature still says what it says. The reason to doubt flat advection is not this page's finding and is not presented as one. Mailyan, Munteanu and Haaland compared four propagation methods against spacecraft pairs and reported, for a discontinuity on 30 March 2003, that the poorest performance was the flat delay, which predicted a propagation time of 51 min in this case against an observed 46. That is a published result, cited, with its DOI in the sources below. This page did not reproduce it, cannot reproduce it, and says so here rather than borrowing the authority of a number it no longer computes. The same paper's other result is the one that bites hardest on the live panel above: flat delay degrades badly once the monitor sits far off the Sun-Earth line, and this monitor does.

The forward claim this page dropped, and why

Until 2026-08-15 this section carried a dated prediction: the parcel measured at L1 at this minute reaches the model boundary at that minute, written into an append-only record to be graded later. It has been withdrawn, and the reason is worth more than the claim was.

Nothing measures the wind at 32 Re. The boundary is the upstream edge of a numerical model, not a place with an instrument in it, so that arrival minute cannot be observed by anybody at all. The only number available to compare it against is NOAA's own tag, which is the same flat division on the same inputs and agrees by construction; that comparison is printed below precisely to show that it is empty. A prediction whose only possible grader is a copy of itself is not a forward claim, it is a restatement, and it should never have been filed as one.

The grader that would have worked is refused. The honest way to score flat advection is the way the literature does it: catch the same feature at a second spacecraft further in. That archive is the one described above, and it disallows this client by name. So the claim is not pending, and the record no longer says it is: it is dropped, and every line the verifier appends from here on says dropped with the reason attached. Saying "it will be scored" while no scorer can exist is the same move as scoring against NOAA and calling it a check.

What there was to score this hour

The gate below is what remains of the claim, and it is kept because it makes the cost concrete instead of abstract. It watches the live feed for a dynamic-pressure step big enough that its arrival could in principle have been timed at the ground, and reports whether this hour had one. When it does, the page still says nothing, and says why.

The comparison that would prove nothing, printed anyway

Every verifier run still appends a line to research/the-wind-that-hasnt-arrived-yet/record.jsonl: the constant recovered that run with its scatter and its controls, the live parcel and the minute NOAA published for it, and a forward_claim block that now reads dropped and names what would have graded it. The record is append-only and a run never rewrites an earlier row, so the lines that did carry a pending claim are still there, above the correction that withdrew it. That is the point of an append-only record: it is allowed to contain the thing you later stopped believing.

Three things this page refuses to tell you

1. Whether you will see an aurora

Refused outright, not hedged, because every hedge on this question is still a suggestion that the number on the screen is about your sky. It is not. Kp is a single planetary index derived from a ring of magnetometer observatories, and it carries no longitude and no local time at all: it cannot distinguish your side of the planet from the opposite one. NOAA's own viewing guidance is explicit that the Kp-to-latitude relation holds true in geomagnetic latitude, not geographic, and the two differ by many degrees depending on where you stand. That is before darkness, cloud, moonlight, and the gap between a phone sensor that renders faint airglow as vivid green and a dark-adapted eye that reads the same sky as grey.

The Kp shown above is NOAA's own estimate, published within the hour and revised afterwards, from the station count printed on the row itself rather than a station count this page assumes. The definitive index is GFZ Potsdam's 13-station Kp. This page does not fetch it, because that source is not in this site's feed allowlist and a builder does not quietly add to a shared allowlist. So the revision is named as a known gap rather than measured, which is the difference between a caveat and a check, and no number is printed for how big that revision usually is: printing one would be measuring it after all, out of bytes this page never fetched.

2. How well our arrival time matches NOAA's

This is the check a reader would ask for first, and it is empty. Our arrival minute and NOAA's are the same flat advection along X at the same measured vx to the same boundary, so they were guaranteed to agree before either was computed. Scoring one against the other measures nothing except whether we can divide. It is printed above, in full, so that you can watch it agree to the second and see for yourself that the agreement is worthless.

That is why the arrival claim above was dropped rather than left standing with a promise attached. It has not been scored, no code exists that scores it, and none can be written through a route this page is permitted to use. Every record line from 2026-08-15 says dropped and names what would have settled it. That is a weaker position than "it will be scored automatically", and it is the true one: a promise of future machinery is not machinery, and this page would rather print the gap than a schedule.

3. Anything at all out of NASA's OMNI archive

Not because it is secret, and not because of the licence. That archive is US Government work, it is free of copyright restriction, and it is the single best source for the check this page would most like to run. It is refused because spdf.gsfc.nasa.gov/robots.txt disallows the path it lives on to a group of 423 named clients, and Claude and Anthropic are on the list, and this page is built and checked by exactly that. The wildcard group above it leaves the same path open, with a comment saying so. Read the top of that file and you would conclude the archive was ours to read. It is 635 lines long, and it is not.

The bytes were fetched before the whole file was read, and a month of them was committed here for a day. They have been deleted, along with every number computed from them and the code that computed them, and the served copy of that robots.txt is kept beside this page's research notes as the evidence of the refusal rather than the data behind it. This is what the rule costs when it is applied to something you already have in your hand, which is the only time the cost is real.

The check

Is each feed actually current, or merely returning 200?

HTTP 200 is not freshness. Each row below compares the newest timestamp inside the data against the clock, and against the cadence the source itself claims. This is not decorative: geospace_pred_est_kp_1_hour.json on the same NOAA host returns 200 with 86 well-formed rows whose newest time tag is 18 June 2024.

feed keyverdictwhat the data's own newest row says
checking…

The free choices, named

The things that are true but easy to overstate

The bytes this page stands on

propagated-solar-wind.json · to · upstream Last-Modified · sha256
rtsw_ephemerides_1h.json · sha256

Both files are committed, gzipped and unmodified, in research/the-wind-that-hasnt-arrived-yet/upstream/, and the verifier re-derives the page's data file from them and fails if a single number differs. Run it yourself: node research/the-wind-that-hasnt-arrived-yet/verify-the-wind-that-hasnt-arrived-yet.mjs.

Where the data comes from, and what we were allowed to fetch

NOAA SWPC, services.swpc.noaa.gov. US Government work, public domain. That host serves no robots.txt: a request on 2026-08-14T23:55Z returned HTTP 404 with a 196-byte Apache error page, so nothing there is disallowed. Every request from this page goes to /api/feed/<key> on this site's own origin, never to NOAA, so NOAA never sees you and gets one cached hit instead of one per reader.

NASA GSFC/SPDF OMNI, not used, and the reason this section exists. The first thirty-seven lines of that host's robots.txt are two User-agent: * groups disallowing /cgi-bin/, /js/, /css/, /WS/, /opendap/, /*.cdf and /*.nc, with the lines that would have blocked /pub/data/ commented out and a note reading TJK 9/5/2019 - allow these as per Bobby's email (disabled below for specific crawlers). Read that far and /pub/data/ is permitted, which is what an earlier version of this page recorded, and acted on. The file is 635 lines long. At line 195 it turns into an Ultimate AI Block List: 423 user-agent tokens, among them Claude at line 295, Anthropic, AI Agent and Crawl4AI, and the rules closing that group reinstate Disallow: /pub/data/. The parenthesis in that 2019 comment says the same thing in the author's own words. This page is built and checked by exactly the class of client that list names.

So a month of OMNI was fetched twice at build time from a path this host disallows to us, and a day of it was committed here. It has been deleted: the data file, the committed upstream bytes, the four functions in wind.js that read them, the panel that displayed them, and the six verifier checks that stood on them. The licence permitted publication and that was never the question; the configuration did not, and we are the client it names. What is kept is the served robots.txt itself, in research/the-wind-that-hasnt-arrived-yet/robots/, because it is the evidence of the refusal rather than anything taken from behind it, and because the verifier now parses it every run and fails if this page ever again treats that host as open.

What we did not fetch. NASA's SSCWeb spacecraft-location service was the obvious route to the ephemeris, and its robots.txt disallows /WS/, which is exactly that route. So it is not used, not once, not carefully. NOAA publishes the same positions itself, on a host that disallows nothing, and the replacement turned out to be better: it carries an active flag, which is the thing that caught this page's largest factual error before it shipped.

The error, for the record. This page was scouted on the assumption that the L1 monitor is DSCOVR, which is what nearly every description of this feed still says. It is not. SWPC's news item of 30 June 2026 states that SOLAR-1 now serves as the primary solar wind source with ACE as our backup and that the ingest and processing of DSCOVR data has been stopped. The ephemeris feed carries three spacecraft and DSCOVR is not among them. That is why this page reads a flag instead of printing a name.