<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>1720762</buildableTimeMillis><buildingDurationMillis>985580</buildingDurationMillis><executingTimeMillis>1189003</executingTimeMillis><executorUtilization>1.21</executorUtilization><queuingDurationMillis>5386</queuingDurationMillis><queuingTimeMillis>2273190</queuingTimeMillis><subTaskCount>6</subTaskCount><totalDurationMillis>990966</totalDurationMillis><waitingDurationMillis>5383</waitingDurationMillis><waitingTimeMillis>5383</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>17</buildNumber><marked><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><branch><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><branch><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><branch><SHA1>82c8fdb39580f015d26f9cb021b8376696d96b7f</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'><environment></environment></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'><artifactsUrl>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/artifact</artifactsUrl><changesUrl>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/changes</changesUrl><displayUrl>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/stages</displayUrl><testsUrl>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/testReport</testsUrl></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'><restartEnabled>false</restartEnabled><restartableStage>Independent workflows</restartableStage></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.graph.FlowStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepStartNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepAtomNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.cps.nodes.StepEndNode'></node><node _class='org.jenkinsci.plugins.workflow.graph.FlowEndNode'></node></action><action></action><action></action><building>false</building><displayName>#17</displayName><duration>985580</duration><estimatedDuration>1792316</estimatedDuration><fullDisplayName>clubb_cmake #17</fullDisplayName><id>17</id><keepLog>false</keepLog><number>17</number><queueId>11335</queueId><result>SUCCESS</result><timestamp>1792572487994</timestamp><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_python_api/clubb_python/microphys.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_correlations_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/clubb_python/clubb_api.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_adg2_driver_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_covar_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_close_luhar_pdf_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_xpyp_term_ta_godunov_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_roots_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_comp_corrs_binormal_vs_fortran.py</affectedPath><affectedPath>tests/README.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calendar_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_compute_gamma_skw_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_wp3_on_wp2_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_ddzt_umvm_sqd_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pdf_utilities_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_compute_sigma_sqd_w_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/interpolation_wrapper.F90</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_fill_holes_mean_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_hydrostatic_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pos_definite_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_Nc_Ncn_eqns_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_luhar_params_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_hybrid_pdf_main_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_limits_f_x_responder_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_remapping_ppm_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mono_flux_limiter_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_interpolation_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_spurious_source_vs_fortran.py</affectedPath><affectedPath>jenkins_tests/clubb_jax/Jenkinsfile</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_w_up_in_cloud_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cloud_drop_sed_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cos_solar_zen_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sfc_varnce_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_ly93_pdf_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sponge_damp_xp23_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sunray_sw_vs_fortran.py</affectedPath><affectedPath>.agents/skills/clubb-pytests/SKILL.md</affectedPath><affectedPath>clubb_python_api/clubb_f2py.pyf</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/cloud_sed_module_wrapper.F90</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_upxp_vs_fortran.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cholesky_factor_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mirror_lower_triangular_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_binormal_moments_vs_fortran.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_helper_module.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_skx_func_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_pdf_main_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pvertinterp_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calculate_thvm_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_variance_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_advance_helper_extras_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/skx_module_wrapper.F90</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cholesky_corr_mtx_approx_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_rcm_sat_adj_vs_fortran.py</affectedPath><affectedPath>tests/run_pytests.sh</affectedPath><affectedPath>clubb_jax/pytests/f2py_unit_test_helpers.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_T_in_K_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/conftest.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_setter_var_params_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_grid_operators_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_advance_xp3_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diffusion_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_solver_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_config_flags_complete_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_smooth_heaviside_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mixing_length_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calculate_w_responder_params_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_saturation_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_remapping_module_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_tsdadg_pdf_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_skewness_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/clubb_python/CLUBB_core/interpolation.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mean_adv_vs_fortran.py</affectedPath><affectedPath>clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_luhar_3d_driver_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_responder_params_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_coefs_semiimpl_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_xp3_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_xpyp_term_ta_pdf_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_param_names_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/clubb_python/CLUBB_core/skx_module.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pdf_moment_integrals_vs_fortran.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_pdf_vs_fortran.py</affectedPath><commitId>bb08268b3348ef71f7eec35eb0fb5ee4eb10197d</commitId><timestamp>1792526227000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Restore jax fortran oracle tests (#1404)

