Rubric version 1.0
How the score works
A score nobody can audit is a score nobody should trust. Everything that produces a number on a result page is on this page.
Two numbers, not one
Execution is what you controlled: focus, tracking, tilt, colour calibration, dithering, exposure discipline, gradient control and framing. It is graded strictly out of 100 and it is the only figure worth plotting over time, because it does not move with the moon.
Ceiling is what the sky allowed. It is not a grade. It is the maximum a flawless session could have reached from your coordinates on that date, given the darkness, the moon, the target's altitude, the cloud and whether you gave the object enough time.
The headline figure is the two combined, shown against the ceiling. The gap between them is the point. Grading a Bortle 7 back garden against a dark-site observatory would be arithmetically defensible and would tell every beginner they had failed. Grading against what was achievable tells them the one thing they want to know: is the fix technique, or is the fix a different night?
Execution weights
Ordered by how much each fault costs the finished image at the beginner stage. Focus outranks everything because nothing recovers a soft frame. Framing is last because a well-framed noisy image is still a noisy image.
| Component | Weight | Measured from |
|---|---|---|
| Focus | 25 | How many pixels wide the average star is (its FWHM). Free below 2.7 pixels, zero above 6.3. Judged in pixels rather than arcseconds because these scopes are undersampled: an absolute arcsecond threshold would mark every frame from every one of them as out of focus. |
| Star shape | 20 | How far from round the average star is (eccentricity, from second moments). Free below 0.22, zero above 0.60. |
| Colour | 13 | How far the empty background sits from neutral grey, sampled from the darkest 40% of pixels. Free within 6%. |
| Grain | 15 | Whether the noise runs in one direction instead of being random, measured as directional autocorrelation of the high-pass residual. Free below 0.06, zero above 0.36. |
| Even background | 11 | How much brighter one side of the frame is than the other, from a least-squares background plane. Free below 5%. |
| Brightness | 10 | Fraction of pixels pushed to pure white or pure black. |
| Framing | 6 | Target size against your scope's field of view. |
| Corner sharpness | 0 | Measured and reported, never scored. Corner softness on a sealed smart telescope is the lens. There is no tilt adjuster and no spacing to shim, so deducting points for it would be telling you your scope is imperfect rather than teaching you anything. It stays in the report because it changes how you crop. |
A component that cannot be measured scores nothing and is removed from the denominator. It never counts as a zero. Too few stars means "not measurable", not "bad".
Ceiling terms
Each term multiplies, because these compound in reality: a bright moon at altitude in a Bortle 7 sky is worse than either alone.
- Darkness costs 4.5 points per Bortle class above 2.
- Moon costs up to 30%, scaled by illumination and by altitude, and only while it is above the horizon.
- Target altitude costs 0.8 points per degree below 40.
- Cloud costs up to 35%.
- Integration scales from 55% to 100% of the remainder, against the minutes that object needs under a dark sky.
The scopes we cover, and only these
This is built for people whose way in was a sealed smart telescope, and every threshold above is calibrated for one of the five below. There is no entry for an 80mm refractor with a cooled camera and there will not be: calibrating for two audiences would mean serving neither. Pixel scale is computed from the sensor and focal length rather than copied, which is why the DwarfLab figures can be trusted even though DwarfLab publishes field of view instead.
| Device | Field | Scale | Dual-band | Dither default |
|---|---|---|---|---|
| ZWO Seestar S50 | 1.27° × 0.72° | 2.39″/px | yes | off |
| ZWO Seestar S30 | 2.13° × 1.2° | 3.99″/px | yes | off |
| ZWO Seestar S30 Pro | 3.99° × 2.24° | 3.74″/px | yes | off |
| DWARFLAB DWARF 3 | 2.93° × 1.65° | 2.75″/px | yes | on |
| DWARFLAB DWARF Mini | 2.13° × 1.2° | 3.99″/px | yes | on |
Palette eligibility
Narrowband palettes need narrowband signal. A one-shot colour camera behind a dual-band filter records hydrogen mostly in its red pixels and doubly ionised oxygen across green and blue, so the separation is real for an emission target and meaningless for a galaxy. We offer a palette only where the signal it maps was actually recorded, and any render containing a synthesized channel carries a label saying so burnt into the image.
What we do not do
There is no language model anywhere in this pipeline and no randomness of any kind. The same file uploaded twice produces byte-identical output. That is a deliberate constraint: a published rubric and a system that reasons differently each run cannot both be true, and we would rather have the rubric.