An Honest TTV Number

The analytic TTV signal-to-noise treats the moon’s maximum projected displacement as a cleanly recoverable sinusoid. Real surveys sample the moon’s orbit only at transit epochs, with unknown phase and a possibly tilted orbit — and a fitted transit ephemeris silently absorbs part of the signal. The epoch-level forward model accounts for all of it, and the honest number is what decides whether the system reaches technosignature-candidacy (confirmation of the dark primary needs the RV mass-mismatch, which is further out of reach).

Code
from lastmoon.figures.grid import build_grid_population
from lastmoon.survey.instruments import JWST
from lastmoon.survey.survey import SurveyConfig, run_survey

table = run_survey(build_grid_population(), JWST).to_table()
print(f"analytic TTV SNR (sanity check):  {table['ttv_snr_analytic'].max():.2f}")
print(f"epoch-level forward-model TTV SNR: {table['ttv_snr'].max():.2f}")
print(f"detection threshold:               {SurveyConfig().ttv_snr_threshold:.1f}")
analytic TTV SNR (sanity check):  32.60
epoch-level forward-model TTV SNR: 32.55
detection threshold:               7.0
Code
from lastmoon.population.named_stars import NAMED_STARS, instantiate

for name, star in NAMED_STARS.items():
    row = instantiate(star)
    print(f"{name}: TTV SNR (2 yr) = {row['ttv_snr_2yr']:.0f}")
TRAPPIST-1: TTV SNR (2 yr) = 25
Proxima Centauri: TTV SNR (2 yr) = 23
Barnard's Star: TTV SNR (2 yr) = 13

Both the grid and the real nearby M-dwarfs are now on the same near-IR (2MASS J) band, so the two sets of numbers are directly comparable. Under an idealized continuous-coverage model the grid’s best cell (M6V at 5 pc) reaches TTV SNR ~32.6 — well past the SNR-7 candidacy threshold — and 8 of the 28 cells (all M5V–M6V through 20 pc) clear it; the three named M-dwarfs clear it too (TRAPPIST-1 ~25, Proxima ~23, Barnard’s ~13). Because a systematic floor dominates the noise budget, the candidacy count is floor-limited (4–8 of 28 over a 20–30 ppm floor). This is a feasibility statement, not a schedulable JWST yield, and the absolute primary mass stays alias-limited (the moon period is stroboscopically aliased). M-dwarf activity red-noise is no longer negligible now that the white timing precision is ~125 s: it costs ~3% at a 30 s activity floor and ~28% (down to ~23.5) at the 120 s upper end — but candidacy holds throughout. The Domingos stability cap (0.49 R_Hill) would support still larger TTV signals (SNR ~80 at the best cell).

Code
from lastmoon.figures.confirmation_frontier import (
    frontier_sweep_table, plot_confirmation_frontier,
)
fig = plot_confirmation_frontier(frontier_sweep_table())
fig

The confirmation frontier: where longer baselines and better photometry push the epoch-level TTV SNR past threshold. Conditional on transiting geometry and 100% occurrence; illustrative grid, not a yield.

The forward SNR is a known-period matched-filter statistic: it assumes we know the moon’s orbital period when fitting. A blind period search pays an additional look-elsewhere penalty that is not modeled here — one more reason the threshold matters. The transits themselves are still idealized as central, box-shaped events on a quiet star; both caveats carry into the manuscript.