Date: 2026-07-30 Status: complete
Governing roadmap: PHYSICAL_HELIACAL_VISIBILITY_IMPLEMENTATION_PLAN.md
Phase 2 closes Python spectral single-epoch truth for the first admitted planetary targets. It does not activate:
The legacy Schaefer/arcus event path remains the default and retains its existing identifiers and behavior.
physical_visibility_assessment() is an additive owning-module surface. It
requires:
PhysicalVisibilityPolicy;The runtime does not search for, download, regenerate, or silently replace a pack. Missing, corrupt, incompatible, incomplete, and out-of-source-domain inputs return typed non-evaluable results.
Pack version 1.0 remains loadable for its Phase 1 atmosphere tables. It has no
planetary target profiles, so the Phase 2 public assessment returns
target_spectral_profile_missing. Pack version 1.1 adds the source-locked
planetary profiles required for evaluation.
The public assessment has no caller-supplied planetary spectral-profile parameter. Apparent V magnitude, phase angle, and Saturn effective ring sub-latitude are resolved from one engine-owned ephemeris context. The validated pack then resolves the matching response integrands and color law.
pack_id:
moira-physical-heliacal-visibility
version:
1.1.0
compatibility_id:
moira-physical-heliacal-visibility-data-pack-v1.1
manifest_sha256:
f594fd12058cc7f5c7bc9de7f2b06652bef3c0604ef7b0a05a069e54e4026c87
target_profile_sha256:
40f4362aca22e329ad25916efa8476fee7a86eb1a6b0dfc1cf1b6c88f64531a0
generation_fingerprint:
281b3fdaa1910d81ebf9ec616cbed0784eed5a33f05bbdc682baee34b4db8848
payload_file_count:
12
The admitted external artifact is:
/home/nilad/.cache/moira/visibility-reference-lab/data-packs/
moira-physical-heliacal-visibility-1.1.0-v3
A clean second build at the v4 path produced the same 13 root files,
byte-for-byte, including the root manifest. Neither build modified the
admitted Phase 1 pack.
The v1 and v2 construction attempts are preserved as rejected forensic
artifacts. v1 had not yet narrowed the Payne source spectra to the admitted
positive visible subset. v2 omitted explicit empty limitations arrays
required by the strict color-model schema. Neither is admitted.
The 1.1 pack owns 400-bin, 380-779 nm photopic and scotopic response integrands for:
The base spectral shapes derive from the versioned Payne et al. planetary geometric-albedo spectra multiplied by the locked extraterrestrial solar spectrum and integrated against the exact CIE photopic and scotopic response data.
Mallama et al. 2017 supplies the source-domain broadband color behavior:
The runtime uses a named piecewise-linear Johnson-Cousins differential magnitude warp, normalizes both response paths independently, and updates the S/P ratio consistently. It never extrapolates a color law beyond its source domain.
The compact source and numerical receipt is:
tests/artifacts/visibility_reference_lab/
phase2_planetary_target_profiles_checkpoint_2026-07-30.json
The admitted compositor includes:
F=2;limiting_magnitude - conditioned_target_magnitude; andThe observer protocol remains:
known_location_directed_averted_observation_v1
It is a known-location, deliberately directed, peripheral/averted task. It is not claimed as a central/foveal threshold.
scripts/validate_visibility_phase2_data_pack.py is read-only and imports
neither the builder nor the Moira engine. From explicit local paths it:
SHA256SUMS;Windows independent validation accepted the exact v3 pack. The same pack also loads through the engine with its pinned root manifest.
The end-to-end Venus smoke at JD 2451545.7291666665, latitude 0, longitude
0 returned:
status: evaluated
evidence_state: evaluated_clear_sky
target_true_altitude_deg: 30.953318182797634
solar_center_true_altitude_deg: -7.73651006224335
phase_angle_deg: 58.618037322862044
visibility_margin_magnitude: 7.126526684691916
component_receipt_count: 8
spectral_profile_id: payne_2026_venus_cie_response_v1
color_model_id: mallama_2017_ubvri_phase_color_v1
solver_relative_standard_error_multiplier: 1.0
visibility_margin_data_pack_envelope_lower_magnitude: 6.810345248615479
visibility_margin_data_pack_envelope_upper_magnitude: 7.455362567961965
visibility_margin_data_pack_envelope_maximum_deviation_magnitude: 0.32883588327004887
visibility_classification_within_data_pack_envelope: visible
error_budget_method_id: phase2_data_pack_declared_numerical_error_envelope_v1
The nominal Venus margin is unchanged. The added error-budget receipt closes the Phase 1 handoff that assigned limiting-magnitude propagation to Phase 2. It includes:
Modeled-twilight bounds perturb the twilight term only, hold the supplied
dark-sky anchor nominal, and evaluate CIE MES2 plus the Crumey threshold at all
four photopic/scotopic bound corners. The target bound combines the
direct-extinction maximum interpolation and storage errors. The final receipt
reports lower and upper limiting-magnitude and visibility-margin envelope
limits and a
visible, not_visible, or indeterminate classification within those
data-pack numerical terms.
Measured-total backgrounds carry no fabricated pack-owned background error. Their input uncertainty is named as unquantified, and only the direct- extinction pack error is propagated. P95 interpolation values remain diagnostics rather than maximum bounds.
The solver term is not claimed as a hard maximum, and this is not a scientific-confidence interval. Dark-sky or measured-background input error, planetary photometry and spectral-source uncertainty, CIE and threshold model-form uncertainty, observer-population variance, and actual atmospheric variability remain explicitly unquantified.
The Phase 2 tests cover:
No caller can relabel engine photometry or inject substitute planetary response weights.
The focused Phase 2 loader, compositor, target-profile, serialization, and error-envelope gate collected and passed 88 tests. The combined Phase 2 plus legacy visibility gate collected 585 tests, passed 584, and skipped the one pre-existing empty optional enumeration; nothing was deselected.
Three incomplete fixture boundaries found during the checkpoint were repaired only at their resource boundaries:
sky_position_at; andThe focused legacy gate collected 497 tests. It passed 496 and skipped one pre-existing empty optional enumeration. No failure was deselected. The gate covers legacy heliacal policy, planetary and fixed-star heliacal behavior, visibility physics, adversarial public behavior, validation corpora, and the existing server visibility route.
The apparent-magnitude reference suite also passes all 23 cases after the internal photometry-context refactor.
Phase 3, the physical visibility-event solver, is the next authorized phase. It must find physical visibility-margin crossings without changing any legacy event search or activating later facade/REST/native work.