Source: https://guthlabs.ai/docs/instruments/moon-phase-calculator/

instrument / verified-clean

# Moon Phase Calculator

The current ledger marks this instrument verified clean within the source-bound verification corpus.

Status: **VERIFIED_CLEAN**Lifecycle: **verified-clean**

## Inspectable records

[01**Overview**Purpose and lifecycle](<https://guthlabs.ai/docs/instruments/moon-phase-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/moon-phase-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/moon-phase-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/moon-phase-calculator/qualification/>)

## Ledger state

The current ledger marks this instrument verified clean within the source-bound verification corpus.

**Area**: Earth & Space (astronomy, orbital mechanics, meteorology, geology, geodesy, oceanography)

**Tranche**: tranche-4

**Evidence ID**: t4-125

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The concept is scientifically standard as an approximate lunar-phase calculator, but the specification does not state the complete phase-angle formula, illumination formula, phase-name boundaries, reference epoch, or timezone/date precision. Verdict is NEEDS_REVIEW until those ambiguities are resolved.

### Formula and scope findings

- The stated formula is incomplete: phase angle should be explicitly defined as theta = 2*pi*(age_days mod 29.53059)/29.53059, in radians.

- Illumination fraction is not specified; the standard geocentric approximation is (1 - cos(theta))/2, or illumination_percent = 100*(1 - cos(theta))/2.

- Phase-name classification boundaries are not specified, including whether exact quarter phases are labeled First Quarter and Last Quarter and how near-boundary values are handled.

- The reference new-moon epoch is required but no epoch value or required timestamp precision is supplied.

- A fixed synodic-month calculation does not by itself provide an astronomical current phase with the stated accuracy unless the epoch and date/time handling are defined precisely.

### Unit assumptions

- The synodic month is exactly 29.53059 mean solar days for this approximation.

- Input date/time differences are converted to elapsed mean solar days; 1 day = 24 hours = 86400 seconds.

- Date/time values should be interpreted in a specified timezone, preferably UTC, before calculating elapsed time.

- Phase angle is measured in radians when used with standard trigonometric functions.

- Illumination fraction is dimensionless and is converted to percent by multiplying by 100.

- Age is normalized with modulo 29.53059 so that it lies in the interval [0, 29.53059).

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The specification does not define the reference epoch's exact timestamp or the timezone interpretation of date-only inputs. The convention probe produces approximately 48.49% versus 43.19% illumination for the same textual date under two plausible timezone conventions. Very large date intervals also expose precision risk if the implementation subtracts timestamps or reduces phase using insufficient numeric precision.

## Errata and corrections

No applied erratum is attached to this unique-name record.

## Inspectable example

4 review vectors are recorded. One source-bound sample is shown below.

````
{
  "inputs": {
    "days_since_reference_new_moon": 0,
    "synodic_month_days": 29.53059
  },
  "expected_outputs": {
    "phase_name": "New Moon",
    "illumination_percent": 0,
    "age_days": 0
  },
  "working": "age = 0 mod 29.53059 = 0 days. theta = 2*pi*(0/29.53059) = 0. cos(theta) = cos(0) = 1. illumination_percent = 100*(1 - 1)/2 = 0%. Age 0 days is New Moon."
}
````

## Related workflows

No source-defined multi-instrument workflow membership is recorded.

## Sources and evidence

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

- `VERIFIED_LEDGER.json · VERIFIED_CLEAN`

- `evidence-tranche4/tranche4-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
