MOOSE Newsletter (October 2026)

This newsletter was drafted with AI assistance from the month's merge history.

MOOSE Improvements

Block-pair interfaces in BreakMeshByBlockGenerator

BreakMeshByBlockGenerator now always creates separate directional interface boundaries on both sides of each cut as part of the distributed mesh support work (see idaholab/moose#32309). Splitting duplicates nodes along the selected block interfaces. To track the resulting disconnected neighbor relationships, libMesh relies on pairs of interface boundaries, such as blockA_blockB and blockB_blockA, with separate boundary IDs.

As a result, the parameters split_interface, add_interface_on_two_sides, and split_transition_interface are deprecated. Users should remove these parameters from their BreakMeshByBlockGenerator settings. Explicitly setting any of them to true produces a deprecation warning; setting one to false produces an error. Interfaces are always created on both sides and split by block pair, including interfaces between surrounding_blocks and the rest of the mesh.

Previously, a single generic interface boundary could contain several block pairs. Unless users checked all of them, a cohesive law applied to that boundary could also act on interfaces they did not intend to include. This combined boundary is no longer generated. Explicit block-pair names make the selected interfaces clear in the input file.

Users should specify the appropriate interface boundary name in the corresponding interface kernel. For example, blockA_blockB identifies the interface sides on blockA facing blockB:


[InterfaceKernels]
  [interface]
    type = SomeInterfaceKernel
    boundary = blockA_blockB
  []
[]

The parameters interface_name, add_transition_interface, and interface_transition_name have also been removed. Input files referring to the former combined interface or interface_transition boundaries should use the appropriate block-pair names instead.

Apps can now use fewer threads than the process-wide count

Thread count is now a per-app property. The maximum number of threads is set using the --n-threads command line argument. An app can then set "num_threads" in its [Application] block to request fewer threads than were set in --n-threads, so a MultiApp can give many threads to a sub-app that scales well with them, while making other apps use fewer. (idaholab/moose#31489)

More selective AD computations in boundary conditions and mortar

Automatic differentiation is no longer performed by ADIntegratedBC for element volumes in cases when the only consumers of the derivatives were on faces to avoid unnecessary operations that were previously performed. (idaholab/moose#33852) AD mortar face reinitialization on a displaced mesh likewise computed AD gradients at every mortar quadrature point even when the constraint used none. Computed values are unchanged in both cases. (idaholab/moose#33959)

Automatic contact pairing supports distributed meshes and recover

ContactPairLowerDBlockGenerator has been renamed AutomaticContactPairingGenerator and is now the only place contact pairs are detected, for every contact formulation. It stores them as mesh meta-data, which Contact Action reads instead of repeating the search, so they are reloaded after --recover; the search is also parallel-safe now, so -p2 --distributed-mesh works where it previously failed. A plain [Mesh] file = ... now errors, directing the user to FileMeshGenerator. (idaholab/moose#33979)

MFEM backend improvements

Kokkos backend

  • Kokkos systems now support automatic equation left-scaling by setting automatic_scaling = true in the executioner. (idaholab/moose#33867)

  • Kokkos system setup now sends to actual neighbors rather than scattering to every MPI rank when building the DOF maps for overlapping DOFs, removing half of the setup cost observed on large weak scaling runs on Frontier and Aurora. (idaholab/moose#33937)

  • CUDA is now initialized before MPI, which OpenMPI requires in order to bring up the shared-memory RDMA transport between GPUs; NVLink was silently falling back to PCI. On a Griffin run, processor communication dropped from 2.03 s to 0.015 s. (idaholab/moose#33585)

  • Mixing regular and Kokkos residual objects no longer crashes, because COOrdinate-format preallocation no longer discards matrix options such as MAT_KEEP_NONZERO_PATTERN. (idaholab/moose#33954)

  • Further Kokkos fixes cover the object-adding APIs, default coupled gradient and nodal value access, missing hooks in Kokkos functions, sideset ID caching, an element with the same sideset on several sides, derivative material APIs, and a segfault on an empty jagged array. (idaholab/moose#33985)

Mesh generation and partitioning

  • AdvancedExtruderGenerator takes a new "side_boundary", collecting the lateral surface formed by extruding the exterior sides of the input mesh into a named boundary. The top and bottom boundaries could already be named from user parameters. (idaholab/moose#34095)

  • PetscExternalPartitioner now handles meshes whose dual graph contains edges that are not face neighbors, which libMesh adds for lower-dimensional elements on a block, for spline DOF constraints on IsoGeometric Analysis meshes, and for the active children of a refined neighbor. The partitioner previously stopped with an inconsistent-neighbor-count error. (idaholab/moose#34050)

  • PetscExternalPartitioner also no longer crashes inside PTScotch when weights are used and a rank's partition is empty, which happened with more ranks than elements. (idaholab/moose#33836)

Input and parameter error reporting

  • A missing required parameter is now reported before private or unused parameter errors, which previously hid the message with the simple fix of providing the required parameter. (idaholab/moose#33196)

  • The index/component parameters of MaterialRealDenseMatrixAux, MaterialStdVectorRealAux, and their relatives are now required rather than defaulting to 0, which silently gave one component of an array material property. (idaholab/moose#33806)

  • ArrayDiffusion, ArrayReaction, ArrayTimeDerivative, ADArrayReaction, and ArrayDGDiffusion now check at setup that each array material property coefficient has one entry per array variable component, so optimized builds error instead of reading out of bounds. (idaholab/moose#33891)

Preconditioning and solver setup

A user-specified SMP block previously defaulted to full = false, so adding a Preconditioning block to a NEWTON input silently dropped the off-diagonal Jacobian blocks the automatic preconditioner includes. SMP now defaults to full coupling for NEWTON and LINEAR solves unless full, off_diag_row/off_diag_column, or coupled_groups is specified, and the automatic preconditioner is now created per nonlinear system. (idaholab/moose#34036)

The kernel coverage check is now restricted, per nonlinear system, to the intersection of the blocks the Problem selects and the blocks holding that system's field variables. Valid multi-system inputs with block-restricted variables previously had to disable kernel_coverage_check entirely. (idaholab/moose#33919)

CSV files with mixed data types

The new MixedDataDelimitedFileReader reads a CSV file as strings and converts only the requested column, so a file whose columns hold differing types can be used when only some are needed; objects reading CSV data previously required one type per column throughout. CSVTimeSequenceStepper is the first consumer. (idaholab/moose#34062)

AI-assisted development

AGENTS.md now requires a PetscJacobianTester test for every hand-coded Jacobian change, covering each coupling and coordinate system it affects, because a correct residual does not imply a correct Jacobian. A new issue-create skill drafts issues following the repository's templates. (idaholab/moose#34091)

A new script reports why CIVET CI failed on a pull request: which jobs really failed, the build errors or failing tests inside them, a clustering of error signatures, and a reproduce command. It needs no CIVET credentials, and the accompanying civet-ci-failures skill documents how to read the report. (idaholab/moose#33756)

An update-packages skill covering the monthly distributed-package update was added alongside this month's package bump. (idaholab/moose#33833, idaholab/moose#33879)

TestHarness

  • On Linux, test memory is now measured as Pss - Pss_File, where Pss_file is the proportional set size (Pss) of memory pages that are backed by files. The previous measurement that was based directly on Pss charged a test running alone for nearly all the executable and library pages shared by every running test, so small tests were intermittently killed with "OVER MEMORY" on CIVET. RESULTS_VERSION was increased to 10, and 55 now-unnecessary min_slots entries were removed. (idaholab/moose#34075)

  • Output that cannot be decoded as UTF-8 no longer fails a test or drops the stream it came from. (idaholab/moose#34112)

  • SchemaDiff previously compared string lists containing negative values incorrectly, carrying the same sign errors fixed for scalars in #33304: "1 -2" compared equal to "1 -2.5", and "1e-11 1" to "2e-11 2". This bug has been fixed. (idaholab/moose#33980)

Documentation and MooseDocs

  • The MooseDocs search index and generated anchors no longer split a name such as HeatPipe3Phase into "HeatPipe 3 Phase". Heading anchors and page titles change accordingly, for example "quad-4-faces" becomes "quad4-faces". (idaholab/moose#34074)

  • The MooseDocs listing extension now tries a strict block-name match before a loose one. A block whose name ends with another's shadowed it, so a page requesting Kernels previously was given AuxKernels whenever the latter came first in the input file, but it would now be given Kernels. (idaholab/moose#33996)

Miscellaneous

  • CSGBase::getLinkedCSGObjects now skips a universe it has already visited. A lattice can place the same universe at many positions, and repeating the traversal for each one was slow on realistic pin-assembly-core geometries. (idaholab/moose#34057)

  • A dedicated MOOSE header symlink directory is now created when an application and MOOSE are built side by side, which previously failed the build on macOS and WSL from a fresh clone of each. (idaholab/moose#33804)

  • Several test-only objects moved out of the framework into test applications, reducing what a production build compiles: MaterialDerivativeTestAction and its kernels, the [Debug/MaterialDerivativeTest] block, ConvectiveFluxBC, TestNewmarkTI, and TestSourceStepper. Applications using any of them from the framework have been patched to either provide their own or use alternative objects. (idaholab/moose#33926)

  • Interface kernels now contribute on a sideset whose coarse side faces refined elements. The coarse element's neighbor is an inactive ancestor once it is cut into finer elements, so the whole face was previously skipped; the coarse side is now assembled against each active child in turn. (idaholab/moose#33963)

  • IsoGeometric Analysis initial conditions are now projected rather than interpolated where spline nodes should not be evaluated directly, since interpolated initial conditions are less accurate on body-fit meshes and potentially unusable on flex meshes. (idaholab/moose#34055)

  • PetscJacobianTester now judges a Jacobian by the relative measure ||J - Jfd||_F / ||J||_F < ratio_tol alone, because difference_tol now defaults to infinity. The absolute difference scales with the magnitude of the Jacobian entries, so the old default of 1 incorrectly failed for correct Jacobians on finite-difference noise whenever the entries were large.

MOOSE Bug Fixes

Jacobian correctness

  • ADScalarKernel passed every component of a scalar variable's residual in one addJacobian call, but such a call requires all of its rows to depend on the same degrees of freedom, which higher-order scalar components need not. Optimized builds dropped the later components, so a SECOND order variable lost its second row and the Jacobian was singular. Components are now added separately. (idaholab/moose#33967)

  • An active NodalKernel was previously collected once per block of the node it was active on, so its Jacobian was added several times on nodes shared by subdomains while the residual loop executed it once. Newton's method therefore lost quadratic convergence. This has been corrected, and results are unchanged elsewhere. (idaholab/moose#33972)

  • AD residual and Jacobian caching skipped libMesh constraint application whenever a single residual was added, assuming such calls come from finite volume objects. On a DOF constrained by a periodic boundary condition or a hanging node, the contribution was silently lost rather than distributed to the constraining DOFs. The shortcut is now taken only for unconstrained DOFs, excluding ADNodalBC Jacobian rows, which would otherwise leave the Jacobian singular. (idaholab/moose#33969)

  • Variables of other solver systems were previously indexed differently from auxiliary variables, so kernels relying on the jvar map, such as those in solid mechanics and phase field, formed an inexact Jacobian under multi-system solves. This has been corrected. (idaholab/moose#33977)

  • An array variable's second time derivative was read from the first-derivative vector, so coupledArrayDotDot() returned the first time derivative. This affects array variables under a second-order time integrator such as NewmarkBeta. (idaholab/moose#34107)

Exception handling and timestep rejection

  • A user object throwing an exception on only some MPI ranks hung the simulation: the ranks that threw went straight to the exception handler, which communicates, while the others waited in a finalize() communication. This affected element, side, nodal, mortar, and general user objects alike. Each stage now records its exceptions without communicating, and every rank reaches one check before that stage's finalize(). (idaholab/moose#33909)

  • A non-finite displaced mesh coordinate, which could occur after a failed linear solve, now throws a MooseException so the time step is cut, rather than the run aborting later inside mortar generation. (idaholab/moose#34035)

  • A Terminator user object in a soft-fail mode left the fixed point status unset, so a transient with fixed point iterations hit Internal error: wrong fixed point status! instead of failing the step and reducing the time step size. This has been corrected. (idaholab/moose#33962)

  • XFEM now discards crack-growth marks left by a rejected timestep attempt, since valid marks always come from the previous timestep. (idaholab/moose#34004)

  • --test-restep fails one timestep on purpose to check that a rejected step leaves no stale state, but with Executioner/abort_on_solve_fail = true that forced failure ended the run. It no longer aborts; any other failed solve still does. (idaholab/moose#33999)

Contact and mortar fixes

  • Penalty mortar contact previously lost its history across --recover. PenaltyFrictionUserObject and PenaltyWeightedGapUserObject kept friction history and augmented Lagrange (AL) multipliers in maps keyed by pointer, which cannot be checkpointed, so a recovered run silently continued from zero history, affecting computed contact forces. The maps are now keyed by node ID and restartable. (idaholab/moose#34128)

  • The same two user objects now save their AL state at the start of each timestep and restore it when the step is retried. (idaholab/moose#34001)

  • The AL update of a slipping node set its total tangential traction to penalty_friction * |normal_lm| instead of the Coulomb cone value mu * |normal_lm|, so the multiplier could be off by orders of magnitude and the AL loop did not converge to the Coulomb solution there. This has been corrected, and frictional AL results change as a result. (idaholab/moose#34100)

  • AugmentedLagrangianContactConvergence now passes its incremented iteration count back to the problem, so maximum_lagrangian_update_iterations, node-face penalty_multiplier growth, and NumAugmentedLagrangeIterations all see the correct count. (idaholab/moose#34038)

  • The quasi-static mortar friction constraint passed a sliding speed of zero to function_friction, so speed-dependent friction had no effect. The sliding speed is now the mortar-projected nodal slip rate of Wohlmuth (2011, Acta Numerica, eq. 3.10a). Constant and pressure-only friction are unchanged. (idaholab/moose#34016)

  • Dynamic mortar contact passed a sliding speed several times too large to a speed-dependent friction law, which could drive the friction coefficient negative; it now uses the same quantity as the quasi-static constraint, and a constant mu must be positive. (idaholab/moose#34020)

  • The 3D mortar nearest-neighbor search examined only node IDs below the mesh's node count, but allow_renumbering = false leaves gaps in the IDs. Mortar segments depending on primary nodes above the count were dropped with only a warning, which could switch contact off across a whole interface, so the blocks passed through each other while the solve still converged. This has been corrected. (idaholab/moose#34031)

  • Only the owner of an inactive secondary node zeroes its Lagrange multiplier DOFs, but the inactive set was shared only with ranks holding a secondary element touching the node. An owner holding no such nodes left the node's LM rows empty, so LU solvers hit a zero pivot and the run aborted. This has been corrected. (idaholab/moose#34033)

  • Mortar segment mesh statistics segfaulted where no mortar segments form, which is exactly the case debug_mesh = true and MortarSegmentMeshReporter exist to diagnose. This has been corrected, and zero values are reported in that case. (idaholab/moose#34174)

  • MortarUserObjectAux checked the wrong user object type before reading active_set and delta_tangential_lm_one/two, so the active set could not be output for frictionless penalty contact, and requesting these quantities from a Lagrange multiplier friction user object segfaulted instead of giving an input error. These quantities are now correctly output. (idaholab/moose#34139)

  • MortarGenericTraction previously segfaulted at the first residual evaluation when use_displaced_mesh = true was omitted, because the cohesive zone user object it reads traction from always runs on the displaced mesh. The parameter now defaults to true and false is an input error; every existing block already sets it, so that line can now be omitted. (idaholab/moose#34144)

  • Custom dual coefficients are no longer recomputed for lower-dimensional FE types that never requested dual shape data. On second-order meshes a mixed-order mortar discretization with a first-order dual Lagrange multiplier could try to factor an unused second-order Gram matrix, and libMesh threw if it was singular. (idaholab/moose#33907)

  • CohesiveZoneModelBase built the primary-side displacement gradients from the local rather than the neighbor gradient, so the interface deformation gradient used only the secondary side. Now the gradients from both sides are used, which changes results for mortar cohesive zone models wherever the deformation differs across the interface. (idaholab/moose#34009)

  • lag_displacement_jump on BilinearMixedModeCohesiveZoneModel is now deprecated. It was declared but never read, so true and false always gave identical results. (idaholab/moose#34134)

Miscellaneous

  • MOOSEQuantityToNEML2 read VARIABLE inputs without declaring a variable dependency, so when another user object in the same loop declared one, the NEML2 input variable was left stale or zero. This was fixed by declaring the variable dependencies as expected. (idaholab/moose#34187)

  • MOOSE registered its own SNES function and Jacobian callbacks on the top-level DMMoose, but libMesh registers its own on the same DM afterwards through the same entry points, so the MOOSE callbacks were replaced before PETSc could call them. They are now removed. (idaholab/moose#34093)

  • Apps without a Console output (e.g. [Outputs] console = false) no longer keep every message written to _console in memory. The buffer was never cleared and was copied at every flush, so long-running (sub-)apps, such as a MultiApp running many solves in one process, grew slower as the number of messages increased. (idaholab/moose#34118)

MOOSE Modules Changes

Contact module

Mechanical mortar contact now assembles the contact force by interpolating the nodal traction vector with the traction basis, instead of scaling an interpolated scalar pressure by the nodal normal of the residual row's own node. Only the former is the transpose of the weighted gap, so the contact force is now self-equilibrated across the interface and no longer depends on secondary node numbering. Contact forces and converged results therefore change on interfaces where the secondary nodal normals vary along the face.

Local-basis quasistatic mortar and mortar_penalty contact Jacobians now also include derivatives of the averaged secondary nodal normals and their tangent basis. These derivatives can require a larger AD container on high-order or high-valence interfaces. Because the contact coupling changes during the solve in most contact problems, such as when surfaces slide or come into contact, set Problem/use_hash_table_matrix_assembly = true to accommodate the changing sparsity pattern. (idaholab/moose#33390)

Solid Mechanics module

  • New SecondDerivativeRegularization / ADSecondDerivativeRegularization and ADSecondDerivativeRegularization kernels add a regularization term built from second derivatives of a scalar variable, selected with regularization = huhu, lulu, or huhu_lulu and scaled by a required coefficient. The terminology comes from HuHu/LuLu regularization in third-medium contact, but the kernels are general; for a vector field, add one per component. (idaholab/moose#32974)

  • The BiLinearMixedModeTraction cohesive zone material model recovered the wrong Mode II fracture energy and had an inconsistent hand-coded Jacobian. The pure Mode II final separation carried an extra factor of sqrt(2), delta_f = 2*sqrt(2)*GIIc/S rather than the delta_f = 2*GIIc/S that energy consistency requires. Both issues are fixed. (idaholab/moose#33902)

Porous Flow module

Thermal Hydraulics module

Subchannel module

  • The Pacio-Chen-Todreas Detailed model for hexagonal wire-wrapped assemblies is available as the SCM closure pair SCMFrictionChenTodreas and SCMMixingChenTodreas, renamed from the Upgraded Cheng-Todreas classes they build on, whose pressure drop correlation it follows with different coefficient values. Additional friction factor verification was added to the documentation, including comparisons to DASSH, to the reference journal and to independent python implementations. (idaholab/moose#33634)

  • The n_blocks axial block-marching parameter of SubChannel1PhaseProblem now defaults to 1 instead of being required, since most inputs use a single block. (idaholab/moose#34046)

  • An axial_heat_rate depending on x or y gave pin powers inconsistent with the radial power distribution in SCMQuadPowerIC, SCMTriPowerIC, SCMQuadPowerAux, and SCMTriPowerAux, because the per-pin correction evaluated the function at x = y = 0; it is now evaluated at each pin's nodes. Results for z-only shapes are unchanged, and a time-dependent power postprocessor is no longer applied one time step late. (idaholab/moose#34083)

  • The SubChannel thermo-mechanical coupling was modified to conserve the pin power exactly where it previously lost 1.4% of it on the way back to SCM, and is now tested in the combined module. An optional transfer interpolates the pin surface temperature linearly instead of imposing a piecewise-constant profile. (idaholab/moose#34155)

Stochastic Tools module

Parallel sampler gathering and bounded actions have been added to the deep reinforcement learning capability, aimed at autonomous control. LibtorchDRLControl and LibtorchDRLControlTrainer can bound the control action so the controller cannot reach a nonphysical state, and a new SamplerDRLControlTransfer gathers observations across samplers in parallel. (idaholab/moose#32802)

Fluid Properties module

The new NASA7IdealGasFluidProperties describes H2, O2, H2O, CH4, CO, CO2, and N2 as ideal gases whose heat capacity, enthalpy, and entropy depend on temperature through the NASA 7-coefficient polynomials of GRI-Mech 3.0. Its enthalpies include the enthalpy of formation, so the energy of a mixture accounts for the heat of reaction. IdealGasMixtureFluidProperties accepts these gases as components. Viscosity and thermal conductivity are not yet available for them, so they cannot yet be used in the gas-mixture flow channels of the thermal hydraulics module (idaholab/moose#34123).

  • A NaN reaching LAPACK through a Newton solve previously crashed TabulatedBicubicFluidProperties, seen on an Apple M4, where a fluid property evaluated out of range can return NaN in an optimized build without the debug-mode check catching it. The Newton inversion now checks for non-finite values. (idaholab/moose#33921)

  • LeadLithiumFluidProperties documentation was clarified. Several readers had misread the temperature units: the implemented formula takes Kelvin, while the original source equation was written in Celsius. (idaholab/moose#34061)

libMesh-level Changes

2026.10.08_342ad76_0 Update

  • Updated libMesh from 90766057 to 342ad76b

  • Submodule moved to libMesh master (342ad76b, 2026-10-08)

  • New libmesh_transform_reduce() shim, enabling faster std::transform_reduce() operations on supported compilers, with fallbacks for older compilers. Optimizations in dense vector/matrix functionals.

  • Faster partitioning when using partitioners (most options other than Parmetis) whose partition quality does not improve with an initial "pre"-partitioning

  • MeshBase::n_constraint_rows() is now an O(1) return of cached data, not a parallel-only recount

  • Support for calculating gradients on the interiors of H(div) FE types

  • The VariationalSmoother quadrature type can now be user-overridden, enabling users to select vertex-sampling rules that are more robust for smoothing difficult meshes.

  • Support for computing a "near"-dual basis on Tri6/Quad8 elements where the standard dual fails positivity requirements

  • Regularized the gradient of the norm of a zero vector to be zero rather than NaN. This makes some MOOSE AD kernels more robust.

  • Autotools detection, build support, and libMesh numerics support for Kokkos

  • Optional support for ghosting constraint DoFs of ghosted DoFs, as needed by MOOSE Kokkos

  • Improved support for shell-matrix Jacobian, sparse-matrix preconditioner PetscNonlinearSolver solve cases

  • Allow applications to flag non-reproducible residuals to PetscNonlinearSolver

  • More-accurate ExodusII elemental output of higher-order discontinuous variables

  • Option to skip spurious interior side generation in build_side_list_from_node_list() on thin meshes

  • New SKEW_ANGLE element quality metric, with implementations of that and some older metrics on more Elem types

  • New LOG_ONE_ENTITY_SCOPE macro for performance logging of high-frequency events that should not be included in per-entity logging like NVTX

  • Support for more IGA mesh types in System::solve_for_unconstrained_dofs(), e.g. for more accurately setting initial conditions on spline DoFs

  • Support for isfinite/isnormal/signbit in MetaPhysicL

  • Support for constexpr and Kokkos in MetaPhysicL::numeric_limits

  • Fixes in HIERARCHIC basis evaluation outside of elements, which was reachable through FDM-based HIERARCHIC gradient evaluation on element boundaries

  • Fix for HIERARCHIC shape function orientation consistency on some 3D meshes

  • Fix for corner cases in Poly2TriTriangulator refinement code, used by XYDelaunay and other MOOSE mesh generators

  • Fix for neighbor-finding on polyhedral meshes

  • Fixes and test coverage for more reference-space node position queries on Tri7 and other high-geometric-order elements

  • Automatic calculation of topological data on higher-order geometric elements

  • Refactoring, optimization, and robustness improvements in the DistributedMesh copy constructor

  • Non-ASCII output fix in MeshBase::get_info(), and more robustness on unprepared meshes

  • Added more stringent mesh preparation assertions, and made test cases compatible with them

  • Fix for corner case where a post-redistribution distributed mesh might have ghosted-element neighbors that still have remote_elem neighbor links to each other

  • Fix for the OpenMP libMesh thread backend sometimes using a full thread count when asked to temporarily use a reduced count

  • Fix for an excessive-peak-memory-usage bug in the pthreads parallel_reduce() backend

  • Fix for vector variable output in Nemesis_IO

  • Fix in reduced_basis training

  • Fix for BoundaryInfo::sync to an unprepared DistributedMesh with METHOD=dbg

  • C++20 compiler compatibility fixes in MetaPhysicL

  • Better error message when trying to read a checkpoint split mesh with a bad split count

  • Avoid dropping error messages from non-rank-0 failures on parallel unit test suite runs

  • Added AGENTS.md and libMesh-CIVET-CI-failures skill files for AI agents

  • The --enable-werror flag is now applied to C/C++ preprocessing only, not linking, to avoid errors from warnings that compilers using Link-Time Optimization raise in third-party code

PETSc-level Changes

The PETSc submodule was updated from 3.25.4 to 3.26.0. OpenBLAS is held at 0.3.33 rather than the 0.3.34 that PETSc 3.26.0 downloads by default, because 0.3.34 hangs in threaded direct solves (MUMPS, SuperLU_DIST, and STRUMPACK) when OMP_NUM_THREADS is greater than one.

Conda Package Updates

Pins in conda/conda_build_config.yaml now follow conda-forge-pinning-feedstock: GCC and gfortran moved from 14 to 15, clang on macOS from 19 to 21, libxml2 from 2.14 to 2.15, and ucx from 1.20 to 1.22.

moose-tools 2026.10.19

  • Updated ruff from 0.15.15 to 0.16.7

  • Updated clang-format and clang-tools from 19.1.7 to 21.1.8, matching the macOS clang pin

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-build 2026.10.19

  • Updated the exported compiler pins to GCC 15, gxx 15 and gfortran 15 on Linux, and to clang and clangxx 21.1 on macOS

moose-libmesh-vtk 9.7.0_2 [mpich,openmpi]

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-petsc 3.26.0_0 [mpich,openmpi]

  • Updated petsc from 3.25.4 to 3.26.0

  • Held the PETSc-downloaded OpenBLAS at 0.3.33 to avoid a hang in threaded direct solves with 0.3.34

  • Built the OpenBLAS getarch helper with the plain compiler, because the conda-forge mpich 5.0.2 mpicc no longer adds an rpath to $PREFIX/lib

moose-libmesh 2026.10.08_342ad76_0 [mpich,openmpi]

  • Updated libmesh from 90766057 to 342ad76b

  • Rebuild due to updated Conda packages moose-petsc 3.26.0 and moose-libmesh-vtk 9.7.0

moose-wasp 2026.08.13_ce25dcd_2

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-pyhit 2026.10.19

  • Rebuild due to updated Conda package moose-wasp 2026.08.13_ce25dcd

moose-dev 2026.10.19 [mpich,openmpi]

moose-pprof 2026.07.09_b9395ee_1

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-seacas 2025.10.14_6

  • Rebuild due to updated pins in conda/conda_build_config.yaml

Apptainer Package Updates

moose-mpi:2026.10.19

  • Update all base containers

  • Updated variants: - ubuntu24_gcc (default): Ubuntu 24.04 base with GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_clang: Ubuntu 24.04 base with Clang 22.1.8, GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_cuda_gcc: Ubuntu 24.04 base with CUDA 13.3.1, GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_gccmin: Ubuntu 24.04 base with GCC 9.5.0, MPICH 5.0.2 - rocky8_gcc: Rocky Linux 8.10 base with GCC 13.3.1, MPICH 5.0.2, OpenMPI 5.0.11 - rocky8_oneapi: Rocky Linux 8.10 base with GCC 13.3.1, oneAPI 2026.1.1, MPICH 4.3.2 - rocky9_gcc: Rocky Linux 9.7 base with GCC 13.3.1, MPICH 4.3.2, OpenMPI 5.0.11

moose-petsc:3.26.0_0

  • Updated petsc from 3.25.4 to 3.26.0

  • Held the PETSc-downloaded OpenBLAS at 0.3.33 to avoid a hang in threaded direct solves with 0.3.34

moose-libmesh:2026.10.08_342ad76_0

moose-dev:2026.10.19

  • Updated code-server from 4.132.0 to 4.138.0

  • Updated PyFMI from 2.21.0 to 2.23.0

  • Updated go from 1.26.1 to 1.27.1

  • Updated ruff from 0.15.15 to 0.16.7 in requirements.txt

  • Updated clang-format from 19.1.7 to 21.1.8 in requirements.txt

  • Updated conduit from 0.9.7 to 0.9.9

  • Updated mfem from a7dbea1 to 6a858dc, which includes the MFEM 4.10 release

    Because the base images changed, every apptainer container is rebuilt.