Source: https://guthlabs.ai/docs/instruments/moonrise-moonset-estimator/implementation/

instrument implementation / implementation-contract

# Moonrise/Moonset Estimator implementation

A source-bound implementation contract for Moonrise/Moonset Estimator; deployment and executable qualification remain separate.

Status: **VERIFIED_CLEAN**Lifecycle: **implementation-contract**

## Binding contract

This record describes what an executable surface must bind and validate. It does not claim that a public calculator, package, or production route is deployed.

**Record owner**: Guth Instruments

**Lifecycle**: verified-clean

**Evidence ID**: t7-016

**Effect**: Computation or source lookup only

## Input and validation requirements

The estimator reaches an undefined division at latitude 90 degrees and must reject that input. Its output is also convention-sensitive because the specification does not state whether longitude is east-positive or west-positive; the same numeric longitude 30 produces substantially different times.

## Required corrections

No binding erratum is attached to this unique-name record. Implementers must still preserve the declared units, domain, and failure behavior.

## Inspectable interface fixture

The sample below is evidence for interface and validation tests, not a production implementation.

````
{
  "inputs": {
    "lat_deg": 0,
    "lon_deg": 0,
    "date": "2025-01-01",
    "gmst0_deg": 0,
    "lunar_ra_deg": 180.12986,
    "lunar_dec_deg": 0
  },
  "expected_outputs": {
    "moonrise_utc": "06:00:00",
    "moonset_utc": "17:57:11"
  },
  "reference_data": {
    "refraction_deg": 0.5667,
    "lunar_semidiameter_deg": 0.2725,
    "lunar_horizontal_parallax_deg": 0.9507,
    "sidereal_rate_deg_per_utc_day": 360.9856473,
    "source_convention": "Refraction, lunar semidiameter, and lunar horizontal parallax: widely tabulated standard values; sidereal rate: IAU/Meeus standard convention"
  },
  "working": "1. Horizon threshold: h0 = -0.5667 - 0.2725 + 0.9507 = +0.1115 degrees. 2. At latitude 0 degrees and declination 0 degrees: cos(H0) = sin(0.1115)/(cos(0)cos(0)) = 0.00194604, so H0 = arccos(0.00194604) = 89.88845 degrees. 3. Sidereal rate per hour = 360.9856473/24 = 15.0402353 degrees/hour. 4. Rise hour angle is -H0. UTC rise = [-89.88845 - 0 - 0 + 180.12986]/15.0402353 = 90.24141/15.0402353 = 6.00000 hours = 06:00:00 UTC. 5. Set hour angle is +H0. UTC set = [89.88845 - 0 - 0 + 180.12986]/15.0402353 = 270.01831/15.0402353 = 17.95306 hours. 0.95306 x 60 = 57.1836 minutes, so moonset = 17:57:11 UTC. This vector uses the exact widely tabulated entries 0.9507 degrees horizontal parallax and 0.2725 degrees lunar semidiameter."
}
````

## Other records

[01**Overview**](<https://guthlabs.ai/docs/instruments/moonrise-moonset-estimator/>)[02**Mechanism**](<https://guthlabs.ai/docs/instruments/moonrise-moonset-estimator/mechanism/>)[04**Qualification**](<https://guthlabs.ai/docs/instruments/moonrise-moonset-estimator/qualification/>)

## Sources and evidence

These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.

- `VERIFIED_LEDGER.json`

- `evidence-tranche7/tranche7-results.json`
