SkyCruncher
Skycruncher logo Skycruncher pre-registered test, October 2026

Hubble's V1, through a 50 mm lens. It pulses on schedule.

In 1923 one variable star in the Andromeda Galaxy showed that the universe is far bigger than our own galaxy. I set out to catch that same star, V1, brightening and fading with a 50 mm smart telescope at a remote dark-sky observatory. I wrote the whole test down before the first frame, stayed blind to V1 until seven nights added up to a precise enough answer, and then read it once. V1 brightens and fades on the schedule the professional survey data predict.

Passed Read on 21 October 2026, after 7 qualifying nights from 8 to 20 October. The test, its pass conditions and the code were fixed on 6 October.

1.35 ± 0.16V1's swing, as a share of the swing the Zwicky survey predicts (1 means an exact match)
0 of 2,374empty spots in Andromeda's disk that swing as much as V1 does
7 nights22.9 hours of 20-second exposures, all on our own Seestar S50
8.3σhow far V1's swing stands above what empty sky produces

The star that made the universe bigger

On the night of 5 to 6 October 1923, Edwin Hubble took a long photograph of the Andromeda Galaxy, M 31, with the 100-inch telescope on Mount Wilson. He marked a few faint spots he took for novae. Checking older plates, he found that one of them brightened and faded again and again on a steady schedule. He crossed out his first label and wrote "VAR!" beside it. That star is now called V1.

V1 is a Cepheid: a giant star that swells and shrinks, and whose cycle length tells you how bright it really is. Henrietta Leavitt had found that rule a decade earlier. Compare that true brightness with how faint V1 looks and you get its distance. Hubble's answer put Andromeda close to a million light-years away (today's figure is about 2.5 million), far outside the Milky Way.

A century later, the Zwicky Transient Facility, a survey camera at Palomar, has timed V1 precisely: one full cycle every 31.39 days, brightest near the start of the cycle and faintest about four fifths of the way through. At its brightest V1 is around 19th magnitude, over a hundred thousand times fainter than the faintest star you can see by eye.

The telescope

My telescope is a Seestar S50: a 50 mm lens on a small automatic mount, the kind of smart telescope people set up on a patio. Mine sits at Starfront Observatories in Texas, which hosts remote telescopes under dark skies, and it shot V1 in 20-second exposures on clear nights. Each pixel covers 2.4 arcseconds of sky. At that scale V1 isn't alone: it sits in Andromeda's crowded disk, and its light blends with faint neighbors the telescope can't separate. How much neighbor light lands on V1 depends on the night's seeing, the blur the atmosphere adds to every star.

The rules, written before looking

I wrote and approved the test on 6 October 2026, before the telescope had taken a single frame of it. Every night went through the same frozen measuring code, one night at a time. Then one fit asked one question: does V1 brighten and fade on the Zwicky schedule, and by as much as the Zwicky data say? The fit's answer is a single number, the amplitude A. A = 1 means V1 swings exactly as much as the Zwicky data predict; A = 0 means no swing at all.

The blank-spot trick

Andromeda's disk is a lumpy glow of unresolved stars, and its noise doesn't follow a textbook. So I measured 2,400 spots in the same disk where no known variable sits, exactly the way I measured V1, and fit the same curve to each. They show what "no pulse" looks like here, lumps included. To pass, V1 had to beat all but at most one of them.

The precision bar

The test read only once the blank spots said the amplitude would be known to ±0.20 or better, with at least 4 nights. If that never happened, it would have stopped at 30 nights or on 31 December, whichever came first.

The seeing term and the cuts

The fit has a second knob besides A: a seeing slope, which lets the blended neighbor light rise and fall with each night's blur. Exposures blurrier than 10″ were dropped, and so were those with V1 within 150 pixels of the frame edge, the Sun less than 18° below the horizon, or V1 under 30° high. A night counted only with at least 1 hour of good exposures and a quiet enough sky.

Why I stayed blind

If I had peeked at V1 every night, I could have stopped on a lucky night, and luck would pass for a result. So the stopping rule never looked at V1. It used the blank spots, the calendar and the seeing only.

Passed, if both hold
  1. V1's amplitude beats all but at most one of the blank spots measured on every night (a false-alarm chance under 1 in 1,000). Held: none of 2,374 reach it.
  2. The amplitude agrees with the Zwicky swing, within twice its error plus a fixed 0.10 allowance for turning the Zwicky survey's colors into the Seestar's, which works out to 1 ± 0.38. Held: 1.35.
Not passed

Anything else. The write-up would have said so, with the amplitude and its error, and no cut, weighting or night list swapped in after the fact.

My prediction, written before the first night: V1 pulses as the Zwicky data say, and the test passes with A near 1.

The read, 21 October 2026

