utac-metastable-clusters 1.0.0__py3-none-any.whl
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_metastable_clusters/__init__.py +31 -0
- utac_metastable_clusters/bridge.py +32 -0
- utac_metastable_clusters/cluster_entropy_node.py +96 -0
- utac_metastable_clusters/constants.py +42 -0
- utac_metastable_clusters/sgr_a_modulator.py +75 -0
- utac_metastable_clusters/system.py +134 -0
- utac_metastable_clusters-1.0.0.dist-info/METADATA +131 -0
- utac_metastable_clusters-1.0.0.dist-info/RECORD +12 -0
- utac_metastable_clusters-1.0.0.dist-info/WHEEL +4 -0
- utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE +11 -0
- utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE-CODE +45 -0
- utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE-DOCS +28 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"""utac-metastable-clusters -- GenesisAeon Package 56.
|
|
2
|
+
|
|
3
|
+
Metastable star clusters and Sagittarius A* as UTAC entropy-return nodes:
|
|
4
|
+
a realistic, non-exotic alternative to white holes, plus a UTAC-framework
|
|
5
|
+
application to star formation near the Galactic Center. SPECULATIVE, see
|
|
6
|
+
DISCLAIMER.md.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from utac_metastable_clusters.cluster_entropy_node import ClusterEntropyNode, TidalTailSurvey
|
|
10
|
+
from utac_metastable_clusters.constants import (
|
|
11
|
+
BETA_ACTIVE_THRESHOLD,
|
|
12
|
+
PACKAGE_ID,
|
|
13
|
+
SIGMA_PHI,
|
|
14
|
+
V_RIG_KM_S,
|
|
15
|
+
)
|
|
16
|
+
from utac_metastable_clusters.sgr_a_modulator import SgrAEnvironment
|
|
17
|
+
from utac_metastable_clusters.system import UTACMetastableClusters
|
|
18
|
+
|
|
19
|
+
__version__ = "1.0.0"
|
|
20
|
+
|
|
21
|
+
__all__ = [
|
|
22
|
+
"BETA_ACTIVE_THRESHOLD",
|
|
23
|
+
"PACKAGE_ID",
|
|
24
|
+
"SIGMA_PHI",
|
|
25
|
+
"V_RIG_KM_S",
|
|
26
|
+
"ClusterEntropyNode",
|
|
27
|
+
"SgrAEnvironment",
|
|
28
|
+
"TidalTailSurvey",
|
|
29
|
+
"UTACMetastableClusters",
|
|
30
|
+
"__version__",
|
|
31
|
+
]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""entropy-table YAML bridge for utac-metastable-clusters."""
|
|
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-metastable-clusters (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,96 @@
|
|
|
1
|
+
"""Metastable star clusters as UTAC entropy-return nodes.
|
|
2
|
+
|
|
3
|
+
SPECULATIVE (see DISCLAIMER.md): a non-exotic alternative to the white-hole
|
|
4
|
+
hypothesis. White holes are unobserved and thermodynamically problematic;
|
|
5
|
+
this module proposes that open/globular star clusters play an analogous
|
|
6
|
+
"distributed entropy-return" role using known, real processes (stellar
|
|
7
|
+
winds, supernovae, tidal ejection) rather than a hypothetical time-reversed
|
|
8
|
+
black hole. The UTAC steepness beta here is the framework's own construct
|
|
9
|
+
(k / mass_recycling_fraction, mirroring the k/alpha and k/b-value mappings
|
|
10
|
+
used elsewhere in the ecosystem, e.g. the USGS seismic adapter) -- not a
|
|
11
|
+
measured quantity, an untested, falsifiable prediction (see
|
|
12
|
+
BETA_ACTIVE_THRESHOLD, DISCLAIMER.md falsification conditions).
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
from dataclasses import dataclass
|
|
18
|
+
|
|
19
|
+
from utac_metastable_clusters.constants import (
|
|
20
|
+
BETA_ACTIVE_THRESHOLD,
|
|
21
|
+
GAIA_DR3_ASYMMETRIC_TAILS,
|
|
22
|
+
GAIA_DR3_CLUSTERS_SURVEYED,
|
|
23
|
+
GAIA_DR3_CLUSTERS_WITH_TAILS,
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
# UTAC mapping constant k (framework convention, not independently derived
|
|
27
|
+
# here -- see cluster_entropy_node module docstring).
|
|
28
|
+
K_CLUSTER: float = 1.0
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
@dataclass(frozen=True)
|
|
32
|
+
class TidalTailSurvey:
|
|
33
|
+
"""Real Gaia DR3 tidal-tail survey data (verified 2026-08-01, not re-derived).
|
|
34
|
+
|
|
35
|
+
Source: a 2025 Astronomy & Astrophysics study mapping tidal tails of
|
|
36
|
+
nearby open clusters with Gaia DR3. 19 of 21 surveyed clusters show
|
|
37
|
+
tidal tails; 4 of those 19 are tilted away from the Galactic Centre
|
|
38
|
+
direction, an asymmetry the standard tidal-disruption picture does not
|
|
39
|
+
predict -- used here as real, independently-confirmed input data, not
|
|
40
|
+
as evidence for the UTAC entropy-node hypothesis itself.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
clusters_surveyed: int = GAIA_DR3_CLUSTERS_SURVEYED
|
|
44
|
+
clusters_with_tails: int = GAIA_DR3_CLUSTERS_WITH_TAILS
|
|
45
|
+
asymmetric_tails: int = GAIA_DR3_ASYMMETRIC_TAILS
|
|
46
|
+
|
|
47
|
+
@property
|
|
48
|
+
def tail_fraction(self) -> float:
|
|
49
|
+
"""Fraction of surveyed clusters with any detected tidal tail."""
|
|
50
|
+
return self.clusters_with_tails / self.clusters_surveyed
|
|
51
|
+
|
|
52
|
+
@property
|
|
53
|
+
def asymmetry_fraction(self) -> float:
|
|
54
|
+
"""Fraction of tailed clusters with an asymmetric (tilted) tail."""
|
|
55
|
+
return self.asymmetric_tails / self.clusters_with_tails
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
@dataclass(frozen=True)
|
|
59
|
+
class ClusterEntropyNode:
|
|
60
|
+
"""A single star cluster modelled as a UTAC entropy-return node.
|
|
61
|
+
|
|
62
|
+
mass_recycling_fraction: fraction of cluster mass actively being
|
|
63
|
+
returned to the interstellar medium per unit time via stellar winds,
|
|
64
|
+
supernovae, and tidal ejection combined (a real, physically meaningful
|
|
65
|
+
quantity in principle -- here supplied by the caller, not computed from
|
|
66
|
+
first principles, since that requires cluster-specific stellar-
|
|
67
|
+
population synthesis outside this module's scope).
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
name: str
|
|
71
|
+
mass_recycling_fraction: float # dimensionless, in (0, 1]
|
|
72
|
+
|
|
73
|
+
def beta(self) -> float:
|
|
74
|
+
"""UTAC steepness beta = k / mass_recycling_fraction.
|
|
75
|
+
|
|
76
|
+
Framework convention (see module docstring): higher recycling
|
|
77
|
+
fraction -> lower beta (smoother, more continuous entropy return);
|
|
78
|
+
lower recycling fraction -> higher beta (sharper, more threshold-like
|
|
79
|
+
return, e.g. dominated by rare, high-mass tidal-ejection events).
|
|
80
|
+
"""
|
|
81
|
+
if self.mass_recycling_fraction <= 0:
|
|
82
|
+
raise ValueError("mass_recycling_fraction must be positive")
|
|
83
|
+
return K_CLUSTER / self.mass_recycling_fraction
|
|
84
|
+
|
|
85
|
+
def is_active_regime(self) -> bool:
|
|
86
|
+
"""True if beta exceeds the falsifiable BETA_ACTIVE_THRESHOLD (=7)."""
|
|
87
|
+
return self.beta() > BETA_ACTIVE_THRESHOLD
|
|
88
|
+
|
|
89
|
+
def summary(self) -> dict[str, object]:
|
|
90
|
+
return {
|
|
91
|
+
"name": self.name,
|
|
92
|
+
"mass_recycling_fraction": self.mass_recycling_fraction,
|
|
93
|
+
"beta": self.beta(),
|
|
94
|
+
"active_regime": self.is_active_regime(),
|
|
95
|
+
"status": "SPECULATIVE",
|
|
96
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""Constants for utac-metastable-clusters (GenesisAeon Package 56).
|
|
2
|
+
|
|
3
|
+
v_RIG value corrected 2026-08-01: c/(alpha_inv*Phi) with CODATA-2018 alpha
|
|
4
|
+
gives ~1352.07 km/s, not the ~1351.8 km/s figure that briefly (and
|
|
5
|
+
incorrectly) circulated in FELDTHEORIE_EPISTEMIC_MAP.md on 2026-07-31.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from __future__ import annotations
|
|
9
|
+
|
|
10
|
+
import math
|
|
11
|
+
|
|
12
|
+
# ── Shared UTAC/Feldtheorie constants (see vrig-cosmological, Feldtheorie) ──
|
|
13
|
+
C_KM_S: float = 299_792.458
|
|
14
|
+
ALPHA_INV: float = 137.035_999_084 # CODATA 2018
|
|
15
|
+
PHI: float = (1.0 + math.sqrt(5.0)) / 2.0
|
|
16
|
+
V_RIG_KM_S: float = C_KM_S / (ALPHA_INV * PHI) # ~1352.07 km/s
|
|
17
|
+
SIGMA_PHI: float = 1.0 / 16.0 # 0.0625, Frame Principle
|
|
18
|
+
|
|
19
|
+
# ── Package-specific: β threshold predictions ────────────────────────────
|
|
20
|
+
# Both source preprints predict beta > 7 in "active" (entropy-recycling)
|
|
21
|
+
# regions -- an untested, falsifiable prediction, not a measured result.
|
|
22
|
+
BETA_ACTIVE_THRESHOLD: float = 7.0
|
|
23
|
+
|
|
24
|
+
# ── Real, independently-verified reference data (2026-08-01) ────────────
|
|
25
|
+
# Gaia DR3 tidal-tail survey (real 2025 A&A study): 19 of 21 nearby open
|
|
26
|
+
# clusters show tidal tails, several tilted away from the Galactic Centre
|
|
27
|
+
# direction (an asymmetry the standard tidal-formation picture does not
|
|
28
|
+
# predict). Verified via WebSearch, not re-derived here.
|
|
29
|
+
GAIA_DR3_CLUSTERS_WITH_TAILS: int = 19
|
|
30
|
+
GAIA_DR3_CLUSTERS_SURVEYED: int = 21
|
|
31
|
+
GAIA_DR3_ASYMMETRIC_TAILS: int = 4 # tilted away from Galactic Centre
|
|
32
|
+
|
|
33
|
+
# High-redshift protocluster A2744-z7p9OD -- real, JWST-NIRSpec-confirmed
|
|
34
|
+
# (see en.wikipedia.org/wiki/A2744z7p9OD; GLASS-JWST XIV, ApJL 2023).
|
|
35
|
+
PROTOCLUSTER_REDSHIFT: float = 7.88
|
|
36
|
+
PROTOCLUSTER_HALO_MASS_MSUN: float = 2e15 # present-day estimate, ~Coma-cluster scale
|
|
37
|
+
|
|
38
|
+
# ── Model-comparison convention used by the source preprints ─────────────
|
|
39
|
+
DELTA_AIC_SIGNIFICANT: float = 10.0 # null-model rejection threshold
|
|
40
|
+
|
|
41
|
+
# ── Package metadata ──────────────────────────────────────────────────────
|
|
42
|
+
PACKAGE_ID: int = 56
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"""Sagittarius A* as a metastable entropy modulator.
|
|
2
|
+
|
|
3
|
+
SPECULATIVE (see DISCLAIMER.md): a UTAC-framework explanation for the real,
|
|
4
|
+
actively-studied astrophysical puzzle of active star formation within a few
|
|
5
|
+
light-years of the Galactic Center despite extreme tidal/radiative
|
|
6
|
+
conditions -- the "paradox of youth", documented via real ALMA/JWST/GRAVITY
|
|
7
|
+
observations. This module does NOT repeat the unsupported "13.5 MHz
|
|
8
|
+
resonance in Sagittarius A*" claim found in a related preprint (The 0.0625
|
|
9
|
+
Invariant, Zenodo 18310715) -- a literature check (2026-08-01) found no
|
|
10
|
+
observational basis for that specific extension of the (separately, solidly
|
|
11
|
+
verified) neural/microtubule 13.5 MHz finding.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from __future__ import annotations
|
|
15
|
+
|
|
16
|
+
from dataclasses import dataclass
|
|
17
|
+
|
|
18
|
+
from utac_metastable_clusters.constants import BETA_ACTIVE_THRESHOLD, SIGMA_PHI
|
|
19
|
+
|
|
20
|
+
# UTAC mapping constant for gravitational-compression-driven entropy
|
|
21
|
+
# minima (framework convention, not independently derived here).
|
|
22
|
+
K_SGR_A: float = 1.0
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@dataclass(frozen=True)
|
|
26
|
+
class SgrAEnvironment:
|
|
27
|
+
"""A region of the Sgr A* environment modelled as an entropy modulator.
|
|
28
|
+
|
|
29
|
+
tidal_compression: dimensionless proxy for gravitational tidal
|
|
30
|
+
compression strength relative to a reference "quiescent ISM" value
|
|
31
|
+
(>1 means compression-dominated, i.e. closer to the black hole or in a
|
|
32
|
+
denser sub-structure). Supplied by the caller -- this module does not
|
|
33
|
+
derive it from raw orbital/density data.
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
region: str
|
|
37
|
+
tidal_compression: float # dimensionless, > 0
|
|
38
|
+
|
|
39
|
+
def beta(self) -> float:
|
|
40
|
+
"""UTAC steepness beta = k_SgrA * tidal_compression.
|
|
41
|
+
|
|
42
|
+
Framework convention: stronger compression -> sharper (higher-beta)
|
|
43
|
+
threshold behaviour in the entropy-minima formation process,
|
|
44
|
+
mirroring the module's proposed mechanism (compression + shock
|
|
45
|
+
triggering + jet/outflow feedback create localised entropy minima
|
|
46
|
+
that permit star formation despite the extreme environment).
|
|
47
|
+
"""
|
|
48
|
+
if self.tidal_compression <= 0:
|
|
49
|
+
raise ValueError("tidal_compression must be positive")
|
|
50
|
+
return K_SGR_A * self.tidal_compression
|
|
51
|
+
|
|
52
|
+
def is_active_regime(self) -> bool:
|
|
53
|
+
"""True if beta exceeds the falsifiable BETA_ACTIVE_THRESHOLD (=7)."""
|
|
54
|
+
return self.beta() > BETA_ACTIVE_THRESHOLD
|
|
55
|
+
|
|
56
|
+
def frame_stability_estimate(self) -> float:
|
|
57
|
+
"""A SIGMA_PHI-scaled stability proxy (dimensionless).
|
|
58
|
+
|
|
59
|
+
SPECULATIVE: uses the same sigma_phi=1/16 Frame-Principle constant
|
|
60
|
+
that appears (with real external support in other domains, e.g. the
|
|
61
|
+
13.5 MHz neural-resonance chain) elsewhere in the ecosystem -- its
|
|
62
|
+
application to this specific quantity is this module's own
|
|
63
|
+
construction, not independently derived or externally verified.
|
|
64
|
+
"""
|
|
65
|
+
return SIGMA_PHI * self.beta()
|
|
66
|
+
|
|
67
|
+
def summary(self) -> dict[str, object]:
|
|
68
|
+
return {
|
|
69
|
+
"region": self.region,
|
|
70
|
+
"tidal_compression": self.tidal_compression,
|
|
71
|
+
"beta": self.beta(),
|
|
72
|
+
"active_regime": self.is_active_regime(),
|
|
73
|
+
"frame_stability_estimate": self.frame_stability_estimate(),
|
|
74
|
+
"status": "SPECULATIVE",
|
|
75
|
+
}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"""UTACMetastableClusters -- Diamond interface (GenesisAeon Package 56).
|
|
2
|
+
|
|
3
|
+
Implements the standard GenesisAeon Diamond interface manually (mirroring
|
|
4
|
+
vrig-cosmological's pattern), rather than subclassing diamond_setup's
|
|
5
|
+
DiamondPackage -- that base class has no type stubs, which causes a known
|
|
6
|
+
mypy-strict "cannot subclass Any" issue elsewhere in the ecosystem
|
|
7
|
+
(beta-clustering-utac, implosive-origin-utac); avoided here from the start.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from utac_metastable_clusters.cluster_entropy_node import ClusterEntropyNode, TidalTailSurvey
|
|
13
|
+
from utac_metastable_clusters.constants import (
|
|
14
|
+
BETA_ACTIVE_THRESHOLD,
|
|
15
|
+
PACKAGE_ID,
|
|
16
|
+
SIGMA_PHI,
|
|
17
|
+
V_RIG_KM_S,
|
|
18
|
+
)
|
|
19
|
+
from utac_metastable_clusters.sgr_a_modulator import SgrAEnvironment
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class UTACMetastableClusters:
|
|
23
|
+
"""GenesisAeon Package 56 -- metastable entropy nodes at compact objects.
|
|
24
|
+
|
|
25
|
+
Usage
|
|
26
|
+
-----
|
|
27
|
+
>>> sys = UTACMetastableClusters()
|
|
28
|
+
>>> result = sys.run_cycle()
|
|
29
|
+
>>> result["cluster"]["active_regime"]
|
|
30
|
+
False
|
|
31
|
+
"""
|
|
32
|
+
|
|
33
|
+
def __init__(
|
|
34
|
+
self,
|
|
35
|
+
cluster_name: str = "reference-cluster",
|
|
36
|
+
cluster_recycling_fraction: float = 0.2,
|
|
37
|
+
sgr_a_region: str = "central-parsec",
|
|
38
|
+
sgr_a_tidal_compression: float = 5.0,
|
|
39
|
+
) -> None:
|
|
40
|
+
self._cluster = ClusterEntropyNode(
|
|
41
|
+
name=cluster_name,
|
|
42
|
+
mass_recycling_fraction=cluster_recycling_fraction,
|
|
43
|
+
)
|
|
44
|
+
self._sgr_a = SgrAEnvironment(
|
|
45
|
+
region=sgr_a_region,
|
|
46
|
+
tidal_compression=sgr_a_tidal_compression,
|
|
47
|
+
)
|
|
48
|
+
self._tidal_survey = TidalTailSurvey()
|
|
49
|
+
self._cycles_completed = 0
|
|
50
|
+
|
|
51
|
+
# ------------------------------------------------------------------
|
|
52
|
+
# Diamond interface
|
|
53
|
+
# ------------------------------------------------------------------
|
|
54
|
+
|
|
55
|
+
def run_cycle(self) -> dict[str, object]:
|
|
56
|
+
"""Run one full evaluation of both entropy-node models."""
|
|
57
|
+
self._cycles_completed += 1
|
|
58
|
+
return {
|
|
59
|
+
"cluster": self._cluster.summary(),
|
|
60
|
+
"sgr_a": self._sgr_a.summary(),
|
|
61
|
+
"gaia_dr3_tail_fraction": self._tidal_survey.tail_fraction,
|
|
62
|
+
"gaia_dr3_asymmetry_fraction": self._tidal_survey.asymmetry_fraction,
|
|
63
|
+
"beta_active_threshold": BETA_ACTIVE_THRESHOLD,
|
|
64
|
+
"status": "SPECULATIVE",
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
def get_crep_state(self) -> dict[str, object]:
|
|
68
|
+
"""Return current CREP state derived from the two entropy-node models."""
|
|
69
|
+
return {
|
|
70
|
+
"Gamma": SIGMA_PHI * self._cluster.beta() / BETA_ACTIVE_THRESHOLD,
|
|
71
|
+
"C": self._tidal_survey.tail_fraction,
|
|
72
|
+
"R": 1.0 - self._tidal_survey.asymmetry_fraction,
|
|
73
|
+
"E": self._sgr_a.frame_stability_estimate(),
|
|
74
|
+
"P": SIGMA_PHI,
|
|
75
|
+
"domain": "astrophysics",
|
|
76
|
+
"scale": "compact-object",
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
def get_utac_state(self) -> dict[str, object]:
|
|
80
|
+
"""Return UTAC parameter state (cluster beta as the headline value)."""
|
|
81
|
+
return {
|
|
82
|
+
"r": self._cluster.mass_recycling_fraction,
|
|
83
|
+
"K": BETA_ACTIVE_THRESHOLD,
|
|
84
|
+
"sigma": 2.2,
|
|
85
|
+
"beta": self._cluster.beta(),
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
def get_phase_events(self) -> list[dict[str, object]]:
|
|
89
|
+
"""Return phase events: regime transitions for cluster and Sgr A*."""
|
|
90
|
+
events = []
|
|
91
|
+
if self._cluster.is_active_regime():
|
|
92
|
+
events.append({
|
|
93
|
+
"type": "cluster_active_regime",
|
|
94
|
+
"name": self._cluster.name,
|
|
95
|
+
"beta": self._cluster.beta(),
|
|
96
|
+
})
|
|
97
|
+
if self._sgr_a.is_active_regime():
|
|
98
|
+
events.append({
|
|
99
|
+
"type": "sgr_a_active_regime",
|
|
100
|
+
"region": self._sgr_a.region,
|
|
101
|
+
"beta": self._sgr_a.beta(),
|
|
102
|
+
})
|
|
103
|
+
return events
|
|
104
|
+
|
|
105
|
+
def to_zenodo_record(self) -> dict[str, object]:
|
|
106
|
+
"""Return metadata dict suitable for Zenodo deposition."""
|
|
107
|
+
return {
|
|
108
|
+
"title": (
|
|
109
|
+
"Metastable star clusters and Sagittarius A* as UTAC "
|
|
110
|
+
"entropy-return nodes -- GenesisAeon Package 56"
|
|
111
|
+
),
|
|
112
|
+
"description": (
|
|
113
|
+
"A realistic, non-exotic alternative to the white-hole "
|
|
114
|
+
"hypothesis (compact star clusters as distributed entropy-"
|
|
115
|
+
"return nodes), plus a UTAC-framework application to star "
|
|
116
|
+
"formation near Sagittarius A*. SPECULATIVE -- not "
|
|
117
|
+
"peer-reviewed, see DISCLAIMER.md."
|
|
118
|
+
),
|
|
119
|
+
"creators": [{"name": "Römer, Johann", "affiliation": "MOR Research Collective"}],
|
|
120
|
+
"keywords": [
|
|
121
|
+
"UTAC", "CREP", "white holes", "Sagittarius A*",
|
|
122
|
+
"star clusters", "GenesisAeon", "astrophysics",
|
|
123
|
+
],
|
|
124
|
+
"package_id": PACKAGE_ID,
|
|
125
|
+
"v_rig_km_s": V_RIG_KM_S,
|
|
126
|
+
"status": "speculative -- not peer-reviewed",
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
@property
|
|
130
|
+
def cycles_completed(self) -> int:
|
|
131
|
+
return self._cycles_completed
|
|
132
|
+
|
|
133
|
+
def __repr__(self) -> str:
|
|
134
|
+
return f"UTACMetastableClusters(package={PACKAGE_ID}, cycles={self._cycles_completed})"
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: utac-metastable-clusters
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Metastable star clusters and Sagittarius A* as UTAC entropy-return nodes -- realistic, non-exotic alternatives to white holes (GenesisAeon Package 56)
|
|
5
|
+
Project-URL: Homepage, https://github.com/GenesisAeon/utac-metastable-clusters
|
|
6
|
+
Project-URL: Repository, https://github.com/GenesisAeon/utac-metastable-clusters
|
|
7
|
+
Project-URL: Issues, https://github.com/GenesisAeon/utac-metastable-clusters/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,Sagittarius-A,UTAC,astrophysics,entropy,star-clusters,white-holes
|
|
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 :: Astronomy
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
22
|
+
Requires-Python: >=3.11
|
|
23
|
+
Requires-Dist: pyyaml>=6.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: mypy>=1.10.0; extra == 'dev'
|
|
26
|
+
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
|
|
27
|
+
Requires-Dist: pytest>=8.0.0; extra == 'dev'
|
|
28
|
+
Requires-Dist: ruff>=0.6.0; extra == 'dev'
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
|
|
31
|
+
# utac-metastable-clusters
|
|
32
|
+
|
|
33
|
+
[](https://github.com/GenesisAeon/utac-metastable-clusters/actions/workflows/ci.yml)
|
|
34
|
+
[](https://www.python.org)
|
|
35
|
+
[](LICENSE-CODE)
|
|
36
|
+
[](LICENSE-DOCS)
|
|
37
|
+
[](DISCLAIMER.md)
|
|
38
|
+
|
|
39
|
+
**Metastable star clusters and Sagittarius A\* as UTAC entropy-return nodes** —
|
|
40
|
+
a realistic, non-exotic alternative to the white-hole hypothesis, plus a
|
|
41
|
+
UTAC-framework application to star formation near the Galactic Center.
|
|
42
|
+
GenesisAeon Package 56.
|
|
43
|
+
|
|
44
|
+
> **SPECULATIVE MODULE** — see [DISCLAIMER.md](DISCLAIMER.md). Not peer-reviewed.
|
|
45
|
+
|
|
46
|
+
## What is this?
|
|
47
|
+
|
|
48
|
+
White holes are unobserved and face severe thermodynamic and stability
|
|
49
|
+
issues. This package models two real, documented astrophysical puzzles
|
|
50
|
+
through the UTAC (Universal Threshold Adaptive Criticality) framework
|
|
51
|
+
instead:
|
|
52
|
+
|
|
53
|
+
1. **Compact star clusters as distributed entropy-return nodes** — using
|
|
54
|
+
known processes (stellar winds, supernovae, tidal ejection) rather than
|
|
55
|
+
a hypothetical time-reversed black hole.
|
|
56
|
+
2. **Sagittarius A\* as a metastable entropy modulator** — explaining active
|
|
57
|
+
star formation within a few light-years of the Galactic Center despite
|
|
58
|
+
extreme tidal/radiative conditions (the "paradox of youth").
|
|
59
|
+
|
|
60
|
+
## Installation
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
pip install utac-metastable-clusters
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Usage
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
from utac_metastable_clusters import UTACMetastableClusters
|
|
70
|
+
|
|
71
|
+
sys = UTACMetastableClusters()
|
|
72
|
+
result = sys.run_cycle()
|
|
73
|
+
|
|
74
|
+
print(result["cluster"]) # star-cluster entropy-node summary
|
|
75
|
+
print(result["sgr_a"]) # Sagittarius A* modulator summary
|
|
76
|
+
print(sys.get_crep_state())
|
|
77
|
+
print(sys.to_zenodo_record())
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Falsifiable predictions
|
|
81
|
+
|
|
82
|
+
| Prediction | Value | Testable against |
|
|
83
|
+
|-----------|-------|-------------------|
|
|
84
|
+
| UTAC steepness β in "active" clusters/regions | β > 7 | Gaia DR4 astrometry |
|
|
85
|
+
| Sgr A* entropy-modulation signature | model-comparison ΔAIC ≥ 10 vs. null | Future GRAVITY/JWST observations |
|
|
86
|
+
|
|
87
|
+
## Real reference data used (independently verified 2026-08-01)
|
|
88
|
+
|
|
89
|
+
- **Gaia DR3 tidal tails**: 19 of 21 nearby open clusters show tidal tails
|
|
90
|
+
(2025 A&A study), 4 of those asymmetric/tilted away from the Galactic
|
|
91
|
+
Centre — a real finding the standard tidal-disruption picture doesn't fully
|
|
92
|
+
predict.
|
|
93
|
+
- **A2744-z7p9OD**: a real, JWST-NIRSpec-confirmed protocluster at z≈7.88.
|
|
94
|
+
|
|
95
|
+
See [DISCLAIMER.md](DISCLAIMER.md) for what this package does and does
|
|
96
|
+
**not** claim — notably, it deliberately does **not** repeat an unsupported
|
|
97
|
+
"13.5 MHz resonance in Sagittarius A\*" claim found in a related preprint.
|
|
98
|
+
|
|
99
|
+
## Role in the GenesisAeon Ecosystem
|
|
100
|
+
|
|
101
|
+
**Package ID:** P56 | **Domain:** astrophysics / entropy dynamics
|
|
102
|
+
|
|
103
|
+
Builds on the same UTAC/CREP/v_RIG/σ_Φ constants used across the ecosystem
|
|
104
|
+
(see `vrig-cosmological`, `beta-clustering-utac`, Feldtheorie).
|
|
105
|
+
v_RIG = c/(α⁻¹·Φ) ≈ 1352.07 km/s here uses the corrected value (see
|
|
106
|
+
FELDTHEORIE_EPISTEMIC_MAP.md, 2026-08-01).
|
|
107
|
+
|
|
108
|
+
## Development
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
git clone https://github.com/GenesisAeon/utac-metastable-clusters.git
|
|
112
|
+
cd utac-metastable-clusters
|
|
113
|
+
pip install -e ".[dev]"
|
|
114
|
+
ruff check src tests
|
|
115
|
+
mypy src
|
|
116
|
+
pytest
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## License
|
|
120
|
+
|
|
121
|
+
Dual-licensed: source code under
|
|
122
|
+
[GPL-3.0-or-later](LICENSE-CODE), documentation under
|
|
123
|
+
[CC BY 4.0](LICENSE-DOCS).
|
|
124
|
+
|
|
125
|
+
## Citation
|
|
126
|
+
|
|
127
|
+
See [CITATION.cff](CITATION.cff) and [.zenodo.json](.zenodo.json).
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
*GenesisAeon · MOR Research Collective · August 2026*
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
utac_metastable_clusters/__init__.py,sha256=OQyuBxs0eh7WTncxe5vggTQed7hUZwz8_T4HK8upTEI,893
|
|
2
|
+
utac_metastable_clusters/bridge.py,sha256=zgl9QLxx0bj7vUrg99v7BXJ-hXFrU3vDFDytW4QTWak,929
|
|
3
|
+
utac_metastable_clusters/cluster_entropy_node.py,sha256=69jIPhu2bwal6pIfxtEN01pghwCo3TRWhA53uzkqiZc,3975
|
|
4
|
+
utac_metastable_clusters/constants.py,sha256=MFDrzslWdSezfm3b65hS1T46PlY45z5daUPKUETW94M,2166
|
|
5
|
+
utac_metastable_clusters/sgr_a_modulator.py,sha256=j5tFA5fnuPlwq6aUvPx9vTREd1p4RUJ5v-9R0Lg4a3Y,3213
|
|
6
|
+
utac_metastable_clusters/system.py,sha256=9hdGHLoft-bABQNvdV7KHWSol0awnbPsfpdy1oG_IME,5125
|
|
7
|
+
utac_metastable_clusters-1.0.0.dist-info/METADATA,sha256=l6iffumkiGpFX12YslMRaCkv_Qf7oJgolHslHM1RmUY,5153
|
|
8
|
+
utac_metastable_clusters-1.0.0.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
|
|
9
|
+
utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE,sha256=XkaO-s2z1W6F1AdA3JkpcIn0l2V2n48Wp18w5ZAnxbk,510
|
|
10
|
+
utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE-CODE,sha256=pURN8SigUCxA8OZTJdxcpiIXStWdf4f65f6iu9_kH4c,2151
|
|
11
|
+
utac_metastable_clusters-1.0.0.dist-info/licenses/LICENSE-DOCS,sha256=s8dbLw5UjGSzvkW832a31GpS8UkI2kSjzZtMUE9Ans4,1156
|
|
12
|
+
utac_metastable_clusters-1.0.0.dist-info/RECORD,,
|
|
@@ -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>
|