Date: 2026-08-11
Status: local Phase 7 engine-release gate closed; no publication or deployment
Model: clear_sky_naked_eye_point_source_v1
This document is the current validation authority for Moira’s additive physical point-source assessment and event model. It does not replace the separate legacy arcus/limiting-magnitude, Yallop lunar-crescent, or Krisciunas-Schaefer legacy-moonlight validation families.
The machine-checked inventories are:
tests/fixtures/physical_visibility_phase7_evidence_registry.json; andscripts/generate_physical_visibility_inventory.py --check.Each admitted claim below names its evidence class. A test snapshot or another engine’s output is never promoted to scientific authority merely because it agrees.
| Surface | Status | Named evidence classes | Qualification |
|---|---|---|---|
| Physical single-epoch assessment | admitted, opt-in | primary_source_equation_validation, independent_libradtran_holdouts, modern_era_observational_comparison, property_and_invariant_testing, separated_numerical_tolerances |
Clear sky, unresolved steady point source, admitted observer protocol and exact pack domain. |
| Four-phase physical event search | admitted, opt-in | external_ephemeris_event_goldens, property_and_invariant_testing, separated_numerical_tolerances |
Mars/Jupiter/Saturn/Sirius only; explicit first/last ownership and certified crossings. |
| Python/facade/REST/OpenAPI projection | admitted | public_contract_and_openapi_parity, legacy_regression_fixtures |
Additive physical routes; legacy defaults and shapes remain exact. |
| External data pack 1.2.0 | admitted immutable resource | independent_libradtran_holdouts, release_artifact_and_offline_install |
Separate CC BY-SA 4.0 artifact; never embedded or downloaded. |
| Two private Phase 6 kernels | admitted implementation detail | native_python_differential |
Numerical differential/performance evidence only; no policy or doctrine ownership. |
| Historical apparition/Sothic cases | legacy corroboration only | historical_event_corroboration |
Bounded windows or historical uncertainty; not exact physical-event goldens. |
| Site-specific experimental moonlight | quarantined research | experimental_site_specific_moonlight_quarantine |
No runtime, API, packaged resource, release gate, or active-roadmap dependency. |
tests/unit/test_visibility_physics.py and
tests/unit/test_visibility_spectral.py retain source-level evaluations for
Kasten-Young relative air mass, the named Schaefer legacy component family,
Crumey/Blackwell point-source equations, CIE MES2 response composition, and
Tousey-Koomen Table I comparison values. Their purpose is equation and
component validation; they do not claim a universal atmosphere or observer.
The versioned pack was produced in an external offline libRadtran 2.0.6 and REPTRAN reference laboratory. Holdout coordinates and random seeds were kept disjoint from training or representation selection. The admitted checkpoints include:
The generator and runtime remain separate. libRadtran, REPTRAN data, and CIE source tables do not enter the Python distribution or normal execution.
The admitted modern-era observational comparison is the Tousey-Koomen 1953 Table I twilight series. It is source bounded and enforces the declared point-source/field relationship. It is not described as a contemporary multi-site observer-population campaign.
The Phase 3 source-owned golden binds:
tests/golden/physical_visibility_phase3_events.json
pack manifest:
cf93433a9f66a5ea92832271ce3c4b023fcc8693164803539a9f1be85b17468c
The independent oracle uses checksum-locked Horizons geometry for Jupiter and the Sun, and Hipparcos/BSC5/CALSPEC/Astropy/PyERFA/IERS sources for Sirius. It does not import Moira’s event solver. The admitted residuals were:
| Case | Engine versus independent event | Oracle tolerance |
|---|---|---|
| Jupiter morning first rising | 1.2063503265 seconds | 60 seconds |
| Sirius morning first rising | 2.5644600391 seconds | 60 seconds |
These cases validate ephemeris geometry, target identity, event ownership, crossing semantics, and exact pack use. They are not observed first-visibility dates and do not quantify weather or observer-population uncertainty.
The later Phase 7 broad oracle is the complete release-readiness gate for the
public four-target/four-phase product. It covers the full 16-cell matrix with
12 independently reconstructed event times and four explicitly typed
no-event/domain engine regressions. All 12 timed cells pass the fixed
60-second external-grid limit; the largest absolute engine/oracle difference
is 5.8789461851119995 seconds. The current integrated public-engine replay
passes all 16 cells against content-admitted DE441 and the exact 1.2.0 pack.
External acquisition is bound to the separately preserved 5,311-byte source
specification
scripts/visibility_reference_lab/physical_visibility_phase7_source_acquisition_spec_v1.json,
SHA-256
ba061013c6e6258475baab4442b072c82c887aabc840cc19f5b0126542eb9323.
Its acquisition-driving fields are identical to the later admitted matrix.
The 47 external source files are preserved in the verified external archive
named by
tests/artifacts/release/physical_visibility_phase7_source_recovery_2026-08-11.json.
The archive is not embedded in the repository or Python distribution.
The engine replay and published runtime require neither NumPy nor Astropy. The independent Sirius reconstruction uses the declared development-only Astropy/ERFA toolchain and may load NumPy transitively inside that isolated authority-validation environment.
Published planetary apparition windows and the Sirius/Sothic historical case remain in the legacy validation family with their declared windows and delegation tolerances. Phase 7 classifies them as corroboration only. It does not fit the physical model to them, reinterpret them as exact timestamps, or use engine agreement to erase calendrical, observational, site, or doctrine uncertainty.
The pack’s independent holdouts produced these numerical bounds:
| Error owner | Maximum | p95 or receipt law |
|---|---|---|
| Photopic response interpolation | 0.354270 mag | 0.287715 mag |
| Scotopic response interpolation | 0.252966 mag | 0.244817 mag |
| Direct-extinction interpolation | 0.0212954 mag | 0.00279149 mag |
| Binary32 storage | 9.487461198887104e-7 mag |
retained separately |
| Source solver / Monte Carlo | per response cell | maximum contributing corner |
The runtime propagates the admitted numerical envelope through the photopic and scotopic backgrounds and threshold to separate limiting-magnitude and visibility-margin bounds. Input/scenario and model uncertainties that lack a defensible numeric bound remain named and unquantified; they are not assigned zero.
Event search separately records:
The numerical search tolerances do not become claims about human-observer or weather accuracy. Moira publishes no aggregate tolerance and no probabilistic confidence score.
The focused property/invariant family covers:
not_evaluable is not treated as false visibility. not_found is used only
when a fully evaluable search contains no owned phase transition.
Thirty-six physical symbols preserve object identity across
moira.heliacal, the curated moira root, moira.facade, and
moira.sky.visibility. Matching Moira methods forward the full policy. The
two dedicated REST operations preserve every engine policy/receipt field and
accept no client filesystem path.
The legacy assessment, tonight, and generalized heliacal event request and
response schemas remain exact. The current generated inventory is checked
against create_app().openapi() rather than copied from prose.
Phase 6 admitted exactly two private kernels. The boundary-inclusive differential contained 14,205 response cases, 2,001 direct-extinction cases, and eight-thread determinism. Maximum observed absolute differences were:
| Quantity | Maximum | Admission tolerance |
|---|---|---|
| S/P ratio | 8.881784197001252e-16 |
5e-15 |
| Response weight | 1.734723475976807e-18 |
5e-18 |
| Response normalization | 1.1102230246251565e-16 |
2e-15 |
| Direct extinction | 0 |
2e-15 |
| Direct transmission | 0 |
2e-15 |
This is implementation evidence, not a second scientific oracle. Python’s numerical paths remain executable differential references.
scripts/validate_physical_visibility_phase7_release.py performs the release
gate from a copied current source snapshot:
.f32le payload;--no-index --no-deps;MOIRA_NO_DOWNLOAD=1 and an active
socket-deny guard.The external pack release tool produces a deterministic 14-file archive:
moira-physical-heliacal-visibility-1.2.0.tar.gz
SHA-256:
0d2c98d0717c45416ad0f8f3e0b72ca28d3975f4f6c8080112ceb2bef8327d71
The hardened final run is recorded in
tests/artifacts/release/physical_visibility_phase7_release_validation_2026-08-09.json.
That receipt proves only the exact local artifacts it names; it does not claim
that they were uploaded, tagged, published, installed downstream, or deployed.
Clouds, live weather, optical aids, extended objects, the Sun, lunar crescents through this model, global site transfer, generic stellar profiles, observer population probability, and synthetic confidence remain outside the model.
The Jones/Paranal experiment is quarantined and does not enter the assessment, event, compatibility, or release contract. Website documentation remains downstream of an actual engine and data-artifact publication gate.