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.**
-
+
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