Date: 2026-07-29 Status: Phase 1 in progress; reproducible reference-lab checkpoint, not a runtime data pack and not a model-admission receipt Commit: Uncommitted working tree; no commit or push was requested for this checkpoint Governing plan: PHYSICAL_HELIACAL_VISIBILITY_IMPLEMENTATION_PLAN.md
Subsequent evidence: PHYSICAL_HELIACAL_VISIBILITY_PHASE1_ELEVATED_SITE_CHECKPOINT_2026-07-29.md closes the bounded named-profile elevated-site construction gate. Statements below that identify nonzero observer altitude as open describe this checkpoint’s historical boundary.
The external libRadtran 2.0.6 reference laboratory now has a checksum-locked, offline generator and an independent artifact validator. The first convergence, geometry, and direct-transmission evidence sets were reproduced and bound to the exact source archive, executable, build configuration, scientific input trees, repository specification, builder, validator, and per-case outputs.
This checkpoint does not close Phase 1. It deliberately stops before a production grid, interpolation law, runtime table, or data pack.
scripts/visibility_reference_lab/phase1_lab_spec.json
scripts/build_visibility_radiance_lut.py
scripts/validate_visibility_radiance_lut.py
tests/artifacts/visibility_reference_lab/phase1_reference_lab_checkpoint_2026-07-29.json
No engine module, public Python contract, native calculation, facade, serializer, REST model, OpenAPI surface, dependency declaration, or default changed.
| Field | Receipt |
|---|---|
| Source | libRadtran 2.0.6 |
| Archive bytes | 154147176 |
| Archive SHA-256 | 64930cc40b6e4a37aa220520974d330fc1563796f466a649b2238131f2d69840 |
uvspec identity |
uvspec, version 2.0.6-MYSTIC |
uvspec SHA-256 |
d4e94259296a65f7700a0911f0dc7fc14aacde89985befac0266fe0a18531b7a |
| Platform | Ubuntu 26.04, WSL2, Linux 6.6.114.1 |
| Compilers | GCC, G++, and GFortran 15.2.0 |
| Supporting tools | GNU Make 4.4.1, Flex 2.6.4, netCDF 4.9.3, GSL 2.8 |
| Flags | CFLAGS=-O2 CXXFLAGS=-O2 FFLAGS=-O2 |
| Solver capabilities | MYSTIC, GSL, and netCDF4 enabled; MYSTIC 3D disabled; VROOM exercised |
Upstream make check |
0 failed uvspec calls; 0 failed difference checks |
| Upstream unit tests | 458067 assertions in 17 test cases, all passed |
The official archive contains stale generated src/.depend and
libsrc_c/.depend files with machine-specific include paths. The documented
clean-build procedure removes only those two generated files. No libRadtran
source patch was applied.
| Profile | Cases | Files | Bytes | Root manifest SHA-256 |
|---|---|---|---|---|
| Convergence | 21 | 274 | 96837 | f5246c0b54b7f1e1cb126a275df5a6c425cf71759d7afcf704dff14d991c2487 |
| Geometry smoke | 6 | 79 | 30883 | 736cb97e0f5e4218bb386f0290454cc15140438126ca1ded70b3b54f49a9d10a |
| Direct-transmission smoke | 13 | 92 | 43528 | 5eaac5edd15081836ef1a57c62e360421a5bd73f71276095cb0cd6ea78b80aa1 |
All three artifacts:
phase1_reference_lab_evidence_not_runtime_data_pack status.The convergence profile reproduces the first case byte for byte when its seed and inputs are repeated. The deterministic direct-transmission profile also reproduces every raw output byte for its repeated case.
The convergence case is a sea-level, 550 nm, U.S. Standard atmosphere reference with:
Five independent seeds were run at every photon count:
| Photons | Mean radiance (mW m^-2 nm^-1 sr^-1) | Between-seed sample RSD | Mean MYSTIC-reported RSD |
|---|---|---|---|
| 20000 | 0.014740458 | 22.90% | 33.10% |
| 100000 | 0.013240120 | 7.86% | 15.13% |
| 500000 | 0.013153260 | 4.84% | 7.43% |
| 2000000 | 0.013222160 | 2.32% | 3.72% |
The uncertainty contracts with the expected Monte Carlo scale, but two million photons still do not establish production precision.
Every case below used 500000 photons, seed 32452843, and 550 nm:
| Case | Sun altitude | Target altitude | Relative azimuth | Radiance (mW m^-2 nm^-1 sr^-1) | Reported RSD |
|---|---|---|---|---|---|
| Civil, near Sun | -6 deg | 5 deg | 0 deg | 0.463911 | 2.88% |
| Civil, quadrature | -6 deg | 5 deg | 90 deg | 0.0231493 | 5.95% |
| Civil, antisolar | -6 deg | 5 deg | 180 deg | 0.0140619 | 6.97% |
| Nautical, near horizon | -12 deg | 1 deg | 90 deg | 0.000040657 | 67.54% |
| Astronomical, near horizon | -18 deg | 0.25 deg | 90 deg | 0 sampled | not estimable |
| Sunset, high target | 0 deg | 20 deg | 90 deg | 4.62224 | 0.44% |
This is a decisive negative result for a fixed photon budget. The same budget ranges from sub-percent uncertainty to an unusable sparse-contribution estimate. The zero sampled at the deepest case is not physical-zero evidence and is not admitted as a table value.
Direct transmission is a separate deterministic component. It uses libRadtran’s recommended double-precision DISORT solver with pseudo-spherical geometry, 16 streams, true geometric target altitude, and:
direct_spectral_transmission = (edir / E0) / sin(target_altitude)
extinction_magnitude = -2.5 log10(direct_spectral_transmission)
The sine division removes the horizontal irradiance projection from
libRadtran’s documented output_quantity transmittance value. It is not an
empirical air-mass fit.
At 550 nm:
| Target altitude | Direct transmission | Extinction |
|---|---|---|
| 0.25 deg | 0.0003724155 | 8.57243 mag |
| 0.5 deg | 0.0008554776 | 7.66948 mag |
| 1 deg | 0.0029792195 | 6.31474 mag |
| 2 deg | 0.0141836458 | 4.62053 mag |
| 5 deg | 0.1032076570 | 2.46572 mag |
| 10 deg | 0.2895282903 | 1.34577 mag |
| 20 deg | 0.5237992659 | 0.70209 mag |
| 45 deg | 0.7295975852 | 0.34229 mag |
At 5 degrees true altitude:
| Wavelength | Direct transmission | Extinction |
|---|---|---|
| 380 nm | 0.0017691995 | 6.88056 mag |
| 450 nm | 0.0254750167 | 3.98471 mag |
| 550 nm | 0.1032076570 | 2.46572 mag |
| 650 nm | 0.2184704002 | 1.65152 mag |
| 780 nm | 0.3921759935 | 1.01630 mag |
These results are smoke evidence, not a runtime table. The final spectral grid and a near-horizon solver/model error bound remain open.
A fresh local Moira 6.1.0 CPython 3.14 Windows wheel was built from the checkout. Its 632 entries contained:
This was an unreleased local wheel audit, not a release-artifact identity. Project dependency metadata was unchanged.
altitude option with the Monte Carlo solver; using zout alone
would leave atmosphere below the observer and would not represent an
elevated ground site.umu=0.Phase 2 remains unauthorized until these gates and the Phase 1 exit criteria close.