The result

Each dot is one night: V1's brightness that night, placed by where V1 was in its 31.39-day cycle. "Phase" 0 is V1 at its brightest; near 0.8 it is faintest. The dashed curve is the Zwicky prediction at full size (A = 1); the solid curve is the fit to my nights (A = 1.35). Brightness is in the test's flux units, where 1 is a star of 19th magnitude.

V1, night by night. Bars show each night's error, from the scatter of the 2,400 blank spots that night. The fit's seeing term is taken out of each dot, so the dots and curves compare at the same seeing. Hover or tap a dot.
V1 against 2,374 empty spots. The same fit, run at every blank spot in the disk. Empty sky gives swings near 0; the largest of them is well short of V1's 1.35. The shaded band is the range the second pass condition allowed, 1 ± 0.38.
The stopping rule, night by night. After each night that counted, the blank spots predicted how precisely the fit would pin V1's amplitude. The seventh night took it under the 0.20 bar, so the test read then, and no later night joined it.
Night ofExposuresHoursPhaseSideSeeingV1ErrorZwicky swing

Exposures are the 20-second subs kept after the cuts. V1 is the night's brightness in the test's flux units, before the seeing term; Error is that night's blank-spot scatter; Zwicky swing is where the Zwicky curve puts V1 that night, above or below its average. Two nights tried in this window didn't count (12 and 17 October: too short, and V1 too near the frame edge).

How sure

Both pass conditions held. No blank spot of 2,374 swings as much as V1, so the chance that empty sky produced this by luck is under 1 in 2,000. V1's swing is 8.3 times its own error.

The last night is the one that closed it, and it closed it in the way the test needed. Until then, both of my bright-side nights had sharp seeing, so "V1 looks brighter" lined up with "the seeing was sharp", and the fit could partly trade the pulse for the seeing knob. The night of 20 October was on the bright side in the worst seeing of the run, 7.5″. Only one knob can explain a night like that, so it pinned both, and the predicted error fell from 0.219 to 0.182.

The model is flux = μ + A · δ(phase) + b · (seeing − mean seeing), fit by weighted least squares, each night weighted by its blank-spot scatter. δ is the Zwicky template's swing about its cycle mean, per night, through each exposure's plane weights (R 0.21, G 0.69, B 0.10). The same projection applied to every blank spot gives the null: A's error 0.163 is the robust scatter of those 2,374 values, and p = (1 + number at or above A) / (1 + 2,374) = 0.00042. The tolerance is 2 √(0.163² + 0.10²) = 0.38.

The fit is good: χ² = 3.78 for 5 degrees of freedom. The seeing slope is small, b = +0.10 ± 0.18 per arcsecond, and dropping it gives A = 1.350, the same answer. Four of the seven nights beat their own 1 % blank-spot threshold on their own: the three bright-side nights and 10 October.

Why 1.35, and not 1

The swing came out bigger than the Zwicky curve says, by 35 %. That is inside what the test allowed, but only because the 0.10 color allowance was written in, and I want to be plain about it. Taken alone, V1's swing is 2.2 errors above 1.

I don't know the reason yet. Three things could do it, and this test can't tell them apart:

Later nights don't join this test; they would be a separate replication, with its own plan written first. That is the way to find out which of the three it is.

Fixed in advance, and measured

Fixed on 6 October, before any frame

  • V1's period (31.3878 days), the time of its maximum and the shape of its curve, from the Zwicky Transient Facility
  • The 2,400 blank spots, the measuring code and the color weights
  • The ±0.20 bar, at least 4 and at most 30 nights, and the 31 December end
  • The seeing knob, every cut, and what makes a night count
  • Both pass conditions, including the 0.10 allowance

Measured

  • Each night's hours, seeing and blank-spot scatter, and the stopping-rule trail
  • V1's brightness on each of the 7 nights, read once on 21 October
  • The fit: A = 1.35 ± 0.16, its seeing slope, and the blank-spot null
  • The green and red channel fits, reported but not part of the decision

Nothing changed in the test during the run. The first night needed small plumbing fixes, which the rules allowed for, and a camera setting change between the first and second nights was checked blind and moves the result by less than a thousandth of a night's noise.

Data

Our own Seestar S50 at Starfront Observatories, 20-second exposures through its UV/IR-cut filter, nights of 8 to 20 October 2026 (the set reserved for this test; nobody had used these nights before). V1's period, phase and curve shape: the Zwicky Transient Facility. Star brightness scale: ESA Gaia DR3 (ESA/Gaia/DPAC). The blank spots and the measuring code come from earlier tests on other people's frames, frozen before this one began. An earlier Experiment, Finding Hubble's Cepheid V1 in Andromeda, located V1 in those frames but couldn't confirm its pulse.