<workflowRun _class='org.jenkinsci.plugins.workflow.job.WorkflowRun'><action _class='hudson.model.ParametersAction'><parameter _class='net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterValue'><name>BRANCH</name><value>origin/clubb_case_runner</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>INCLUDE_GENERATED_PYTESTS</name><value>true</value></parameter></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user agent_dev</shortDescription><userId>agent_dev</userId><userName>agent_dev</userName></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>547917</buildingDurationMillis><executingTimeMillis>532230</executingTimeMillis><executorUtilization>0.97</executorUtilization><queuingDurationMillis>5347</queuingDurationMillis><queuingTimeMillis>5350</queuingTimeMillis><subTaskCount>1</subTaskCount><totalDurationMillis>553264</totalDurationMillis><waitingDurationMillis>5341</waitingDurationMillis><waitingTimeMillis>5342</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginjax_microphys _class='hudson.plugins.git.util.Build'><buildNumber>42</buildNumber><marked><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></marked><revision><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></revision></refsremotesoriginjax_microphys><refsremotesoriginremove_perl _class='hudson.plugins.git.util.Build'><buildNumber>9</buildNumber><marked><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></marked><revision><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></revision></refsremotesoriginremove_perl><refsremotesoriginrun_scripts_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>16</buildNumber><marked><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></marked><revision><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></revision></refsremotesoriginrun_scripts_cleanup><refsremotesoriginclubb_case_runner _class='hudson.plugins.git.util.Build'><buildNumber>49</buildNumber><marked><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><branch><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></marked><revision><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><branch><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></revision></refsremotesoriginclubb_case_runner><refsremotesorigindash_updates _class='hudson.plugins.git.util.Build'><buildNumber>27</buildNumber><marked><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></marked><revision><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></revision></refsremotesorigindash_updates><refsremotesoriginclubb_python_fix _class='hudson.plugins.git.util.Build'><buildNumber>36</buildNumber><marked><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></marked><revision><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></revision></refsremotesoriginclubb_python_fix><refsremotesoriginclubb_jax _class='hudson.plugins.git.util.Build'><buildNumber>37</buildNumber><marked><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></marked><revision><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></revision></refsremotesoriginclubb_jax><refsremotesoriginvenv_improvement _class='hudson.plugins.git.util.Build'><buildNumber>41</buildNumber><marked><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></marked><revision><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></revision></refsremotesoriginvenv_improvement><refsremotesoriginscript_arg_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></marked><revision><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></revision></refsremotesoriginscript_arg_cleanup><refsremotesoriginjenkins_test_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>43</buildNumber><marked><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></marked><revision><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></revision></refsremotesoriginjenkins_test_cleanup><refsremotesorigincalc_sfc_varnce_movement _class='hudson.plugins.git.util.Build'><buildNumber>4</buildNumber><marked><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></marked><revision><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></revision></refsremotesorigincalc_sfc_varnce_movement><refsremotesorigintiny_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>21</buildNumber><marked><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></marked><revision><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></revision></refsremotesorigintiny_dash_updates><refsremotesoriginclubb_organization_part2 _class='hudson.plugins.git.util.Build'><buildNumber>7</buildNumber><marked><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></marked><revision><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></revision></refsremotesoriginclubb_organization_part2><refsremotesoriginpytest_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>48</buildNumber><marked><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></marked><revision><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></revision></refsremotesoriginpytest_cleanup><refsremotesoriginclubb_f2py _class='hudson.plugins.git.util.Build'><buildNumber>3</buildNumber><marked><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></marked><revision><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></revision></refsremotesoriginclubb_f2py><refsremotesoriginclubb_organization_part3 _class='hudson.plugins.git.util.Build'><buildNumber>8</buildNumber><marked><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></marked><revision><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></revision></refsremotesoriginclubb_organization_part3><refsremotesoriginmicrophys_loop_push _class='hudson.plugins.git.util.Build'><buildNumber>39</buildNumber><marked><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></marked><revision><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></revision></refsremotesoriginmicrophys_loop_push><refsremotesorigintest_fix _class='hudson.plugins.git.util.Build'><buildNumber>32</buildNumber><marked><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></marked><revision><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></revision></refsremotesorigintest_fix><refsremotesoriginclubb_organization_part1 _class='hudson.plugins.git.util.Build'><buildNumber>6</buildNumber><marked><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></marked><revision><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></revision></refsremotesoriginclubb_organization_part1><refsremotesorigintuner_additions _class='hudson.plugins.git.util.Build'><buildNumber>18</buildNumber><marked><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></marked><revision><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></revision></refsremotesorigintuner_additions><refsremotesorigincopilotfix-api-signature-mismatch _class='hudson.plugins.git.util.Build'><buildNumber>35</buildNumber><marked><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></marked><revision><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></revision></refsremotesorigincopilotfix-api-signature-mismatch><refsremotesoriginclubb_loss_driver _class='hudson.plugins.git.util.Build'><buildNumber>15</buildNumber><marked><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></marked><revision><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></revision></refsremotesoriginclubb_loss_driver><refsremotesoriginclubb_timer_upgrade _class='hudson.plugins.git.util.Build'><buildNumber>22</buildNumber><marked><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></marked><revision><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></revision></refsremotesoriginclubb_timer_upgrade><refsremotesoriginnice_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>29</buildNumber><marked><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></marked><revision><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></revision></refsremotesoriginnice_dash_updates></buildsByBranchName><lastBuiltRevision><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><branch><SHA1>f66ccf2ff239b039140bdb7268b45932975c56ef</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>684</totalCount><urlName>testReport</urlName></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/view/clubb_branch_tests/job/clubb_branch_python/49/artifact</artifactsUrl><changesUrl>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/changes</changesUrl><displayUrl>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/49/stages</displayUrl><testsUrl>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/49/testReport</testsUrl></action><action _class='org.jenkinsci.plugins.pipeline.modeldefinition.actions.RestartDeclarativePipelineAction'><restartEnabled>false</restartEnabled><restartableStage>Compile</restartableStage><restartableStage>Run F2PY pytests</restartableStage><restartableStage>Run fast Python unit tests</restartableStage><restartableStage>Run settings-validation parity</restartableStage><restartableStage>Run Python vs Fortran cases</restartableStage></action><action></action><action _class='org.jenkinsci.plugins.workflow.job.views.FlowGraphAction'><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.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.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.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.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.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.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.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.graph.FlowEndNode'></node></action><action></action><action></action><building>false</building><displayName>#49</displayName><duration>547917</duration><estimatedDuration>479884</estimatedDuration><fullDisplayName>clubb_branch_python #49</fullDisplayName><id>49</id><keepLog>false</keepLog><number>49</number><queueId>10723</queueId><result>SUCCESS</result><timestamp>1792202236772</timestamp><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/49/</url><inProgress>false</inProgress><nextBuild><action _class='hudson.model.ParametersAction'><parameter _class='net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterValue'><name>BRANCH</name><value>origin/clubb_case_runner</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>INCLUDE_GENERATED_PYTESTS</name><value>true</value></parameter></action><action _class='hudson.model.CauseAction'><cause _class='hudson.model.Cause$UserIdCause'><shortDescription>Started by user agent_dev</shortDescription><userId>agent_dev</userId><userName>agent_dev</userName></cause></action><action _class='jenkins.metrics.impl.TimeInQueueAction'><blockedDurationMillis>0</blockedDurationMillis><blockedTimeMillis>0</blockedTimeMillis><buildableDurationMillis>0</buildableDurationMillis><buildableTimeMillis>0</buildableTimeMillis><buildingDurationMillis>293763</buildingDurationMillis><executingTimeMillis>284924</executingTimeMillis><executorUtilization>0.97</executorUtilization><subTaskCount>1</subTaskCount><waitingDurationMillis>5463</waitingDurationMillis><waitingTimeMillis>5463</waitingTimeMillis></action><action></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginjax_microphys _class='hudson.plugins.git.util.Build'><buildNumber>42</buildNumber><marked><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></marked><revision><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></revision></refsremotesoriginjax_microphys><refsremotesoriginremove_perl _class='hudson.plugins.git.util.Build'><buildNumber>9</buildNumber><marked><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></marked><revision><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></revision></refsremotesoriginremove_perl><refsremotesoriginrun_scripts_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>16</buildNumber><marked><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></marked><revision><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></revision></refsremotesoriginrun_scripts_cleanup><refsremotesoriginclubb_case_runner _class='hudson.plugins.git.util.Build'><buildNumber>50</buildNumber><marked><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><branch><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></marked><revision><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><branch><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></revision></refsremotesoriginclubb_case_runner><refsremotesorigindash_updates _class='hudson.plugins.git.util.Build'><buildNumber>27</buildNumber><marked><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></marked><revision><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></revision></refsremotesorigindash_updates><refsremotesoriginclubb_python_fix _class='hudson.plugins.git.util.Build'><buildNumber>36</buildNumber><marked><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></marked><revision><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></revision></refsremotesoriginclubb_python_fix><refsremotesoriginclubb_jax _class='hudson.plugins.git.util.Build'><buildNumber>37</buildNumber><marked><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></marked><revision><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></revision></refsremotesoriginclubb_jax><refsremotesoriginvenv_improvement _class='hudson.plugins.git.util.Build'><buildNumber>41</buildNumber><marked><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></marked><revision><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></revision></refsremotesoriginvenv_improvement><refsremotesoriginscript_arg_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></marked><revision><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></revision></refsremotesoriginscript_arg_cleanup><refsremotesoriginjenkins_test_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>43</buildNumber><marked><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></marked><revision><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></revision></refsremotesoriginjenkins_test_cleanup><refsremotesorigincalc_sfc_varnce_movement _class='hudson.plugins.git.util.Build'><buildNumber>4</buildNumber><marked><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></marked><revision><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></revision></refsremotesorigincalc_sfc_varnce_movement><refsremotesorigintiny_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>21</buildNumber><marked><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></marked><revision><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></revision></refsremotesorigintiny_dash_updates><refsremotesoriginclubb_organization_part2 _class='hudson.plugins.git.util.Build'><buildNumber>7</buildNumber><marked><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></marked><revision><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></revision></refsremotesoriginclubb_organization_part2><refsremotesoriginpytest_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>48</buildNumber><marked><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></marked><revision><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></revision></refsremotesoriginpytest_cleanup><refsremotesoriginclubb_f2py _class='hudson.plugins.git.util.Build'><buildNumber>3</buildNumber><marked><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></marked><revision><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></revision></refsremotesoriginclubb_f2py><refsremotesoriginclubb_organization_part3 _class='hudson.plugins.git.util.Build'><buildNumber>8</buildNumber><marked><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></marked><revision><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></revision></refsremotesoriginclubb_organization_part3><refsremotesoriginmicrophys_loop_push _class='hudson.plugins.git.util.Build'><buildNumber>39</buildNumber><marked><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></marked><revision><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></revision></refsremotesoriginmicrophys_loop_push><refsremotesorigintest_fix _class='hudson.plugins.git.util.Build'><buildNumber>32</buildNumber><marked><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></marked><revision><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></revision></refsremotesorigintest_fix><refsremotesoriginclubb_organization_part1 _class='hudson.plugins.git.util.Build'><buildNumber>6</buildNumber><marked><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></marked><revision><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></revision></refsremotesoriginclubb_organization_part1><refsremotesorigintuner_additions _class='hudson.plugins.git.util.Build'><buildNumber>18</buildNumber><marked><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></marked><revision><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></revision></refsremotesorigintuner_additions><refsremotesorigincopilotfix-api-signature-mismatch _class='hudson.plugins.git.util.Build'><buildNumber>35</buildNumber><marked><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></marked><revision><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></revision></refsremotesorigincopilotfix-api-signature-mismatch><refsremotesoriginclubb_loss_driver _class='hudson.plugins.git.util.Build'><buildNumber>15</buildNumber><marked><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></marked><revision><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></revision></refsremotesoriginclubb_loss_driver><refsremotesoriginclubb_timer_upgrade _class='hudson.plugins.git.util.Build'><buildNumber>22</buildNumber><marked><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></marked><revision><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></revision></refsremotesoriginclubb_timer_upgrade><refsremotesoriginnice_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>29</buildNumber><marked><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></marked><revision><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></revision></refsremotesoriginnice_dash_updates></buildsByBranchName><lastBuiltRevision><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><branch><SHA1>0c985605a47a651c813c6697e3c3c4e32365f9c7</SHA1><name>refs/remotes/origin/clubb_case_runner</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>684</totalCount><urlName>testReport</urlName></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>#50</displayName><duration>293763</duration><estimatedDuration>479884</estimatedDuration><fullDisplayName>clubb_branch_python #50</fullDisplayName><id>50</id><keepLog>false</keepLog><number>50</number><queueId>10828</queueId><result>SUCCESS</result><timestamp>1792262128215</timestamp><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/50/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>run_scripts/run_scm_loss.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_jax_cli_options.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_device_selection.py</affectedPath><affectedPath>utilities/time_clubb.py</affectedPath><affectedPath>tests/pytests/auto_llm_generated_pytests/test_scm_jax_driver_test.py</affectedPath><affectedPath>utilities/timing_profiles.py</affectedPath><affectedPath>run_scripts/run_tuner_job.py</affectedPath><affectedPath>utilities/pytests/test_create_case_namelist.py</affectedPath><affectedPath>utilities/pytests/test_time_clubb.py</affectedPath><commitId>ca95e8ec8301f3e6088664879410da55291165b2</commitId><timestamp>1792202474000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Complete case-runner procedure descriptions

