A thin line beside a passage says how far its claim is proven: measured, implemented, illustrative, inferred. Colored numbers carry the same mark. A passage with no line is stated. How claims are marked.
What plate solving is
Plate solving works out where on the sky a frame points by matching the stars in it to a star catalog. The answer is the sky position of the frame's center, how far the frame is turned, and its scale: how many arcseconds of sky each pixel covers.
The name comes from the glass photographic plates astronomers measured by hand. A sub is one of the single short exposures a Seestar takes and stacks; each sub can be solved on its own.
Everything after it depends on the solve: knowing which star is which, measuring a star's brightness against its catalog neighbors, lining subs up for a stack, and measuring positions. A wrong solve doesn't just lose one number; it makes every later number about the wrong stars.
How four stars find the sky
A solver can't compare a whole frame against the whole sky, so it compares small shapes. It picks four stars that sit close together, a quad. The two stars farthest apart set a little coordinate frame of their own, and the positions of the other two inside that frame give four numbers. Those four numbers stay the same when the frame is shifted, turned or zoomed, so they can be looked up in an index of the same codes computed in advance from the catalog.
One match proposes a pose: where the frame points, how it is turned and its scale. The open-source solver astrometry.net made this four-star approach widely used.
The 1.3 old engine matched against an index of 20.9 million quad patterns covering the whole sky, built from 6.49 million stars in the Gaia DR3 catalog brighter than magnitude 15 (in Gaia's G band), in 15 scale bands for fields from a quarter of a degree to 45 degrees across. Those are counts as of 2026-07-22, from the July 2026 Corpus snapshot. (implemented)
A blind solve starts with no idea where the frame points and searches the whole index. An assisted solve is given a hint of roughly where to look, which narrows the search a long way. A Seestar saves its subs as FITS files, the standard astronomy image format, and a FITS file's header (the text block at the top of the file) records where the telescope was pointing, so a Seestar sub usually comes with its own hint.
A match is a proposal, not a solve
With tens of millions of patterns in an index, a chance match between a frame's quad and the wrong patch of sky is always possible, so counting matched stars isn't proof.
The old engine checked every proposed pose before reporting it. It measured the light at the positions where catalog stars should fall in the frame if the pose were right (forced photometry: measuring at a given position, whether or not a star was detected there), and a statistical test with a controlled false-discovery rate decided whether the solution was confirmed. That check, not the match count, accepted or rejected a solve. If a solve failed, the output said it failed and why; there was no best-guess mode. (implemented)
I think this is the part that matters most to anyone measuring with a Seestar. A solver that reports a wrong answer confidently is worse than one that says "not solved", because the wrong answer quietly poisons everything built on it.
Why solves fail
- Clouds and haze. Thin cloud dims and hides stars unevenly, so the quads in the frame don't match the catalog's.
- Trails. If the telescope moves during a sub, stars become short dashes and their centers shift, which bends the quads. Wind, a bump or a tracking hiccup does it.
- Too few stars. Twilight, a bright moon, a very short sub, dew on the lens or a target low in the murk can leave too few stars to form quads.
- Wrong scale. If the solver is told the wrong pixel scale, or the field is outside the scales its index covers, it looks for quads of the wrong size and finds nothing.
Trails hurt less than I expected. On my remote S50's first two nights, the stacker rejected at least 489 subs as trailed (up to 37% of some targets' subs on the first night), yet only 3 of the 4,202 subs failed to solve, so at least 486 trailed subs still solved. That is my arithmetic on the Experiment's counts, not a separate test. (inferred)
My numbers
Two very different sets of frames, solved by different software. Read them side by side, not as a before and after.
| Frames | Solved | Conditions |
|---|---|---|
| Two nights from my own Seestar S50, 8 and 9 October 2026 | 4,199 / 4,202 | One telescope, subs of 2 to 30 s, seven targets, a remote dark-sky observatory, equatorial mode. Workbench results, not a shipped feature. Exploratory: not yet confirmed on a fresh night. (measured) |
| July 2026 baseline, 96 frames | 44.8% blind | A mixed corpus: 51 FITS frames and 45 Canon CR2 camera raw files. The 1.3 old engine. Blind solves only, of all 96 frames (53.1% of the 81 attempted). (measured) |
Two nights from a remote Seestar S50
I put my own Seestar S50 at a remote dark-sky observatory. On its first two nights, 8 and 9 October 2026, it took 4,202 subs of seven targets, and 4,199 of them plate-solved. The telescope runs on its built-in mount in equatorial mode, and the subs are 2 to 30 s long. (measured)
The qualifier that travels with it: the Experiment is marked Exploratory: "Every check here was made within these two nights. Nothing has yet been confirmed on a fresh night." One telescope at one dark site is not a fleet. Source: First nights from a remote Seestar S50 at a dark-sky observatory (8 October 2026, Exploratory).
The July 2026 baseline
On 12 and 13 July 2026 the old engine (the 1.3 software, before the solver was rebuilt) ran over a fixed set of 96 frames of mixed formats, Canon camera raw files included. (measured)
- Blind, it solved 43 of the 96 frames: 44.8% of all frames, or 53.1% of the 81 it attempted. 15 were skipped and never attempted (14 as part of a correlated set, 1 too large). (measured)
- By format: FITS solved 41 of 51 frames (80.4% of all, 82.0% of the 50 attempted); CR2 solved 2 of 45 (4.4% of all, 6.5% of the 31 attempted, with 14 skipped). The snapshot doesn't break down why the raw files failed, so I won't guess here. (measured)
- 11 more frames solved with a hint after failing blind. Blind and assisted solves are never pooled, so those 11 don't count toward the 44.8%. (measured)
- Run time per frame: median 10.8 s, while the p90 (the time 9 frames in 10 finish within) hits the solver's 195.9 s timeout ceiling, so at least one attempt in ten ran until the solver gave up. On the 11 frames solved both ways, the assisted solve was 19.8 times faster than the blind attempt (median): 9.9 s against a blind median of 195.9 s, the same timeout ceiling. Over the 40 frames with a timing breakdown, solving took 71.1% of the pipeline's time and 59.4% of wall-clock time. (measured)
Source: Corpus snapshot, 12 July 2026: the old engine's baseline. That page is frozen; later software would give different numbers.
If your frames won't solve
Look at a failed sub before you blame the solver: are there stars, are they round, are there enough of them, and is the scale you gave the solver right for your telescope? Most failures are one of those four. Keep your FITS subs, because each one carries the pointing hint a solver can use.
Read more
- Starlight, Measured: the exhibit's plate-solve step, in the order the light meets it.
- Frame receipt format: what gets recorded about each frame, the solve included. A receipt is that record: what ran, what it measured, and what it could not.
- Corpus snapshot, 12 July 2026: the old engine's baseline in full.
- First nights from a remote Seestar S50: the two nights in full, including the trailed subs.
- All Learn Notes
Star data: ESA Gaia DR3 / DPAC.