Scenario kind pagesEdit on GitHubSource: docs/kinds/by-kind/earth-gnss-lunar.md

earth-gnss-lunar (scenario kind)

Scenario kind of the engine v0.38.0, family Lunar and cislunar. Advisory: analysis output from a research and engineering tool, not type-approved navigation equipment and not a safety-of-life service. Every label here is the engine's or the verification matrix's; a kind is MODELLED unless the matrix says otherwise (how a label is earned: the README's Evidence section).

What it does#

Earth-GNSS reception at lunar distance, the weak-signal layer the conflict-resilience paper names and the engine had no model for. A GNSS satellite points its antenna at the Earth; a receiver near the Moon sits about fifteen times the orbital radius away, so three things bite at once. The Earth OCCULTS THE BORESIGHT: from 26,560 km it subtends a 13.9 deg half-angle, so any lunar-bound ray must leave the transmitter at least that far off nadir, which removes the peak of the beam before any power is computed. What remains is the MAIN-LOBE EDGE AND THE SIDELOBES, the regime the LuGRE payload actually operated in during 2025. And the free-space loss is about 208 dB at L1, roughly 25 dB more than a terrestrial user pays. The report emits one row per satellite (off-boresight angle, Earth occultation, range, path loss, transmit gain at that angle, received power, carrier-to-noise density) and aggregates only the links clearing the tracking threshold. IT ALSO REPORTS THE CONDITIONING, because that is what defines this layer: every visible satellite lies inside a cone a couple of degrees wide as seen from the Moon, so the lines of sight are nearly parallel, the dilution of precision is enormous, and an Earth-GNSS fix at lunar distance is a TIMING-grade observation far more than a position-grade one. MODELLED, and the transmit pattern is the reason: the gain at angle is a uniform circular aperture (Airy), while a real GPS L1 antenna is a twelve-element helical array with a shaped main lobe and non-Airy sidelobes. Measured patterns exist and are not vendored here, so orderings and orders of magnitude are meaningful while the dB of any single satellite is not. Deliberately ABSENT, each making the budget optimistic: no ionospheric or tropospheric loss on the limb-grazing rays, no polarisation, pointing or implementation loss, and a spherical Earth with no refractive extension. The Moon position is an INPUT (range plus inertial direction) rather than an ephemeris lookup, because the quantity under test is the link and the beam geometry. Upgrading this row to Validated needs a measured transmit pattern and LuGRE normal points; neither is in the repository and neither is invented here.

One run of scenarios/earth-gnss-lunar.toml summarises as: Earth-GNSS at lunar distance — 24 satellites, receiver at 384400 km Earth limb from the constellation: 13.90 deg off nadir — any lunar-bound ray must exceed this 22 of 24 not occulted; 0 clear the 25.0 dB-Hz tracking threshold no link reaches the threshold fewer than two trackable links; no angular spread to report fewer than four trackable links, or a singular geometry: no DOP SWEEP over 64 epochs / 43082 s: signal availability 0.375, FIX availability 0.000 trackable links mean 0.75, max 2; best C/N0 30.93 dB-Hz; best PDOP none Take the FIX availability as this layer's prior, not the signal availability: one link is a clock observation, four are a position. MODELLED: the transmit gain is a uniform-aperture (Airy) stand-in, not a measured GPS beam, and no atmospheric, polarisation or implementation loss is applied — so the budget here is optimistic. Orders of magnitude and orderings are meaningful; an individual satellite's dB is not.

Inputs#

From the schema (kshana kinds --json):

  • Required fields: none
  • Optional fields: altitude_km, inclination_deg, planes, sats_per_plane, phasing_f, epoch_s, receiver_range_m, receiver_ra_deg, receiver_dec_deg, tx_power_dbw, tx_diameter_m, tx_efficiency, freq_hz, rx_gain_dbi, system_temp_k, tracking_threshold_dbhz, back_lobe_suppression_db, epochs, span_s

The example scenarios/earth-gnss-lunar.toml sets, among others:

Field Value Unit
altitude_km 20180 km
epoch_s 0 s
freq_hz 1575420000 Hz
inclination_deg 55 deg
kind earth-gnss-lunar text
phasing_f 2 not stated
planes 6 not stated
receiver_dec_deg 0 deg
receiver_ra_deg 0 deg
receiver_range_m 384400000 m
rx_gain_dbi 12 dBi
sats_per_plane 4 not stated

Run it#

kshana scenarios/earth-gnss-lunar.toml

What it gives#

The scalar results of that run, with the units the engine states:

Result Value Unit
best_cn0_dbhz no value dB-Hz
dop no value not stated
earth_limb_half_angle_deg 13.895839 deg
los_cone_half_angle_deg no value deg
n_geometrically_visible 22 count
n_satellites 24 count
n_trackable 0 count
receiver_range_m 384400000 m
sweep.best_cn0_dbhz 30.93181 dB-Hz
sweep.best_pdop no value 1
The chart the engine writes for scenarios/earth-gnss-lunar.toml, kind earth-gnss-lunar

Evidence#

MODELLED: the verification matrix rows that name this kind.

  • MODELLED Earth-GNSS reception at lunar distance: the weak-signal layer P7 Table 1 names and the engine had no model for.

The rows the run itself exercised, with the oracle the matrix gives each (the public sources are named there):

  • MODELLED Deterministic, scenario-hashed, SBOM + cross-platform golden gates. Oracle (ExternalDataset): SBOM conformance to the official CycloneDX 1.5 JSON Schema (+ valid SPDX identifiers) — an external published standard, zero validation errors over the full dependency graph; the FoM-determinism / byte-reproducibility part remains a pinned self-consistency check, so the row stays MODELLED
  • PARTNER Not provided — Kshana models signal performance, not payload/antenna hardware. Oracle (NoneKind): none: a partner-owned discipline, with no module and no test by design
  • MODELLED Earth-GNSS reception at lunar distance: the weak-signal layer P7 Table 1 names and the engine had no model for. Per satellite and per epoch it computes the off-. Oracle (InternalConsistency): Closed-form identities and internal consistency; NO external oracle is claimed. The limb half angle is checked against asin(R_earth/r_orbit) and the geometry against it; the free-space loss, the DOP kernel and the SGP4 propagation this composes are each externally validated in their own rows and this row does not borrow their status. WHY MODELLED, and it is the transmit pattern: the gain at angle is a uniformly illum

Limitations#

What the run's own report says is not modelled or not validated:

  • MODELLED, and the transmit pattern is the reason: the gain at angle is a uniform circular aperture (Airy), while a real GPS L1 antenna is a twelve-element helical array with a shaped main lobe and non-Airy sidelobes. (kind catalogue (kshana kinds --json))
  • WHAT IS MODELLED, AND WHY IT IS NOT VALIDATED The transmit gain at angle is a uniformly illuminated circular aperture — an Airy pattern. A real GPS L1 antenna is a twelve-element helical array whose measured pattern has a shaped main lobe, deliberately peaked off-boresight to even out power across the Earth disc, and sidelobes that are not Airy at all. Measured patterns are published; they are not vendored in this re (scenario file comment, lines 29 to 35)
  • Reproducibility & software assurance is MODELLED, not validated: a sub-claim is externally checked, but the whole capability composes modelled pieces, so the capability stays Modelled. (verification matrix (docs/MODELLED-RATIONALE.md))
  • Earth-GNSS at lunar distance is MODELLED, not validated: checked against its own closed-form / analytic identity — catches transcription and coefficient errors, but is not an external oracle. (verification matrix (docs/MODELLED-RATIONALE.md))

See also#