Describe the remaining changed CLI, test and profile routines under the current
documentation standards. Executable Python ASTs are unchanged from f66ccf2ff,
the revision running in Jenkins; existing validation still applies.
</comment><date>2026-10-16 21:01:14 -0500</date><id>ca95e8ec8301f3e6088664879410da55291165b2</id><msg>Complete case-runner procedure descriptions</msg><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_jax_cli_options.py</file></path><path><editType>edit</editType><file>run_scripts/run_tuner_job.py</file></path><path><editType>edit</editType><file>run_scripts/run_scm_loss.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_device_selection.py</file></path><path><editType>edit</editType><file>utilities/pytests/test_create_case_namelist.py</file></path><path><editType>edit</editType><file>utilities/pytests/test_time_clubb.py</file></path><path><editType>edit</editType><file>tests/pytests/auto_llm_generated_pytests/test_scm_jax_driver_test.py</file></path><path><editType>edit</editType><file>utilities/timing_profiles.py</file></path><path><editType>edit</editType><file>utilities/time_clubb.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/code_timer_module.py</affectedPath><affectedPath>clubb_jax/src/clubb_case_initalization.py</affectedPath><affectedPath>clubb_jax/src/clubb_standalone.py</affectedPath><affectedPath>utilities/README.md</affectedPath><affectedPath>utilities/time_clubb.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_code_timer_module.py</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><commitId>607c58bdb517fa6677567b5015cb1db2a5554915</commitId><timestamp>1792207323000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Separate JAX timing from case runner changes

