<testResult _class='hudson.tasks.junit.TestResult'><duration>81.818</duration><empty>false</empty><failCount>8</failCount><passCount>73</passCount><skipCount>0</skipCount><suite><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>0.844</duration><failedSince>0</failedSince><name>test_responder_params_matches_reference</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>0.003</duration><failedSince>0</failedSince><name>test_alpha_x_clip_to_unit_interval</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg1_adg2_responder_params</className><duration>1.096</duration><failedSince>0</failedSince><name>test_responder_params_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg2_driver</className><duration>1.901</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_adg2_driver</className><duration>3.46</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.105</duration><failedSince>0</failedSince><name>test_smooth_min_closed_form</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.123</duration><failedSince>0</failedSince><name>test_smooth_min_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.164</duration><failedSince>0</failedSince><name>test_smooth_max_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.368</duration><failedSince>0</failedSince><name>test_compute_Cx_fnc_Richardson_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.404</duration><failedSince>0</failedSince><name>test_calc_xpwp_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.13</duration><failedSince>0</failedSince><name>test_calc_xpwp_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>1.029</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.225</duration><failedSince>0</failedSince><name>test_stability_and_Ri_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.122</duration><failedSince>0</failedSince><name>test_vertical_avg_integral_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>1.284</duration><failedSince>0</failedSince><name>test_brunt_vaisala_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.204</duration><failedSince>0</failedSince><name>test_calculate_thlp2_rad_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.121</duration><failedSince>0</failedSince><name>test_Lscale_width_vert_avg_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_helper_extras</className><duration>0.163</duration><failedSince>0</failedSince><name>test_wp23_term_splat_lhs_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_xp3_simplified</className><duration>0.686</duration><failedSince>0</failedSince><name>test_term_rhs_formulas</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_advance_xp3_simplified</className><duration>0.553</duration><failedSince>0</failedSince><name>test_steady_state_vs_composition</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.345</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.612</duration><failedSince>0</failedSince><name>test_monte_carlo</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_binormal_moments</className><duration>0.609</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.111</duration><failedSince>0</failedSince><name>test_general_partial_closed_form_and_mean_identity</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.055</duration><failedSince>0</failedSince><name>test_const_x2_partial_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial</className><duration>0.585</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.327</duration><failedSince>0</failedSince><name>test_rr_all_vary_general</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.002</duration><failedSince>0</failedSince><name>test_rr_x1_const_reuses_mean_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rr_x2_const_partial</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_rr_both_const_all</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_covar_partial_rr_Nr</className><duration>0.001</duration><failedSince>0</failedSince><name>test_Nr_all_vary_swapped</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.1</duration><failedSince>0</failedSince><name>test_const_all_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.054</duration><failedSince>0</failedSince><name>test_const_x1_closed_form_and_limit</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_LL_mean_const</className><duration>0.477</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>2.1</duration><failedSince>0</failedSince><name>test_both_vary_selects_general</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.006</duration><failedSince>0</failedSince><name>test_x1_const_selects_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.007</duration><failedSince>0</failedSince><name>test_x2_const_selects_const_x2</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.006</duration><failedSince>0</failedSince><name>test_both_const_selects_const_all</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bivar_NL_mean_eq</className><duration>0.005</duration><failedSince>0</failedSince><name>test_parab_cyl_overflow_forces_const_x1</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.959</duration><failedSince>0</failedSince><name>test_planck_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.193</duration><failedSince>0</failedSince><name>test_newexp_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.711</duration><failedSince>0</failedSince><name>test_rayle_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.607</duration><failedSince>0</failedSince><name>test_gascon_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.909</duration><failedSince>0</failedSince><name>test_cloudg_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.443</duration><failedSince>0</failedSince><name>test_comscp_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.876</duration><failedSince>0</failedSince><name>test_two_rt_lw_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.432</duration><failedSince>0</failedSince><name>test_two_rt_sw_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.004</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_gases_ckd_data_parser():
        """The gases_ckd_data.h parser builds the correlated-k tables with correct shapes, fully filled
        (no missing T-coefficient slices), and the right spot-checked values."""
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd_data import tables, KG, NUMPS, NUMPIR, NUMTS, NUMTIR
&gt;       t = tables()
            ^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:367: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_gases_ckd_data_parser</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.0</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_gases_dispatch_vs_fortran_replica():
        """The `gases` 18-band dispatch (table indexing + overlap formulas + hk weights) vs a NumPy replica."""
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd import gases, pscale
        from clubb_jax.src.Radiation.BUGSrad.gases_ckd_data import tables, KG, STANPS, STANPIR
        from clubb_jax.src.Radiation.BUGSrad.bugsrad_physconst import MOLAR_VOLUME as MV, GRAVITY as G, \
            MW_H2O as MWh, MW_O3 as MWo, MW_DRY_AIR as MWd
