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.
- utac_entropic_gravity-1.0.0/.github/workflows/ci.yml +44 -0
- utac_entropic_gravity-1.0.0/.github/workflows/release.yml +118 -0
- utac_entropic_gravity-1.0.0/.gitignore +22 -0
- utac_entropic_gravity-1.0.0/.pre-commit-config.yaml +14 -0
- utac_entropic_gravity-1.0.0/.zenodo.json +35 -0
- utac_entropic_gravity-1.0.0/AGENT.md +26 -0
- utac_entropic_gravity-1.0.0/CITATION.cff +31 -0
- utac_entropic_gravity-1.0.0/DISCLAIMER.md +64 -0
- utac_entropic_gravity-1.0.0/LICENSE +11 -0
- utac_entropic_gravity-1.0.0/LICENSE-CODE +45 -0
- utac_entropic_gravity-1.0.0/LICENSE-DOCS +28 -0
- utac_entropic_gravity-1.0.0/PKG-INFO +117 -0
- utac_entropic_gravity-1.0.0/README.md +89 -0
- utac_entropic_gravity-1.0.0/config/entropy.yaml +10 -0
- utac_entropic_gravity-1.0.0/domains.yaml +14 -0
- utac_entropic_gravity-1.0.0/pyproject.toml +52 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/__init__.py +43 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/bridge.py +32 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/constants.py +37 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/gfe_cosmology.py +105 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/system.py +144 -0
- utac_entropic_gravity-1.0.0/src/utac_entropic_gravity/utac_bridge.py +43 -0
- utac_entropic_gravity-1.0.0/tests/__init__.py +0 -0
- utac_entropic_gravity-1.0.0/tests/test_main.py +138 -0
|
@@ -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,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
|
+
[](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml)
|
|
32
|
+
[](https://www.python.org)
|
|
33
|
+
[](LICENSE-CODE)
|
|
34
|
+
[](LICENSE-DOCS)
|
|
35
|
+
[](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
|
+
[](https://github.com/GenesisAeon/utac-entropic-gravity/actions/workflows/ci.yml)
|
|
4
|
+
[](https://www.python.org)
|
|
5
|
+
[](LICENSE-CODE)
|
|
6
|
+
[](LICENSE-DOCS)
|
|
7
|
+
[](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,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_)
|