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
NOTICEfile, 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 defaultatol=0a coupling group can reportconverged=Trueafter 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 tighterrtoldoes not help. A fix is planned for a later patch.MADD-ANO-298:python -m maddening.compliance check-anomaliesprints 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: callvalidate_anomaly_registrywithnotes=[]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()andcollect_hazard_hints()see only direct subclasses ofSimulationNode:WaveletAdaptiveNode, and any downstream node that derives from a base class of its own, are left out. WalkSimulationNode’s subclasses recursively and read each class’smetainstead. A fix is planned for a later patch.MADD-ANO-300: A served node whoseinitial_state()cannot be evaluated abstractly (WaveletAdaptiveNodeis one) keeps about 0.5 MB of JAX trace alive for every acceptedPUT /graph/paramsand 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: Afterverify_nodereturns 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 threesys.monitoringcalls), 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 addsdocs/fragments/changes/<branch>.yamland, for a new anomaly,docs/fragments/anomalies/<branch>.yaml, where the entry carries a provisional label untilscripts/fragments.py assemblenumbers it. The assembler also writes the changelog and the release notes before each release, andscripts/check_fragments.pychecks the fragments on every push. “Recording a change” in the documentation standards has the procedure.Lookup tools in
scripts/:anom.py(list,show,nextandrefs, fragments included),claim.pyandoutline.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.pyneeds PyVista (theviz3dextra) and a display, so the sharded lanes skipped all 14 of its tests and no job ran them. Aviz3djob inci.ymlnow installs the extra and runs the file underxvfb-runwith Mesa’s software OpenGL. It setsMADDENING_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 liststests/viz, which no job runs.