&gt;       T = tables()
            ^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:396: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_gases_dispatch_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.637</duration><failedSince>0</failedSince><name>test_gases_ckd_helpers_vs_fortran_replica</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>4.458</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_lwr():
        """LW band driver: the no-cloud invariant (all-sky == clear-sky, bit-exact), finiteness, physical
        flux ranges, and clouds adding downward LW."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_lwr import bugs_lwr
        rng = np.random.default_rng(11)
        ncol, nlm = 2, 25
        pp = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dp = pp[:, 1:] - pp[:, :-1]; ppl = 0.5 * (pp[:, :-1] + pp[:, 1:])
        tt = 220.0 + 70.0 * rng.random((ncol, nlm)); ts = 290.0 + 10.0 * rng.random(ncol)
        rmix = 1e-3 * rng.random((ncol, nlm)); o3mix = 1e-6 * rng.random((ncol, nlm))
        cw0 = np.zeros((ncol, nlm)); ci0 = np.zeros((ncol, nlm))
        fd, fu, fdcl, fucl = (np.asarray(x) for x in
&gt;                             bugs_lwr(ts, ppl, dp, tt, rmix, cw0, ci0, o3mix, pp, 330.0, 1.6, 0.28))
                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:533: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_bugs_lwr</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.757</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_swr():
        """SW band driver: no-cloud invariant (all-sky==clear-sky bit-exact), the TOA incident solar
        (fdsw[TOA] = amu0·slr·Σband_solar = amu0·slr·1339.946) validating the accumulation, and finiteness."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_swr import bugs_swr
        rng = np.random.default_rng(12)
        ncol, nlm = 2, 25
        pp = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dp = pp[:, 1:] - pp[:, :-1]; ppl = 0.5 * (pp[:, :-1] + pp[:, 1:])
        tt = 230.0 + 60.0 * rng.random((ncol, nlm)); ts = 290.0 * np.ones(ncol)
        rmix = 1e-3 * rng.random((ncol, nlm)); o3mix = 1e-6 * rng.random((ncol, nlm))
        amu0 = np.array([0.5, 0.8]); slr = np.ones(ncol); alb = 0.2 * np.ones(ncol)
        cw0 = np.zeros((ncol, nlm)); ci0 = np.zeros((ncol, nlm))
        out = [np.asarray(x) for x in
&gt;              bugs_swr(ts, amu0, slr, alb, alb, alb, alb, ppl, dp, tt, rmix, cw0, ci0, o3mix, pp, 330.0, 1.6, 0.28)]
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:558: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_swr.py:65: in bugs_swr
    tg, hk = gases(ib, ig, dp, ttem, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_bugs_swr</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>4.462</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'</errorDetails><errorStackTrace>def test_bugs_rad():
        """Main orchestration: LW heating conserves (telescoping flux divergence), night columns get zero
        SW heating, the no-cloud invariant (all-sky heating == clear-sky), and physical heating rates."""
        from clubb_jax.src.Radiation.BUGSrad.bugs_rad import bugs_rad
        from clubb_jax.src.Radiation.BUGSrad.bugsrad_physconst import GRAVITY, CP_DRY_AIR
        rng = np.random.default_rng(13)
        ncol, nlm = 2, 30
        pl2 = np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0
        dpl = pl2[:, 1:] - pl2[:, :-1]; ppl = 0.5 * (pl2[:, :-1] + pl2[:, 1:])
        tl = 220.0 + 70.0 * rng.random((ncol, nlm)); ts = 290.0 * np.ones(ncol)
        ql = 1e-3 * rng.random((ncol, nlm)); o3 = 1e-6 * rng.random((ncol, nlm))      # specific humidity, ozone
        amu0 = np.array([0.5, 0.005]); slr = np.ones(ncol); alb = 0.2 * np.ones(ncol)   # col 0 day, col 1 night
        qcwl = np.where(rng.random((ncol, nlm)) &gt; 0.6, 1e-4, 0.0)                      # cloud-water mixing ratio [kg/kg]
        qcil = np.zeros((ncol, nlm)); acld = np.where(qcwl &gt; 0, 1.0, 0.0)             # cloud ice, cloud fraction
&gt;       r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:582: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_bugs_rad</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>1.935</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugsrad_driver():
        """CLUBB↔BUGSrad interface: std-atmosphere loads (50 levels), determine_extended_atmos_bounds gives
        sane bounds for a gabls3-like grid (model top 5 km, radiation_top 30 km), and compute_bugsrad_radiation
        produces a strictly-increasing radiation-grid pressure, finite CLUBB-grid heating, and zero SW at night."""
        import numpy as np
        from clubb_jax.src.Input_fields.sounding import load_extended_std_atm
        from clubb_jax.src.Radiation.bugsrad_driver import (
            determine_extended_atmos_bounds, build_rad_grid_setup,
            compute_bugsrad_radiation)
        ext = load_extended_std_atm()
        assert ext['alt'].shape == (50,) and ext['alt'][0] == 1000.0 and ext['alt'][-1] == 50000.0
        nzm, dz, ncol = 51, 100.0, 2
        zm = np.arange(nzm) * dz                                  # 0..5000 m
        zm_spacing = np.full(nzm - 1, dz)
        p_zm = 1013e2 * np.exp(-zm / 8000.0)                      # Pa, hydrostatic (top ≈ 542 mb)
        rad_top = 30000.0
        bottom, top, rsize, linbuf = determine_extended_atmos_bounds(zm, zm_spacing, p_zm, rad_top, ext)
        assert rsize &gt;= 1 and linbuf &gt;= 0 and top &gt;= bottom, "degenerate extension bounds"
        assert ext['alt'][bottom - 1] &gt;= 5000.0 and ext['alt'][top - 1] &lt;= 30000.0, "bounds outside [5,30] km"
        setup = build_rad_grid_setup(zm, zm_spacing, p_zm, rad_top, ext)
        assert setup['buffer'] == linbuf + rsize
        # synthetic state on the nzt grid
        nzt = nzm - 1; rng = np.random.default_rng(7)
        zt = 0.5 * (zm[1:] + zm[:-1])
        T = np.tile(288.0 - 6.5e-3 * zt, (ncol, 1))
        p_zt = np.tile(1013e2 * np.exp(-zt / 8000.0), (ncol, 1))
        exner = (p_zt / 1.0e5) ** (287.0 / 1004.0)
        rho = np.tile(p_zm / (287.0 * (288.0 - 6.5e-3 * zm)), (ncol, 1))
        rtm = 5e-3 * np.ones((ncol, nzt)); rcm = np.zeros((ncol, nzt)); rcm[:, 5:8] = 1e-4
        cf = np.where(rcm &gt; 0, 1.0, 0.0); rim = np.zeros_like(rcm); rsm = np.zeros_like(rcm); isf = np.zeros_like(rcm)
        amu0 = np.array([0.5, 0.0]); slr = np.ones(ncol); alb = 0.23 * np.ones(ncol)
        p_zm2 = np.tile(p_zm, (ncol, 1))
&gt;       res = compute_bugsrad_radiation(setup, T, rcm, rtm, rsm, rim, cf, isf, p_zt, p_zm2, rho, exner,
                                        amu0, slr, alb, alb, alb, alb, sol_const=1321.0)

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:628: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/src/Radiation/bugsrad_driver.py:143: in compute_bugsrad_radiation
    out = fn(playerinmb, p_rad, diff_pres, T_rad, q_rad, rcmic_rad, rcil_rad, o3_rad,
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_bugsrad_driver</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>0.084</duration><errorDetails>TypeError: Error interpreting argument to &lt;function advance_clubb_radiation at 0x727c3a173a60&gt; as an abstract array. The problematic value is of type &lt;class 'str'&gt; and was passed to the function at path args[0]['cfg']['rad_scheme'].
This typically means that a jit-wrapped function was called with a non-array argument, and this argument was not marked as static using the static_argnums or static_argnames parameters of jax.jit.
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugsrad_radiation_dispatch():
        """End-to-end wiring: advance_clubb_radiation(rad_scheme='bugsrad') builds the grid setup, maps a gabls3-like
        CLUBB state through bugs_rad, and writes a finite K/s heating rate into state['radht'] (shape (1,nzt))."""
        import numpy as np
        from clubb_jax.src.CLUBB_core.grid_class import setup_grid
        from clubb_jax.src.Radiation.radiation_module import advance_clubb_radiation
        gr = setup_grid(ngrdcol=1, deltaz=100.0, zm_init=0.0, zm_top=5000.0)
        nzt, nzm = gr.nzt, gr.nzm
        zt = np.asarray(gr.zt)[0]
        p_zt = (1013e2 * np.exp(-zt / 8000.0))[None, :]
        exner = (p_zt / 1.0e5) ** (287.0 / 1004.67)
        thlm = np.full((1, nzt), 295.0); rtm = np.full((1, nzt), 5e-3)
        rcm = np.zeros((1, nzt)); rcm[:, 5:9] = 2e-4
        cloud_frac = np.where(rcm &gt; 0, 1.0, 0.0)
        rho_zm = (np.asarray(p_zt) / (287.0 * 290.0))
        rho_zm = np.concatenate([rho_zm, rho_zm[:, -1:]], axis=1)        # pad to nzm
        cfg = dict(rad_scheme="bugsrad", radiation_top=30000.0, sol_const=1321.0, slr=1.0,
                   alvdr=0.23, alvdf=0.23, alndr=0.23, alndf=0.23,
                   l_fix_cos_solar_zen=True, cos_solar_zen_values=[0.5])
        state = dict(cfg=cfg, gr=gr, ngrdcol=1, nzt=nzt, nzm=nzm, stats_writer=None,
                     rad_scheme="bugsrad", p_in_Pa=p_zt, exner=exner, thlm=thlm, rtm=rtm, rcm=rcm,
                     cloud_frac=cloud_frac, ice_supersat_frac=np.zeros((1, nzt)), rho_zm=rho_zm,
                     radht=np.zeros((1, nzt)))
&gt;       advance_clubb_radiation(state, time_current=43200.0)                  # local noon-ish
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: Error interpreting argument to &lt;function advance_clubb_radiation at 0x727c3a173a60&gt; as an abstract array. The problematic value is of type &lt;class 'str'&gt; and was passed to the function at path args[0]['cfg']['rad_scheme'].
E       This typically means that a jit-wrapped function was called with a non-array argument, and this argument was not marked as static using the static_argnums or static_argnames parameters of jax.jit.
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:661: TypeError</errorStackTrace><failedSince>21</failedSince><name>test_bugsrad_radiation_dispatch</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>1</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_bugsrad</className><duration>5.764</duration><errorDetails>FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
--------------------
For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.</errorDetails><errorStackTrace>def test_bugs_rad_differentiable():
        """The BUGSrad radiative transfer is DIFFERENTIABLE (a stated project goal): jax.grad of a radiative
        loss (TOA outgoing LW + total SW heating) w.r.t. temperature and cloud water is finite AND nonzero
        (the radiation responds to its physical inputs). cloudg is now fully float64 (REFACTOR A3)."""
        import jax, jax.numpy as jnp
        from clubb_jax.src.Radiation.BUGSrad.bugs_rad import bugs_rad
        rng = np.random.default_rng(1); ncol, nlm = 1, 40
        pl2 = jnp.asarray(np.cumsum(15.0 + 10.0 * rng.random((ncol, nlm + 1)), axis=1) + 1.0)
        dpl = pl2[:, 1:] - pl2[:, :-1]; ppl = 0.5 * (pl2[:, :-1] + pl2[:, 1:])
        tl0 = jnp.asarray(220.0 + 70.0 * rng.random((ncol, nlm))); ts = jnp.asarray(290.0 * np.ones(ncol))
        ql = jnp.asarray(1e-3 * rng.random((ncol, nlm))); o3 = jnp.asarray(1e-6 * rng.random((ncol, nlm)))
        qcwl0 = jnp.asarray(np.where(rng.random((ncol, nlm)) &gt; 0.5, 1e-4, 0.0)); qcil = jnp.zeros((ncol, nlm))
        acld = jnp.asarray(np.where(np.asarray(qcwl0) &gt; 0, 1.0, 0.0))
        amu0 = jnp.asarray([0.5]); slr = jnp.ones(ncol); alb = jnp.asarray(0.2 * np.ones(ncol))
    
        def loss(tl, qcwl):
            r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
            return jnp.sum(r['fulw'][:, 0]) + jnp.sum(r['asl'])
    
&gt;       g_t, g_q = jax.grad(loss, argnums=(0, 1))(tl0, qcwl0)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:691: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
clubb_jax/pytests/auto_llm_generated_pytests/test_bugsrad.py:688: in loss
    r = bugs_rad(pl2, ppl, dpl, tl, ql, qcwl, qcil, o3, ts, amu0, slr, alb, alb, alb, alb, acld, s0=1367.0)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/bugs_rad.py:62: in bugs_rad
    fdlw, fulw, fdlwcl, fulwcl = bugs_lwr(ts, ppl, dpl, tl, rmix, cwrho, cirho, o3mix, pl2,
clubb_jax/src/Radiation/BUGSrad/bugs_lwr.py:77: in bugs_lwr
    tg, hk = gases(ib, ig, dp, tt, rmix, o3mix, umco2, umch4, umn2o, pkd, ip1, ip2, pp)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd.py:108: in gases
    T = tables()
        ^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:102: in tables
    _TABLES = load_tables()
              ^^^^^^^^^^^^^
clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:64: in load_tables
    for stmt in _logical_lines(os.path.normpath(_DATA_H)):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

path = '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'

    def _logical_lines(path):
        """Strip comments + #directives, join `&amp;`-continued lines into logical statements."""
        out, buf = [], ''
&gt;       for raw in open(path):
                   ^^^^^^^^^^
E       FileNotFoundError: [Errno 2] No such file or directory: '/home/jenkins/workspace/clubb_branch_jax@2/clubb_release/src/Radiation/BUGSrad/gases_ckd_data.h'
E       --------------------
E       For simplicity, JAX has removed its internal frames from the traceback of the following exception. Set JAX_TRACEBACK_FILTERING=off to include these.

clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py:39: FileNotFoundError</errorStackTrace><failedSince>21</failedSince><name>test_bugs_rad_differentiable</name><properties></properties><skipped>false</skipped><status>FAILED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>1.224</duration><failedSince>0</failedSince><name>test_f2py_oracle</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>1.363</duration><failedSince>0</failedSince><name>test_round_trip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>0.003</duration><failedSince>0</failedSince><name>test_bound</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>0.642</duration><failedSince>0</failedSince><name>test_smooth_corr_quotient_f2py</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_corrs_binormal</className><duration>1.339</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>2.045</duration><failedSince>0</failedSince><name>test_both_precip_preserves_mean_and_variance</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.011</duration><failedSince>0</failedSince><name>test_rico_params_non_emergency</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.015</duration><failedSince>0</failedSince><name>test_root_sign_selection</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.007</duration><failedSince>0</failedSince><name>test_emergency_preserves_mean</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.023</duration><failedSince>0</failedSince><name>test_single_component_branches</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>2.272</duration><failedSince>0</failedSince><name>test_no_precip_and_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>1.809</duration><failedSince>0</failedSince><name>test_compute_mean_stdev_columns</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>0.263</duration><failedSince>0</failedSince><name>test_norm_transform_matches_L2N</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_comp_mu_sigma_hm</className><duration>2.785</duration><failedSince>0</failedSince><name>test_orchestration_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>2.847</duration><failedSince>0</failedSince><name>test_reconstruction_and_structure</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>0.046</duration><failedSince>0</failedSince><name>test_adjustments_and_selection</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_norm_cholesky</className><duration>3.675</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.418</duration><failedSince>0</failedSince><name>test_round_trip</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.334</duration><failedSince>0</failedSince><name>test_branches_vs_numpy</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.001</duration><failedSince>0</failedSince><name>test_clamp</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_corr_w_hm_n</className><duration>0.855</duration><failedSince>0</failedSince><name>test_differentiable</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>3.384</duration><failedSince>0</failedSince><name>test_below_freezing_closed_form_and_mc</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.005</duration><failedSince>0</failedSince><name>test_above_freezing_returns_cf_liq</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.005</duration><failedSince>0</failedSince><name>test_truncation_limits</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><case><age>0</age><className>clubb_jax.pytests.auto_llm_generated_pytests.test_calc_ice_cloud_frac_component</className><duration>0.788</duration><failedSince>0</failedSince><name>test_grad_finite</name><properties></properties><skipped>false</skipped><status>PASSED</status></case><duration>81.818</duration><enclosingBlockName>Declarative: Post Actions</enclosingBlockName><enclosingBlock>54</enclosingBlock><name>pytest</name><nodeId>55</nodeId><properties></properties><timestamp>2026-10-04T18:36:15.669528-05:00</timestamp></suite></testResult>