<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>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>363544</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>utilities/time_clubb.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_device_selection.py</affectedPath><affectedPath>clubb_jax/pytests/auto_llm_generated_pytests/test_jax_cli_options.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>run_scripts/run_scm_loss.py</file></path><path><editType>edit</editType><file>utilities/time_clubb.py</file></path><path><editType>edit</editType><file>run_scripts/run_tuner_job.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>clubb_jax/pytests/auto_llm_generated_pytests/test_device_selection.py</file></path><path><editType>edit</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_jax_cli_options.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/src/CLUBB_core/code_timer_module.py</file></path><path><editType>edit</editType><file>clubb_jax/README.md</file></path><path><editType>edit</editType><file>clubb_jax/src/clubb_standalone.py</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_case_initalization.py</file></path><path><editType>delete</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_code_timer_module.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>utilities/pytests/auto_llm_generated_pytests/test_clubb_case_runner.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>clubb_jax/src/clubb_standalone.py</file></path><path><editType>edit</editType><file>clubb_jax/src/Microphys/microphys_init_cleanup.py</file></path><path><editType>edit</editType><file>run_scripts/README.md</file></path><path><editType>edit</editType><file>utilities/pytests/auto_llm_generated_pytests/test_loss_cli.py</file></path><path><editType>edit</editType><file>src/clubb_standalone.F90</file></path><path><editType>edit</editType><file>utilities/tests/run_case_runner_test.py</file></path><path><editType>edit</editType><file>utilities/README.md</file></path><path><editType>edit</editType><file>utilities/clubb_case_runner.py</file></path><path><editType>edit</editType><file>utilities/time_clubb.py</file></path><path><editType>edit</editType><file>run_scripts/run_scm.py</file></path><path><editType>edit</editType><file>utilities/pytests/auto_llm_generated_pytests/test_timing_workers.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/advance_wp2_wp3_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/parameters_tunable.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/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/advance_clubb_core_module.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/grid_class.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/numerical_check.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/matrix_solver_wrapper.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/new_tsdadg_pdf.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/corr_varnce_module.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/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/clip_explicit.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/advance_wp2_wp3_module.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/parameters_tunable.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/pdf_closure_module.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/new_pdf.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/sponge_layer_damping.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/pdf_params.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/matrix_solver_wrapper.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/pos_definite_module.py</file></path><path><editType>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_sfc_varnce_diagnostics.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/sfc_varnce_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/setup_clubb_pdf_params.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/advance_windm_edsclrm_module.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/adg1_adg2_3d_luhar_pdf.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/advance_xp2_xpyp_module.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/grid_class.py</file></path><path><editType>edit</editType><file>clubb_jax/src/CLUBB_core/new_hybrid_pdf_main.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_radiation_error_diagnostics.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_windm_edsclrm_module.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/pytests/auto_llm_generated_pytests/test_jit_compile.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/__init__.py</affectedPath><affectedPath>clubb_jax/src/advance_clubb_to_end.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/numerical_check.py</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/err_info_codes.py</affectedPath><affectedPath>clubb_python_api/JAX_INTEROPERABILITY_PROPOSAL.md</affectedPath><affectedPath>clubb_jax/src/CLUBB_core/advance_xp2_xpyp_module.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>add</editType><file>clubb_jax/pytests/auto_llm_generated_pytests/test_radiation_error_diagnostics.py</file></path><path><editType>edit</editType><file>clubb_jax/src/advance_clubb_to_end.py</file></path><path><editType>delete</editType><file>clubb_jax/src/CLUBB_core/err_info_codes.py</file></path><path><editType>edit</editType><file>clubb_python_api/JAX_INTEROPERABILITY_PROPOSAL.md</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_xp2_xpyp_module.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/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/pytests/auto_llm_generated_pytests/test_windm_edsclrm_scalar_indices.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/err_info.py</file></path></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>.agents/skills/clubb-jax-port/SKILL.md</affectedPath><affectedPath>.agents/skills/clubb-testing-and-reporting/SKILL.md</affectedPath><affectedPath>.agents/skills/clubb-documentation/change-messages/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-testing-and-reporting/SKILL.md</file></path><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></item><item _class='hudson.plugins.git.GitChangeSet'><affectedPath>jenkins_tests/clubb_driver/Jenkinsfile</affectedPath><affectedPath>tests/README.md</affectedPath><affectedPath>utilities/README.md</affectedPath><affectedPath>tests/case_runner_lifecycle_test.py</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>delete</editType><file>utilities/tests/run_case_runner_test.py</file></path><path><editType>edit</editType><file>utilities/README.md</file></path><path><editType>add</editType><file>tests/case_runner_lifecycle_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/noreply</absoluteUrl><fullName>noreply</fullName></culprit><culprit><absoluteUrl>https://carson.math.uwm.edu/jenkins/user/huebler</absoluteUrl><fullName>Gunther Huebler</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></workflowRun>