Keep runtime selection and process reuse independent so the case runner
can merge into master before JAX timing. Shared runner/CLI/timing
checks pass (445 tests, including provisional coverage).
</comment><date>2026-10-16 22:22:03 -0500</date><id>607c58bdb517fa6677567b5015cb1db2a5554915</id><msg>Separate JAX timing from case runner changes</msg><path><editType>edit</editType><file>utilities/time_clubb.py</file></path><path><editType>delete</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_code_timer_module.py</file></path><path><editType>delete</editType><file>clubb_jax/src/CLUBB_core/code_timer_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_case_initalization.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>utilities/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_standalone.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/clubb_standalone.py</affectedPath><affectedPath>utilities/README.md</affectedPath><affectedPath>utilities/pytests/auto_llm_generated_pytests/test_timing_workers.py</affectedPath><affectedPath>run_scripts/README.md</affectedPath><affectedPath>utilities/pytests/auto_llm_generated_pytests/test_loss_cli.py</affectedPath><affectedPath>utilities/clubb_case_runner.py</affectedPath><affectedPath>run_scripts/run_scm.py</affectedPath><affectedPath>clubb_python_driver/clubb_standalone.py</affectedPath><affectedPath>src/clubb_standalone.F90</affectedPath><affectedPath>run_scripts/run_scm_loss.py</affectedPath><affectedPath>utilities/tests/run_case_runner_test.py</affectedPath><affectedPath>utilities/time_clubb.py</affectedPath><affectedPath>clubb_jax/src/Microphys/microphys_init_cleanup.py</affectedPath><affectedPath>utilities/create_case_namelist.py</affectedPath><affectedPath>utilities/pytests/auto_llm_generated_pytests/test_clubb_case_runner.py</affectedPath><commitId>2c4fa0aa2e5c816571ac586013f9ad27e80671a8</commitId><timestamp>1792208789000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Document case runner lifecycle and timing

Clarify process reuse, model cleanup, runner status and timing boundaries.
Improve procedure descriptions and runnable examples without changing logic.

