0.4.4 candidate decision record — 2026-10-27¶
Status: release preparation, not a publication or a scientific promotion.
Base: merged main 5746414856ff002b752b596b7e93504ad96c597d (PR #124),
including Windows quickstart PR #125. The previous source gate passed Linux
native/FEniCSx, MPI, macOS and PowerShell checks. Final release evidence must
bind to this candidate, not reuse a previous wheel hash as if unchanged.
Five-hour closeout¶
The authorized window begins at 08:57:57 UTC and ends at 13:57:57 UTC on 2026-10-27. Stop starting new work at the deadline and report actual outcomes. No new physical formulation, large mesh sweep, full composite run or installer bundle is part of this closeout. Preserve other worktrees and generated sites.
| Gate | Required result | Initial state |
|---|---|---|
| Scope | Version, changelog, public matrix and packaged contract agree | Updating |
| Safety | Admission, increments, state/output and release-identity regressions pass | Pending candidate check |
| Installed use | Fresh native wheel; ordinary project and bounded contact/output/restart tests | Pending |
| Integration | Exact release PR head passes applicable remote CI | Pending |
| Publication | Tagged immutable artifacts pass publish gates; verify actual upload | Not started |
Scientific exclusions do not excuse a regression in an admitted route. A numerical failure, state corruption, false acceptance or missing boundary contribution blocks the candidate. A documented experimental accuracy study does not block unrelated engineering improvements indefinitely.
What is retained as experimental¶
The current contact matrix in docs/guide/model_setup.md controls admission.
Periodic J2/contact, selected faceted friction and plane augmentation remain
experimental. Distributed implicit contact, general sharp-feature friction
and unsupported material/boundary combinations are rejected.
The nonuniform partial-patch study has independent discrete elastic/MPC
agreement and bounded graded-cycle path sensitivity. It does not yet have
spatially independent plastic pressure or an independent same-input nonlinear
reference. The full scientific record and raw reports remain in
docs/internal/contact_0_4_4_local_parity.md and evidence/contact/.
Do not tune acceptance limits after seeing the result or claim peak-pressure
convergence from total-force balance. A future promotion must match material
law, loading path, penalty measure, periodic equations and physical outputs.
Representative executable evidence¶
tests/test_finite_strain_j2_periodic.py,tests/test_periodic_contact_virtual_work_oracle.pyandtests/test_contact_plastic_coaxial_reference.py: total reduction, conjugacy, constitutive reference and lifecycle.tests/test_accepted_energy_components.pyandtests/test_affine_residual_only.py: energy channel ownership and equivalent residual-only observations, including legacy-provider fallback.tests/test_finite_j2_multi_contact.py,tests/test_dolfinx_implicit_friction_contact.pyandtests/test_finite_strain_j2_contact_mpi_boundary.py: bounded composition and unsupported distributed rejection.tests/test_live_xdmf.py,tests/test_xdmf_layout.pyandtests/test_quadrature_physical_recovery.py: accepted frame publication, layout and physical recovered fields.tests/test_increment_control_validation.py,tests/test_small_strain_material_step.pyandtests/test_packaging.py: early rejection and package identity.- Installed project smoke plus the repository publication workflow: ordinary entry points, platform/runtime identity and exact-artifact acceptance.
Named tests are an evidence map, not a claim that this candidate has run them. Record commands, counts, artifact hashes and failures below as obtained.
Source checks before freezing the candidate¶
The candidate introduces no new numerical formulation. Its source changes are
release identity validation/reporting, version metadata and scope documentation.
On the local fenicsx-env (single thread per numerical library):
- Packaging, increment controls, lazy CLI startup and Windows quickstart: 126 passed. This includes wrong-version contract content with/without a tag, malformed contract structure and truthful source/distribution/smoke check summaries.
- Accepted energy, residual-only observation, live XDMF/layout, physical cell recovery, small-strain admission, multiple tools, periodic virtual work and the confined plastic reference: 123 passed, 3 skipped. The skips require two MPI ranks and are not counted as distributed coverage.
- Generated documentation is current; strict MkDocs and repository Ruff pass.
The documentation build uses a separate temporary site, preserving the
user's existing generated
site/modifications. Local REUSE executable was absent; source-attribution acceptance remains required in remote CI.
Output scope is explicit: a restart writes a new result segment and preserves the old files. It does not automatically append/merge an earlier XDMF index. Live frame-file publication and continuous physical time do not imply otherwise.
The first frozen source 5dbc6cc7 also passes native installed-use acceptance:
four ordinary templates, bounded contact examples and two-rank elasticity;
339 installed regressions; and a separate two-rank recovery/rejection group
with 26 tests passing on each rank. The local wheel SHA-256 is
0a2b7084b0f90597cb0951d42fecc7783af93d6f6f5babb69c0e7275ccec3551.
Its sdist SHA-256 is
c9bd1971a532a8fb34a92bb8b2976fde7fc6d52ad73068aecbffe80284d4f413.
These are pre-publication artifacts, not the final tagged Linux distribution.
Additional installed execution-policy checks pass 64 tests, with the
distributed-only policy-rejection test reserved for the two-rank gate.
The closeout audit found that the existing distributed contact/policy rejection tests were not all selected by the complete CI/publication workflows. Both now select those gates explicitly; publication also selects physical quadrature recovery, including an empty partition and collective invalid-measure rejection. This closes an acceptance-coverage gap without changing runtime algorithms. The exact three-file selection passes 27 tests per rank locally (two ranks, 120-second launcher limit, 1.02 seconds of pytest execution). Packaging and CI-scope checks pass 76 tests after the workflow update.
Follow-up, not release scope expansion¶
Obtain a same-input independent nonlinear reference and targeted contact-edge spatial evidence before promoting the nonuniform periodic composition. Collect a clean non-root Windows/WorkBuddy installation report. Resume explicit composite acceleration only with its own fixed-workload evidence; implicit fixture improvements are not a substitute.