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