utac-entropic-gravity 1.0.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,44 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: ["main", "master", "claude/**"]
6
+ pull_request:
7
+ branches: ["main", "master"]
8
+
9
+ concurrency:
10
+ group: ${{ github.workflow }}-${{ github.ref }}
11
+ cancel-in-progress: true
12
+
13
+ jobs:
14
+ lint:
15
+ name: Lint (ruff + mypy)
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - uses: actions/setup-python@v5
20
+ with:
21
+ python-version: "3.11"
22
+ - name: Install dev dependencies
23
+ run: pip install -e ".[dev]"
24
+ - name: Run ruff
25
+ run: ruff check src tests
26
+ - name: Run mypy
27
+ run: mypy src
28
+
29
+ test:
30
+ name: Tests (Python ${{ matrix.python-version }})
31
+ runs-on: ubuntu-latest
32
+ strategy:
33
+ fail-fast: false
34
+ matrix:
35
+ python-version: ["3.11", "3.12"]
36
+ steps:
37
+ - uses: actions/checkout@v4
38
+ - uses: actions/setup-python@v5
39
+ with:
40
+ python-version: ${{ matrix.python-version }}
41
+ - name: Install dependencies
42
+ run: pip install -e ".[dev]"
43
+ - name: Run pytest with coverage
44
+ run: pytest --cov=src --cov-report=xml
@@ -0,0 +1,118 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+ - "v*.*.*-rc*"
8
+ - "v*.*.*-alpha*"
9
+ - "v*.*.*-beta*"
10
+
11
+ permissions:
12
+ contents: write
13
+ id-token: write # for PyPI trusted publishing, if configured
14
+
15
+ jobs:
16
+ build:
17
+ name: Build distribution
18
+ runs-on: ubuntu-latest
19
+ steps:
20
+ - uses: actions/checkout@v4
21
+ with:
22
+ fetch-depth: 0
23
+
24
+ - name: Set up Python
25
+ uses: actions/setup-python@v5
26
+ with:
27
+ python-version: "3.12"
28
+
29
+ - name: Install build tooling
30
+ run: python -m pip install --upgrade pip build
31
+
32
+ - name: Build sdist and wheel
33
+ run: python -m build
34
+
35
+ - name: Upload build artifacts
36
+ uses: actions/upload-artifact@v4
37
+ with:
38
+ name: dist
39
+ path: dist/
40
+
41
+ test:
42
+ name: Run test suite
43
+ runs-on: ubuntu-latest
44
+ steps:
45
+ - uses: actions/checkout@v4
46
+
47
+ - name: Set up Python
48
+ uses: actions/setup-python@v5
49
+ with:
50
+ python-version: "3.12"
51
+
52
+ - name: Install package with dev/test extras
53
+ run: |
54
+ python -m pip install --upgrade pip
55
+ if python -c "import tomllib" 2>/dev/null; then :; fi
56
+ pip install -e ".[dev]" 2>/dev/null || pip install -e ".[test]" 2>/dev/null || pip install -e "."
57
+ pip install pytest pytest-cov
58
+
59
+ - name: Run tests
60
+ run: pytest -q || pytest -q --no-header
61
+
62
+ publish-canary:
63
+ name: Publish canary (TestPyPI + pre-release)
64
+ needs: [build, test]
65
+ if: contains(github.ref_name, '-rc') || contains(github.ref_name, '-alpha') || contains(github.ref_name, '-beta')
66
+ runs-on: ubuntu-latest
67
+ environment: testpypi
68
+ steps:
69
+ - uses: actions/download-artifact@v4
70
+ with:
71
+ name: dist
72
+ path: dist/
73
+
74
+ - name: Publish to TestPyPI
75
+ uses: pypa/gh-action-pypi-publish@release/v1
76
+ with:
77
+ repository-url: https://test.pypi.org/legacy/
78
+ password: ${{ secrets.TEST_PYPI_API_TOKEN }}
79
+ skip-existing: true
80
+
81
+ - name: Create GitHub pre-release
82
+ uses: softprops/action-gh-release@v2
83
+ with:
84
+ files: dist/*
85
+ prerelease: true
86
+ generate_release_notes: true
87
+
88
+ publish-production:
89
+ name: Publish production (PyPI + release + Zenodo archive)
90
+ needs: [build, test]
91
+ if: ${{ !contains(github.ref_name, '-rc') && !contains(github.ref_name, '-alpha') && !contains(github.ref_name, '-beta') }}
92
+ runs-on: ubuntu-latest
93
+ environment: pypi
94
+ steps:
95
+ - uses: actions/download-artifact@v4
96
+ with:
97
+ name: dist
98
+ path: dist/
99
+
100
+ - name: Publish to PyPI
101
+ uses: pypa/gh-action-pypi-publish@release/v1
102
+ with:
103
+ password: ${{ secrets.PYPI_API_TOKEN }}
104
+ skip-existing: true
105
+
106
+ - name: Create GitHub Release
107
+ uses: softprops/action-gh-release@v2
108
+ with:
109
+ files: dist/*
110
+ prerelease: false
111
+ generate_release_notes: true
112
+
113
+ # NOTE: Zenodo archival of this GitHub Release happens automatically
114
+ # IF this repo has Zenodo-GitHub integration enabled at
115
+ # https://zenodo.org/account/settings/github/ (a per-repo, per-owner
116
+ # OAuth toggle on zenodo.org — cannot be set from a workflow file).
117
+ # Once enabled, every GitHub Release like this one mints/updates a
118
+ # Zenodo DOI automatically using the .zenodo.json metadata in this repo.
@@ -0,0 +1,22 @@
1
+ # Python
2
+ __pycache__/
3
+ *.py[cod]
4
+ *.egg-info/
5
+ .eggs/
6
+ dist/
7
+ build/
8
+ .venv/
9
+ .uv/
10
+
11
+ # Testing
12
+ .coverage
13
+ htmlcov/
14
+ .pytest_cache/
15
+
16
+ # Docs
17
+ site/
18
+
19
+ # Editors
20
+ .vscode/
21
+ .idea/
22
+ *.swp
@@ -0,0 +1,14 @@
1
+ repos:
2
+ - repo: https://github.com/astral-sh/ruff-pre-commit
3
+ rev: v0.6.0
4
+ hooks:
5
+ - id: ruff
6
+ args: [--fix]
7
+ - id: ruff-format
8
+ - repo: https://github.com/pre-commit/pre-commit-hooks
9
+ rev: v4.6.0
10
+ hooks:
11
+ - id: trailing-whitespace
12
+ - id: end-of-file-fixer
13
+ - id: check-yaml
14
+ - id: check-toml
@@ -0,0 +1,35 @@
1
+ {
2
+ "title": "utac-entropic-gravity — P57: UTAC/CREP bridge to the Gravity-from-Entropy theory",
3
+ "description": "<p>UTAC/CREP bridge to Ginestra Bianconi's Gravity-from-Entropy (GfE) theory (arXiv:2408.14391, PRD 111,066001; arXiv:2510.22545, PRD 114,024042): real mechanism (constant GQRE-per-volume + monotonic total entropy increase allows local order within global entropy increase) plus a SPECULATIVE UTAC structure-formation-beta bridge. GenesisAeon Package 57.</p><p>Part of the <strong>GenesisAeon</strong> ecosystem (P57, domain: cosmology / entropy dynamics).</p><p>See <a href=\"https://github.com/GenesisAeon/utac-entropic-gravity\">github.com/GenesisAeon/utac-entropic-gravity</a> for source and documentation.</p><p>Dual-licensed: source code under GPL-3.0-or-later, documentation under CC BY 4.0.</p>",
4
+ "creators": [
5
+ {
6
+ "name": "Römer, Johann",
7
+ "affiliation": "Independent Researcher / MOR Research Collective"
8
+ }
9
+ ],
10
+ "license": "other-open",
11
+ "upload_type": "software",
12
+ "access_right": "open",
13
+ "keywords": [
14
+ "GenesisAeon",
15
+ "P57",
16
+ "cosmology / entropy dynamics",
17
+ "UTAC",
18
+ "CREP",
19
+ "Gravity-from-Entropy",
20
+ "dark energy",
21
+ "open science"
22
+ ],
23
+ "related_identifiers": [
24
+ {
25
+ "identifier": "10.5281/zenodo.19645351",
26
+ "relation": "isPartOf",
27
+ "resource_type": "publication-article",
28
+ "scheme": "doi"
29
+ }
30
+ ],
31
+ "version": "1.0.0",
32
+ "communities": [
33
+ { "identifier": "genesisaeon" }
34
+ ]
35
+ }
@@ -0,0 +1,26 @@
1
+ # AGENT.md – GenesisAeon Release & Metadata Rules
2
+
3
+ ## Bei jeder relevanten Änderung (Version Bump, Feature, Bugfix, Docs):
4
+
5
+ 1. **.zenodo.json**
6
+ - Aktualisiere `version`, `description`, `keywords`, `related_identifiers`
7
+ - Beschreibung muss die aktuelle Funktion des Packages klar beschreiben
8
+ - Immer den Whitepaper-DOI (10.5281/zenodo.19645351) als `isPartOf` oder
9
+ `isDocumentedBy` eintragen
10
+
11
+ 2. **README.md**
12
+ - Aktualisiere Whitepaper-Badge auf aktuelle Version
13
+ - Aktualisiere @software BibTeX-Eintrag (version, publisher=Zenodo, DOI)
14
+ - Füge Package-Number-Badge ein (z.B. Package 17)
15
+
16
+ 3. **Versionierung**
17
+ - pyproject.toml und __init__.py müssen synchron auf dieselbe Version sein
18
+ - Tags immer als annotated Tag (`git tag -a vX.Y.Z`)
19
+
20
+ 4. **Commit-Message**
21
+ - Beginne mit "release:", "feat:", "fix:", "docs:" oder "chore:"
22
+
23
+ 5. **Nach jedem neuen Tag**
24
+ - Release-Pipeline (PyPI + Zenodo) wird automatisch ausgelöst
25
+
26
+ Diese Regeln sind bindend für alle Claude-Code-Runs und zukünftige Agents in GenesisAeon-Repos.
@@ -0,0 +1,31 @@
1
+ cff-version: 1.2.0
2
+ message: "If you use this software, please cite it as below."
3
+ type: software
4
+ title: "utac-entropic-gravity"
5
+ version: "1.0.0"
6
+ date-released: "2026-08-01"
7
+ authors:
8
+ - name: "GenesisAeon"
9
+ repository-code: "https://github.com/GenesisAeon/utac-entropic-gravity"
10
+ license: GPL-3.0-or-later
11
+ abstract: "UTAC/CREP bridge to Bianconi's Gravity-from-Entropy theory (arXiv:2408.14391, arXiv:2510.22545) -- local order emergence within monotonic global entropy increase. GenesisAeon Package 57."
12
+ keywords:
13
+ - GenesisAeon
14
+ - UTAC
15
+ - CREP
16
+ - open-science
17
+ - cosmology
18
+ - entropy
19
+ - gravity
20
+ - dark-energy
21
+ references:
22
+ - type: article
23
+ title: "Gravity from entropy"
24
+ authors:
25
+ - name: "Ginestra Bianconi"
26
+ doi: "10.1103/PhysRevD.111.066001"
27
+ - type: article
28
+ title: "The Thermodynamics of the Gravity from Entropy Theory"
29
+ authors:
30
+ - name: "Ginestra Bianconi"
31
+ doi: "10.1103/26kn-thgp"
@@ -0,0 +1,64 @@
1
+ # DISCLAIMER — UTAC/CREP Bridge to a Real Peer-Reviewed Theory
2
+
3
+ **Status: Mixed — real mechanism (peer-reviewed) + SPECULATIVE bridge (this package's own)**
4
+
5
+ This module implements two clearly separated things:
6
+
7
+ 1. **A real, peer-reviewed mechanism**: Ginestra Bianconi's Gravity-from-
8
+ Entropy (GfE) theory (`arXiv:2408.14391`, Phys. Rev. D 111, 066001,
9
+ 2025; `arXiv:2510.22545`, Phys. Rev. D 114, 024042, 2026) shows that
10
+ GfE cosmologies have a **constant Geometric Quantum Relative Entropy
11
+ (GQRE) per unit volume** together with a **monotonically increasing
12
+ total entropy** — together these allow local order (galaxies, stars,
13
+ life) to emerge without violating the second law of thermodynamics
14
+ globally. `gfe_cosmology.py` implements a simplified, illustrative
15
+ version of this real entropy budget.
16
+ 2. **A SPECULATIVE UTAC/CREP bridge** (`utac_bridge.py`): this package's
17
+ own extension, mapping the real local-order-margin quantity onto a
18
+ UTAC steepness beta via the same `k / driver` convention used
19
+ elsewhere in the ecosystem. **This mapping is not part of Bianconi's
20
+ theory** — it is an untested, falsifiable framework choice.
21
+
22
+ ## What this is
23
+
24
+ - A correct, citation-checked (2026-08-01) implementation of the *real*
25
+ GfE local/global entropy relationship
26
+ - A source of a **falsifiable prediction**: that structure-formation
27
+ "sharpness" (UTAC beta) correlates with how close local entropy density
28
+ sits to a critical/reference threshold — untested, not derived from
29
+ GfE's own field equations
30
+
31
+ ## What this is NOT
32
+
33
+ - Bianconi's actual field equations (which require full GR + geometric
34
+ quantum relative entropy machinery well beyond this package's scope) —
35
+ this is a simplified toy model of the entropy-budget *consequence*, not
36
+ a re-derivation of GfE itself
37
+ - A claim that the UTAC beta-threshold mapping is part of, endorsed by, or
38
+ derivable from the original GfE papers
39
+ - Peer-reviewed in its own right — only the underlying GfE mechanism is;
40
+ the UTAC bridge has not passed review
41
+
42
+ ## Falsification conditions
43
+
44
+ 1. If GfE's own predictions (currently: "its full equations remain
45
+ unsolved, and no telescope survey or gravitational-wave detector has
46
+ been aimed at its specific claim that dark energy drifts rather than
47
+ holds steady" per contemporary reporting, 2026-07) are falsified by
48
+ future observation, this package's foundation is falsified with it
49
+ 2. The UTAC bridge itself offers no falsification test beyond "does beta
50
+ correlate with structure-formation sharpness in any real dataset" —
51
+ which has not been attempted here
52
+
53
+ ## References
54
+
55
+ - Bianconi, G. "Gravity from entropy." arXiv:2408.14391, Phys. Rev. D 111,
56
+ 066001 (2025)
57
+ - Bianconi, G. "The Thermodynamics of the Gravity from Entropy Theory."
58
+ arXiv:2510.22545, Phys. Rev. D 114, 024042 (2026)
59
+
60
+ Both verified directly against their arXiv abstracts (2026-08-01), not
61
+ paraphrased from secondary reporting.
62
+
63
+ Please treat all UTAC-bridge numerical outputs from this module as
64
+ **hypotheses**, not measurements.
@@ -0,0 +1,11 @@
1
+ This repository is dual-licensed:
2
+
3
+ - **Source code** (everything under `src/`, `scripts/`, `tests/`, and any
4
+ other `.py` files) is licensed under the **GNU General Public License
5
+ v3.0 or later (GPL-3.0-or-later)**. See [LICENSE-CODE](LICENSE-CODE).
6
+
7
+ - **Documentation** (`README.md`, files under `docs/`, and other prose
8
+ content) is licensed under **Creative Commons Attribution 4.0
9
+ International (CC BY 4.0)**. See [LICENSE-DOCS](LICENSE-DOCS).
10
+
11
+ Copyright (c) 2026 Johann Römer / GenesisAeon Project
@@ -0,0 +1,45 @@
1
+ GNU GENERAL PUBLIC LICENSE
2
+ Version 3, 29 June 2007
3
+
4
+ Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
5
+ Everyone is permitted to copy and distribute verbatim copies
6
+ of this license document, but changing it is not allowed.
7
+
8
+ Preamble
9
+
10
+ The GNU General Public License is a free, copyleft license for
11
+ software and other kinds of works.
12
+
13
+ The licenses for most software and other practical works are designed
14
+ to take away your freedom to share and change the works. By contrast,
15
+ the GNU General Public License is intended to guarantee your freedom to
16
+ share and change all versions of a program--to make sure it remains free
17
+ software for all its users. We, the Free Software Foundation, use the
18
+ GNU General Public License for most of our software; it applies also to
19
+ any other work released this way by its authors. You can apply it to
20
+ your programs, too.
21
+
22
+ This program is distributed under the GNU General Public License
23
+ version 3 or, at your option, any later version ("GPLv3-or-later").
24
+
25
+ For the full, authoritative text of the GNU General Public License,
26
+ version 3, see <https://www.gnu.org/licenses/gpl-3.0.txt> or
27
+ <https://www.gnu.org/licenses/gpl-3.0.html>. The complete license text
28
+ is also distributed with this software in the file COPYING, or can be
29
+ obtained by writing to the Free Software Foundation, Inc.,
30
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
31
+
32
+ This program is free software: you can redistribute it and/or modify
33
+ it under the terms of the GNU General Public License as published by
34
+ the Free Software Foundation, either version 3 of the License, or
35
+ (at your option) any later version.
36
+
37
+ This program is distributed in the hope that it will be useful,
38
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
39
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40
+ GNU General Public License for more details.
41
+
42
+ You should have received a copy of the GNU General Public License
43
+ along with this program. If not, see <https://www.gnu.org/licenses/>.
44
+
45
+ Copyright (C) 2026 Johann Römer / GenesisAeon Project
@@ -0,0 +1,28 @@
1
+ Creative Commons Attribution 4.0 International (CC BY 4.0)
2
+
3
+ Copyright (C) 2026 Johann Römer / GenesisAeon Project
4
+
5
+ This documentation (README.md, files under docs/, and other
6
+ non-source-code prose in this repository) is licensed under the
7
+ Creative Commons Attribution 4.0 International License.
8
+
9
+ To view a copy of this license, visit
10
+ <https://creativecommons.org/licenses/by/4.0/> or send a letter to
11
+ Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
12
+
13
+ You are free to:
14
+ - Share — copy and redistribute the material in any medium or format
15
+ - Adapt — remix, transform, and build upon the material
16
+ for any purpose, even commercially.
17
+
18
+ Under the following terms:
19
+ - Attribution — You must give appropriate credit, provide a link to
20
+ the license, and indicate if changes were made. You may do so in
21
+ any reasonable manner, but not in any way that suggests the
22
+ licensor endorses you or your use.
23
+
24
+ No additional restrictions — You may not apply legal terms or
25
+ technological measures that legally restrict others from doing
26
+ anything the license permits.
27
+
28
+ Full legal code: <https://creativecommons.org/licenses/by/4.0/legalcode>
@@ -0,0 +1,117 @@
1
+ Metadata-Version: 2.4
2
+ Name: utac-entropic-gravity
3
+ Version: 1.0.0
4
+ Summary: UTAC/CREP bridge to Bianconi's Gravity-from-Entropy theory (PRD 2025/2026) -- local order emergence within monotonic global entropy increase (GenesisAeon Package 57)
5
+ Project-URL: Homepage, https://github.com/GenesisAeon/utac-entropic-gravity
6
+ Project-URL: Repository, https://github.com/GenesisAeon/utac-entropic-gravity
7
+ Project-URL: Issues, https://github.com/GenesisAeon/utac-entropic-gravity/issues
8
+ Author: GenesisAeon
9
+ License: GPL-3.0-or-later
10
+ License-File: LICENSE
11
+ License-File: LICENSE-CODE
12
+ License-File: LICENSE-DOCS
13
+ Keywords: CREP,GenesisAeon,Gravity-from-Entropy,UTAC,cosmology,dark-energy,entropy,gravity
14
+ Classifier: Development Status :: 3 - Alpha
15
+ Classifier: Intended Audience :: Science/Research
16
+ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Topic :: Scientific/Engineering :: Physics
21
+ Requires-Python: >=3.11
22
+ Provides-Extra: dev
23
+ Requires-Dist: mypy>=1.10.0; extra == 'dev'
24
+ Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
25
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
26
+ Requires-Dist: ruff>=0.6.0; extra == 'dev'
27
+ Description-Content-Type: text/markdown
28
+
29
+ # utac-entropic-gravity
30
+
31
+ [![CI](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml/badge.svg)](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml)
32
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org)
33
+ [![License: GPLv3-or-later](https://img.shields.io/badge/code-GPLv3--or--later-blue.svg)](LICENSE-CODE)
34
+ [![Docs License: CC BY 4.0](https://img.shields.io/badge/docs-CC%20BY%204.0-lightgrey.svg)](LICENSE-DOCS)
35
+ [![Status: Mixed real+speculative](https://img.shields.io/badge/status-real%20mechanism%20%2B%20speculative%20bridge-orange)](DISCLAIMER.md)
36
+
37
+ **UTAC/CREP bridge to Ginestra Bianconi's Gravity-from-Entropy (GfE) theory**
38
+ — local order emergence within monotonic global entropy increase.
39
+ GenesisAeon Package 57.
40
+
41
+ > **See [DISCLAIMER.md](DISCLAIMER.md)** for a clear split between the real,
42
+ > peer-reviewed GfE mechanism and this package's own SPECULATIVE UTAC bridge.
43
+
44
+ ## What is this?
45
+
46
+ Bianconi's real GfE theory (Phys. Rev. D 111, 066001, 2025 and Phys. Rev. D
47
+ 114, 024042, 2026) shows that the *total* geometric quantum relative
48
+ entropy per unit volume stays constant while *total* entropy rises
49
+ monotonically as the universe expands — leaving room for local order
50
+ (galaxies, stars, life) without violating the second law globally. This
51
+ package implements:
52
+
53
+ 1. A simplified, illustrative version of that real entropy budget
54
+ (`gfe_cosmology.py`)
55
+ 2. Its own SPECULATIVE UTAC/CREP extension mapping the local-order margin
56
+ onto a UTAC structure-formation steepness β (`utac_bridge.py`)
57
+
58
+ ## Installation
59
+
60
+ ```bash
61
+ pip install utac-entropic-gravity
62
+ ```
63
+
64
+ ## Usage
65
+
66
+ ```python
67
+ from utac_entropic_gravity import UTACEntropicGravity
68
+
69
+ sys = UTACEntropicGravity()
70
+ result = sys.run_cycle(volumes=[1.0, 2.0, 4.0, 8.0], reference_density=1.5)
71
+
72
+ print(result["total_entropy_monotonic"]) # True -- the real GfE claim
73
+ print(result["structure_formation_betas"]) # this package's own bridge
74
+ print(sys.get_crep_state())
75
+ ```
76
+
77
+ ## Falsifiable predictions
78
+
79
+ | Prediction | Status |
80
+ |-----------|--------|
81
+ | GfE's own predictions (dark energy drifts rather than holding steady) | Untested — full equations not yet solved (per GfE authors, 2026) |
82
+ | UTAC structure-formation β correlates with local-order margin | This package's own, entirely untested framework choice |
83
+
84
+ ## References (verified 2026-08-01)
85
+
86
+ - Bianconi, G. "Gravity from entropy." arXiv:2408.14391, Phys. Rev. D 111,
87
+ 066001 (2025)
88
+ - Bianconi, G. "The Thermodynamics of the Gravity from Entropy Theory."
89
+ arXiv:2510.22545, Phys. Rev. D 114, 024042 (2026)
90
+
91
+ ## Role in the GenesisAeon Ecosystem
92
+
93
+ **Package ID:** P57 | **Domain:** cosmology / entropy dynamics
94
+
95
+ ## Development
96
+
97
+ ```bash
98
+ git clone https://github.com/GenesisAeon/utac-entropic-gravity.git
99
+ cd utac-entropic-gravity
100
+ pip install -e ".[dev]"
101
+ ruff check src tests
102
+ mypy src
103
+ pytest
104
+ ```
105
+
106
+ ## License
107
+
108
+ Dual-licensed: source code under [GPL-3.0-or-later](LICENSE-CODE),
109
+ documentation under [CC BY 4.0](LICENSE-DOCS).
110
+
111
+ ## Citation
112
+
113
+ See [CITATION.cff](CITATION.cff) and [.zenodo.json](.zenodo.json).
114
+
115
+ ---
116
+
117
+ *GenesisAeon · MOR Research Collective · August 2026*
@@ -0,0 +1,89 @@
1
+ # utac-entropic-gravity
2
+
3
+ [![CI](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml/badge.svg)](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml)
4
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org)
5
+ [![License: GPLv3-or-later](https://img.shields.io/badge/code-GPLv3--or--later-blue.svg)](LICENSE-CODE)
6
+ [![Docs License: CC BY 4.0](https://img.shields.io/badge/docs-CC%20BY%204.0-lightgrey.svg)](LICENSE-DOCS)
7
+ [![Status: Mixed real+speculative](https://img.shields.io/badge/status-real%20mechanism%20%2B%20speculative%20bridge-orange)](DISCLAIMER.md)
8
+
9
+ **UTAC/CREP bridge to Ginestra Bianconi's Gravity-from-Entropy (GfE) theory**
10
+ — local order emergence within monotonic global entropy increase.
11
+ GenesisAeon Package 57.
12
+
13
+ > **See [DISCLAIMER.md](DISCLAIMER.md)** for a clear split between the real,
14
+ > peer-reviewed GfE mechanism and this package's own SPECULATIVE UTAC bridge.
15
+
16
+ ## What is this?
17
+
18
+ Bianconi's real GfE theory (Phys. Rev. D 111, 066001, 2025 and Phys. Rev. D
19
+ 114, 024042, 2026) shows that the *total* geometric quantum relative
20
+ entropy per unit volume stays constant while *total* entropy rises
21
+ monotonically as the universe expands — leaving room for local order
22
+ (galaxies, stars, life) without violating the second law globally. This
23
+ package implements:
24
+
25
+ 1. A simplified, illustrative version of that real entropy budget
26
+ (`gfe_cosmology.py`)
27
+ 2. Its own SPECULATIVE UTAC/CREP extension mapping the local-order margin
28
+ onto a UTAC structure-formation steepness β (`utac_bridge.py`)
29
+
30
+ ## Installation
31
+
32
+ ```bash
33
+ pip install utac-entropic-gravity
34
+ ```
35
+
36
+ ## Usage
37
+
38
+ ```python
39
+ from utac_entropic_gravity import UTACEntropicGravity
40
+
41
+ sys = UTACEntropicGravity()
42
+ result = sys.run_cycle(volumes=[1.0, 2.0, 4.0, 8.0], reference_density=1.5)
43
+
44
+ print(result["total_entropy_monotonic"]) # True -- the real GfE claim
45
+ print(result["structure_formation_betas"]) # this package's own bridge
46
+ print(sys.get_crep_state())
47
+ ```
48
+
49
+ ## Falsifiable predictions
50
+
51
+ | Prediction | Status |
52
+ |-----------|--------|
53
+ | GfE's own predictions (dark energy drifts rather than holding steady) | Untested — full equations not yet solved (per GfE authors, 2026) |
54
+ | UTAC structure-formation β correlates with local-order margin | This package's own, entirely untested framework choice |
55
+
56
+ ## References (verified 2026-08-01)
57
+
58
+ - Bianconi, G. "Gravity from entropy." arXiv:2408.14391, Phys. Rev. D 111,
59
+ 066001 (2025)
60
+ - Bianconi, G. "The Thermodynamics of the Gravity from Entropy Theory."
61
+ arXiv:2510.22545, Phys. Rev. D 114, 024042 (2026)
62
+
63
+ ## Role in the GenesisAeon Ecosystem
64
+
65
+ **Package ID:** P57 | **Domain:** cosmology / entropy dynamics
66
+
67
+ ## Development
68
+
69
+ ```bash
70
+ git clone https://github.com/GenesisAeon/utac-entropic-gravity.git
71
+ cd utac-entropic-gravity
72
+ pip install -e ".[dev]"
73
+ ruff check src tests
74
+ mypy src
75
+ pytest
76
+ ```
77
+
78
+ ## License
79
+
80
+ Dual-licensed: source code under [GPL-3.0-or-later](LICENSE-CODE),
81
+ documentation under [CC BY 4.0](LICENSE-DOCS).
82
+
83
+ ## Citation
84
+
85
+ See [CITATION.cff](CITATION.cff) and [.zenodo.json](.zenodo.json).
86
+
87
+ ---
88
+
89
+ *GenesisAeon · MOR Research Collective · August 2026*
@@ -0,0 +1,10 @@
1
+ # entropy-table bridge configuration
2
+ bridge:
3
+ source_project: "utac-entropic-gravity"
4
+ export_format: "entropy-table-v1"
5
+ domains_file: "domains.yaml"
6
+ output: "exports/entropy-table.yaml"
7
+
8
+ options:
9
+ sort_keys: false
10
+ allow_unicode: true
@@ -0,0 +1,14 @@
1
+ # Domain configuration for utac-entropic-gravity
2
+ # Compatible with entropy-table bridge format
3
+ domains:
4
+ primary:
5
+ name: "utac-entropic-gravity"
6
+ metrics: crep
7
+ description: "UTAC/CREP bridge to Bianconi's Gravity-from-Entropy theory (PRD 2025/2026) -- local order emergence within monotonic global entropy increase"
8
+
9
+ relations: []
10
+
11
+ metadata:
12
+ project: "utac-entropic-gravity"
13
+ author: "Johann Römer"
14
+ version: "1.0.0"
@@ -0,0 +1,52 @@
1
+ [project]
2
+ name = "utac-entropic-gravity"
3
+ version = "1.0.0"
4
+ description = "UTAC/CREP bridge to Bianconi's Gravity-from-Entropy theory (PRD 2025/2026) -- local order emergence within monotonic global entropy increase (GenesisAeon Package 57)"
5
+ readme = "README.md"
6
+ license = { text = "GPL-3.0-or-later" }
7
+ authors = [{ name = "GenesisAeon" }]
8
+ requires-python = ">=3.11"
9
+ keywords = ["UTAC", "CREP", "GenesisAeon", "entropy", "gravity",
10
+ "Gravity-from-Entropy", "cosmology", "dark-energy"]
11
+ classifiers = [
12
+ "Development Status :: 3 - Alpha",
13
+ "Intended Audience :: Science/Research",
14
+ "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)",
15
+ "Programming Language :: Python :: 3",
16
+ "Programming Language :: Python :: 3.11",
17
+ "Programming Language :: Python :: 3.12",
18
+ "Topic :: Scientific/Engineering :: Physics",
19
+ ]
20
+ dependencies = []
21
+
22
+ [project.optional-dependencies]
23
+ dev = ["ruff>=0.6.0", "mypy>=1.10.0", "pytest>=8.0.0", "pytest-cov>=5.0.0"]
24
+
25
+ [project.urls]
26
+ Homepage = "https://github.com/GenesisAeon/utac-entropic-gravity"
27
+ Repository = "https://github.com/GenesisAeon/utac-entropic-gravity"
28
+ Issues = "https://github.com/GenesisAeon/utac-entropic-gravity/issues"
29
+
30
+ [build-system]
31
+ requires = ["hatchling"]
32
+ build-backend = "hatchling.build"
33
+
34
+ [tool.hatch.build.targets.wheel]
35
+ packages = ["src/utac_entropic_gravity"]
36
+
37
+ [tool.ruff]
38
+ line-length = 100
39
+ target-version = "py311"
40
+
41
+ [tool.ruff.lint]
42
+ select = ["E", "F", "B", "I", "W", "UP"]
43
+
44
+ [tool.pytest.ini_options]
45
+ testpaths = ["tests"]
46
+ addopts = "--cov=utac_entropic_gravity --cov-report=term-missing -v"
47
+
48
+ [tool.mypy]
49
+ python_version = "3.11"
50
+ strict = true
51
+ warn_return_any = true
52
+ ignore_missing_imports = true
@@ -0,0 +1,43 @@
1
+ """utac-entropic-gravity -- GenesisAeon Package 57.
2
+
3
+ UTAC/CREP bridge to Ginestra Bianconi's Gravity-from-Entropy (GfE) theory:
4
+ real mechanism (constant GQRE-per-volume + monotonic total entropy increase
5
+ allows local order within global entropy increase) plus a SPECULATIVE
6
+ UTAC structure-formation-beta bridge. See DISCLAIMER.md.
7
+ """
8
+
9
+ from utac_entropic_gravity.constants import (
10
+ BETA_STRUCTURE_FORMATION_THRESHOLD,
11
+ GFE_AUTHOR,
12
+ GFE_PAPER_1_ARXIV,
13
+ GFE_PAPER_1_PRD,
14
+ GFE_PAPER_2_ARXIV,
15
+ GFE_PAPER_2_PRD,
16
+ PACKAGE_ID,
17
+ SIGMA_PHI,
18
+ )
19
+ from utac_entropic_gravity.gfe_cosmology import GfECosmology, GfEState
20
+ from utac_entropic_gravity.system import UTACEntropicGravity
21
+ from utac_entropic_gravity.utac_bridge import (
22
+ is_active_structure_formation,
23
+ structure_formation_beta,
24
+ )
25
+
26
+ __version__ = "1.0.0"
27
+
28
+ __all__ = [
29
+ "BETA_STRUCTURE_FORMATION_THRESHOLD",
30
+ "GFE_AUTHOR",
31
+ "GFE_PAPER_1_ARXIV",
32
+ "GFE_PAPER_1_PRD",
33
+ "GFE_PAPER_2_ARXIV",
34
+ "GFE_PAPER_2_PRD",
35
+ "PACKAGE_ID",
36
+ "SIGMA_PHI",
37
+ "GfECosmology",
38
+ "GfEState",
39
+ "UTACEntropicGravity",
40
+ "is_active_structure_formation",
41
+ "structure_formation_beta",
42
+ "__version__",
43
+ ]
@@ -0,0 +1,32 @@
1
+ """entropy-table YAML bridge for utac-entropic-gravity."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+
7
+ import yaml
8
+
9
+
10
+ def export_to_entropy_table(
11
+ input_path: str | Path = "domains.yaml",
12
+ output_path: str | Path = "exports/entropy-table.yaml",
13
+ ) -> Path:
14
+ """Export domain YAML to entropy-table compatible format."""
15
+ input_path = Path(input_path)
16
+ output_path = Path(output_path)
17
+
18
+ with input_path.open() as f:
19
+ data = yaml.safe_load(f)
20
+
21
+ entropy_data = {
22
+ "domains": data.get("domains", {}),
23
+ "relations": data.get("relations", []),
24
+ "metadata": {
25
+ **data.get("metadata", {}),
26
+ "generated_by": "utac-entropic-gravity (diamond-setup v1.0.0)",
27
+ },
28
+ }
29
+
30
+ output_path.parent.mkdir(parents=True, exist_ok=True)
31
+ output_path.write_text(yaml.dump(entropy_data, sort_keys=False, allow_unicode=True))
32
+ return output_path
@@ -0,0 +1,37 @@
1
+ """Constants for utac-entropic-gravity (GenesisAeon Package 57).
2
+
3
+ Real, verified reference constants from Bianconi's Gravity-from-Entropy
4
+ (GfE) theory -- checked against the actual arXiv/PRD abstracts (2026-08-01),
5
+ not paraphrased from secondary sources.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ import math
11
+
12
+ # ── Shared ecosystem constants ────────────────────────────────────────────
13
+ SIGMA_PHI: float = 1.0 / 16.0 # 0.0625, Frame Principle
14
+ PHI: float = (1.0 + math.sqrt(5.0)) / 2.0
15
+
16
+ # ── Real GfE theory references (verified via arXiv abstracts, 2026-08-01) ──
17
+ GFE_PAPER_1_ARXIV: str = "2408.14391"
18
+ GFE_PAPER_1_PRD: str = "Phys. Rev. D 111, 066001 (2025)"
19
+ GFE_PAPER_2_ARXIV: str = "2510.22545"
20
+ GFE_PAPER_2_PRD: str = "Phys. Rev. D 114, 024042 (2026)"
21
+ GFE_AUTHOR: str = "Ginestra Bianconi"
22
+
23
+ # GfE's core structural claims (real, from the verified abstracts):
24
+ # - Total Geometric Quantum Relative Entropy (GQRE) per unit volume is
25
+ # CONSTANT (a conservation-law-like property of relative entropy).
26
+ # - Total entropy increases MONOTONICALLY over cosmic time.
27
+ # - The two together allow local order (decreasing local entropy density
28
+ # as space expands) without violating the second law globally -- this
29
+ # is the real mechanism GfE proposes, not a UTAC invention.
30
+
31
+ # ── Package-specific: UTAC bridge parameters (SPECULATIVE, see DISCLAIMER) ──
32
+ # Framework convention (not independently derived from GfE's own equations):
33
+ # maps GfE's local/global entropy-rate ratio onto a UTAC steepness beta.
34
+ K_ENTROPY_BRIDGE: float = 1.0
35
+ BETA_STRUCTURE_FORMATION_THRESHOLD: float = 4.2 # matches ecosystem's beta-universality band
36
+
37
+ PACKAGE_ID: int = 57
@@ -0,0 +1,105 @@
1
+ """A toy model of Bianconi's Gravity-from-Entropy (GfE) entropy budget.
2
+
3
+ Real mechanism (Bianconi, arXiv:2408.14391 / PRD 111,066001 and
4
+ arXiv:2510.22545 / PRD 114,024042, verified 2026-08-01): GfE cosmologies
5
+ have (a) a constant Geometric Quantum Relative Entropy (GQRE) *per unit
6
+ volume*, and (b) a total entropy that increases *monotonically* over
7
+ cosmic time. Because volume expands while the GQRE-per-volume stays fixed,
8
+ the *local* entropy density associated with ordered structure can locally
9
+ decrease even as the *total* (volume-integrated) entropy rises -- this is
10
+ the real mechanism Bianconi proposes for how galaxies, stars, and life can
11
+ form without violating the second law globally.
12
+
13
+ This module implements a simplified, illustrative version of that entropy
14
+ budget (not Bianconi's actual field equations, which require full GR/
15
+ quantum-relative-entropy machinery well beyond this package's scope) --
16
+ just enough to make the local-vs-global entropy relationship concrete and
17
+ testable in code. See DISCLAIMER.md.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ from dataclasses import dataclass
23
+
24
+
25
+ @dataclass(frozen=True)
26
+ class GfEState:
27
+ """A single point in the toy GfE entropy budget.
28
+
29
+ volume: comoving volume (arbitrary units, monotonically increasing
30
+ with cosmic time in an expanding universe -- caller supplies it,
31
+ this module does not derive an expansion history).
32
+ gqre_per_volume: the (real-mechanism) constant GQRE density. Held fixed
33
+ across a GfECosmology run by construction (see class docstring).
34
+ """
35
+
36
+ time: float
37
+ volume: float
38
+ gqre_per_volume: float
39
+
40
+ @property
41
+ def total_entropy(self) -> float:
42
+ """S_total = GQRE-per-volume * volume -- increases as volume grows."""
43
+ return self.gqre_per_volume * self.volume
44
+
45
+ @property
46
+ def local_entropy_density(self) -> float:
47
+ """Local entropy density -- same as gqre_per_volume in this toy
48
+ model (held constant), included for clarity/API symmetry with
49
+ total_entropy."""
50
+ return self.gqre_per_volume
51
+
52
+
53
+ class GfECosmology:
54
+ """Tracks the real GfE local/global entropy relationship over time.
55
+
56
+ Usage
57
+ -----
58
+ >>> cosmo = GfECosmology(gqre_per_volume=1.0)
59
+ >>> states = cosmo.evolve(volumes=[1.0, 2.0, 4.0, 8.0])
60
+ >>> [s.total_entropy for s in states]
61
+ [1.0, 2.0, 4.0, 8.0]
62
+ >>> [s.local_entropy_density for s in states]
63
+ [1.0, 1.0, 1.0, 1.0]
64
+ """
65
+
66
+ def __init__(self, gqre_per_volume: float = 1.0) -> None:
67
+ if gqre_per_volume <= 0:
68
+ raise ValueError("gqre_per_volume must be positive (GQRE is a relative entropy)")
69
+ self._gqre_per_volume = gqre_per_volume
70
+ self._states: list[GfEState] = []
71
+
72
+ def evolve(self, volumes: list[float]) -> list[GfEState]:
73
+ """Evolve through a sequence of (monotonically increasing) volumes.
74
+
75
+ Raises ValueError if volumes is not monotonically non-decreasing
76
+ (an expanding universe's comoving volume cannot shrink).
77
+ """
78
+ if any(v <= 0 for v in volumes):
79
+ raise ValueError("all volumes must be positive")
80
+ for prev, cur in zip(volumes, volumes[1:], strict=False):
81
+ if cur < prev:
82
+ raise ValueError("volumes must be monotonically non-decreasing (expansion)")
83
+ self._states = [
84
+ GfEState(time=float(i), volume=v, gqre_per_volume=self._gqre_per_volume)
85
+ for i, v in enumerate(volumes)
86
+ ]
87
+ return list(self._states)
88
+
89
+ def total_entropy_is_monotonic(self) -> bool:
90
+ """Verify the real GfE claim: total entropy increases monotonically."""
91
+ totals = [s.total_entropy for s in self._states]
92
+ return all(b >= a for a, b in zip(totals, totals[1:], strict=False))
93
+
94
+ def local_order_margin(self, reference_density: float) -> list[float]:
95
+ """How far local entropy density sits below a reference/critical
96
+ density -- the real mechanism's "room for local order" quantity.
97
+
98
+ Positive values mean local entropy density is below the reference
99
+ (order/structure can exist); this toy model keeps local density
100
+ constant by construction, so the margin only changes if the caller
101
+ varies gqre_per_volume across instances, or reference_density
102
+ itself represents a changing critical threshold (e.g. a cooling
103
+ universe's structure-formation threshold).
104
+ """
105
+ return [reference_density - s.local_entropy_density for s in self._states]
@@ -0,0 +1,144 @@
1
+ """UTACEntropicGravity -- Diamond interface (GenesisAeon Package 57).
2
+
3
+ Manual Diamond-interface implementation (mirrors vrig-cosmological and
4
+ utac-metastable-clusters), avoiding DiamondPackage's mypy-strict
5
+ "cannot subclass Any" issue.
6
+ """
7
+
8
+ from __future__ import annotations
9
+
10
+ from utac_entropic_gravity.constants import (
11
+ BETA_STRUCTURE_FORMATION_THRESHOLD,
12
+ GFE_AUTHOR,
13
+ GFE_PAPER_1_ARXIV,
14
+ GFE_PAPER_2_ARXIV,
15
+ PACKAGE_ID,
16
+ SIGMA_PHI,
17
+ )
18
+ from utac_entropic_gravity.gfe_cosmology import GfECosmology
19
+ from utac_entropic_gravity.utac_bridge import (
20
+ is_active_structure_formation,
21
+ structure_formation_beta,
22
+ )
23
+
24
+
25
+ class UTACEntropicGravity:
26
+ """GenesisAeon Package 57 -- UTAC/CREP bridge to Bianconi's GfE theory.
27
+
28
+ Usage
29
+ -----
30
+ >>> sys = UTACEntropicGravity()
31
+ >>> result = sys.run_cycle(volumes=[1.0, 2.0, 4.0, 8.0], reference_density=2.0)
32
+ >>> result["total_entropy_monotonic"]
33
+ True
34
+ """
35
+
36
+ def __init__(self, gqre_per_volume: float = 1.0) -> None:
37
+ self._cosmology = GfECosmology(gqre_per_volume=gqre_per_volume)
38
+ self._last_margins: list[float] = []
39
+ self._cycles_completed = 0
40
+
41
+ # ------------------------------------------------------------------
42
+ # Diamond interface
43
+ # ------------------------------------------------------------------
44
+
45
+ def run_cycle(
46
+ self,
47
+ volumes: list[float] | None = None,
48
+ reference_density: float = 2.0,
49
+ ) -> dict[str, object]:
50
+ """Evolve the GfE entropy budget and map it through the UTAC bridge."""
51
+ self._cycles_completed += 1
52
+ volumes = volumes or [1.0, 2.0, 4.0, 8.0]
53
+ states = self._cosmology.evolve(volumes)
54
+ self._last_margins = self._cosmology.local_order_margin(reference_density)
55
+
56
+ betas: list[float | None] = []
57
+ for margin in self._last_margins:
58
+ try:
59
+ betas.append(structure_formation_beta(margin))
60
+ except ValueError:
61
+ betas.append(None)
62
+
63
+ return {
64
+ "total_entropy": [s.total_entropy for s in states],
65
+ "local_entropy_density": [s.local_entropy_density for s in states],
66
+ "total_entropy_monotonic": self._cosmology.total_entropy_is_monotonic(),
67
+ "local_order_margins": self._last_margins,
68
+ "structure_formation_betas": betas,
69
+ "status": "SPECULATIVE (UTAC bridge) / real mechanism (GfE entropy budget)",
70
+ }
71
+
72
+ def get_crep_state(self) -> dict[str, object]:
73
+ """Return current CREP state derived from the GfE/UTAC bridge."""
74
+ if not self._last_margins:
75
+ return {"Gamma": 0.0, "C": 0.0, "R": 0.0, "E": 0.0, "P": SIGMA_PHI}
76
+ positive_margins = [m for m in self._last_margins if m > 0]
77
+ active_fraction = len(positive_margins) / len(self._last_margins)
78
+ return {
79
+ "Gamma": SIGMA_PHI * active_fraction,
80
+ "C": active_fraction,
81
+ "R": 1.0 - active_fraction,
82
+ "E": SIGMA_PHI,
83
+ "P": SIGMA_PHI,
84
+ "domain": "cosmology-entropy",
85
+ "scale": "cosmic",
86
+ }
87
+
88
+ def get_utac_state(self) -> dict[str, object]:
89
+ """Return UTAC parameter state (mean structure-formation beta)."""
90
+ if not self._last_margins:
91
+ return {"r": 0.0, "K": BETA_STRUCTURE_FORMATION_THRESHOLD, "sigma": 2.2, "beta": None}
92
+ valid = [m for m in self._last_margins if m > 0]
93
+ mean_beta = (
94
+ sum(structure_formation_beta(m) for m in valid) / len(valid) if valid else None
95
+ )
96
+ return {
97
+ "r": len(valid) / len(self._last_margins),
98
+ "K": BETA_STRUCTURE_FORMATION_THRESHOLD,
99
+ "sigma": 2.2,
100
+ "beta": mean_beta,
101
+ }
102
+
103
+ def get_phase_events(self) -> list[dict[str, object]]:
104
+ """Return phase events: active-structure-formation regime transitions."""
105
+ events = []
106
+ for i, margin in enumerate(self._last_margins):
107
+ if margin > 0 and is_active_structure_formation(margin):
108
+ events.append({
109
+ "type": "active_structure_formation",
110
+ "step": i,
111
+ "beta": structure_formation_beta(margin),
112
+ })
113
+ return events
114
+
115
+ def to_zenodo_record(self) -> dict[str, object]:
116
+ """Return metadata dict suitable for Zenodo deposition."""
117
+ return {
118
+ "title": (
119
+ "UTAC/CREP bridge to the Gravity-from-Entropy theory -- "
120
+ "GenesisAeon Package 57"
121
+ ),
122
+ "description": (
123
+ f"Real mechanism from {GFE_AUTHOR}'s Gravity-from-Entropy theory "
124
+ f"(arXiv:{GFE_PAPER_1_ARXIV}, arXiv:{GFE_PAPER_2_ARXIV}): constant "
125
+ "GQRE-per-volume + monotonically increasing total entropy allows "
126
+ "local order within global entropy increase. UTAC/CREP structure-"
127
+ "formation-beta bridge is this package's own SPECULATIVE extension, "
128
+ "not part of the original theory -- see DISCLAIMER.md."
129
+ ),
130
+ "creators": [{"name": "Römer, Johann", "affiliation": "MOR Research Collective"}],
131
+ "keywords": [
132
+ "UTAC", "CREP", "GenesisAeon", "entropy", "gravity",
133
+ "Gravity-from-Entropy", "cosmology", "dark energy",
134
+ ],
135
+ "package_id": PACKAGE_ID,
136
+ "status": "speculative bridge to a real, peer-reviewed theory",
137
+ }
138
+
139
+ @property
140
+ def cycles_completed(self) -> int:
141
+ return self._cycles_completed
142
+
143
+ def __repr__(self) -> str:
144
+ return f"UTACEntropicGravity(package={PACKAGE_ID}, cycles={self._cycles_completed})"
@@ -0,0 +1,43 @@
1
+ """UTAC/CREP bridge to the GfE local-order-margin quantity.
2
+
3
+ SPECULATIVE (see DISCLAIMER.md): this is the ecosystem's own extension,
4
+ not part of Bianconi's GfE theory. It maps the real local_order_margin
5
+ (gfe_cosmology.py) onto a UTAC steepness beta, using the same "k / driver"
6
+ convention already used elsewhere in the ecosystem (e.g. the USGS seismic
7
+ adapter's k/b-value mapping, utac-metastable-clusters' k/recycling-fraction
8
+ mapping) -- an untested, falsifiable framework choice, not an independently
9
+ derived physical result.
10
+ """
11
+
12
+ from __future__ import annotations
13
+
14
+ from utac_entropic_gravity.constants import BETA_STRUCTURE_FORMATION_THRESHOLD, K_ENTROPY_BRIDGE
15
+
16
+
17
+ def structure_formation_beta(local_order_margin: float) -> float:
18
+ """UTAC steepness beta = k / local_order_margin.
19
+
20
+ Framework convention: a large local-order margin (local entropy density
21
+ far below the structure-formation threshold) means gradual, low-beta
22
+ structure formation; a small or vanishing margin means sharp,
23
+ threshold-like (high-beta) structure formation as the local density
24
+ approaches the critical value from below.
25
+
26
+ Raises ValueError if local_order_margin <= 0 (no margin -> no structure
27
+ formation possible in this framework, beta is undefined rather than
28
+ infinite).
29
+ """
30
+ if local_order_margin <= 0:
31
+ raise ValueError(
32
+ "local_order_margin must be positive -- a non-positive margin means "
33
+ "local entropy density has reached or exceeded the reference threshold, "
34
+ "outside this framework's structure-formation regime"
35
+ )
36
+ return K_ENTROPY_BRIDGE / local_order_margin
37
+
38
+
39
+ def is_active_structure_formation(local_order_margin: float) -> bool:
40
+ """True if the mapped beta exceeds BETA_STRUCTURE_FORMATION_THRESHOLD (4.2,
41
+ the ecosystem's beta-universality band centre) -- a falsifiable,
42
+ untested prediction, not a measured result."""
43
+ return structure_formation_beta(local_order_margin) > BETA_STRUCTURE_FORMATION_THRESHOLD
File without changes
@@ -0,0 +1,138 @@
1
+ """Tests for utac-entropic-gravity."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import pytest
6
+
7
+ from utac_entropic_gravity import (
8
+ BETA_STRUCTURE_FORMATION_THRESHOLD,
9
+ GfECosmology,
10
+ UTACEntropicGravity,
11
+ __version__,
12
+ is_active_structure_formation,
13
+ structure_formation_beta,
14
+ )
15
+
16
+
17
+ def test_version() -> None:
18
+ assert __version__ == "1.0.0"
19
+
20
+
21
+ class TestGfECosmology:
22
+ def test_total_entropy_increases_with_volume(self) -> None:
23
+ cosmo = GfECosmology(gqre_per_volume=1.0)
24
+ states = cosmo.evolve([1.0, 2.0, 4.0, 8.0])
25
+ totals = [s.total_entropy for s in states]
26
+ assert totals == [1.0, 2.0, 4.0, 8.0]
27
+
28
+ def test_local_entropy_density_stays_constant(self) -> None:
29
+ """Real GfE claim: GQRE per unit volume is constant."""
30
+ cosmo = GfECosmology(gqre_per_volume=2.5)
31
+ states = cosmo.evolve([1.0, 5.0, 100.0])
32
+ densities = [s.local_entropy_density for s in states]
33
+ assert all(d == pytest.approx(2.5) for d in densities)
34
+
35
+ def test_total_entropy_is_monotonic_true_for_expansion(self) -> None:
36
+ cosmo = GfECosmology()
37
+ cosmo.evolve([1.0, 2.0, 3.0, 3.0, 5.0])
38
+ assert cosmo.total_entropy_is_monotonic() is True
39
+
40
+ def test_shrinking_volume_raises(self) -> None:
41
+ cosmo = GfECosmology()
42
+ with pytest.raises(ValueError):
43
+ cosmo.evolve([2.0, 1.0])
44
+
45
+ def test_nonpositive_volume_raises(self) -> None:
46
+ cosmo = GfECosmology()
47
+ with pytest.raises(ValueError):
48
+ cosmo.evolve([1.0, 0.0])
49
+
50
+ def test_nonpositive_gqre_raises(self) -> None:
51
+ with pytest.raises(ValueError):
52
+ GfECosmology(gqre_per_volume=0.0)
53
+
54
+ def test_local_order_margin(self) -> None:
55
+ cosmo = GfECosmology(gqre_per_volume=1.0)
56
+ cosmo.evolve([1.0, 2.0])
57
+ margins = cosmo.local_order_margin(reference_density=3.0)
58
+ # local density is constant at 1.0, so margin = 3.0 - 1.0 = 2.0 each step
59
+ assert margins == pytest.approx([2.0, 2.0])
60
+
61
+
62
+ class TestUtacBridge:
63
+ def test_beta_decreases_with_larger_margin(self) -> None:
64
+ assert structure_formation_beta(0.1) > structure_formation_beta(1.0)
65
+
66
+ def test_zero_margin_raises(self) -> None:
67
+ with pytest.raises(ValueError):
68
+ structure_formation_beta(0.0)
69
+
70
+ def test_negative_margin_raises(self) -> None:
71
+ with pytest.raises(ValueError):
72
+ structure_formation_beta(-0.5)
73
+
74
+ def test_active_regime_above_threshold(self) -> None:
75
+ # beta = 1.0 / 0.1 = 10 > BETA_STRUCTURE_FORMATION_THRESHOLD (4.2)
76
+ assert structure_formation_beta(0.1) > BETA_STRUCTURE_FORMATION_THRESHOLD
77
+ assert is_active_structure_formation(0.1) is True
78
+
79
+ def test_inactive_regime_below_threshold(self) -> None:
80
+ # beta = 1.0 / 1.0 = 1.0 < BETA_STRUCTURE_FORMATION_THRESHOLD (4.2)
81
+ assert is_active_structure_formation(1.0) is False
82
+
83
+
84
+ class TestUTACEntropicGravity:
85
+ def test_run_cycle_returns_dict(self) -> None:
86
+ sys_ = UTACEntropicGravity()
87
+ result = sys_.run_cycle()
88
+ assert isinstance(result, dict)
89
+ assert result["total_entropy_monotonic"] is True
90
+
91
+ def test_cycles_completed_increments(self) -> None:
92
+ sys_ = UTACEntropicGravity()
93
+ assert sys_.cycles_completed == 0
94
+ sys_.run_cycle()
95
+ assert sys_.cycles_completed == 1
96
+
97
+ def test_crep_state_keys(self) -> None:
98
+ sys_ = UTACEntropicGravity()
99
+ sys_.run_cycle()
100
+ state = sys_.get_crep_state()
101
+ assert set(state) >= {"Gamma", "C", "R", "E", "P"}
102
+
103
+ def test_utac_state_keys(self) -> None:
104
+ sys_ = UTACEntropicGravity()
105
+ sys_.run_cycle()
106
+ state = sys_.get_utac_state()
107
+ assert set(state) == {"r", "K", "sigma", "beta"}
108
+
109
+ def test_phase_events_is_list(self) -> None:
110
+ sys_ = UTACEntropicGravity()
111
+ sys_.run_cycle()
112
+ events = sys_.get_phase_events()
113
+ assert isinstance(events, list)
114
+
115
+ def test_small_reference_density_generates_no_active_events(self) -> None:
116
+ # reference_density <= gqre_per_volume (1.0) -> margin <= 0 -> no active events
117
+ sys_ = UTACEntropicGravity()
118
+ sys_.run_cycle(reference_density=0.5)
119
+ assert sys_.get_phase_events() == []
120
+
121
+ def test_large_reference_density_generates_active_events(self) -> None:
122
+ # margin = reference_density - 1.0 = 0.1 -> beta = 10 > 4.2 -> active
123
+ sys_ = UTACEntropicGravity()
124
+ sys_.run_cycle(reference_density=1.1)
125
+ events = sys_.get_phase_events()
126
+ assert any(e["type"] == "active_structure_formation" for e in events)
127
+
128
+ def test_zenodo_record_keys(self) -> None:
129
+ sys_ = UTACEntropicGravity()
130
+ record = sys_.to_zenodo_record()
131
+ assert set(record) >= {"title", "description", "creators", "package_id"}
132
+ assert record["package_id"] == 57
133
+ assert "2408.14391" in record["description"]
134
+
135
+ def test_repr(self) -> None:
136
+ sys_ = UTACEntropicGravity()
137
+ assert "UTACEntropicGravity" in repr(sys_)
138
+ assert "package=57" in repr(sys_)