What’s new in v0.4.2#

Added in version v0.4.2.

Summary#

MADDENING is now licensed under the Apache License, Version 2.0.

What changes for existing code#

  • The licence is Apache-2.0 (it was LGPL). Nothing in the library’s behaviour changes. Apache-2.0 is permissive, with no copyleft: a product that uses MADDENING keeps the copyright and licence notices, ships the attributions in the new NOTICE file, and marks any of MADDENING’s files it changed. The licence includes an explicit patent grant from each contributor. The LGPL replaceability statement in the regulatory guides is replaced by a licence statement. Releases up to and including 0.4.1 were distributed under the LGPL, and copies obtained under those terms keep them.

Known anomalies#

  • MADD-ANO-297: At the default atol=0 a coupling group can report converged=True after one pass far from its fixed point when one field holds entries of very different magnitude (order 1 beside order 1e-8) and a change passes through the small one. Keep such quantities in separate fields; a tighter rtol does not help. A fix is planned for a later patch.

  • MADD-ANO-298: python -m maddening.compliance check-anomalies prints OK and exits 0 on a registry with no entries, and on one whose references could not be checked because a package they import is missing. Do not rely on its exit status alone: call validate_anomaly_registry with notes=[] and treat any note as unverified, and refuse an empty registry in your own gate. A fix is planned for a later patch.

  • MADD-ANO-299: collect_node_metadata() and collect_hazard_hints() see only direct subclasses of SimulationNode: WaveletAdaptiveNode, and any downstream node that derives from a base class of its own, are left out. Walk SimulationNode’s subclasses recursively and read each class’s meta instead. A fix is planned for a later patch.

  • MADD-ANO-300: A served node whose initial_state() cannot be evaluated abstractly (WaveletAdaptiveNode is one) keeps about 0.5 MB of JAX trace alive for every accepted PUT /graph/params and checkpoint load, until the process exits. Restart a server that takes many such writes. A fix is planned for a later patch.

  • MADD-ANO-301: After verify_node returns a FAIL verdict, Hypothesis’s line-tracing events stay on in the process (Python 3.12 and 3.13), and pure-Python code runs several times slower until it exits. Turn them off after a failing verification (the registry entry gives the three sys.monitoring calls), or verify in a separate process. A fix is planned for a later patch.

For contributors#

  • A change is recorded in fragments. A pull request no longer edits CHANGELOG.md, the release notes or the anomaly registry. It adds docs/fragments/changes/<branch>.yaml and, for a new anomaly, docs/fragments/anomalies/<branch>.yaml, where the entry carries a provisional label until scripts/fragments.py assemble numbers it. The assembler also writes the changelog and the release notes before each release, and scripts/check_fragments.py checks the fragments on every push. “Recording a change” in the documentation standards has the procedure.

  • Lookup tools in scripts/: anom.py (list, show, next and refs, fragments included), claim.py and outline.py.

  • The anomaly gate is about five times faster: one run parses each test file it cites once.

  • The 3D frame renderer’s tests run in CI. tests/api/test_frame_renderer_3d.py needs PyVista (the viz3d extra) and a display, so the sharded lanes skipped all 14 of its tests and no job ran them. A viz3d job in ci.yml now installs the extra and runs the file under xvfb-run with Mesa’s software OpenGL. It sets MADDENING_REQUIRE_VIZ3D_TESTS=1, so a missing PyVista fails the job instead of skipping the file. The anomaly gate’s record of what CI never runs (PATHS_CI_NEVER_RUNS) no longer lists the file and still lists tests/viz, which no job runs.