Multi-agent adversarial review (verified findings) — the top finding (dead orbit
drag) fable had already fixed in 3e36a0c; these are the rest, composing on top of
fable's 228caf2/3e36a0c:
- scale.js viewFromEcl: allocation-free + alias-safe (read x/y/z into locals before
writing out) — it ran per body per frame and allocated an object each call (§11).
- planets.js + comets.js: refill orbit paths on any P change, not just
isTransitioning() — the MEGA↔TRUE tween's FINAL frame (P settled, tween nulled)
was skipped, leaving body/orbit desync (§12).
- almanac.js: a moon's heliocentric position adds its true orbital offset, so the
Moon's "From Earth" is its real ~384,400 km / 1.3 s light, not 0.
- asteroids.js: guard refresh() against null geometry when toggled on before the
SBDB load completes (was a TypeError).
- serve.py: CAD close-approach responses are never cached immutable — the database
keeps growing for past dates as new NEOs are discovered (only Horizons ephemeris
is truly immutable).
Re-verified: 13/13 gates green; orbit zoom dollies 82→73 finite; Moon From Earth
0.003 AU; layer toggles throw nothing; no console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stage 4. spacecraft.js: Voyager 1/2, New Horizons, JWST, Parker, Juno, Lucy,
Psyche. Fetches VECTORS (heliocentric ecliptic AU) over a multi-year span through
serve.py's cache, Catmull-Rom interpolated per frame; glowing diamond marker +
fading trail + label with live distance from Sun and one-way light-time from
Earth. Fail-soft per craft. Robustness: sequential fetch (Horizons throttles
bursts), serve.py skips caching non-$$SOE (error) responses, and span
auto-recovery clamps START/STOP to a craft's SPK coverage from Horizons' own
"prior to / after" hints (Psyche pre-launch, Juno past coverage) → 8/8 tracked.
Gate: Voyager 1 @2026-07-15 = (-32.07,-136.21,98.55) Δ0.002 AU; JWST Δ0.011 AU
from Earth. verify.html gates 10-11 green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Stage 0. Zero-dependency serve.py (static + allowlisted horizons/sbdb/cad proxy,
sha256 disk cache with past-span immutability). Three.js via pinned importmap,
logarithmic depth, procedural starfield sky (+ Milky Way panorama swap-in), Sun
with additive glow, OrbitControls, brass-and-void HUD, scrubbable time bar,
central bodyWorld position pass, focus/camera system, hash state. Boots clean,
no console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>