ADR-089 — Super-circular loft/skip model for lifting atmospheric entry
Status · Accepted · 2026-08-31 · Operator-directed (Physics Lab spaceflight program) · builds on ADR-088 (range-control entry) + RFC-036 (2-DOF descent) · unblocks Mars guided-lifting entries and the lunar-return 11 km/s skip (#29 Phases 2–3)
Gating sentence. The descent integrator (descent-physics.ts) gains a loft/skip capability for LIFTING super-circular entries: the 2-DOF γ integration is enabled when the vehicle has lift (not only for sub-circular entries), the γ-floor that forbade climbing is lifted for lifting bodies (so γ can go negative = loft), and an energy-conserving exo-atmospheric coast holds the specific orbital energy above the atmosphere so explicit Euler doesn't drift the skip arc. skip_out and second_entry beats mark the crossing — armed only after first atmosphere contact, so a capsule that merely ENTERS above the 105 km skip line (all of them do — interface ~122 km) does not fire a spurious beat. NON-LIFTING profiles are BYTE-IDENTICAL (no code path runs for hasLift == false). The lifting profiles that use this path: the 16 LEO Earth capsules (sub-circular — they shift a hair from the coast-hold drag between 122–105 km, e.g. apollo7 solved bank 0.604→0.577, but never loft: min γ ≈ 0.9°); the shipped apollo8 lunar-return (10.8 km/s — genuinely lofts/skips); and the 3 Mars guided-lifting entries (super-circular, but steep enough at ~15° that they dig in, no skip). but they are not byte-identical.
Context
ADR-088 gave the entry integrator a downrange DOF + range-control bank, but capped γ at ~0.1° descending (never fly upward) and disabled the 2-DOF integration entirely for super-circular arrivals. That made two real cases unmodellable:
- Lunar-return entry (Apollo CM at ~11 km/s): the corridor is a knife-edge and the vehicle lofts back above the atmosphere (the Apollo-4 double-g-pulse) before its final descent.
- Mars guided lifting entries (Curiosity/MSL, Perseverance, Tianwen-1): super-circular interplanetary arrivals that flew real bank-steered lifting entries — now (#29 Phase 2) modelled 2-DOF with lift at the real ~15° FPA + L/D 0.24 (MSL sourced), reading ~6.5–8.5 g (flown MSL ~12 g; the fixed-bank residual). Steep enough not to loft, so no skip — the skip path is exercised by the lunar-return case below.
Measurement (ADR-088 Phase 1a) established that the γ-floor is irrelevant at LEO energy — Earth capsules don't loft there — so lifting it is safe for the LEO capsules and only activates the loft where the energy genuinely produces one (super-circular).
Decision
- Enable 2-DOF for lifting super-circular.
dynamicalGamma = (subCircular || hasLift) && gammaIsDynamical(phase). Ballistic super-circular arrivals keep fixed-γ (unchanged). - Lift the γ-floor for lifting bodies.
if (!hasLift && γ < 0.0017) γ = 0.0017. A lifting entry may climb (γ<0) — that IS the skip; a ballistic capsule still can't fly upward. - Energy-conserving coast. Above
SKIP_ALT_M(105 km) the air is negligible and explicit Euler drifts specific energy over a long arc. On entering the coast we record the specific orbital energyE = v²/2 − μ/rand each step correctv = √(2·(E + μ/r))— gravity is conservative, so the coast keeps E exactly, bounding the drift. Drag resumes on re-entry. - Skip beats.
skip_outwhen the capsule first crosses aboveSKIP_ALT_M;second_entrywhen it falls back below. (Fully hyperbolic exit — never returns — simply times out atmaxTSas an honest mission failure; the too-shallow corridor edge.)
Validated behaviour (Apollo CM aero, 11 km/s, full lift-up): 4° too-shallow → skips onto a huge bound ellipse (still climbing past 40,000 km at the maxTS cutoff; from the final specific energy its apogee is ~71,000 km — it WOULD return, hours later, but not before the sim window, so the run is an honest mission failure — NOT a hyperbolic escape); 5.5–6.5° corridor → the skip fires AFTER the first deceleration pulse (skip_out at ~176 s, first peak-g at ~68 s), lofts to ~160 km, and the coast holds specific energy to < 1 % across the arc before the second entry lands it at 4–8 g (real lunar return ~6.5–8 g); ≥7° or lift-down → digs in at 10–16 g. Tests in descent-physics.test.ts lock: the skip ORDER (skip_out after the first peak, second_entry after skip — non-vacuous), the energy-hold (< 1 % drift), a LEO lifting reentry emitting NO skip beats (the entry-above-skip-line regression), the lift-up-vs-down g trade, and the too-shallow failure.
Consequences
- Unblocks Phase 2 (Mars guided lifting) and Phase 3 (lunar-return + Apollo round-trip capstone) — the model can now fly the super-circular lifting entries those need.
- Non-lifting profiles (59 of the 75 shipped) are byte-identical — no code path runs for
hasLift == false. The 16 lifting Earth capsules shift slightly (the coast-hold trims a little drag on the way in; apollo7 solved bank 0.604→0.577, well within test tolerance) but do not loft (they're sub-circular — γ never goes negative; min γ ≈ 0.9°). Descent + HUD suites green. - The LEO lifting capsules' γ-floor is genuinely inert — they never reach γ<0 (measured), so lifting the floor changes nothing dynamically there; the small footprint shift above is the coast-hold, not lofting. Their ~1–1.5 g-above-flown residual (ADR-088 Phase 1a) is a separate fixed-bank/controller gap — and a measured negative result stands behind it: the naive decel-hold controller does NOT close it (it overshoots to ~6 g when targeting 3 g; a predictor-corrector would be needed). See ADR-088 Phase 1a note.
Non-goals / honest simplifications
- Crossrange / bank reversals — still out (planar model).
- The coast is Keplerian-energy-held, not a full two-body propagation — it conserves E but integrates the same planar EOM through the thin arc; fine for the teaching skip, not an ephemeris.
- A fully hyperbolic (escaping) entry is reported as a timeout failure, not a distinct "escaped" outcome — acceptable for the corridor lesson (too-shallow = lost).
- Not re-calibrating the LEO capsules — their peak-g residual is an active-g-limit-controller gap (ADR-088), not a loft gap.
- apollo8's modeled skip is FULLER than the flown one — our fixed-lift-up flies a genuine exo-atmospheric skip (apex ~136 km, ~357 s vacuum coast, ~26 min interface-to-splash), while the real Apollo 8 up-control modulated bank specifically to keep the loft INSIDE the atmosphere (apex ~60–65 km) and splashed down in roughly half the time. Same double-pulse shape, ~2× duration and a higher apex — the price of fixed lift-up vs real bank modulation. Peak-g 7.8 vs flown ~6.8. The Lab connection copy says "note our model flies a fuller exo-atmospheric skip", not "exactly this".
- Mars guided-lifting timeline runs long — Curiosity ~9.1 min entry-to-touchdown (chute at Mach ~2.0) vs the flown "7 minutes of terror"; same fixed-lift-up-vs-bank-modulation cause. Peak-g 6.7–8.5 g (flown MSL ~12 g). More physical than the old 1-DOF (which undershot the duration), but not a match — an honest teaching-grade lifting entry, not a validated MSL reconstruction.