
Evidence
Built directly. Harness: probe-cf.mjs (shared with the address stratum), results in probe-cf.json. Playwright/Chromium, --use-gl=swiftshader.
What it is
The ephemeris draws the moon through the dither gate: a 0..1 quantity as the lit fraction of a disc with a real terminator (an ellipse, not a straight edge), a limb that falls away, Bayer-8 deciding every cell. phaseDisc(cv, q, N) is that routine with the phase solved from the quantity on the waxing branch — phase = acos(1 − 2q) / 2π — so any 0..1 value is read the way the moon is read. Same value, same pixels.
Three instruments, no fourth
| instrument | quantity | where |
|---|---|---|
| the reader's position | page progress 0..1 | the rail, beside scroll 0.412 |
| the machine's state | field scale ÷ display cap | the rail foot, beside field ×1.00 |
| the reader's control | (gate gain − 0.8) ÷ 0.8 | the gate, beside the slider's output |
A primitive, not a motif. The fourth use would be the one that turns it into decoration, and the copy says so where the primitive is defined.
Measured
discs on the page 3
cells per disc / CSS size 28 / 14 px, image-rendering: pixelated
reader's disc at top / at mid-page q 0.000 / 0.516
control's disc at gain 0.80 / 1.60 q 0.000 / 1.000
machine's disc, settled q 1.000 (software GL held full scale at 1440×900)
grey pixels in the moon canvas 0 of 669 lit (every lit pixel is rgb(226,228,230) at alpha 255)
grey pixels in the rail disc 0
console errors 0
Not established
-
Pixel identity between
phaseDiscat N = 52 and the ephemeris'sdrawMoonat the same phase. They are the same routine copied, with the phase solved rather than given, and both probes show zero greys and witness-only ink — but the moon is scoped inside the ephemeris IIFE and was not rendered through the shared function in this probe. Structural identity, not a byte compare. - Legibility of a 14 px disc as an instrument at arm's length. It is a glyph-sized object; whether a reader parses a quarter from a half at that size was not tested.