Ruling Out Impostors

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_table

vetting_table()
Table length=5
scenariomimicstierdiscriminantrejection
str42str216str9str359str579
White-dwarf companiona dark, massive primary paired with a small transiting bodyfollow-upa WD is luminous (UV/optical excess in the SED), and a transiting WD's depth-derived radius is Earth-scale (~6e6 m), not lunarno UV excess and a depth-derived radius consistent with a lunar-size body
Iron/ultra-dense dark planeta high-density transiting object with a large dynamical masspipelineeven 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 compositionprimary 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 binarya shallow moon-depth transit from a diluted deep eclipsefollow-upcentroid shift during events; chromatic depth; secondary eclipsesachromatic depth, no centroid motion, no secondary eclipses
Grazing stellar eclipsea shallow transit from a stellar companion clipping the limbfollow-upV-shaped profile; km/s-scale RV signal; depth-duration inconsistencybox-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 timingfollow-upabsent 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-periodsubcase (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.