moira

Physical Heliacal Visibility Phase 1 Closure

Date: 2026-07-30

Status: Phase 1 complete; Phase 2 is the next authorized phase

Runtime boundary: separately validated data pack exists, but no engine loader, public API, release, or deployment is part of this phase

Governing plan: PHYSICAL_HELIACAL_VISIBILITY_IMPLEMENTATION_PLAN.md

Radiance evidence: PHYSICAL_HELIACAL_VISIBILITY_PHASE1_RADIANCE_RESPONSE_CHECKPOINT_2026-07-30.md

Compact closure receipt: tests/artifacts/visibility_reference_lab/phase1_closure_checkpoint_2026-07-30.json

Closure-receipt SHA-256: 6daaa62566214747dd50bc449da577065a2484c707ec39b7c1d88dafb0778776

Outcome

Phase 1 now has a reproducible offline atmospheric reference laboratory and a separate immutable physical-visibility data pack. All admitted reference artifacts and the final pack passed independent validation on Linux and Windows. The pack is not installed into Moira and cannot be acquired automatically.

The phase closes with:

Final Data Pack Identity

Field Value
Pack ID moira-physical-heliacal-visibility
Version 1.0.0
Compatibility ID moira-physical-heliacal-visibility-data-pack-v1
Format regular-grid-ieee754-binary32-le-v1
License CC BY-SA 4.0
External directory moira-physical-heliacal-visibility-1.0.0-v2
Files 12
Bytes 110,481
Payload files 11
Generation fingerprint b0d09b91086c2b3064e6c56cfaeae97226e7a6b2779fd70c5b7807aeab748750
Manifest SHA-256 49ac2b68ea105a8e055b27e8d4d70f6cbfe9533f971ef5e6000f0bdd95d6771b
Source-artifact manifest SHA-256 6bb91212d1d54762af8276ea066b4c6d5f4df837d84a46057f57b35924bae12f
Linux validation Passed
Windows validation Passed

The pack contains four 64-cell response products—photopic luminance, scotopic luminance, and their per-cell relative standard errors—plus 22,800 direct-extinction values, axes, the admitted error envelope, provenance, checksums, README, and licensing notice.

It contains no CIE source table, libRadtran or REPTRAN source/data file, profile, executable, or engine code.

First-Pack Domain

The first pack is deliberately a fixed-environment baseline:

Input Admitted value or interval
Molecular atmosphere U.S. Standard
Aerosol profile rural summer
Observer altitude 0 m
Surface pressure 1013.25 hPa
AOD550 0.1
Angstrom exponent 1.3
Ozone 300 DU
Gray ground albedo 0.2
Solar-center altitude -9 to 0 degrees
Target true altitude 0.25 to 45 degrees
Relative solar azimuth 0 to 180 degrees

The earlier Phase 1 environmental and altitude/pressure studies establish source semantics and bounded evidence; they do not silently add those environmental dimensions to this first pack. Phase 2 must return typed not_evaluable outside the manifest’s exact domain. A broader atmosphere, altitude, pressure, aerosol, ozone, or albedo domain requires a new versioned data pack and independent evidence.

This distinction prevents a flexible request contract from being mistaken for data that the first pack does not actually contain.

Interpolation and Error Contract

Response luminance uses trilinear interpolation in log10 luminance over solar altitude, target altitude, and relative solar azimuth. Direct extinction uses linear interpolation in extinction magnitude over log10(target_true_altitude_deg + 0.25) independently in each one-nanometre spectral bin. Neither path extrapolates.

Error owner Admitted Phase 1 evidence
Photopic response interpolation maximum 0.354270 mag; p95 0.287715 mag
Scotopic response interpolation maximum 0.252966 mag; p95 0.244817 mag
Direct-extinction interpolation maximum 0.0212954 mag; p95 0.00279149 mag
Binary32 storage maximum 9.487461198887104e-7 mag
Solver uncertainty retained per response cell
Limiting-magnitude propagation Phase 2 owner
Event-time propagation Phase 3 owner

The 531 nm monochromatic reconstruction remains a transparent diagnostic only. It is not shipped or used as a runtime interpolation surface.

Modeled twilight below -9 degrees solar-center altitude is typed not_evaluable with reason solar_twilight_below_data_pack_domain; a Monte Carlo zero is never treated as physical zero.

Validator and Failure Law

The independent validator accepts only an explicit caller-supplied directory. It enforces:

Missing, corrupt, unsupported, or out-of-domain data fails explicitly. No code path searches for or downloads a replacement.

The first compiled 1.0.0 candidate was rejected because two required notice phrases were split by Markdown wrapping. Its numerical tables, checksums, and provenance passed, but the artifact was not admitted. The rejected directory remains immutable and is bound by phase1_visibility_data_pack_v1_failed_notice_checkpoint_2026-07-30.json. The admitted v2 rebuild changes the notice packaging and tooling receipts, not the scientific source artifact.

Phase 1 Exit Gate

Explicitly Unchanged

Next Authorized Work

Phase 2 may implement the Python spectral single-epoch truth layer against an explicit caller-supplied, independently validated pack. It must enforce the pack’s exact domain and compatibility ID, preserve typed not_evaluable results, and leave event-time solving to Phase 3.