diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7d3252..8c0aa9d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -115,7 +115,7 @@ jobs: run: | python - <<'PY' import agencitylab - assert agencitylab.__version__ == "1.1.2" + assert agencitylab.__version__ == "1.1.3" print(agencitylab.__version__) PY - name: Pytest @@ -217,7 +217,7 @@ jobs: import numpy as np import agencitylab as al - assert al.__version__ == "1.1.2" + assert al.__version__ == "1.1.3" assert Path(al.__file__).with_name("py.typed").is_file() xi = np.arange(128, dtype=float) result = al.compute_agencity( @@ -225,7 +225,7 @@ jobs: ) assert result.b.shape == xi.shape assert np.all(np.isfinite(result.b)) - assert result.metadata.agencitylab_version == "1.1.2" + assert result.metadata.agencitylab_version == "1.1.3" assert al.reference.datasets.available_builtin() == ("canonical_regimes_v1",) assert len(al.reference.datasets.load("canonical_regimes_v1")) == 3 print("wheel smoke test: PASS") @@ -245,7 +245,7 @@ jobs: import agencitylab.quantum as quantum import agencitylab.thermodynamics as thermodynamics - assert al.__version__ == "1.1.2" + assert al.__version__ == "1.1.3" xi = np.arange(64, dtype=float) result = al.compute_agencity( np.sin(0.2 * xi), xi, A_ref=1.0, tau=4.0, w=3.0, P_c=1.0 @@ -262,7 +262,7 @@ jobs: - name: Upload distributions uses: actions/upload-artifact@v4 with: - name: agencitylab-1.1.2-distributions + name: agencitylab-1.1.3-distributions path: dist/ if-no-files-found: error diff --git a/CHANGELOG.md b/CHANGELOG.md index d1c00c4..26ab105 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,26 @@ identifiers are not part of the stable public compatibility contract. No changes yet. +## 1.1.3 — 2026-08-19 + +### Fixed + +- Stabilized beta-trajectory curvature under large but still numerically + resolvable translations by accounting for floating-point coordinate + resolution in the collinearity diagnostic. +- Made curvature arithmetic scale-safe across extreme representable trajectory + and parameter-axis scales by recentering and normalizing the numerical + geometry before rescaling the resulting curvature. +- Prevented intermediate floating-point overflow/underflow from being exposed + as misleading infinite curvature; numerically non-representable diagnostic + results remain explicitly undefined. + +### Scientific integrity + +- No canonical equation or physical/contextual parameter definition changed. +- The change is confined to beta-trajectory geometry diagnostics and does not + redefine `beta`, `Theta`, CRM, `P_c`, or `b`. + ## 1.1.2 — 2026-08-19 ### Fixed diff --git a/CITATION.cff b/CITATION.cff index 70fc955..748d753 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -2,7 +2,7 @@ cff-version: 1.2.0 message: "If you use AgencityLab in scientific work, please cite this software." title: "AgencityLab" type: software -version: 1.1.2 +version: 1.1.3 date-released: 2026-08-19 authors: - family-names: "BEMWIZ" diff --git a/README.md b/README.md index 7599929..61760de 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ **A scientific Python framework for implementing, testing, and exploring the Theory of Agencity.**

- AgencityLab 1.1.2 + AgencityLab 1.1.3 Python 3.10-3.14 NumPy core MIT License diff --git a/agencitylab/version.py b/agencitylab/version.py index 2eeedd0..674c8a0 100644 --- a/agencitylab/version.py +++ b/agencitylab/version.py @@ -1,3 +1,3 @@ """Package version.""" -__version__ = "1.1.2" +__version__ = "1.1.3" diff --git a/docs/index.md b/docs/index.md index a56fe0c..531d050 100644 --- a/docs/index.md +++ b/docs/index.md @@ -53,12 +53,13 @@ references/glossary ## Project status -AgencityLab `1.1.2` is the current stable public software release. This patch -release hardens numerical beta-trajectory curvature and structural phase-turn -mask handling discovered during post-1.1.1 validation, without changing the -canonical equations. Version `1.1.1` hardened runtime validation and regime -diagnostics; `1.1.0` introduced the reference library, and `1.0.0` remains the -first stable compatibility baseline. +AgencityLab `1.1.3` is the current stable public software release. This patch +release hardens numerical beta-trajectory curvature against large resolvable +translations and extreme representable scales without changing the canonical +equations. Version `1.1.2` hardened curvature around unresolved velocity and +structural phase-turn mask handling; `1.1.1` hardened runtime validation and +regime diagnostics, `1.1.0` introduced the reference library, and `1.0.0` +remains the first stable compatibility baseline. Use the [scientific API map](api_map.md) first. The main scalar entry point is `agencitylab.compute_agencity`; interpretation belongs under diff --git a/pyproject.toml b/pyproject.toml index 86c3504..760a25a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "agencitylab" -version = "1.1.2" +version = "1.1.3" description = "Scientific framework for the theory of Agencity" readme = { file = "README.md", content-type = "text/markdown" } requires-python = ">=3.10" diff --git a/tests/fields/test_classical_field_primitives.py b/tests/fields/test_classical_field_primitives.py index 0e19250..0b1ca73 100644 --- a/tests/fields/test_classical_field_primitives.py +++ b/tests/fields/test_classical_field_primitives.py @@ -28,7 +28,7 @@ def _periodic_grid(n: int = 32) -> UniformRectilinearGrid: def test_dynamics_status_and_public_boundary_are_research_only(): assert SCIENTIFIC_STATUS is ScientificStatus.RESEARCH - assert agencitylab.__version__ == "1.1.2" + assert agencitylab.__version__ == "1.1.3" assert fields_api.simulate_klein_gordon is not None assert not hasattr(agencitylab, "simulate_klein_gordon") diff --git a/tests/fields/test_dynamical_field_foundations_integration.py b/tests/fields/test_dynamical_field_foundations_integration.py index 6fec3d8..f475c92 100644 --- a/tests/fields/test_dynamical_field_foundations_integration.py +++ b/tests/fields/test_dynamical_field_foundations_integration.py @@ -16,7 +16,7 @@ def test_public_foundations_are_exposed_with_expected_statuses(): - assert agencitylab.__version__ == "1.1.2" + assert agencitylab.__version__ == "1.1.3" assert agencitylab.ScientificStatus.RESEARCH is ScientificStatus.RESEARCH assert agencitylab.DynamicalAgencityFieldState is DynamicalAgencityFieldState assert fields_api.QuarticAgencityPotential is QuarticAgencityPotential diff --git a/tests/integration/test_v113_thermo_gravity_integration.py b/tests/integration/test_v113_thermo_gravity_integration.py index 8411385..0d8cc13 100644 --- a/tests/integration/test_v113_thermo_gravity_integration.py +++ b/tests/integration/test_v113_thermo_gravity_integration.py @@ -106,7 +106,7 @@ def test_field_entropy_is_global_u1_invariant(): def test_selected_research_apis_are_namespaced_without_redefining_scalar_core(): - assert agencitylab.__version__ == "1.1.2" + assert agencitylab.__version__ == "1.1.3" assert callable(thermodynamics.temperature_dependent_lambda) assert callable(thermodynamics.modulus_law_margin) assert callable(thermodynamics.phase_law_prediction) diff --git a/tests/release/test_release_candidate.py b/tests/release/test_release_candidate.py index 7d518ca..2f92ff4 100644 --- a/tests/release/test_release_candidate.py +++ b/tests/release/test_release_candidate.py @@ -42,11 +42,11 @@ def test_release_metadata_is_consistent(): citation = (ROOT / "CITATION.cff").read_text(encoding="utf-8") license_text = (ROOT / "LICENSE").read_text(encoding="utf-8") - assert al.__version__ == "1.1.2" - assert 'version = "1.1.2"' in pyproject + assert al.__version__ == "1.1.3" + assert 'version = "1.1.3"' in pyproject assert "Development Status :: 5 - Production/Stable" in pyproject assert "Typing :: Typed" in pyproject - assert "version: 1.1.2" in citation + assert "version: 1.1.3" in citation assert "date-released: 2026-08-19" in citation assert "license: MIT" in citation assert "Permission is hereby granted" in license_text @@ -57,7 +57,7 @@ def test_quickstart_compute_analyze_export_roundtrip(tmp_path): xi, u = _signal() result = _compute(xi, u, unit="rad", coordinate_unit="s", power_unit="W") - assert result.metadata.agencitylab_version == al.__version__ == "1.1.2" + assert result.metadata.agencitylab_version == al.__version__ == "1.1.3" np.testing.assert_allclose(result.S, np.hypot(result.M, result.O)) expected_beta = np.zeros_like(result.beta) mask = result.S > 0.0 diff --git a/tests/thermodynamics/test_unified_thermodynamics.py b/tests/thermodynamics/test_unified_thermodynamics.py index 3da3d05..badc873 100644 --- a/tests/thermodynamics/test_unified_thermodynamics.py +++ b/tests/thermodynamics/test_unified_thermodynamics.py @@ -51,7 +51,7 @@ def test_thermodynamics_remains_research_in_its_explicit_namespace(): - assert agencitylab.__version__ == "1.1.2" + assert agencitylab.__version__ == "1.1.3" assert DISSIPATION_STATUS is ScientificStatus.RESEARCH assert TEMPERATURE_STATUS is ScientificStatus.RESEARCH assert ENTROPY_STATUS is ScientificStatus.RESEARCH