Restored clubb_jax vs clubb_f2py fortran bindings tests that compare the outputs of clubb_jax functions directly to their compiled fortran counterparts.

clubb_jax changes are minimal:

Use hardcoded pi that matches the pi used in fortran instead of jnp.pi
remove the clubb_release hardcoded path from the gases_ckd_data.py parser.
</comment><date>2026-10-20 14:57:07 -0500</date><id>bb08268b3348ef71f7eec35eb0fb5ee4eb10197d</id><msg>Restore jax fortran oracle tests (#1404)</msg><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_ddzt_umvm_sqd_vs_fortran.py</file></path><path><editType>edit</editType><file>.agents/skills/clubb-pytests/SKILL.md</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_close_luhar_pdf_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_python_api/f2py_fortran_wrappers/skx_module_wrapper.F90</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_solver_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_luhar_params_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_grid_operators_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_binormal_moments_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pdf_moment_integrals_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Radiation/BUGSrad/gases_ckd_data.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_pdf_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/clubb_api.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_rcm_sat_adj_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_hybrid_pdf_main_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/conftest.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_param_names_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_ly93_pdf_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_remapping_ppm_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_setter_var_params_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calendar_vs_fortran.py</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_jax/Jenkinsfile</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sponge_damp_xp23_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_skewness_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_roots_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_config_flags_complete_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_comp_corrs_binormal_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_w_up_in_cloud_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_advance_xp3_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_hydrostatic_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_python_api/f2py_fortran_wrappers/cloud_sed_module_wrapper.F90</file></path><path><editType>edit</editType><file>clubb_python_api/f2py_fortran_wrappers/interpolation_wrapper.F90</file></path><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_coefs_semiimpl_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_limits_f_x_responder_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_xpyp_term_ta_godunov_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calc_wp3_on_wp2_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_fill_holes_mean_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/f2py_unit_test_helpers.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diffusion_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_xp3_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_tsdadg_pdf_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_f2py.pyf</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_spurious_source_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/CLUBB_core/interpolation.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pdf_utilities_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mono_flux_limiter_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pos_definite_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_Nc_Ncn_eqns_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calculate_w_responder_params_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_saturation_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_adg2_driver_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_luhar_3d_driver_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cholesky_factor_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_compute_sigma_sqd_w_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sfc_varnce_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_advance_helper_extras_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_covar_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_correlations_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_responder_params_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_pvertinterp_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_skx_func_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_compute_gamma_skw_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_python_api/clubb_python/microphys.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cholesky_corr_mtx_approx_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mean_adv_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_calculate_thvm_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_clip_variance_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_smooth_heaviside_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cos_solar_zen_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_T_in_K_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_interpolation_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_cloud_drop_sed_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_sunray_sw_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_xpyp_term_ta_pdf_vs_fortran.py</file></path><path><editType>edit</editType><file>tests/run_pytests.sh</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_helper_module.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/CLUBB_core/skx_module.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mirror_lower_triangular_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mixing_length_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_remapping_module_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_diagnose_upxp_vs_fortran.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_new_pdf_main_vs_fortran.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/fill_holes.py</affectedPath><affectedPath>.agents/skills/clubb-documentation/language/SKILL.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_multicolumn_microphys_adapters.py</affectedPath><affectedPath>clubb_jax/src/Microphys/pdf_hydromet_microphys_wrapper.py</affectedPath><affectedPath>.agents/skills/clubb-documentation/change-messages/SKILL.md</affectedPath><commitId>82c8fdb39580f015d26f9cb021b8376696d96b7f</commitId><timestamp>1792549343000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Fix per-column inputs in JAX microphysics (#1407)

* Align JAX microphysics with per-column Fortran inputs

Pass each column’s parameters into PDF preparation and its own grid spacing into hydrometeor hole filling after the master multi-column fix. The previous scalar remapping disagreed with current Fortran from step 2.

Six focused eager/JIT checks pass, covering column independence, conserved mass and derivatives. Both regressions detect the retained pre-fix adapters; full case comparisons are in progress.

(cherry picked from commit 7fc8280d9ce3fe0ec51bf5e7f3cfd3a0e7c8838a)

* Explain PR problems before describing their solutions

Change-first PR openings make their motivation harder to follow. Use
Motivation and Change to describe the problem first, then its cause and
the proposed solution; align the language guidance with that order.

Both documentation skills validate, and relative-link checks pass.
</comment><date>2026-10-20 21:22:23 -0500</date><id>82c8fdb39580f015d26f9cb021b8376696d96b7f</id><msg>Fix per-column inputs in JAX microphysics (#1407)</msg><path><editType>edit</editType><file>clubb_jax/src/Microphys/pdf_hydromet_microphys_wrapper.py</file></path><path><editType>edit</editType><file>.agents/skills/clubb-documentation/change-messages/SKILL.md</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/fill_holes.py</file></path><path><editType>edit</editType><file>.agents/skills/clubb-documentation/language/SKILL.md</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_multicolumn_microphys_adapters.py</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName><id>noreply</id></culprit><inProgress>false</inProgress><nextBuild><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user Gunther Huebler</shortDescription><userId>huebler</userId><userName>Gunther Huebler</userName></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>3247899</buildableTimeMillis><buildingDurationMillis>1224810</buildingDurationMillis><executingTimeMillis>911789</executingTimeMillis><executorUtilization>0.74</executorUtilization><subTaskCount>6</subTaskCount><waitingDurationMillis>0</waitingDurationMillis><waitingTimeMillis>1</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>18</buildNumber><marked><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><branch><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><branch><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><branch><SHA1>b2a6a9ceab12125d4a2542da4e20736039f3a744</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><building>false</building><displayName>#18</displayName><duration>1224810</duration><estimatedDuration>1792316</estimatedDuration><fullDisplayName>clubb_cmake #18</fullDisplayName><id>18</id><keepLog>false</keepLog><number>18</number><queueId>11487</queueId><result>SUCCESS</result><timestamp>1792619880001</timestamp><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/18/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/parameter_indices.py</affectedPath><affectedPath>input/parameter_and_flag_configs/e3sm_maint32/tunable_parameters.in</affectedPath><affectedPath>input/parameter_and_flag_configs/coriolis_cases/atex_long_parameters.in</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/model_flags.py</affectedPath><affectedPath>clubb_python_api/pytests/auto_llm_generated_pytests/test_python_port_api_coverage.py</affectedPath><affectedPath>clubb_python_api/clubb_python/CLUBB_core/mixing_length.py</affectedPath><affectedPath>input/flag_sets/run_bindiff_w_flags_config_core_flags.json</affectedPath><affectedPath>input/parameter_and_flag_configs/coriolis_cases/coriolis_test_parameters.in</affectedPath><affectedPath>src/CLUBB_core/mixing_length.F90</affectedPath><affectedPath>tuner/pytests/test_parameter_ranges.py</affectedPath><affectedPath>src/clubb_tuner.F90</affectedPath><affectedPath>input/parameter_and_flag_configs/Lscale/configurable_model_flags.in</affectedPath><affectedPath>input/flag_sets/config_core_flags_wo_never_supported_jax_features.json</affectedPath><affectedPath>src/CLUBB_core/model_flags.F90</affectedPath><affectedPath>clubb_python_api/clubb_python/derived_types/config_flags_converter.py</affectedPath><affectedPath>clubb_python_driver/advance_clubb_core.py</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/mixing_length_wrapper.F90</affectedPath><affectedPath>clubb_jax/tests/test_loss_driver.py</affectedPath><affectedPath>clubb_python_driver/clubb_constants.py</affectedPath><affectedPath>src/G_unit_test_types/pdf_parameter_tests.F90</affectedPath><affectedPath>tests/run_jax_vs_fortran_cases.py</affectedPath><affectedPath>src/SILHS/silhs_importance_sample_module.F90</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_mixing_length.py</affectedPath><affectedPath>src/CLUBB_core/parameters_tunable.F90</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_param_names.py</affectedPath><affectedPath>clubb_jax/tests/run_jax_timestep_gradient_test.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/mixing_length.py</affectedPath><affectedPath>input/parameter_and_flag_configs/tauMatchLscale/configurable_model_flags.in</affectedPath><affectedPath>input/parameter_and_flag_configs/e3sm_maint32/maint32_defaults_report.md</affectedPath><affectedPath>src/CLUBB_core/clubb_api_module.F90</affectedPath><affectedPath>clubb_jax/tests/benchmark_mixing_length.py</affectedPath><affectedPath>utilities/clubb_settings_validation.py</affectedPath><affectedPath>tests/run_python_vs_fortran_cases.py</affectedPath><affectedPath>clubb_python_api/clubb_f2py.pyf</affectedPath><affectedPath>input/parameter_and_flag_configs/tauMatchLscale/tunable_parameters.in</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>dash_app/misc_tab/mixing_length_trajectories/analysis.py</affectedPath><affectedPath>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_advance_xm_wpxp.py</affectedPath><affectedPath>input/parameter_and_flag_configs/e3sm_maint32/configurable_model_flags.in</affectedPath><affectedPath>input/parameter_and_flag_configs/default/configurable_model_flags.in</affectedPath><affectedPath>dash_app/pytests/test_tune_callbacks_settings.py</affectedPath><affectedPath>input/parameter_and_flag_configs/compatible_r8029/configurable_model_flags.in</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/parameters_tunable.py</affectedPath><affectedPath>input/parameter_and_flag_configs/e3sm/configurable_model_flags.in</affectedPath><affectedPath>tuner/pytests/test_adam_baselines.py</affectedPath><affectedPath>input/flag_sets/run_bindiff_w_flags_config_host_flags.json</affectedPath><affectedPath>.agents/skills/clubb-testing-and-reporting/SKILL.md</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_clubb_core_module.py</affectedPath><affectedPath>src/CLUBB_core/parameter_indices.F90</affectedPath><affectedPath>clubb_python_api/pytests/auto_llm_generated_pytests/test_init_sequence.py</affectedPath><affectedPath>input/parameter_and_flag_configs/e3sm/tunable_parameters.in</affectedPath><affectedPath>dash_app/pytests/test_run_runtime.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mixing_length_vs_fortran.py</affectedPath><affectedPath>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_mixing_length.py</affectedPath><affectedPath>src/G_unit_test_types/spurious_source_test.F90</affectedPath><affectedPath>input/parameter_and_flag_configs/default/tunable_parameters.in</affectedPath><affectedPath>src/CLUBB_core/numerical_check.F90</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/config_flags.py</affectedPath><affectedPath>input/parameter_and_flag_configs/coriolis_cases/ekman_parameters.in</affectedPath><affectedPath>src/CLUBB_core/advance_clubb_core_module.F90</affectedPath><affectedPath>tests/pytests/test_run_clubb_conv_test.py</affectedPath><affectedPath>src/clubb_driver.F90</affectedPath><affectedPath>utilities/pytests/test_settings_rules.py</affectedPath><affectedPath>.agents/skills/clubb-finalization/SKILL.md</affectedPath><affectedPath>dash_app/pytests/test_callbacks_runs.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/numerical_check.py</affectedPath><affectedPath>input/parameter_and_flag_configs/Lscale/tunable_parameters.in</affectedPath><affectedPath>input/parameter_and_flag_configs/compatible_r8029/tunable_parameters.in</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/model_flags_wrapper.F90</affectedPath><affectedPath>clubb_python_api/clubb_python/derived_types/config_flags.py</affectedPath><commitId>dfa3b53697658b3f5f24cb5ae83c8e11fe0c0d65</commitId><timestamp>1792614890000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Port differentiable legacy mixing length and migrate its selector (#1408)

* Make legacy mixing length differentiable and migrate its selector

The value-dependent JAX parcel loops prevented reverse differentiation and
serialized independent launches. Use fixed scans with masks, batched launch
levels and per-column error state while preserving Fortran stopping rules.
Port the remaining legacy/tau branches and use the configured method in
driver derivative checks.

Replace the logical tau switch with Lscale_method (1=legacy, 2=tau), and
rename mu to Lscale_mu_entrain throughout core, bindings, inputs and validation.
Keep 102 tunable parameters; coherent physics is a separate follow-up.

Local GNU Debug/API build, source checks, 447 unit checks and 240 API checks
pass. Integrated Jenkins validation follows this checkpoint.

* Read renamed entrainment parameters in Dash trajectories

Saved output now names parcel entrainment Lscale_mu_entrain. Prefer that
parameter while retaining support for older files saved with mu. Update
Dash test settings to use the integer mixing-length selector.

The local Dash suite passes 552 checks.

* Require completed tests before branch finalization

Requests to finalize immediately still require applicable Jenkins jobs to
finish and their results to be reviewed. Distinguish validation checkpoints
from a completed handoff, and report relevant stages of baseline-failing jobs.
</comment><date>2026-10-21 15:34:50 -0500</date><id>dfa3b53697658b3f5f24cb5ae83c8e11fe0c0d65</id><msg>Port differentiable legacy mixing length and migrate its selector (#1408)</msg><path><editType>edit</editType><file>clubb_python_api/f2py_fortran_wrappers/model_flags_wrapper.F90</file></path><path><editType>edit</editType><file>src/CLUBB_core/model_flags.F90</file></path><path><editType>edit</editType><file>input/flag_sets/run_bindiff_w_flags_config_core_flags.json</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_clubb_core_module.py</file></path><path><editType>edit</editType><file>.agents/skills/clubb-finalization/SKILL.md</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/compatible_r8029/configurable_model_flags.in</file></path><path><editType>edit</editType><file>src/CLUBB_core/mixing_length.F90</file></path><path><editType>edit</editType><file>src/CLUBB_core/parameter_indices.F90</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/mixing_length.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/coriolis_cases/ekman_parameters.in</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/model_flags.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/tauMatchLscale/tunable_parameters.in</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/Lscale/tunable_parameters.in</file></path><path><editType>edit</editType><file>src/CLUBB_core/advance_clubb_core_module.F90</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/numerical_check.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/run_jax_timestep_gradient_test.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/tauMatchLscale/configurable_model_flags.in</file></path><path><editType>edit</editType><file>dash_app/pytests/test_callbacks_runs.py</file></path><path><editType>edit</editType><file>tests/run_python_vs_fortran_cases.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/parameter_indices.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_loss_driver.py</file></path><path><editType>edit</editType><file>dash_app/misc_tab/mixing_length_trajectories/analysis.py</file></path><path><editType>edit</editType><file>tests/run_jax_vs_fortran_cases.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_f2py.pyf</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/e3sm_maint32/tunable_parameters.in</file></path><path><editType>edit</editType><file>src/CLUBB_core/clubb_api_module.F90</file></path><path><editType>add</editType><file>clubb_jax/tests/benchmark_mixing_length.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/CLUBB_core/mixing_length.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/coriolis_cases/atex_long_parameters.in</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/e3sm/tunable_parameters.in</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/coriolis_cases/coriolis_test_parameters.in</file></path><path><editType>edit</editType><file>src/G_unit_test_types/pdf_parameter_tests.F90</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/derived_types/config_flags_converter.py</file></path><path><editType>edit</editType><file>src/clubb_driver.F90</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/parameters_tunable.py</file></path><path><editType>edit</editType><file>src/CLUBB_core/numerical_check.F90</file></path><path><editType>edit</editType><file>clubb_python_driver/advance_clubb_core.py</file></path><path><editType>edit</editType><file>clubb_python_driver/clubb_constants.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/default/tunable_parameters.in</file></path><path><editType>edit</editType><file>tuner/pytests/test_parameter_ranges.py</file></path><path><editType>edit</editType><file>clubb_python_api/pytests/auto_llm_generated_pytests/test_init_sequence.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/e3sm/configurable_model_flags.in</file></path><path><editType>edit</editType><file>clubb_python_api/f2py_fortran_wrappers/mixing_length_wrapper.F90</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_mixing_length.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_tune_callbacks_settings.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/f2py_unit_tests/test_mixing_length_vs_fortran.py</file></path><path><editType>edit</editType><file>clubb_python_api/pytests/auto_llm_generated_pytests/test_python_port_api_coverage.py</file></path><path><editType>edit</editType><file>utilities/clubb_settings_validation.py</file></path><path><editType>edit</editType><file>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_mixing_length.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_run_runtime.py</file></path><path><editType>edit</editType><file>src/clubb_tuner.F90</file></path><path><editType>edit</editType><file>src/G_unit_test_types/spurious_source_test.F90</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/Lscale/configurable_model_flags.in</file></path><path><editType>edit</editType><file>tuner/pytests/test_adam_baselines.py</file></path><path><editType>edit</editType><file>src/CLUBB_core/parameters_tunable.F90</file></path><path><editType>edit</editType><file>src/SILHS/silhs_importance_sample_module.F90</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/config_flags.py</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/derived_types/config_flags.py</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/default/configurable_model_flags.in</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/e3sm_maint32/configurable_model_flags.in</file></path><path><editType>edit</editType><file>input/flag_sets/config_core_flags_wo_never_supported_jax_features.json</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/e3sm_maint32/maint32_defaults_report.md</file></path><path><editType>edit</editType><file>input/parameter_and_flag_configs/compatible_r8029/tunable_parameters.in</file></path><path><editType>edit</editType><file>tests/pytests/test_run_clubb_conv_test.py</file></path><path><editType>edit</editType><file>utilities/pytests/test_settings_rules.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_param_names.py</file></path><path><editType>edit</editType><file>input/flag_sets/run_bindiff_w_flags_config_host_flags.json</file></path><path><editType>edit</editType><file>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_advance_xm_wpxp.py</file></path><path><editType>edit</editType><file>.agents/skills/clubb-testing-and-reporting/SKILL.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>README</affectedPath><commitId>b2a6a9ceab12125d4a2542da4e20736039f3a744</commitId><timestamp>1792615282000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>The previous commit changed flags, which will now break the BFB tests even when the bit changing message is included, so now we need to have RESOLVED:dfa3b53697658b3f5f24cb5ae83c8e11fe0c0d65 messsages or enable temporary backwards compatibility.
</comment><date>2026-10-21 15:41:22 -0500</date><id>b2a6a9ceab12125d4a2542da4e20736039f3a744</id><msg>The previous commit changed flags, which will now break the BFB tests even when the bit changing message is included, so now we need to have RESOLVED:dfa3b53697658b3f5f24cb5ae83c8e11fe0c0d65 messsages or enable temporary backwards compatibility.</msg><path><editType>edit</editType><file>README</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></culprit><culprit><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><inProgress>false</inProgress><previousBuild><number>17</number><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/</url></previousBuild></nextBuild><previousBuild><action _class='hudson.model.CauseAction'><cause _class='hudson.triggers.SCMTrigger$SCMTriggerCause'><shortDescription>Started by an SCM change</shortDescription></cause></action><action></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>16177366</buildableTimeMillis><buildingDurationMillis>3166557</buildingDurationMillis><executingTimeMillis>989311</executingTimeMillis><executorUtilization>0.31</executorUtilization><subTaskCount>6</subTaskCount><waitingDurationMillis>7433</waitingDurationMillis><waitingTimeMillis>7440</waitingTimeMillis></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginmaster _class='hudson.plugins.git.util.Build'><buildNumber>16</buildNumber><marked><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><branch><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><name>refs/remotes/origin/master</name></branch></marked><revision><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><branch><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><name>refs/remotes/origin/master</name></branch></revision></refsremotesoriginmaster></buildsByBranchName><lastBuiltRevision><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><branch><SHA1>8369512fcc6487603491e12ac13376de2aec2a0b</SHA1><name>refs/remotes/origin/master</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.workflow.cps.EnvActionImpl'></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action></action><action _class='org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction'></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'></action><action></action><action></action><building>false</building><displayName>#16</displayName><duration>3166557</duration><estimatedDuration>1792316</estimatedDuration><fullDisplayName>clubb_cmake #16</fullDisplayName><id>16</id><keepLog>false</keepLog><number>16</number><queueId>11181</queueId><result>SUCCESS</result><timestamp>1792486090432</timestamp><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/16/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/generalized_grid_test.F90</affectedPath><affectedPath>src/CLUBB_core/setup_clubb_pdf_params.F90</affectedPath><affectedPath>clubb_python_api/clubb_f2py.pyf</affectedPath><affectedPath>src/CLUBB_core/fill_holes.F90</affectedPath><affectedPath>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_precipitation_fraction.py</affectedPath><affectedPath>src/G_unit_test_types/mu_sigma_hm_tests.F90</affectedPath><affectedPath>clubb_python_api/f2py_fortran_wrappers/precipitation_fraction_wrapper.F90</affectedPath><affectedPath>clubb_python_api/clubb_python/CLUBB_core/precipitation_fraction.py</affectedPath><affectedPath>src/Microphys/pdf_hydromet_microphys_wrapper.F90</affectedPath><affectedPath>src/CLUBB_core/precipitation_fraction.F90</affectedPath><commitId>8369512fcc6487603491e12ac13376de2aec2a0b</commitId><timestamp>1792463005000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Clubb params 1d to 2d fix (#1392)

* Fix: clubb params is a shape (ngrdcol,nparams) that is passed into subroutines that expect a 1d array

Also fixed dependent other places in code and changed the python api. This is BIT_CHANGING for multicol.
If a 2d array is passed into a function that expects the arr to be 1d fortran just passes the first col of the arr.
Therefore the changes dont affect single col runs. For multicol runs other indexing is needed

* fill_holes_vertical_api expects the passed gr%dzt to have shape(ngrdcol,nz) but the code passes the whole gr%dzt array although each column is traversed one by one.
So ngrdcol=1 is passed each time.

No effect on single col, as with ngrdcol = 1, gr%dzt and gr%dzt(1:1,:) are the same.
Affects multicol if l_hole_fill = .true. and the hydrometeor is a mixing ratio (name starts with r) and
some value is actually negative

Therefore BIT_CHANGING
</comment><date>2026-10-19 21:23:25 -0500</date><id>8369512fcc6487603491e12ac13376de2aec2a0b</id><msg>Clubb params 1d to 2d fix (#1392)</msg><path><editType>edit</editType><file>src/CLUBB_core/setup_clubb_pdf_params.F90</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_python/CLUBB_core/precipitation_fraction.py</file></path><path><editType>edit</editType><file>clubb_python_api/pytests/auto_llm_generated_pytests/test_call_tree_precipitation_fraction.py</file></path><path><editType>edit</editType><file>src/generalized_grid_test.F90</file></path><path><editType>edit</editType><file>src/G_unit_test_types/mu_sigma_hm_tests.F90</file></path><path><editType>edit</editType><file>src/Microphys/pdf_hydromet_microphys_wrapper.F90</file></path><path><editType>edit</editType><file>clubb_python_api/clubb_f2py.pyf</file></path><path><editType>edit</editType><file>src/CLUBB_core/precipitation_fraction.F90</file></path><path><editType>edit</editType><file>clubb_python_api/f2py_fortran_wrappers/precipitation_fraction_wrapper.F90</file></path><path><editType>edit</editType><file>src/CLUBB_core/fill_holes.F90</file></path></item><kind>git</kind></changeSet><culprit><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></culprit><inProgress>false</inProgress><nextBuild><number>17</number><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/17/</url></nextBuild><previousBuild><number>15</number><url>https://carson.math.uwm.edu/jenkins/job/clubb_cmake/15/</url></previousBuild></previousBuild></workflowRun>