A moon-deep transit with a planet-mass dynamical companion admits a short list of mundane explanations. Each has a proposed discriminant — an observable that the genuine dark-primary configuration does not trip. The tier column is the observational cost of closing a row, aggregated by one rule: pipeline if every check that row needs comes from the survey’s own photometry, follow-up if any check needs dedicated additional observations. One row is pipeline under that rule. The absent-primary-transit bound is survey-photometry data wherever it is used — including inside the ordinary-planet row — but a single survey-data check does not promote a row that still needs follow-up to close. As the adversarial test below shows, this closure is demonstrated rather than guaranteed.
Code
from lastmoon.vetting import vetting_tablevetting_table()
Table length=5
scenario
mimics
tier
discriminant
rejection
str42
str216
str9
str359
str579
White-dwarf companion
a dark, massive primary paired with a small transiting body
follow-up
a WD is luminous (UV/optical excess in the SED), and a transiting WD's depth-derived radius is Earth-scale (~6e6 m), not lunar
no UV excess and a depth-derived radius consistent with a lunar-size body
Iron/ultra-dense dark planet
a high-density transiting object with a large dynamical mass
pipeline
even a pure-iron world obeys a mass-radius relation; the dynamical mass, confined within the radius allowed by the absent primary transit (R_p < R_star sqrt(delta_lim), ~1.6e3 km at 0.3 R_sun), exceeds any condensed-matter composition
primary transit absent at the per-visit floor -> rho_p > ~3e2 g/cm^3 (Earth mass, 0.3 R_sun; scales with the alias-branch mass), beyond any condensed-matter equation of state. The bound needs survey photometry alone, hence the pipeline tier; the survey prototype reports the relevant observables but implements no density classifier -- it carries neither a primary-transit non-detection limit nor a truth-blind alias family
Blended eclipsing binary
a shallow moon-depth transit from a diluted deep eclipse
follow-up
centroid shift during events; chromatic depth; secondary eclipses
achromatic depth, no centroid motion, no secondary eclipses
Grazing stellar eclipse
a shallow transit from a stellar companion clipping the limb
box-consistent shape and an RV amplitude at the m/s scale
Ordinary planetary alternatives (umbrella)
moon-only transits with planet-scale dynamical mass -- two distinct subcases: (a) an ordinary planet carrying the moon, and (b) an independent planet-on-planet pair whose super-period mimics the moon's aliased timing
follow-up
absent primary transit: the moon's small orbit (a_moon <~ 0.2 R_star) carries the primary across the disk at every non-grazing moon transit, so an Earth-radius primary would show a ~930-5000 ppm event of its own; TTV morphology (aliased timing period, absence of synodic chopping, TTV/TDV quadrature) separates a satellite from a planet-on-planet super-period
subcase (a), an ordinary planet carrying the moon: no primary transit at the per-visit floor under the model's mutual-inclination prior -- survey photometry, no follow-up needed. Subcase (b), planet-on-planet: timing separated by TTV-morphology classification in the fiducial regime, and a residual-degeneracy slice (coinciding aliased periods) needs dedicated TDV-quadrature follow-up for subcase (b); closing the umbrella row also retains subcase (a)'s survey-photometry absent-primary-transit check. The row is follow-up because subcase (b) is; universal closure not claimed
The table regenerates from the package on every build, so the wording shown always matches lastmoon.vetting. The “pipeline” tier is a statement about observational cost — that rejection needs no data beyond the survey’s own photometry — not a claim that the survey code performs it: the prototype reports the relevant observables but implements no density classifier.
The fifth row is an umbrella over two distinct alternatives, and they have different data costs. (a) An ordinary planet carrying the moon is closed by the absent-primary-transit gate alone: the moon’s small orbit carries the primary across the stellar disk at every non-grazing moon transit, so an Earth-radius primary would show a ~930–5000 ppm event of its own, and its absence bounds the primary’s radius and density — survey photometry, no follow-up. (b) An independent planet-on-planet pair whose super-period mimics the aliased timing is separated by TTV morphology: the moon’s aliased timing period, the absence of synodic “chopping”, and the TTV/TDV quadrature. Its residual-degeneracy slice needs dedicated follow-up to resolve. The row aggregates to follow-up on (b). The escape hatch — a grazing outer orbit that keeps the primary off the disk while the moon still transits — carries 2.7% of the prior mass under the survey model’s declared geometry priors given at least one observed moon transit, and a prior-predictive miss probability below 2.8×10−6 once a regular full-chord series (≥90% of the predicted epochs) is required.
Code
from lastmoon.figures.ttv_morphology import fiducial_impostor_scan# The same fiducial M3V scan the manuscript's TTV-morphology figure uses.scan = fiducial_impostor_scan()print(f"separable fraction: {scan.separable_fraction:.2f} of {scan.n_total} impostors; "f"residual: {len(scan.residual_slice)}")
separable fraction: 1.00 of 125 impostors; residual: 0
Separation is clean across this illustrative fiducial scan (the separable fraction is printed above). A residual-degeneracy slice — where the aliased moon period coincides with the planet-planet super-period — requires TDV quadrature plus absent-primary-transit follow-up; universal closure is not claimed.
The gate is not tied to the fiducial moon orbit: rerunning the same scan with the moon at 0.35 RHill and at the Domingos stability cap (0.4895 RHill) again separates the full impostor grid. A dense sweep across the whole stable separation range does, however, find isolated long-alias pockets — at 13 of 117 separations (2-yr baseline) the moon’s aliased timing period runs to near or past the observing baseline and a few light, near-resonant impostors become residual (worst separable fraction 0.952). Those pockets are an alias/baseline effect, not a property of the moon’s separation, they shrink with a longer baseline, and every residual impostor still faces the TDV-quadrature and density follow-up gates.
A stronger, adversarial test backs this up — and marks its limits. The paper runs a formal three-template cross-fit — a dense transiter, a moon plus dark primary, and a perturbed planet — on synthetic data, and for each case searches for the worst-case planet-planet impostor that best mimics the moon rather than scoring an arbitrary one. For a bright, strong target (TRAPPIST-1) the moon template wins decisively; yet even there the adversarial impostor is left undistinguished in ~9% of noise realizations, and at the marginal candidacy threshold (an M5V at 20 pc) the comparison is inconclusive in both directions. This is a template comparison over a declared, locally-convergent search — deliberately not a Bayes factor and not a calibrated false-positive rate, and a full false-positive-rate calibration is left to future work. Morphology is load-bearing, but not a global guarantee.