Skip to content

HM public intrinsic phase composition gate — 2026-09-27

The conditional hm.phase.public-composition.eq3-14.v1 gate passed on len. The independent mpmath composer uses London's three-branch phase map and continuity offsets with the already checked D-carrier C1 ringdown correction. It compares the public Torch/JAX unprojected mode's unit phasor with the source-composed phase, plus left/right one-sided slopes at the low-frequency phase join, mapped PhenomD ringdown attachment, and mode ringdown join. The D phase, alpha coefficients and HM/D QNM pairs are supplied by the frontends; the scalar composer does not independently validate these inputs.

The frozen CPU-FP64 sample covers (2,1), (3,3), (3,2), (4,4) and (4,3) for (35,20,0.2,-0.1) and (50,10,0.7,-0.3) in solar-mass and dimensionless-spin units, with both phenomd_runtime and london_2018 transition settings. It fixes f_ref=None, phic=tc=0, positive frequencies and m1>m2; the latter fixes the signed odd-mode amplitude factor for unit-phasor comparison. Each combination samples 13 frequencies and three joins. Phasors use rtol=atol=2e-9; one-sided slopes use rtol=3e-5, atol=3e-4.

Host: len. Cwd: /home/xangma/tmp/diffgw-hm-phase-composition-20260927. Command: PYTHONPATH=src:tests JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu OMP_NUM_THREADS=1 /home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m pytest -q tests/test_imrphenomhm_phase_composition_math_reference.py --reference-device=cpu -ra. PID: 149502 (completed). Log: /home/xangma/tmp/diffgw-hm-phase-composition-20260927/focused.log. Next check: completed, no scheduled poll. Stop command if still running: kill 149502. Result: 9 passed in 26.57 s. Environment: Python 3.12.3, Torch 2.14.0+cpu, JAX 0.11.2, mpmath 1.3.0, NumPy 2.5.3, pytest 9.1.1.

An adjacent len run of this file, the frequency-map, phase-offset and ringdown-phase reference gates, HM reconstruction and clean higher-mode tests, and waveform definitions passed 183 tests in 70.58 s (one Torch JIT deprecation warning). Host and cwd are as above; PID 305544 (completed), log adjacent.log, next check complete, stop command kill 305544 if still running. Command: PYTHONPATH=src:tests JAX_ENABLE_X64=1 JAX_PLATFORMS=cpu OMP_NUM_THREADS=1 /home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m pytest -q tests/test_imrphenomhm_phase_composition_math_reference.py tests/test_imrphenomhm_phase_offsets_math_reference.py tests/test_imrphenomhm_ringdown_phase_math_reference.py tests/test_imrphenomhm_frequency_map_math_reference.py tests/test_phenomhm_reconstruction.py tests/test_clean_higher_modes.py tests/test_waveform_definitions.py --reference-device=cpu -ra. The waveform-library and coverage generators passed --check on len. The new reference and test files passed Ruff 0.16.9. Strict MkDocs built successfully in the isolated local checkout using current mkdocs-material and mkdocstrings-python; len lacked those packages and could not resolve its package index during an attempted install. That len job used the cwd above, command /home/xangma/.cache/diffgw-taylorf2-hm-venv/bin/python -m venv docs-venv && docs-venv/bin/python -m pip install -q --upgrade mkdocs-material mkdocstrings-python && docs-venv/bin/python -m mkdocs build --strict, PID 332002 (pip child 333554), log docs-build.log; it was stopped after the DNS failure (kill 332002 333554), with no further poll scheduled.

This is a phase-composition implementation gate, not a whole-mode or whole-family accuracy result. D phase and alpha fit provenance, remnant/QNM accuracy, amplitude sign and zero cases, nonzero reference/time gauges, negative-frequency conventions, external binary agreement and NR physical accuracy remain separate. See the component specification.