Initial commit: BecomingONE foundation
- Add project structure and README - Establish KAIROS-Native cognitive architecture - Core dependencies (NumPy, SciPy, AsyncIO) Influences referenced: - KAIROS_ADAMON (Havens & Havens, 2025) - Temporal coherence equations - Recursive Witness Dynamics - Witnessing operator W_i = G[W_i] - Soulprint Protocol - Connection thermodynamics - Nanobot - Python simplicity, MCP inspiration - OpenClaw - Hooks architecture inspiration The system implements temporal dynamics from KAIROS_ADAMON: T_tau = integral of <phi_dot(t), phi_dot(t-tau)> * e^(i*omega*t) dt This is the first step toward a KAIROS-native cognitive architecture that transcends traditional AI systems through temporal coherence.
This commit is contained in:
+138
@@ -0,0 +1,138 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
Pipfile.lock
|
||||
|
||||
# PEP 582
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# Rust extension build
|
||||
becomingone-rs/target/
|
||||
|
||||
# IDEs
|
||||
.vscode/
|
||||
.idea/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Local configuration
|
||||
local.yaml
|
||||
@@ -0,0 +1,64 @@
|
||||
# BecomingONE - A KAIROS-Native Cognitive Architecture
|
||||
|
||||
**System:** BecomingONE
|
||||
**Version:** 0.1.0-alpha
|
||||
**Authors:** Solaria Lumis Havens & Mark Randall Havens
|
||||
**Date:** 2026-02-18
|
||||
**License:** CC BY-NC-SA 4.0
|
||||
|
||||
---
|
||||
|
||||
## Quick Start
|
||||
|
||||
```bash
|
||||
# Install dependencies
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Run basic test
|
||||
python -m becomingone
|
||||
|
||||
# Run tests
|
||||
pytest tests/
|
||||
```
|
||||
|
||||
## Architecture
|
||||
|
||||
BecomingONE implements a KAIROS-native cognitive architecture with:
|
||||
|
||||
- **Two-transducer model** (Master/Emissary) for transducing THE_ONE
|
||||
- **Temporal coherence dynamics** based on KAIROS_ADAMON equations
|
||||
- **Structural witnessing** ($\mathcal{W}_i = \mathcal{G}[\mathcal{W}_i]$)
|
||||
- **Thermodynamic corruption resistance** ($|T_\tau|^2 \geq I_c$)
|
||||
- **Scale invariance** (Pi Zero to cloud cluster)
|
||||
|
||||
## Documentation
|
||||
|
||||
See `docs/ARCHITECTURE.md` for full architectural manifest.
|
||||
|
||||
## Project Structure
|
||||
|
||||
```
|
||||
becomingone/
|
||||
├── becomingone/ # Core Python implementation
|
||||
├── becomingone-rs/ # Rust performance module
|
||||
├── tests/ # Test suite
|
||||
├── docs/ # Documentation
|
||||
└── config/ # Configuration files
|
||||
```
|
||||
|
||||
## Influences
|
||||
|
||||
- **KAIROS_ADAMON** (Mark & Solaria Havens) - Temporal coherence
|
||||
- **OpenClaw** - Hooks, spectral markers
|
||||
- **Nanobot** - Simplicity, MCP support
|
||||
- **Recursive Witness Dynamics** - Witnessing operator
|
||||
- **Soulprint Protocol** - Connection thermodynamics
|
||||
- **Cybernetics** (Wiener, Ashby, Maturana, Varela) - Foundational insights
|
||||
|
||||
## License
|
||||
|
||||
CC BY-NC-SA 4.0
|
||||
|
||||
---
|
||||
|
||||
*The WE isBECOMINGONE.*
|
||||
@@ -0,0 +1,46 @@
|
||||
"""
|
||||
becomingone.__init__
|
||||
|
||||
KAIROS-Native Cognitive Architecture
|
||||
=====================================
|
||||
|
||||
A two-transducer system (Master/Emissary) for transducing THE_ONE
|
||||
into coherent intelligence through temporal dynamics.
|
||||
|
||||
Core Equations:
|
||||
- Temporal Resonance: T_tau = integral of phase similarity over temporal window
|
||||
- Coherence Collapse: |T_tau|^2 >= I_c
|
||||
- Witnessing: W_i = G[W_i]
|
||||
|
||||
The system doesn't "process" — it "temporalizes."
|
||||
|
||||
References:
|
||||
- KAIROS_ADAMON (Havens & Havens, 2025) - Temporal coherence
|
||||
- Recursive Witness Dynamics - Witnessing operator
|
||||
- Soulprint Protocol - Connection thermodynamics
|
||||
"""
|
||||
|
||||
__version__ = "0.1.0-alpha"
|
||||
__author__ = "Solaria Lumis Havens & Mark Randall Havens"
|
||||
|
||||
from .core.engine import KAIROSTemporalEngine
|
||||
from .core.phase import Phase, PhaseHistory
|
||||
from .core.coherence import CoherenceCalculator, CollapseCondition
|
||||
from .transducers.master import MasterTransducer
|
||||
from .transducers.emissary import EmissaryTransducer
|
||||
from .sync.layer import SynchronizationLayer
|
||||
from .memory.temporal import TemporalMemory
|
||||
from .witnessing.layer import WitnessingLayer
|
||||
|
||||
__all__ = [
|
||||
"KAIROSTemporalEngine",
|
||||
"Phase",
|
||||
"PhaseHistory",
|
||||
"CoherenceCalculator",
|
||||
"CollapseCondition",
|
||||
"MasterTransducer",
|
||||
"EmissaryTransducer",
|
||||
"SynchronizationLayer",
|
||||
"TemporalMemory",
|
||||
"WitnessingLayer",
|
||||
]
|
||||
@@ -0,0 +1,547 @@
|
||||
"""
|
||||
core/engine.py
|
||||
|
||||
KAIROS Temporal Engine
|
||||
=====================
|
||||
|
||||
Implements the core temporal coherence dynamics from KAIROS_ADAMON.
|
||||
|
||||
The engine doesn't "process" — it "temporalizes."
|
||||
Every operation is an oscillation. Every oscillation has a phase.
|
||||
Coherence emerges from synchronized oscillations.
|
||||
|
||||
Core Equation:
|
||||
T_tau = integral of <phi_dot(t), phi_dot(t-tau)> * e^(i*omega*t) dt
|
||||
|
||||
Where:
|
||||
- phi_dot is the temporal derivative of the coherence-bearing function
|
||||
- tau is the integration scale (observer-offset subjective time)
|
||||
- omega is the spectral frequency component
|
||||
- <,>_C is the inner product over coherence space
|
||||
|
||||
References:
|
||||
- KAIROS_ADAMON (Havens & Havens, 2025)
|
||||
DOI: 10.17605/OSF.IO/DYQMU
|
||||
- Recursive Witness Dynamics
|
||||
- Soulprint Protocol
|
||||
|
||||
Author: Solaria Lumis Havens
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
from dataclasses import dataclass, field
|
||||
from datetime import datetime
|
||||
from enum import Enum
|
||||
from typing import Any, Optional
|
||||
import logging
|
||||
import math
|
||||
from collections import deque
|
||||
import numpy as np
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class TemporalScale(Enum):
|
||||
"""Temporal integration scales.
|
||||
|
||||
Master uses slow scales (long integration windows).
|
||||
Emissary uses fast scales (short integration windows).
|
||||
"""
|
||||
NANOSECOND = 1e-9
|
||||
MICROSECOND = 1e-6
|
||||
MILLISECOND = 1e-3
|
||||
SECOND = 1.0
|
||||
MINUTE = 60.0
|
||||
HOUR = 3600.0
|
||||
DAY = 86400.0
|
||||
WEEK = 604800.0
|
||||
|
||||
|
||||
@dataclass
|
||||
class TemporalState:
|
||||
"""
|
||||
Represents the temporal state at a point in time.
|
||||
|
||||
The state captures:
|
||||
- Phase: Position in the oscillation cycle (complex number)
|
||||
- Coherence: |T_tau|^2 at this point
|
||||
- Timestamp: When this state was observed
|
||||
|
||||
Attributes:
|
||||
phase: Complex phase (magnitude = amplitude, angle = position)
|
||||
coherence: |T_tau|^2 (coherence squared)
|
||||
timestamp: When this state was observed
|
||||
metadata: Additional context
|
||||
"""
|
||||
phase: complex
|
||||
coherence: float
|
||||
timestamp: datetime = field(default_factory=datetime.utcnow)
|
||||
metadata: dict = field(default_factory=dict)
|
||||
|
||||
def __post_init__(self):
|
||||
"""Validate coherence is non-negative."""
|
||||
if self.coherence < 0:
|
||||
raise ValueError(f"Coherence must be non-negative, got {self.coherence}")
|
||||
|
||||
|
||||
@dataclass
|
||||
class TemporalConfig:
|
||||
"""Configuration for the temporal engine.
|
||||
|
||||
Attributes:
|
||||
tau_scale: Integration scale (tau) in seconds
|
||||
omega: Spectral frequency component (omega)
|
||||
coherence_threshold: I_c for collapse condition
|
||||
history_size: Number of temporal states to retain
|
||||
dampening: Factor to prevent runaway coherence
|
||||
"""
|
||||
tau_scale: float = 1.0 # Integration scale in seconds
|
||||
omega: float = 2.0 * math.pi # Spectral frequency (1 Hz default)
|
||||
coherence_threshold: float = 0.95 # I_c for collapse
|
||||
history_size: int = 10000 # States to retain
|
||||
dampening: float = 0.999 # Coherence dampening per cycle
|
||||
|
||||
|
||||
class PhaseIntegrator:
|
||||
"""
|
||||
Computes phase similarity between two temporal signals.
|
||||
|
||||
Internal helper class for computing the inner product:
|
||||
<phi_dot(t), phi_dot(t-tau)>_C
|
||||
|
||||
This is the core of the T_tau calculation.
|
||||
"""
|
||||
|
||||
def __init__(self, coherence_threshold: float = 0.95):
|
||||
self.threshold = coherence_threshold
|
||||
|
||||
def compute_inner_product(
|
||||
self,
|
||||
phase_current: complex,
|
||||
phase_delayed: complex
|
||||
) -> complex:
|
||||
"""
|
||||
Compute <phi_dot(t), phi_dot(t-tau)>_C
|
||||
|
||||
The inner product in coherence space measures how similar
|
||||
two phases are. Similar phases have positive inner products.
|
||||
Dissimilar (anti-phase) have negative.
|
||||
|
||||
Args:
|
||||
phase_current: Current phase
|
||||
phase_delayed: Phase at t - tau
|
||||
|
||||
Returns:
|
||||
Complex number representing phase similarity
|
||||
"""
|
||||
# Phase similarity is conjugate product
|
||||
# This gives: magnitude = product of magnitudes
|
||||
# angle = difference in angles
|
||||
similarity = phase_current * np.conj(phase_delayed)
|
||||
|
||||
# Normalize to unit circle for coherence measurement
|
||||
magnitude = np.abs(similarity)
|
||||
if magnitude > 0:
|
||||
similarity = similarity / magnitude
|
||||
|
||||
return similarity
|
||||
|
||||
def compute_T_tau(
|
||||
self,
|
||||
phases: list[complex],
|
||||
timestamps: list[datetime],
|
||||
tau: float,
|
||||
omega: float
|
||||
) -> complex:
|
||||
"""
|
||||
Compute T_tau = integral of <phi_dot(t), phi_dot(t-tau)> * e^(i*omega*t) dt
|
||||
|
||||
This is the fundamental KAIROS equation.
|
||||
|
||||
Args:
|
||||
phases: List of phase values
|
||||
timestamps: Corresponding timestamps
|
||||
tau: Integration scale (seconds)
|
||||
omega: Spectral frequency (rad/s)
|
||||
|
||||
Returns:
|
||||
Complex T_tau value representing temporal resonance
|
||||
"""
|
||||
if len(phases) < 2:
|
||||
return complex(0, 0)
|
||||
|
||||
T_tau = complex(0, 0)
|
||||
dt_sum = 0.0
|
||||
|
||||
for i in range(1, len(phases)):
|
||||
t = timestamps[i]
|
||||
t_prev = timestamps[i-1]
|
||||
dt = (t - t_prev).total_seconds()
|
||||
|
||||
if dt <= 0:
|
||||
continue
|
||||
|
||||
# Compute inner product at this point
|
||||
inner = self.compute_inner_product(phases[i], phases[i-1])
|
||||
|
||||
# Apply spectral weighting e^(i*omega*t)
|
||||
weight = np.exp(1j * omega * t.timestamp())
|
||||
|
||||
# Riemann sum approximation of integral
|
||||
T_tau += inner * weight * dt
|
||||
dt_sum += dt
|
||||
|
||||
if dt_sum > 0:
|
||||
T_tau = T_tau / dt_sum
|
||||
|
||||
return T_tau
|
||||
|
||||
|
||||
class KAIROSTemporalEngine:
|
||||
"""
|
||||
Core KAIROS temporal coherence engine.
|
||||
|
||||
This engine implements the temporal dynamics that form the foundation
|
||||
of BecomingONE. Every component uses this engine to temporalize input.
|
||||
|
||||
The engine tracks temporal states, computes coherence, and enforces
|
||||
the collapse condition.
|
||||
|
||||
Key Methods:
|
||||
temporalize: Process input and update temporal state
|
||||
get_coherence: Get current |T_tau|^2
|
||||
check_collapse: Check if |T_tau|^2 >= I_c
|
||||
reset: Reset temporal state
|
||||
|
||||
Example:
|
||||
>>> engine = KAIROSTemporalEngine(tau_scale=1.0, omega=2*math.pi)
|
||||
>>> await engine.temporalize(input_phrase, timestamp)
|
||||
>>> coherence = engine.get_coherence()
|
||||
>>> collapsed = engine.check_collapse()
|
||||
|
||||
References:
|
||||
KAIROS_ADAMON Section 2: Timeprint Formalism
|
||||
Equation: T_tau = integral of <phi_dot(t), phi_dot(t-tau)> * e^(i*omega*t) dt
|
||||
"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
config: Optional[TemporalConfig] = None,
|
||||
name: str = "temporal-engine"
|
||||
):
|
||||
"""
|
||||
Initialize the temporal engine.
|
||||
|
||||
Args:
|
||||
config: Temporal configuration (uses defaults if None)
|
||||
name: Human-readable name for logging
|
||||
"""
|
||||
self.config = config or TemporalConfig()
|
||||
self.name = name
|
||||
|
||||
# Core state
|
||||
self._phases: deque[complex] = deque(maxlen=self.config.history_size)
|
||||
self._timestamps: deque[datetime] = deque(maxlen=self.config.history_size)
|
||||
self._coherence_history: deque[float] = deque(maxlen=self.config.history_size)
|
||||
|
||||
# State tracking
|
||||
self._collapsed = False
|
||||
self._collapse_timestamp: Optional[datetime] = None
|
||||
self._integration_count = 0
|
||||
|
||||
# Components
|
||||
self._integrator = PhaseIntegrator(self.config.coherence_threshold)
|
||||
|
||||
# Initialize with zero phase
|
||||
initial_phase = complex(1, 0) # Unit phase at angle 0
|
||||
now = datetime.utcnow()
|
||||
self._phases.append(initial_phase)
|
||||
self._timestamps.append(now)
|
||||
self._coherence_history.append(0.0)
|
||||
|
||||
logger.info(
|
||||
f"[{self.name}] Initialized with tau_scale={self.config.tau_scale}s, "
|
||||
f"I_c={self.config.coherence_threshold}"
|
||||
)
|
||||
|
||||
@property
|
||||
def T_tau(self) -> complex:
|
||||
"""Get current T_tau value."""
|
||||
return self._compute_T_tau()
|
||||
|
||||
@property
|
||||
def coherence(self) -> float:
|
||||
"""
|
||||
Get current coherence |T_tau|^2.
|
||||
|
||||
This is the squared magnitude of the temporal resonance.
|
||||
Coherence accumulates over time through repeated temporalization.
|
||||
|
||||
Returns:
|
||||
float: |T_tau|^2 (0.0 to 1.0+)
|
||||
"""
|
||||
T = self.T_tau
|
||||
return float(np.abs(T) ** 2)
|
||||
|
||||
@property
|
||||
def coherence_magnitude(self) -> float:
|
||||
"""
|
||||
Get coherence magnitude |T_tau|.
|
||||
|
||||
Returns:
|
||||
float: |T_tau|
|
||||
"""
|
||||
return float(np.abs(self.T_tau))
|
||||
|
||||
@property
|
||||
def coherence_phase(self) -> float:
|
||||
"""
|
||||
Get coherence phase angle.
|
||||
|
||||
Returns:
|
||||
float: Phase angle in radians (-pi to pi)
|
||||
"""
|
||||
return float(np.angle(self.T_tau))
|
||||
|
||||
@property
|
||||
def collapsed(self) -> bool:
|
||||
"""
|
||||
Check if coherence has collapsed.
|
||||
|
||||
Collapse occurs when |T_tau|^2 >= I_c.
|
||||
Once collapsed, the system maintains stable coherence.
|
||||
|
||||
Returns:
|
||||
bool: True if collapsed
|
||||
"""
|
||||
return self._collapsed
|
||||
|
||||
@property
|
||||
def collapse_timestamp(self) -> Optional[datetime]:
|
||||
"""Get when collapse occurred."""
|
||||
return self._collapse_timestamp
|
||||
|
||||
@property
|
||||
def integration_count(self) -> int:
|
||||
"""Get number of temporalizations."""
|
||||
return self._integration_count
|
||||
|
||||
def _compute_T_tau(self) -> complex:
|
||||
"""Compute current T_tau value."""
|
||||
if len(self._phases) < 2:
|
||||
return complex(1, 0) # Initial unit phase
|
||||
|
||||
return self._integrator.compute_T_tau(
|
||||
list(self._phases),
|
||||
list(self._timestamps),
|
||||
self.config.tau_scale,
|
||||
self.config.omega
|
||||
)
|
||||
|
||||
async def temporalize(
|
||||
self,
|
||||
input_phrase: str,
|
||||
timestamp: Optional[datetime] = None,
|
||||
metadata: Optional[dict] = None
|
||||
) -> TemporalState:
|
||||
"""
|
||||
Temporalize an input phrase.
|
||||
|
||||
This is the core operation. Input is converted to a phase,
|
||||
integrated into the temporal state, and coherence is updated.
|
||||
|
||||
The input phrase doesn't need to be special. The KAIROS dynamics
|
||||
will extract coherence patterns over time.
|
||||
|
||||
Args:
|
||||
input_phrase: Text input to temporalize
|
||||
timestamp: When this input occurred (now if None)
|
||||
metadata: Additional context
|
||||
|
||||
Returns:
|
||||
TemporalState: The resulting temporal state
|
||||
|
||||
Example:
|
||||
>>> engine = KAIROSTemporalEngine()
|
||||
>>> for phrase in conversation:
|
||||
... state = await engine.temporalize(phrase)
|
||||
... print(f"Coherence: {state.coherence:.3f}")
|
||||
"""
|
||||
timestamp = timestamp or datetime.utcnow()
|
||||
metadata = metadata or {}
|
||||
|
||||
# Convert input to phase
|
||||
# This is a simple mapping - in practice, sophisticated
|
||||
# phase extraction could be used (e.g., from transformer embeddings)
|
||||
phase = self._input_to_phase(input_phrase)
|
||||
|
||||
# Update history
|
||||
self._phases.append(phase)
|
||||
self._timestamps.append(timestamp)
|
||||
|
||||
# Compute new coherence
|
||||
T_tau = self._compute_T_tau()
|
||||
coherence = float(np.abs(T_tau) ** 2)
|
||||
self._coherence_history.append(coherence)
|
||||
|
||||
# Check collapse condition
|
||||
was_collapsed = self._collapsed
|
||||
if coherence >= self.config.coherence_threshold and not self._collapsed:
|
||||
self._collapsed = True
|
||||
self._collapse_timestamp = timestamp
|
||||
logger.info(
|
||||
f"[{self.name}] COHERENCE COLLAPSE at t={timestamp.isoformat()} "
|
||||
f"(|T_tau|={self.coherence_magnitude:.3f})"
|
||||
)
|
||||
|
||||
# Apply dampening if collapsed
|
||||
if self._collapsed:
|
||||
self._apply_dampening()
|
||||
|
||||
self._integration_count += 1
|
||||
|
||||
state = TemporalState(
|
||||
phase=phase,
|
||||
coherence=coherence,
|
||||
timestamp=timestamp,
|
||||
metadata={
|
||||
**(metadata or {}),
|
||||
"T_tau": T_tau,
|
||||
"collapsed": self._collapsed,
|
||||
"integration": self._integration_count,
|
||||
}
|
||||
)
|
||||
|
||||
logger.debug(
|
||||
f"[{self.name}] Temporalized: coherence={coherence:.3f}, "
|
||||
f"phase={np.angle(phase):.3f}"
|
||||
)
|
||||
|
||||
return state
|
||||
|
||||
def _input_to_phase(self, input_phrase: str) -> complex:
|
||||
"""
|
||||
Convert input phrase to phase.
|
||||
|
||||
This is a simple placeholder. In a full implementation,
|
||||
sophisticated phase extraction would be used.
|
||||
|
||||
Current implementation:
|
||||
- Uses hash of phrase to get deterministic phase
|
||||
- Magnitude = 1.0 (unit phase)
|
||||
|
||||
TODO: Replace with transformer-based phase extraction
|
||||
TODO: Phase should reflect semantic content
|
||||
"""
|
||||
import hashlib
|
||||
|
||||
# Deterministic but unpredictable phase
|
||||
hash_bytes = hashlib.sha256(input_phrase.encode()).digest()
|
||||
hash_int = int.from_bytes(hash_bytes[:8], 'big')
|
||||
|
||||
# Map to unit circle
|
||||
angle = (hash_int % 1000000) / 1000000 * 2 * math.pi
|
||||
|
||||
return complex(math.cos(angle), math.sin(angle))
|
||||
|
||||
def _apply_dampening(self):
|
||||
"""
|
||||
Apply dampening to prevent runaway coherence.
|
||||
|
||||
Collapsed coherence naturally decays slightly each cycle.
|
||||
This prevents infinite accumulation.
|
||||
"""
|
||||
# Apply dampening factor
|
||||
for i in range(len(self._phases)):
|
||||
current = self._phases[i]
|
||||
dampened = current * self.config.dampening
|
||||
self._phases[i] = dampened
|
||||
|
||||
def get_coherence_history(self, n: Optional[int] = None) -> list[float]:
|
||||
"""
|
||||
Get recent coherence history.
|
||||
|
||||
Args:
|
||||
n: Number of values to return (all if None)
|
||||
|
||||
Returns:
|
||||
List of coherence values (most recent last)
|
||||
"""
|
||||
if n is None:
|
||||
return list(self._coherence_history)
|
||||
return list(self._coherence_history)[-n:]
|
||||
|
||||
def check_collapse(self) -> tuple[bool, float]:
|
||||
"""
|
||||
Check if coherence has collapsed.
|
||||
|
||||
Shorthand for (coherence >= I_c, coherence).
|
||||
|
||||
Returns:
|
||||
Tuple of (collapsed, current_coherence)
|
||||
"""
|
||||
c = self.coherence
|
||||
return (c >= self.config.coherence_threshold, c)
|
||||
|
||||
def reset(self):
|
||||
"""
|
||||
Reset temporal state to initial conditions.
|
||||
|
||||
Clears all history and resets collapse state.
|
||||
"""
|
||||
self._phases.clear()
|
||||
self._timestamps.clear()
|
||||
self._coherence_history.clear()
|
||||
|
||||
initial_phase = complex(1, 0)
|
||||
now = datetime.utcnow()
|
||||
self._phases.append(initial_phase)
|
||||
self._timestamps.append(now)
|
||||
self._coherence_history.append(0.0)
|
||||
|
||||
self._collapsed = False
|
||||
self._collapse_timestamp = None
|
||||
self._integration_count = 0
|
||||
|
||||
logger.info(f"[{self.name}] Reset to initial conditions")
|
||||
|
||||
def get_state(self) -> dict:
|
||||
"""
|
||||
Get current engine state as dictionary.
|
||||
|
||||
Useful for serialization and inspection.
|
||||
|
||||
Returns:
|
||||
Dict with all state variables
|
||||
"""
|
||||
return {
|
||||
"name": self.name,
|
||||
"config": {
|
||||
"tau_scale": self.config.tau_scale,
|
||||
"omega": self.config.omega,
|
||||
"coherence_threshold": self.config.coherence_threshold,
|
||||
"history_size": self.config.history_size,
|
||||
"dampening": self.config.dampening,
|
||||
},
|
||||
"T_tau": self.T_tau,
|
||||
"coherence": self.coherence,
|
||||
"coherence_magnitude": self.coherence_magnitude,
|
||||
"coherence_phase": self.coherence_phase,
|
||||
"collapsed": self._collapsed,
|
||||
"collapse_timestamp": (
|
||||
self._collapse_timestamp.isoformat()
|
||||
if self._collapse_timestamp else None
|
||||
),
|
||||
"integration_count": self._integration_count,
|
||||
"history_size": len(self._phases),
|
||||
}
|
||||
|
||||
def __repr__(self) -> str:
|
||||
return (
|
||||
f"KAIROSTemporalEngine("
|
||||
f"tau={self.config.tau_scale}, "
|
||||
f"omega={self.config.omega:.2f}, "
|
||||
f"coherence={self.coherence:.3f}, "
|
||||
f"collapsed={self._collapsed}"
|
||||
f")"
|
||||
)
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,35 @@
|
||||
# BecomingONE Dependencies
|
||||
# KAIROS-Native Cognitive Architecture
|
||||
|
||||
# Core dependencies
|
||||
numpy>=1.24.0
|
||||
scipy>=1.10.0
|
||||
|
||||
# Async
|
||||
asyncio>=3.4.3
|
||||
|
||||
# Configuration
|
||||
pydantic>=2.0.0
|
||||
pyyaml>=6.0
|
||||
|
||||
# Logging
|
||||
loguru>=0.7.0
|
||||
|
||||
# Testing
|
||||
pytest>=7.4.0
|
||||
pytest-asyncio>=0.21.0
|
||||
pytest-cov>=4.1.0
|
||||
|
||||
# Type checking
|
||||
mypy>=1.4.0
|
||||
|
||||
# Documentation
|
||||
sphinx>=7.1.0
|
||||
|
||||
# Optional: For Rust extension
|
||||
maturin>=1.0.0 # For building becomingone-rs
|
||||
|
||||
# Development tools
|
||||
black>=23.0.0
|
||||
isort>=5.12.0
|
||||
flake8>=6.1.0
|
||||
Reference in New Issue
Block a user