Guth
NewsDocs
Page actions
View as Markdown ↗
Explore MCP tools ↗

instrument mechanism / verified-clean

Solar Position (Sun Az/Alt) mechanism

The inspectable method record for Solar Position (Sun Az/Alt), kept separate from implementation and qualification.

Status: VERIFIED_CLEANLifecycle: verified-clean

Model scope

The claimed NOAA low-precision method is broadly appropriate for ordinary Sun azimuth/altitude and solar-noon estimates, but the specification is incomplete enough that exact verification requires review of the equations, conventions, leap-year behavior, and refraction policy.

  • The specification names the NOAA algorithm but does not provide the exact equations or NOAA variant, including the day-angle definition, leap-year handling, azimuth convention, and atmospheric-refraction treatment.
  • The engine is listed as "lookup table" even though the instrument is described as an algorithmic pure-JS calculation; this is an implementation mismatch unless the table is generated deterministically from the NOAA equations.
  • Azimuth convention is unspecified. The test vectors assume degrees clockwise from true north, matching the common NOAA convention.
  • Altitude is unspecified as geometric or apparent altitude. The vectors assume unrefracted geometric altitude; near-horizon results will differ from NOAA apparent-altitude output if refraction is enabled.
  • Solar-noon output requires a defined clock-time convention and precision. The vectors assume local civil time and solar noon = 720 - (equation of time + 4*longitude - 60*time-zone-offset) minutes.

Units and conventions

  • Latitude and longitude are decimal degrees, with north and east positive and west negative.
  • Time-zone offset is hours east of UTC; daylight-saving time must be included explicitly, such as UTC-4 or UTC+11.
  • Input time is local civil clock time in the stated time zone.
  • Azimuth is degrees clockwise from true north; altitude is degrees above the geometric horizon.
  • Longitude correction uses 4 minutes per degree, and the equation of time is in minutes.
  • The calculations use the common NOAA fractional-year angle gamma = 2*pi/365 * (day_of_year - 1 + (UTC-hour - 12)/24), with the displayed examples evaluated at the stated local time after conversion to UTC.

Inspectable vector

One of 4 source-bound review vectors:

{
  "inputs": {
    "date": "2024-01-01",
    "time": "12:00:00",
    "latitude_deg": 0,
    "longitude_deg": 0,
    "timezone": "UTC"
  },
  "expected_outputs": {
    "azimuth_deg": 178.3,
    "altitude_deg": 66.94,
    "solar_noon_local": "12:02:54"
  },
  "working": "UTC hour = 12. Day 1 gives gamma = 2*pi/365*(0 + 0) = 0. EOT = 229.18*(0.000075 + 0.001868 - 0.014615) = -2.904 minutes. Declination = 0.006918 - 0.399912 - 0.006758 - 0.002697 = -0.402449 rad = -23.06 deg. Time offset = EOT + 4*longitude - 60*timezone = -2.904 + 0 - 0 = -2.904 min. True solar time = 720 - 2.904 = 717.096 min. Hour angle = 717.096/4 - 180 = -0.726 deg. cos(zenith) = sin(0)*sin(-23.06) + cos(0)*cos(-23.06)*cos(-0.726) = 0.9200, so altitude = asin(0.9200) = 66.94 deg. NOAA azimuth = atan2(sin(-0.726), cos(-0.726)*sin(0) - tan(-23.06)*cos(0)) + 180 = 178.30 deg. Solar noon = 720 - (-2.904) = 722.904 min = 12:02:54."
}

Failure boundary

BREAK_CLAIMED · SELF_FLAGGED

The geographic-pole case exposes an undefined physical azimuth that a naive atan2 implementation can silently convert into an arbitrary numeric angle. The longitude-sign probe also exposes a convention-sensitive result if west-positive and east-positive longitude conventions are mixed.

Other records

Sources and evidence

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

  • VERIFIED_LEDGER.json
  • evidence-tranche6/tranche6-results.json
  • BOUNDARY_HAZARD_CATALOG.json