Source: https://guthlabs.ai/docs/instruments/sunrise-sunset-calculator/

instrument / verified-clean

# Sunrise/Sunset 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/sunrise-sunset-calculator/>)[02**Mechanism**Method and assumptions](<https://guthlabs.ai/docs/instruments/sunrise-sunset-calculator/mechanism/>)[03**Implementation**Binding and validation](<https://guthlabs.ai/docs/instruments/sunrise-sunset-calculator/implementation/>)[04**Qualification**Evidence and errata](<https://guthlabs.ai/docs/instruments/sunrise-sunset-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-6

**Evidence ID**: t6-040

**Ledger rows**: 1

No ledger note is attached.

## Review findings

The core NOAA-style sunrise/sunset method is standard when the stated assumptions are implemented. The specification needs explicit formulas, zenith definitions, sign conventions, DST behavior, leap-year handling, polar-case behavior, and a consistent computational-engine description before it can receive PASS. Twilight outputs are currently underspecified and cannot be verified from the provided formula alone.

### Formula and scope findings

- The specification names the NOAA sunrise equation but does not define the complete declination and equation-of-time approximation, day-number convention, or whether leap years are handled.

- Twilight times require explicit solar zenith angles, such as civil twilight 96 degrees, nautical twilight 102 degrees, and astronomical twilight 108 degrees; the specification does not state these.

- The output time convention is ambiguous: timezone offset, daylight-saving-time status, UTC/local formatting, and longitude sign convention are unspecified.

- The declared engine is a lookup table, while the formula and data_needs fields describe an on-device astronomical calculation. These are materially different implementations.

- The standard NOAA sunrise/sunset zenith is approximately 90.833 degrees, incorporating standard refraction and solar-disk radius; this assumption is not stated.

- At high latitudes, the hour-angle argument can be outside [-1,1]. The implementation must explicitly return polar day or polar night rather than pass the value to acos.

### Unit assumptions

- Latitude and longitude are in decimal degrees; north and east are positive, west and south are negative.

- Timezone is a numeric UTC offset in hours, including daylight-saving adjustment where applicable.

- Times below use local civil time in 24-hour notation.

- The worked checks use the NOAA daily approximation: gamma = 2*pi*(N-1)/365 at local solar noon, with N counted from 1 on January 1.

- Declination is in radians in the formula and converted to degrees for reporting: d = 0.006918 - 0.399912*cos(gamma) + 0.070257*sin(gamma) - 0.006758*cos(2gamma) + 0.000907*sin(2gamma) - 0.002697*cos(3gamma) + 0.00148*sin(3gamma).

- Equation of time is in minutes: E = 229.18*(0.000075 + 0.001868*cos(gamma) - 0.032077*sin(gamma) - 0.014615*cos(2gamma) - 0.040849*sin(2gamma)).

## Boundary hardening

**BREAK_CLAIMED** · SELF_FLAGGED

The pole input at latitude exactly 90 degrees causes the NOAA hour-angle expression to divide by cos(latitude)=0. Without an explicit pole or polar-condition guard, the calculator can return Infinity, NaN, or fabricated sunrise and sunset times. Longitude-sign ambiguity can also shift every local result by four hours if east/west convention is not documented.

## 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": {
    "latitude_deg": 0,
    "longitude_deg": 0,
    "date": "2023-01-01",
    "timezone_utc_offset_hours": 0,
    "zenith_deg": 90.833
  },
  "expected_outputs": {
    "solar_noon_local": "12:02:54",
    "sunrise_local": "05:59:17",
    "sunset_local": "18:06:32",
    "day_length": "12:07:15"
  },
  "working": "N=1, so gamma=2*pi*(1-1)/365=0. Declination = 0.006918-0.399912-0.006758-0.002697=-0.402449 rad=-23.07 degrees. Equation of time = 229.18*(0.000075+0.001868-0.014615)=229.18*(-0.012672)=-2.904 minutes. cos(H0)=[cos(90.833)-sin(0)*sin(-23.07)]/[cos(0)*cos(-23.07)]=(-0.01454)/(0.9201)=-0.01580. H0=acos(-0.01580)=90.9055 degrees. Solar noon=720-4*0-(-2.904)+60*0=722.904 minutes=12:02:54. Sunrise=722.904-4*90.9055=359.282 minutes=05:59:17. Sunset=722.904+363.622=1086.526 minutes=18:06:32. Day length=2*(363.622)=727.244 minutes=12:07:15."
}
````

## 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-tranche6/tranche6-results.json`

- `BOUNDARY_HAZARD_CATALOG.json`