Shared checks pass (445); JAX reuse and native timing README examples pass.
</comment><date>2026-10-16 22:46:29 -0500</date><id>2c4fa0aa2e5c816571ac586013f9ad27e80671a8</id><msg>Document case runner lifecycle and timing</msg><path><editType>edit</editType><file>run_scripts/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/microphys_init_cleanup.py</file></path><path><editType>edit</editType><file>utilities/README.md</file></path><path><editType>edit</editType><file>src/clubb_standalone.F90</file></path><path><editType>edit</editType><file>utilities/time_clubb.py</file></path><path><editType>edit</editType><file>utilities/clubb_case_runner.py</file></path><path><editType>edit</editType><file>utilities/pytests/auto_llm_generated_pytests/test_clubb_case_runner.py</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_standalone.py</file></path><path><editType>edit</editType><file>utilities/pytests/auto_llm_generated_pytests/test_timing_workers.py</file></path><path><editType>edit</editType><file>run_scripts/run_scm.py</file></path><path><editType>edit</editType><file>utilities/tests/run_case_runner_test.py</file></path><path><editType>edit</editType><file>clubb_python_driver/clubb_standalone.py</file></path><path><editType>edit</editType><file>utilities/create_case_namelist.py</file></path><path><editType>edit</editType><file>run_scripts/run_scm_loss.py</file></path><path><editType>edit</editType><file>utilities/pytests/auto_llm_generated_pytests/test_loss_cli.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/Microphys/microphys_init_cleanup.F90</affectedPath><commitId>d9e8b9588ff7b16679ca79b67fcf5382bcc723c4</commitId><timestamp>1792209029000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Reset microphysics defaults when initializing another case (#1398)

Restore module and saved-local namelist defaults before reading a new case.
This prevents omitted settings from inheriting the previous case's values. This isn't an issue for any way that clubb is currently run in the codebase, but would potentially cause an issue for a future use case (this is foreshadowing).
</comment><date>2026-10-16 22:50:29 -0500</date><id>d9e8b9588ff7b16679ca79b67fcf5382bcc723c4</id><msg>Reset microphysics defaults when initializing another case (#1398)</msg><path><editType>edit</editType><file>src/Microphys/microphys_init_cleanup.F90</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.agents/skills/clubb-fortran-format/SKILL.md</affectedPath><affectedPath>.agents/skills/clubb-fortran-port/SKILL.md</affectedPath><commitId>3baa924b39a5ad3627f7ba2b6bc34e509fb16773</commitId><timestamp>1792211462000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Document Fortran whitespace conventions

Separate control flow and continued statements, and align small groups
of related one-liners. Prefer recently maintained examples and share
the guidance with the porting workflow. Both skills pass validation.
</comment><date>2026-10-16 23:31:02 -0500</date><id>3baa924b39a5ad3627f7ba2b6bc34e509fb16773</id><msg>Document Fortran whitespace conventions</msg><path><editType>edit</editType><file>.agents/skills/clubb-fortran-format/SKILL.md</file></path><path><editType>edit</editType><file>.agents/skills/clubb-fortran-port/SKILL.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/sfc_varnce_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/model_flags.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_hybrid_pdf_main.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/adg1_adg2_3d_luhar_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/interpolation.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/precipitation_fraction.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/parameters_tunable.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_wp2_wp3_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_windm_edsclrm_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/jax_stats.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/file_functions.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/grid_class.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_clubb_core_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_xm_wpxp_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_xp2_xpyp_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/mono_flux_limiter.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/fill_holes.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/stats_netcdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/clip_explicit.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/mixing_length.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/err_info.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_sfc_varnce_diagnostics.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/pdf_params.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_core_diagnostics.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/remapping_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/sponge_layer_damping.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/matrix_operations.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/pdf_closure_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/pos_definite_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/matrix_solver_wrapper.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/numerical_check.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/corr_varnce_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_tsdadg_pdf.py</affectedPath><commitId>c47faf30cea562966e64eedc259a5074c6cf89b1</commitId><timestamp>1792221315000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Restore missing debug printouts in JAX core (#1390)

* Restore missing debug printouts in JAX core

The port kept many failure checks but omitted their Fortran messages, making
failed columns and solvers difficult to diagnose. Restore runtime messages,
column headers and available field dumps with the source debug gates. Record
diagnostics needing unported machinery in the skip report.

BFB is not established by the available comparisons. All 23 curated CPU
JAX/Fortran cases matched within default tolerances: absolute 1e-7 and
percentage 1e-7%, or 0.001% for the curated Morrison cases. Runs used four
columns, standard statistics and existing durations/caps. Separately, 24
starting-tree kernel comparisons found exactly equal result/state values.

The CPU JAX suite passed 787 tests, including compiled diagnostic checks;
the focused rerun passed 14. Source/diff review and git diff --check passed.

* Remove diagnostic restoration report

Remove the standalone report on intentionally skipped diagnostics. Observed
Fortran differences remain documented in the affected JAX modules.

This removes documentation only, so model/output BFB is not applicable.
Diff review, a tracked-file reference search and git diff --check passed.
Runtime tests were not rerun for this deletion.

* Identify scalar fields in solver diagnostics

The separate scalar solves all printed the same generic field label. Restore
the Fortran names sclrp2, sclrprtp and sclrpthlp so a failure identifies which
variance or covariance solve failed.

Source comparison confirms the three labels match their Fortran call sites.
Python syntax and whitespace checks passed. Jenkins validation will exercise
the published revision.
</comment><date>2026-10-17 02:15:15 -0500</date><id>c47faf30cea562966e64eedc259a5074c6cf89b1</id><msg>Restore missing debug printouts in JAX core (#1390)</msg><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_windm_edsclrm_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/sfc_varnce_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_xm_wpxp_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/model_flags.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/corr_varnce_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/matrix_solver_wrapper.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/interpolation.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/sponge_layer_damping.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/file_functions.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/numerical_check.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/grid_class.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/matrix_operations.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/precipitation_fraction.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/clip_explicit.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_hybrid_pdf_main.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/adg1_adg2_3d_luhar_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/mixing_length.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/jax_stats.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/mono_flux_limiter.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/stats_netcdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/pdf_closure_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_clubb_core_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/pdf_params.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/fill_holes.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/pos_definite_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/parameters_tunable.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_xp2_xpyp_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_wp2_wp3_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/remapping_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/err_info.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_tsdadg_pdf.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_sfc_varnce_diagnostics.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_core_diagnostics.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_pdf.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_scalar_indices.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_error_diagnostics.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/err_info.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_windm_edsclrm_module.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_radiation_error_diagnostics.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_jit_compile.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/__init__.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/numerical_check.py</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_xp2_xpyp_module.py</affectedPath><affectedPath>clubb_python_api/JAX_INTEROPERABILITY_PROPOSAL.md</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/err_info_codes.py</affectedPath><affectedPath>clubb_jax/src/Radiation/radiation_module.py</affectedPath><commitId>aa8c2aa4037dda69d686ca97bcbbe1a8208401fd</commitId><timestamp>1792259885000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Remove the JAX error-message code registry (#1401)

* Remove the JAX error-message code registry

Print failure details at the runtime checks that detect them. Remove the
extra reason_code field and its setters, decoder, initialization/reset
handling and exports; retain the normal per-column fatal-error status.
Update the scalar-guard assertions and add cached-call diagnostic checks.

Local CPU checks passed for the ErrInfo pytree, diagnostic output, driver
debug gates and state reset/batching behavior (65 cases across five modules).

* Correct the multiple-LHS diagnostic test's wp3 grid

Allocate synthetic wp3 on thermodynamic levels, as required by
calc_wp3_on_wp2, so the test reaches the multiple-LHS guard during tracing.

The 21 selected CPU diagnostic checks pass, covering cached-call output,
per-column fatal status and preservation of fields on the unsupported path.

* Restore the C2 explanation in the multiple-LHS diagnostic

Name C2rt, C2thl and C2rtthl when their unequal values prevent a single-LHS
solve. Keep the direct runtime print and existing fatal-status handling.

The focused CPU cached-call test passes, including the restored explanation,
quiet valid calls and preservation of incoming fields on failure.

* Revert "Restore the C2 explanation in the multiple-LHS diagnostic"

This reverts commit 170a13e2bc7af24e92d8d8bc9de9d9db601921ed.

* List single-LHS requirements in the JAX diagnostic

Print the approved static requirements after the unsupported multiple-LHS
message: explicit turbulent advection or ADG1, plus per-column equivalence
of C2thl and C2rtthl to C2rt within the relative epsilon tolerance.

The focused CPU cached-call test passes, checking the listed requirements,
quiet valid calls and preservation of incoming fields and fatal status.
</comment><date>2026-10-17 12:58:05 -0500</date><id>aa8c2aa4037dda69d686ca97bcbbe1a8208401fd</id><msg>Remove the JAX error-message code registry (#1401)</msg><path><editType>edit</editType><file>clubb_jax/src/Radiation/radiation_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/__init__.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_xp2_error_diagnostics.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/err_info.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_jit_compile.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_windm_edsclrm_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/advance_xp2_xpyp_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/numerical_check.py</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_windm_edsclrm_scalar_indices.py</file></path><path><editType>edit</editType><file>clubb_python_api/JAX_INTEROPERABILITY_PROPOSAL.md</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_radiation_error_diagnostics.py</file></path><path><editType>delete</editType><file>clubb_jax/src/CLUBB_core/err_info_codes.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.agents/skills/clubb-jax-port/SKILL.md</affectedPath><affectedPath>.agents/skills/clubb-documentation/change-messages/SKILL.md</affectedPath><affectedPath>.agents/skills/clubb-testing-and-reporting/SKILL.md</affectedPath><commitId>6e48f97c2a96bc78fb498c82f1ed0bb690235349</commitId><timestamp>1792260807000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Restrict BIT_CHANGING guidance to Fortran result changes (#1399)

Keep JAX numerical acceptance focused on agreement with the corresponding
Fortran implementation rather than preserving earlier JAX output. Clarify
the reporting rule and link it from the JAX porting workflow.

All 21 skill schemas, 112 local links and 7 heading anchors pass, along with
diff formatting. Only three skill Markdown files change.
</comment><date>2026-10-17 13:13:27 -0500</date><id>6e48f97c2a96bc78fb498c82f1ed0bb690235349</id><msg>Restrict BIT_CHANGING guidance to Fortran result changes (#1399)</msg><path><editType>edit</editType><file>.agents/skills/clubb-jax-port/SKILL.md</file></path><path><editType>edit</editType><file>.agents/skills/clubb-documentation/change-messages/SKILL.md</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>jenkins_tests/clubb_driver/Jenkinsfile</affectedPath><affectedPath>tests/README.md</affectedPath><affectedPath>tests/case_runner_lifecycle_test.py</affectedPath><affectedPath>utilities/README.md</affectedPath><affectedPath>utilities/tests/run_case_runner_test.py</affectedPath><commitId>167076807d2a8cfe95c58da710eaee8f53994d00</commitId><timestamp>1792261464000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Run case runner lifecycle checks in the driver pipeline

Move the workflow to tests/case_runner_lifecycle_test.py and run native,
Python and CPU JAX checks before the existing driver comparisons. Keep
the case sequence and exact comparison assertions unchanged.

Native/Python lifecycle checks and 445 shared checks pass. Jenkins
validates the pipeline syntax; branch execution follows the push.
</comment><date>2026-10-17 13:24:24 -0500</date><id>167076807d2a8cfe95c58da710eaee8f53994d00</id><msg>Run case runner lifecycle checks in the driver pipeline</msg><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_driver/Jenkinsfile</file></path><path><editType>add</editType><file>tests/case_runner_lifecycle_test.py</file></path><path><editType>edit</editType><file>utilities/README.md</file></path><path><editType>delete</editType><file>utilities/tests/run_case_runner_test.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>src/clubb_standalone.F90</affectedPath><commitId>0c985605a47a651c813c6697e3c3c4e32365f9c7</commitId><timestamp>1792262101000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Clarify standalone worker flow
</comment><date>2026-10-17 13:35:01 -0500</date><id>0c985605a47a651c813c6697e3c3c4e32365f9c7</id><msg>Clarify standalone worker flow</msg><path><editType>edit</editType><file>src/clubb_standalone.F90</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><nextBuild><number>51</number><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/51/</url></nextBuild><previousBuild><number>49</number><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/49/</url></previousBuild></nextBuild><previousBuild><action _class='hudson.model.ParametersAction'><parameter _class='net.uaznia.lukanus.hudson.plugins.gitparameter.GitParameterValue'><name>BRANCH</name><value>origin/pytest_cleanup</value></parameter><parameter _class='hudson.model.BooleanParameterValue'><name>INCLUDE_GENERATED_PYTESTS</name><value>false</value></parameter></action><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></action><action _class='hudson.plugins.git.util.BuildData'><buildsByBranchName><refsremotesoriginjax_microphys _class='hudson.plugins.git.util.Build'><buildNumber>42</buildNumber><marked><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></marked><revision><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><branch><SHA1>3c9b3d56e24d3a766f45e84903e76ee980eb5aa5</SHA1><name>refs/remotes/origin/jax_microphys</name></branch></revision></refsremotesoriginjax_microphys><refsremotesoriginremove_perl _class='hudson.plugins.git.util.Build'><buildNumber>9</buildNumber><marked><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></marked><revision><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><branch><SHA1>551dc8ee42fffabccdde729dd122e5c54b113740</SHA1><name>refs/remotes/origin/remove_perl</name></branch></revision></refsremotesoriginremove_perl><refsremotesoriginrun_scripts_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>16</buildNumber><marked><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></marked><revision><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><branch><SHA1>8789ee4aa42564f9dc0e07c553a7cde89fb6cd35</SHA1><name>refs/remotes/origin/run_scripts_cleanup</name></branch></revision></refsremotesoriginrun_scripts_cleanup><refsremotesorigindash_updates _class='hudson.plugins.git.util.Build'><buildNumber>27</buildNumber><marked><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></marked><revision><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><branch><SHA1>0f566dae5ca0ef106a2a8a601d5dd08e95db606b</SHA1><name>refs/remotes/origin/dash_updates</name></branch></revision></refsremotesorigindash_updates><refsremotesoriginclubb_python_fix _class='hudson.plugins.git.util.Build'><buildNumber>36</buildNumber><marked><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></marked><revision><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><branch><SHA1>c8ba90242c2b1852449f71f939c9239c9e3925f9</SHA1><name>refs/remotes/origin/clubb_python_fix</name></branch></revision></refsremotesoriginclubb_python_fix><refsremotesoriginclubb_jax _class='hudson.plugins.git.util.Build'><buildNumber>37</buildNumber><marked><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></marked><revision><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><branch><SHA1>8f7e4cdbf7555ae67075c02d9d1f4b392e51ed3f</SHA1><name>refs/remotes/origin/clubb_jax</name></branch></revision></refsremotesoriginclubb_jax><refsremotesoriginvenv_improvement _class='hudson.plugins.git.util.Build'><buildNumber>41</buildNumber><marked><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></marked><revision><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><branch><SHA1>dec83a0e1d500014c3ea9734d7ef2f1d645f12e7</SHA1><name>refs/remotes/origin/venv_improvement</name></branch></revision></refsremotesoriginvenv_improvement><refsremotesoriginscript_arg_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>44</buildNumber><marked><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></marked><revision><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><branch><SHA1>1c0b48510ab117eb44b876f950c76eff9d133c6c</SHA1><name>refs/remotes/origin/script_arg_cleanup</name></branch></revision></refsremotesoriginscript_arg_cleanup><refsremotesoriginjenkins_test_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>43</buildNumber><marked><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></marked><revision><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><branch><SHA1>9f57da44abd6db2352506aff45f2a848032e994e</SHA1><name>refs/remotes/origin/jenkins_test_cleanup</name></branch></revision></refsremotesoriginjenkins_test_cleanup><refsremotesorigincalc_sfc_varnce_movement _class='hudson.plugins.git.util.Build'><buildNumber>4</buildNumber><marked><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></marked><revision><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><branch><SHA1>8f36aca5fd9c284c280761ab152931bd884e21f2</SHA1><name>refs/remotes/origin/calc_sfc_varnce_movement</name></branch></revision></refsremotesorigincalc_sfc_varnce_movement><refsremotesorigintiny_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>21</buildNumber><marked><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></marked><revision><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><branch><SHA1>605dc2d2f5105cfe41e0f1c900793dca76ddc513</SHA1><name>refs/remotes/origin/tiny_dash_updates</name></branch></revision></refsremotesorigintiny_dash_updates><refsremotesoriginclubb_organization_part2 _class='hudson.plugins.git.util.Build'><buildNumber>7</buildNumber><marked><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></marked><revision><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><branch><SHA1>459670f95f44c50b0d802d4c8284399339b446e3</SHA1><name>refs/remotes/origin/clubb_organization_part2</name></branch></revision></refsremotesoriginclubb_organization_part2><refsremotesoriginpytest_cleanup _class='hudson.plugins.git.util.Build'><buildNumber>48</buildNumber><marked><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></marked><revision><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></revision></refsremotesoriginpytest_cleanup><refsremotesoriginclubb_f2py _class='hudson.plugins.git.util.Build'><buildNumber>3</buildNumber><marked><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></marked><revision><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><branch><SHA1>148a89be2c9a46527294056ad471087e68a10b46</SHA1><name>refs/remotes/origin/clubb_f2py</name></branch></revision></refsremotesoriginclubb_f2py><refsremotesoriginclubb_organization_part3 _class='hudson.plugins.git.util.Build'><buildNumber>8</buildNumber><marked><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></marked><revision><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><branch><SHA1>1b6d8b99367e3980a2a9873faa50fe4be632b47e</SHA1><name>refs/remotes/origin/clubb_organization_part3</name></branch></revision></refsremotesoriginclubb_organization_part3><refsremotesoriginmicrophys_loop_push _class='hudson.plugins.git.util.Build'><buildNumber>39</buildNumber><marked><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></marked><revision><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><branch><SHA1>0c683a909cfc6e2e5c7306e0258c018d3a88dd85</SHA1><name>refs/remotes/origin/microphys_loop_push</name></branch></revision></refsremotesoriginmicrophys_loop_push><refsremotesorigintest_fix _class='hudson.plugins.git.util.Build'><buildNumber>32</buildNumber><marked><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></marked><revision><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><branch><SHA1>87d4e8d1298d8c6196811bb634cbb3af6e9b0fd8</SHA1><name>refs/remotes/origin/test_fix</name></branch></revision></refsremotesorigintest_fix><refsremotesoriginclubb_organization_part1 _class='hudson.plugins.git.util.Build'><buildNumber>6</buildNumber><marked><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></marked><revision><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><branch><SHA1>d96d0021affc8242c8b983575bcf3b802920929b</SHA1><name>refs/remotes/origin/clubb_organization_part1</name></branch></revision></refsremotesoriginclubb_organization_part1><refsremotesorigintuner_additions _class='hudson.plugins.git.util.Build'><buildNumber>18</buildNumber><marked><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></marked><revision><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><branch><SHA1>f13d88fea3c40d0093c1ff5b0bdeab9a4f3513d3</SHA1><name>refs/remotes/origin/tuner_additions</name></branch></revision></refsremotesorigintuner_additions><refsremotesorigincopilotfix-api-signature-mismatch _class='hudson.plugins.git.util.Build'><buildNumber>35</buildNumber><marked><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></marked><revision><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><branch><SHA1>9e026a902b73da3381b02f40399de18e79154827</SHA1><name>refs/remotes/origin/copilot/fix-api-signature-mismatch</name></branch></revision></refsremotesorigincopilotfix-api-signature-mismatch><refsremotesoriginclubb_loss_driver _class='hudson.plugins.git.util.Build'><buildNumber>15</buildNumber><marked><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></marked><revision><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><branch><SHA1>965904c404fffb0eba94e0f8b2e7f9688c5a8bd5</SHA1><name>refs/remotes/origin/clubb_loss_driver</name></branch></revision></refsremotesoriginclubb_loss_driver><refsremotesoriginclubb_timer_upgrade _class='hudson.plugins.git.util.Build'><buildNumber>22</buildNumber><marked><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></marked><revision><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><branch><SHA1>b9b00dc447cfd726549a2a6f14d1deac8539203b</SHA1><name>refs/remotes/origin/clubb_timer_upgrade</name></branch></revision></refsremotesoriginclubb_timer_upgrade><refsremotesoriginnice_dash_updates _class='hudson.plugins.git.util.Build'><buildNumber>29</buildNumber><marked><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></marked><revision><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><branch><SHA1>b2ad24e20e65739d395fadafa7b738b8f4b19b88</SHA1><name>refs/remotes/origin/nice_dash_updates</name></branch></revision></refsremotesoriginnice_dash_updates></buildsByBranchName><lastBuiltRevision><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><branch><SHA1>56aa733c290ca067dc886adda228251f718712ad</SHA1><name>refs/remotes/origin/pytest_cleanup</name></branch></lastBuiltRevision><remoteUrl>https://github.com/larson-group/clubb.git</remoteUrl><scmName></scmName></action><action></action><action _class='org.jenkinsci.plugins.workflow.libs.LibrariesAction'></action><action></action><action _class='hudson.tasks.junit.TestResultAction'><failCount>0</failCount><skipCount>0</skipCount><totalCount>491</totalCount><urlName>testReport</urlName></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>#48</displayName><duration>248953</duration><estimatedDuration>479884</estimatedDuration><fullDisplayName>clubb_branch_python #48</fullDisplayName><id>48</id><keepLog>false</keepLog><number>48</number><queueId>9766</queueId><result>SUCCESS</result><timestamp>1791170860345</timestamp><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/48/</url><changeSet _class='hudson.plugins.git.GitChangeSetList'><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>dash_app/pytests/auto_llm_generated_pytests/.gitkeep</affectedPath><affectedPath>tuner/pytests/auto_llm_generated_pytests/.gitkeep</affectedPath><affectedPath>.gitignore</affectedPath><affectedPath>utilities/sens_matrix/pytest.ini</affectedPath><affectedPath>jenkins_tests/clubb_jax_pytests/Jenkinsfile</affectedPath><affectedPath>utilities/pytests/auto_llm_generated_pytests/README.md</affectedPath><affectedPath>jenkins_tests/clubb_dash/Jenkinsfile</affectedPath><affectedPath>dash_app/pytests/auto_llm_generated_pytests/README.md</affectedPath><affectedPath>jenkins_tests/clubb_jax/Jenkinsfile</affectedPath><affectedPath>tests/pytests/auto_llm_generated_pytests/.gitkeep</affectedPath><affectedPath>tests/README.md</affectedPath><affectedPath>tuner/pytests/auto_llm_generated_pytests/README.md</affectedPath><affectedPath>utilities/sens_matrix/test_analyzeSensMatrix.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>tests/pytests/auto_llm_generated_pytests/README.md</affectedPath><affectedPath>utilities/pytests/auto_llm_generated_pytests/.gitkeep</affectedPath><commitId>53e40d747c3bbee9d067136b700534b58969059d</commitId><timestamp>1791156827000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Apply pytest review revisions and consolidate JAX CI
</comment><date>2026-10-04 18:33:47 -0500</date><id>53e40d747c3bbee9d067136b700534b58969059d</id><msg>Apply pytest review revisions and consolidate JAX CI</msg><path><editType>delete</editType><file>tests/pytests/auto_llm_generated_pytests/.gitkeep</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_jax/Jenkinsfile</file></path><path><editType>edit</editType><file>.gitignore</file></path><path><editType>add</editType><file>utilities/pytests/auto_llm_generated_pytests/README.md</file></path><path><editType>delete</editType><file>dash_app/pytests/auto_llm_generated_pytests/.gitkeep</file></path><path><editType>delete</editType><file>tuner/pytests/auto_llm_generated_pytests/.gitkeep</file></path><path><editType>delete</editType><file>utilities/pytests/auto_llm_generated_pytests/.gitkeep</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_dash/Jenkinsfile</file></path><path><editType>add</editType><file>utilities/sens_matrix/test_analyzeSensMatrix.py</file></path><path><editType>add</editType><file>dash_app/pytests/auto_llm_generated_pytests/README.md</file></path><path><editType>add</editType><file>utilities/sens_matrix/pytest.ini</file></path><path><editType>delete</editType><file>jenkins_tests/clubb_jax_pytests/Jenkinsfile</file></path><path><editType>add</editType><file>tests/pytests/auto_llm_generated_pytests/README.md</file></path><path><editType>add</editType><file>tuner/pytests/auto_llm_generated_pytests/README.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/src/CLUBB_core/precipitation_fraction.py</affectedPath><affectedPath>clubb_jax/src/Microphys/cloud_sed_module.py</affectedPath><affectedPath>clubb_jax/tests/test_silhs_fortran_oracle.py</affectedPath><affectedPath>clubb_jax/tests/test_microphysics_port_structure.py</affectedPath><affectedPath>clubb_jax/tests/test_silhs_sampling.py</affectedPath><affectedPath>clubb_jax/src/Microphys/ice_dfsn_module.py</affectedPath><affectedPath>clubb_jax/src/Microphys/KK_microphys_module.py</affectedPath><affectedPath>clubb_jax/src/SILHS/est_kessler_microphys_module.py</affectedPath><affectedPath>clubb_jax/src/SILHS/latin_hypercube_arrays.py</affectedPath><affectedPath>clubb_jax/src/SILHS/silhs_api_module.py</affectedPath><affectedPath>clubb_jax/src/SILHS/lh_microphys_var_covar_module.py</affectedPath><affectedPath>clubb_jax/src/Microphys/estimate_scm_microphys_module.py</affectedPath><affectedPath>clubb_jax/JAX_CONVERSION_PLAN.md</affectedPath><affectedPath>clubb_jax/tests/test_silhs_diagnostics.py</affectedPath><affectedPath>clubb_jax/tests/test_silhs_driver.py</affectedPath><affectedPath>tests/run_jax_vs_fortran_cases.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/fill_holes.py</affectedPath><affectedPath>clubb_jax/tests/test_microphysics_error_paths.py</affectedPath><affectedPath>clubb_jax/src/Input_fields/corr_varnce_input_reader.py</affectedPath><affectedPath>clubb_jax/src/clubb_case_initalization.py</affectedPath><affectedPath>src/SILHS/latin_hypercube_driver_module.F90</affectedPath><affectedPath>clubb_jax/tests/test_microphysics_integration.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><affectedPath>clubb_jax/src/SILHS/__init__.py</affectedPath><affectedPath>clubb_jax/src/SILHS/parameters_silhs.py</affectedPath><affectedPath>clubb_jax/src/Microphys/advance_microphys_module.py</affectedPath><affectedPath>tests/pytests/test_jax_compare_forwarding.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</affectedPath><affectedPath>clubb_jax/src/Microphys/gfdl_activation.py</affectedPath><affectedPath>clubb_jax/src/Microphys/microphys_driver.py</affectedPath><affectedPath>clubb_jax/src/SILHS/latin_hypercube_driver_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/jax_stats.py</affectedPath><affectedPath>clubb_jax/src/Microphys/lh_microphys_driver_module.py</affectedPath><affectedPath>clubb_jax/src/Microphys/silhs_category_variance_module.py</affectedPath><affectedPath>LLM_prompts/SHORTCUTS.md</affectedPath><affectedPath>clubb_jax/tests/test_silhs_port_structure.py</affectedPath><affectedPath>LLM_prompts/update_host_models_after_clubb_changes.md</affectedPath><affectedPath>src/SILHS/parameters_silhs.F90</affectedPath><affectedPath>clubb_jax/tests/test_microphysics_host_errors.py</affectedPath><affectedPath>clubb_jax/src/Microphys/parameters_microphys.py</affectedPath><affectedPath>clubb_jax/src/SILHS/silhs_importance_sample_module.py</affectedPath><affectedPath>clubb_jax/src/SILHS/math_utilities.py</affectedPath><affectedPath>clubb_jax/src/SILHS/generate_uniform_sample_module.py</affectedPath><affectedPath>src/Microphys/microphys_init_cleanup.F90</affectedPath><affectedPath>clubb_jax/src/Microphys/pdf_hydromet_microphys_wrapper.py</affectedPath><affectedPath>clubb_jax/src/Microphys/morrison_microphys_module.py</affectedPath><affectedPath>src/SILHS/generate_uniform_sample_module.F90</affectedPath><affectedPath>clubb_jax/src/SILHS/transform_to_pdf_module.py</affectedPath><affectedPath>clubb_jax/src/Microphys/microphys_init_cleanup.py</affectedPath><affectedPath>clubb_jax/SILHS_PORT_NOTES.md</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/stats_clubb_utilities.py</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/src/Microphys/mixed_moment_PDF_integrals.py</affectedPath><affectedPath>clubb_jax/src/Microphys/coamps_microphys_driver_module.py</affectedPath><commitId>f51ab963e7cde71123d3afd8f77d077a35cf211f</commitId><timestamp>1791158488000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/noreply</absoluteUrl><fullName>noreply</fullName></author><authorEmail>noreply@github.com</authorEmail><comment>Jax silhs (#1372)

Adding silhs to jax.

To avoid randomness issues I added a silhs flag, l_lh_deterministic_test, that causes samples and random numbers to be generated in a deterministic order that is pretty basic but seems like a fine enough sampling method for a test that only matters for comparing jax to fortran matching. This required changing the fortran to have this deterministic test sample generation.

I added 3 new silhs tests:

rico_silhs with a 60s timestep matches up to 360 timestpes (6 hours)
lba_kk_silhs (lba with kk microphys instead of defauly morrison) passes up to 270ish steps, I set test to 240 steps
lba_silhs (with morrison) passes &lt;80, from past exploration this seems mainly due to morrison being in single precision

* Port SILHS sampling and microphysics coupling to JAX

Add native JAX Latin-hypercube sampling with explicit persistent permutation
state and case-owned initialization. Couple sampled states to KK and Morrison
microphysics in interactive and diagnostic modes, with weighted statistics,
substep averaging, and fatal-path/configuration guards.

Preserve Fortran routine structure, argument grouping, and source comments
throughout SILHS and the microphysics interface layer. Leave Fortran, MT95,
and the KK/Morrison numerical cores unchanged.

Validation: 103 focused sampling/interface/error-path checks and eight real
SILHS driver checks pass. Earlier interface/support validation and the
20-pair disabled-SILHS JAX/Fortran comparison also pass. Enabled SILHS random
stream parity is deferred to a future common-random-input comparison.

* Add deterministic SILHS comparisons and initialize JAX output grids

Add a default-off l_lh_deterministic_test flag to Fortran and JAX. Use
ordered strata and a shared four-value, binary-exact draw cycle in the
high-level LHS and overlap-pool routines, preserving sequence reuse and
leaving the native random generators unchanged. Reject independent
importance sampling and random starts in this comparison mode.

Add interactive RICO, LBA KK and native LBA Morrison configurations to the
JAX/Fortran comparison suite without relaxing the existing tolerances.
Initialize SILHS host statistics from JAX case setup so reduced statistics
files also contain Fortran's lh_zt and lh_sample_number coordinates.

Validation: Fortran build and source checks pass; 581 raw sampling values
match exactly; 59 sampler/contract/forwarding checks and 46 output/support
checks pass. RICO matches through 360 steps at 60s with standard statistics
and with reduced statistics at debug 0.

Document the remaining comparison limits: LBA KK's repeating-cycle Nrp2
difference starts at saved prefix 274, while its configured cap remains
275. Native Morrison's selected scope was verified with midpoint inputs;
the repeating-cycle comparison was not rerun after the requested stop.

* Match Fortran SILHS sampling precision and overlap

Preserve default-real rounding in inverse-normal coefficients before
promotion to the sample dtype. Apply vertical overlap to starting-level
straight Monte Carlo samples and retain source sampling failure status.

Add a live Fortran inverse-normal oracle and regressions for overlap and
the source sample-count check. Keep comparison limits and tolerances.

* Restore SILHS diagnostics and microphysics host error guards

Carry weight-limiter and Kessler diagnostic failures through compiled
returns and ErrInfo. Preserve Fortran debug guards at the host boundaries
so negative-debug tracing can retain per-column failure status.

Write ordered microphysics/SILHS settings and approximate correlations
from initialization into the standalone setup file. Keep report lifetime
and output-name resolution outside the timestep driver.

Add focused failure/report regressions and update the port notes with
repeating-input comparisons and the native Morrison compiler sensitivity.

* Document deterministic SILHS comparison patterns

Explain the ordered permutation, repeating within-stratum offsets and overlap
pool at every Fortran deterministic randomness override. Mirror the explanation
in JAX, including index phases, sequence reuse and independence from RNG state.

Executable statements are unchanged in both implementations; source/AST checks
confirm these changes only add comments.

* Use definition decorators for microphysics JIT boundaries

Move the existing PDF preparation, scheme tendency and hydrometeor transport
JIT boundaries onto their routine definitions with @partial(jax.jit, ...).
Keep the static arguments unchanged and call the source-named routines directly
from the standalone driver.

Update host injection and source-order checks for the canonical routine names.
Lightweight error/feedback fixtures still check eager and compiled routine
bodies; real standalone runs exercise the decorated entry points.

Validation: 140 focused tests; 28 passed, 2435 warnings in 453.39s (0:07:33); unchanged RICO360/LBAKK275
strict comparisons; supported whole-driver and reverse-mode tracing.

* Simplify deterministic SILHS sampling comments

Describe the repeatable-testing branches directly, with their base values and
index offsets. Show the first twelve pool entries for four columns, grouped by
sample, and use the same concise descriptions in the Fortran and JAX mirrors.

Only comments and argument documentation change; executable code is unchanged.

* Exclude E3SM from host compatibility updates

Keep the exclusion visible in shortcut discovery and the host workflow.
Treat sys_admin mappings as synchronization metadata, not the active host list.

* Shortening tests timesteps a bit and adding a space for niceness
</comment><date>2026-10-04 19:01:28 -0500</date><id>f51ab963e7cde71123d3afd8f77d077a35cf211f</id><msg>Jax silhs (#1372)</msg><path><editType>add</editType><file>clubb_jax/tests/test_silhs_fortran_oracle.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/ice_dfsn_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/microphys_driver.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/lh_microphys_driver_module.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_microphysics_error_paths.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/precipitation_fraction.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/pdf_hydromet_microphys_wrapper.py</file></path><path><editType>edit</editType><file>clubb_jax/JAX_CONVERSION_PLAN.md</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/coamps_microphys_driver_module.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/parameters_silhs.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/__init__.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/silhs_importance_sample_module.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/transform_to_pdf_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/gfdl_activation.py</file></path><path><editType>edit</editType><file>src/SILHS/parameters_silhs.F90</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/lh_microphys_var_covar_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/advance_microphys_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_microphysics_port_structure.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_silhs_port_structure.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/cloud_sed_module.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_silhs_sampling.py</file></path><path><editType>edit</editType><file>tests/pytests/test_jax_compare_forwarding.py</file></path><path><editType>edit</editType><file>tests/run_jax_vs_fortran_cases.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/jax_stats.py</file></path><path><editType>edit</editType><file>src/SILHS/generate_uniform_sample_module.F90</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/generate_uniform_sample_module.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/latin_hypercube_driver_module.py</file></path><path><editType>edit</editType><file>LLM_prompts/update_host_models_after_clubb_changes.md</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/stats_clubb_utilities.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/math_utilities.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Input_fields/corr_varnce_input_reader.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/KK_microphys_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/microphys_init_cleanup.py</file></path><path><editType>edit</editType><file>LLM_prompts/SHORTCUTS.md</file></path><path><editType>edit</editType><file>src/SILHS/latin_hypercube_driver_module.F90</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/est_kessler_microphys_module.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_silhs_diagnostics.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/morrison_microphys_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/parameters_microphys.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/silhs_category_variance_module.py</file></path><path><editType>add</editType><file>clubb_jax/SILHS_PORT_NOTES.md</file></path><path><editType>edit</editType><file>clubb_jax/tests/test_microphysics_integration.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/fill_holes.py</file></path><path><editType>add</editType><file>clubb_jax/tests/test_silhs_driver.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/estimate_scm_microphys_module.py</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_case_initalization.py</file></path><path><editType>edit</editType><file>src/Microphys/microphys_init_cleanup.F90</file></path><path><editType>add</editType><file>clubb_jax/tests/test_microphysics_host_errors.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/mixed_moment_PDF_integrals.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/setup_clubb_pdf_params.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/silhs_api_module.py</file></path><path><editType>add</editType><file>clubb_jax/src/SILHS/latin_hypercube_arrays.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/README.md</affectedPath><affectedPath>clubb_python_api/run_pytests.sh</affectedPath><affectedPath>clubb_python_api/README.md</affectedPath><affectedPath>LLM_prompts/pytest_workflow.md</affectedPath><affectedPath>conftest.py</affectedPath><affectedPath>tests/run_pytests.sh</affectedPath><affectedPath>pytest.ini</affectedPath><commitId>72ad26b660f1102a4605629006505e9ff4676810</commitId><timestamp>1791167219000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Keep pytest discovery and admission in the runners
</comment><date>2026-10-04 21:26:59 -0500</date><id>72ad26b660f1102a4605629006505e9ff4676810</id><msg>Keep pytest discovery and admission in the runners</msg><path><editType>edit</editType><file>clubb_python_api/run_pytests.sh</file></path><path><editType>edit</editType><file>clubb_python_api/README.md</file></path><path><editType>edit</editType><file>LLM_prompts/pytest_workflow.md</file></path><path><editType>delete</editType><file>pytest.ini</file></path><path><editType>delete</editType><file>conftest.py</file></path><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>edit</editType><file>tests/run_pytests.sh</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>tests/README.md</affectedPath><affectedPath>jenkins_tests/clubb_python/Jenkinsfile</affectedPath><affectedPath>jenkins_tests/clubb_dash/Jenkinsfile</affectedPath><affectedPath>AGENTS.md</affectedPath><affectedPath>clubb_jax/SILHS_PORT_NOTES.md</affectedPath><affectedPath>tests/run_bindiff_report_test.py</affectedPath><affectedPath>LLM_prompts/pytest_workflow.md</affectedPath><affectedPath>jenkins_tests/clubb_jax/Jenkinsfile</affectedPath><commitId>37756854e5509afac25c67f57deac01266bd13ba</commitId><timestamp>1791168192000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Limit Jenkins additions to focused pytest stages
</comment><date>2026-10-04 21:43:12 -0500</date><id>37756854e5509afac25c67f57deac01266bd13ba</id><msg>Limit Jenkins additions to focused pytest stages</msg><path><editType>edit</editType><file>jenkins_tests/clubb_python/Jenkinsfile</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_dash/Jenkinsfile</file></path><path><editType>edit</editType><file>jenkins_tests/clubb_jax/Jenkinsfile</file></path><path><editType>edit</editType><file>LLM_prompts/pytest_workflow.md</file></path><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>edit</editType><file>AGENTS.md</file></path><path><editType>delete</editType><file>tests/run_bindiff_report_test.py</file></path><path><editType>edit</editType><file>clubb_jax/SILHS_PORT_NOTES.md</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>clubb_jax/AGENTS.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_differentiability.py</affectedPath><affectedPath>tests/run_jax_timestep_gradient_test.py</affectedPath><affectedPath>clubb_jax/tests/run_silhs_driver_test.py</affectedPath><affectedPath>tests/run_silhs_driver_test.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_trivar_NNL_covar_eq.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_Nc_Ncn_eqns.py</affectedPath><affectedPath>tests/run_dash_mcp_protocol_test.py</affectedPath><affectedPath>dash_app/README.md</affectedPath><affectedPath>tests/run_dash_mixing_length_test.py</affectedPath><affectedPath>tests/README.md</affectedPath><affectedPath>tests/run_rico_microphysics_oracle_test.py</affectedPath><affectedPath>LLM_prompts/pytest_workflow.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_quadrivar_NNLL_covar_eq_swap.py</affectedPath><affectedPath>clubb_jax/src/Microphys/KK_microphys/KK_upscaled_turbulent_sed.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_covar_KK_mixt_frac_linearity.py</affectedPath><affectedPath>clubb_jax/tests/run_jax_timestep_gradient_test.py</affectedPath><affectedPath>dash_app/pytests/test_agent_services.py</affectedPath><affectedPath>clubb_jax/SILHS_PORT_NOTES.md</affectedPath><affectedPath>AGENTS.md</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_trivar_NLL_mean_eq.py</affectedPath><affectedPath>dash_app/tests/run_dash_mixing_length_test.py</affectedPath><affectedPath>clubb_jax/tests/run_rico_microphysics_oracle_test.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_bivar_NL_mean_eq.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_update_xp2_mc.py</affectedPath><affectedPath>clubb_jax/README.md</affectedPath><commitId>56aa733c290ca067dc886adda228251f718712ad</commitId><timestamp>1791170041000</timestamp><author><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</fullName></author><authorEmail>huebler@uwm.edu</authorEmail><comment>Keep component-specific validation beside Dash and JAX
</comment><date>2026-10-04 22:14:01 -0500</date><id>56aa733c290ca067dc886adda228251f718712ad</id><msg>Keep component-specific validation beside Dash and JAX</msg><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_Nc_Ncn_eqns.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_covar_KK_mixt_frac_linearity.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_trivar_NLL_mean_eq.py</file></path><path><editType>edit</editType><file>clubb_jax/AGENTS.md</file></path><path><editType>edit</editType><file>clubb_jax/SILHS_PORT_NOTES.md</file></path><path><editType>add</editType><file>clubb_jax/tests/run_rico_microphysics_oracle_test.py</file></path><path><editType>delete</editType><file>tests/run_dash_mcp_protocol_test.py</file></path><path><editType>edit</editType><file>LLM_prompts/pytest_workflow.md</file></path><path><editType>add</editType><file>clubb_jax/tests/run_jax_timestep_gradient_test.py</file></path><path><editType>edit</editType><file>tests/README.md</file></path><path><editType>edit</editType><file>dash_app/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/KK_microphys/KK_upscaled_turbulent_sed.py</file></path><path><editType>edit</editType><file>dash_app/pytests/test_agent_services.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>delete</editType><file>tests/run_jax_timestep_gradient_test.py</file></path><path><editType>edit</editType><file>AGENTS.md</file></path><path><editType>add</editType><file>clubb_jax/tests/run_silhs_driver_test.py</file></path><path><editType>delete</editType><file>tests/run_rico_microphysics_oracle_test.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_differentiability.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_quadrivar_NNLL_covar_eq_swap.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_update_xp2_mc.py</file></path><path><editType>delete</editType><file>tests/run_silhs_driver_test.py</file></path><path><editType>delete</editType><file>tests/run_dash_mixing_length_test.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_trivar_NNL_covar_eq.py</file></path><path><editType>add</editType><file>dash_app/tests/run_dash_mixing_length_test.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_bivar_NL_mean_eq.py</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><nextBuild><number>49</number><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/49/</url></nextBuild><previousBuild><number>47</number><url>https://carson.math.uwm.edu/jenkins/view/clubb_branch_tests/job/clubb_branch_python/47/</url></previousBuild></previousBuild></workflowRun>