From 86dc29cd73f402b42a902c63e8133591a1ae22fb Mon Sep 17 00:00:00 2001 From: Bill Hlavacek Date: Fri, 24 Jul 2026 15:44:58 -0600 Subject: [PATCH] ci: install jax on the recovery job so the gradient-path fits run The recovery tier includes gradient-path parameter-recovery fits whose log-scaled parameters route the gradient into sampling space through jax (test_gradient_*, and the Rijal-2025 real-world cases in test_real_world_examples.py). Those tests RAISE PybnfError rather than skip when jax is absent, so the recovery job -- added in #518 with setup-pybnf's default jax: 'false' -- failed deterministically on its first dispatch: 2 hard failures (lacud5_ode, five_dl1_ode), 125 passed, in ~11.7 min. Not a stochastic tolerance flake; a missing optional dependency. A complete recovery environment provisions jax, so install it here via the composite action's jax input -- exactly as tests.yml's pytest-jax job already does for the same gradient path. The two failing cases pass locally in ~15s with jax present. Follow-up to #518 / #517. --- .github/workflows/integration.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/integration.yml b/.github/workflows/integration.yml index d36beeaa..668945b9 100644 --- a/.github/workflows/integration.yml +++ b/.github/workflows/integration.yml @@ -63,6 +63,15 @@ jobs: # The whole point of this tier: real fits through the simulation # backend, so bngsim must be present (and PYBNF_NO_BNGSIM stays unset). bngsim: 'true' + # The recovery tier includes gradient-path fits (test_gradient_*, + # and the Rijal-2025 real-world cases in test_real_world_examples.py) + # whose LOG-SCALED parameters route the gradient into sampling space + # via jax -- without the extra those tests raise PybnfError rather than + # skip, so a recovery run without jax fails deterministically (2 hard + # failures the first dispatch, #517). A complete recovery environment + # provisions jax; install it here (as the pytest-jax job in tests.yml + # does for the same gradient path). + jax: 'true' # Also a 3.12 setup-pybnf run; give it its own uv-cache namespace so it # does not race the `slow` job's save on a dispatch (both run then). cache-suffix: pybnf-recovery