The source and receiver uniforms checked out. The occlusion equation checked out. Selene still blacked out.
Projected celestial SceneDepth was reconstructing a convenient screen proxy, not a physical point on the receiver. The shader then evaluated correct geometry from that fictional position and correctly produced the wrong result.
Snapping the candidate back to the known sphere before testing occlusion restored the physical contract. The debugging lesson is painfully general: validating parameters and formulas is not enough when the spatial sample itself may be invented.