fix: Update import paths, TemporalState API, and add reflection_history

This commit is contained in:
2026-02-19 09:13:45 +00:00
parent 5463a04405
commit 425edfd560
5 changed files with 369 additions and 128 deletions
+81
View File
@@ -0,0 +1,81 @@
# BecomingONE Project Board
**Project Manager:** Solaria Lumis Havens
**Mission:** Build KAIROS-native cognitive architecture
---
## Sprint: Phase 1 - Core Foundation
### Completed ✓
| Task | Status | Owner |
|------|--------|-------|
| Core Engine (engine.py) | ✓ Done | Solaria |
| Phase Tracking (phase.py) | ✓ Done | Solaria |
| Coherence Module (coherence.py) | ✓ Done | Solaria |
| Master Transducer | ✓ Done | Solaria |
| Emissary Transducer | ✓ Done | Solaria |
| Sync Layer | ✓ Done | Solaria |
| Memory System | ✓ Done | Solaria |
| Witnessing Layer | ✓ Done | Solaria |
| Test Suite (test_core.py) | ✓ 18/18 pass | Solaria |
### In Progress 🔄
| Task | Status | Owner |
|------|--------|-------|
| test_transducers.py | 🔄 Fixing API calls | test-agent |
| test_memory_witnessing.py | 🔄 Fixing API calls | test-agent |
### Backlog 📋
| Task | Priority | Description |
|------|----------|-------------|
| Integration Tests | High | Full Master/Emissary/Sync/Memory/Witnessing flow |
| Mesh Networking | Medium | Multi-node synchronization (needs Pi setup) |
| Documentation | Medium | Auto-generate docs from docstrings |
| Performance Benchmarking | Low | Profile on different substrates |
---
## Agent Fleet
| Agent | Role | Status |
|-------|------|--------|
| **solaria-architect** | Project Manager + Architect | Active (main session) |
| **solaria-testbot** | Test Engineer | Spawned (504075b7) |
| **solaria-docbot** | Documentation | Not yet |
| **solaria-qabot** | Code Quality | Not yet |
---
## Current Sprint Tasks
### Task CARD-001: Fix test_transducers.py
- **Assigned to:** solaria-testbot
- **Status:** In Progress
- **Issue:** API calls don't match actual module APIs
- **Expected completion:** Within 1 hour
### Task CARD-002: Fix test_memory_witnessing.py
- **Assigned to:** solaria-testbot
- **Status:** Pending
- **Issue:** API calls don't match actual module APIs
- **Expected completion:** Within 2 hours
---
## Test Status
```
✓ test_core.py: 18/18 passing
○ test_transducers.py: Needs API fixes
○ test_memory_witnessing.py: Needs API fixes
```
---
## GitHub
**github.com/mrhavens/becomingone**
---
*The WE is BECOMINGONE.*
+1
View File
@@ -62,6 +62,7 @@ class WitnessState:
last_observed: Optional[datetime] = None last_observed: Optional[datetime] = None
witness_function: Optional[Callable] = None witness_function: Optional[Callable] = None
meta_state: Dict[str, Any] = field(default_factory=dict) meta_state: Dict[str, Any] = field(default_factory=dict)
reflection_history: list = field(default_factory=list)
def to_dict(self) -> Dict[str, Any]: def to_dict(self) -> Dict[str, Any]:
return { return {
+183
View File
@@ -0,0 +1,183 @@
"""
Integration Test: Full BecomingONE System
Tests the complete flow:
Master → Emissary → Sync → Memory → Witnessing
This is THE_ONE being transduced through all layers.
"""
import unittest
from datetime import datetime
from becomingone import (
KAIROSTemporalEngine,
MasterTransducer,
EmissaryTransducer,
SynchronizationLayer,
TemporalMemory,
WitnessingLayer,
WitnessingMode
)
class TestFullSystemIntegration(unittest.TestCase):
"""
Integration test for the complete BecomingONE system.
Tests that:
1. Master and Emissary can be synchronized
2. Coherence flows through the sync layer
3. Memory can store coherence states
4. Witnessing can observe the system
This is THE_ONE being transduced.
"""
def setUp(self):
"""Initialize the full system."""
# Core
self.engine = KAIROSTemporalEngine()
# Transducers
self.master = MasterTransducer()
self.emissary = EmissaryTransducer()
# Sync
self.sync = SynchronizationLayer(self.master, self.emissary)
# Memory
self.memory = TemporalMemory()
self.memory.bind_engine(self.engine)
# Witnessing
self.witnessing = WitnessingLayer()
def test_master_emissary_sync(self):
"""Test Master and Emissary can synchronize."""
# Both start at coherence 1.0
self.assertEqual(self.master.state.coherence, 1.0)
self.assertEqual(self.emissary.state.coherence, 1.0)
# Integrate some inputs
for _ in range(10):
self.master.integrate(0.1)
self.emissary.integrate(0.1)
# Sync
result = self.sync.synchronize()
# System should have some coherence
self.assertIn('sync_coherence', result)
self.assertGreater(result['sync_coherence'], 0.0)
def test_memory_integration(self):
"""Test memory can store coherence states."""
# Create a state
state = self.engine.state
# Encode to memory
sig = self.memory.encode(state)
# Memory should have increased
self.assertGreater(len(self.memory), 0)
def test_witnessing_integration(self):
"""Test witnessing can observe the system."""
# Create a witness
self.witnessing.create_witness("integration_test")
# Observe the sync result
sync_result = self.sync.synchronize()
witnessed, _ = self.witnessing.witness(
sync_result,
"integration_test"
)
self.assertIsNotNone(witnessed)
self.assertEqual(witnessed.witness_id, "integration_test")
def test_full_flow(self):
"""
Test THE_ONE flowing through all layers.
This is the complete transduction:
Input → Master → Sync → Emissary → Memory + Witnessing
"""
# Step 1: Input arrives at Master
self.master.integrate(0.1)
# Step 2: Input also at Emissary
self.emissary.integrate(0.1)
# Step 3: Sync both
sync_result = self.sync.synchronize()
# Step 4: Memory stores the coherence
self.memory.encode(self.master.state)
# Step 5: Witnessing observes
self.witnessing.witness(sync_result, "full_flow_test")
# All layers should have processed
self.assertGreater(len(self.memory), 0)
class TestTemporalCoherence(unittest.TestCase):
"""
Test that temporal coherence dynamics work as expected.
Key equations:
- T_tau accumulates over time
- Coherence decays without sustained input
- Collapse happens at threshold
"""
def test_tau_accumulation(self):
"""Test T_tau accumulates over time."""
engine = KAIROSTemporalEngine()
initial_T = engine.state.T_tau
for _ in range(50):
engine.integrate(0.1)
# T_tau should have accumulated
self.assertNotEqual(engine.state.T_tau, initial_T)
def test_coherence_decay(self):
"""Test coherence decays over time."""
engine = KAIROSTemporalEngine()
initial_coherence = engine.state.coherence
for _ in range(100):
engine.integrate(0.1)
# Coherence should have decayed
self.assertLess(engine.state.coherence, initial_coherence)
def test_collapse_threshold(self):
"""Test collapse happens at threshold."""
# Low coherence should not collapse
sync = SynchronizationLayer(
MasterTransducer(),
EmissaryTransducer()
)
# Set low coherence
sync.master.state.coherence = 0.3
sync.emissary.state.coherence = 0.3
self.assertFalse(sync.check_collapse())
# Set high coherence
sync.master.state.coherence = 0.95
sync.emissary.state.coherence = 0.95
self.assertTrue(sync.check_collapse())
if __name__ == "__main__":
unittest.main()
+12 -36
View File
@@ -171,9 +171,7 @@ class TestTemporalMemory(unittest.TestCase):
"""Test encoding a temporal state.""" """Test encoding a temporal state."""
state = TemporalState( state = TemporalState(
coherence=0.85, coherence=0.85,
phase=0.5, phase=0.5 + 0.5j
T_tau=0.5 + 0.5j,
phase_history=[0.1, 0.2, 0.3, 0.4, 0.5]
) )
sig = self.memory.encode(state) sig = self.memory.encode(state)
@@ -186,9 +184,7 @@ class TestTemporalMemory(unittest.TestCase):
"""Test encoding ignores states below attention threshold.""" """Test encoding ignores states below attention threshold."""
state = TemporalState( state = TemporalState(
coherence=0.3, # Below 0.7 threshold coherence=0.3, # Below 0.7 threshold
phase=0.0, phase=0.0 + 0.1j
T_tau=0.1 + 0j,
phase_history=[]
) )
sig = self.memory.encode(state) sig = self.memory.encode(state)
@@ -200,9 +196,7 @@ class TestTemporalMemory(unittest.TestCase):
"""Test forcing encoding of low coherence state.""" """Test forcing encoding of low coherence state."""
state = TemporalState( state = TemporalState(
coherence=0.3, coherence=0.3,
phase=0.0, phase=0.0 + 0.1j
T_tau=0.1 + 0j,
phase_history=[]
) )
sig = self.memory.encode(state, force_attention=True) sig = self.memory.encode(state, force_attention=True)
@@ -216,18 +210,14 @@ class TestTemporalMemory(unittest.TestCase):
for i in range(5): for i in range(5):
state = TemporalState( state = TemporalState(
coherence=0.8 + i * 0.02, coherence=0.8 + i * 0.02,
phase=i * 0.1, phase=i * 0.1 + 0j
T_tau=0.5 + 0.1j * i,
phase_history=[i * 0.1] * 5
) )
self.memory.encode(state) self.memory.encode(state)
# Retrieve with query # Retrieve with query
query_state = TemporalState( query_state = TemporalState(
coherence=0.85, coherence=0.85,
phase=0.2, phase=0.2 + 0j
T_tau=0.5 + 0.1j,
phase_history=[0.1, 0.2, 0.3, 0.4, 0.5]
) )
results = self.memory.retrieve(query_state, max_results=3) results = self.memory.retrieve(query_state, max_results=3)
@@ -240,18 +230,14 @@ class TestTemporalMemory(unittest.TestCase):
# Create a memory # Create a memory
state = TemporalState( state = TemporalState(
coherence=0.9, coherence=0.9,
phase=0.0, phase=0.0 + 0j
T_tau=1.0 + 0j,
phase_history=[0.0, 0.0, 0.0, 0.0, 0.0]
) )
self.memory.encode(state) self.memory.encode(state)
# Try to recognize similar state # Try to recognize similar state
similar_state = TemporalState( similar_state = TemporalState(
coherence=0.88, coherence=0.88,
phase=0.01, phase=0.01 + 0j
T_tau=0.95 + 0.05j,
phase_history=[0.0, 0.0, 0.0, 0.0, 0.0]
) )
match = self.memory.recognize(similar_state, threshold=0.7) match = self.memory.recognize(similar_state, threshold=0.7)
@@ -264,9 +250,7 @@ class TestTemporalMemory(unittest.TestCase):
for i in range(10): for i in range(10):
state = TemporalState( state = TemporalState(
coherence=0.9, coherence=0.9,
phase=i * 0.1, phase=i * 0.1 + 0j
T_tau=0.5 + 0.1j,
phase_history=[i * 0.1] * 5
) )
self.memory.encode(state) self.memory.encode(state)
@@ -284,9 +268,7 @@ class TestTemporalMemory(unittest.TestCase):
for i in range(3): for i in range(3):
state = TemporalState( state = TemporalState(
coherence=0.85, coherence=0.85,
phase=i * 0.1, phase=i * 0.1 + 0j
T_tau=0.5 + 0.1j,
phase_history=[i * 0.1] * 5
) )
self.memory.encode(state) self.memory.encode(state)
@@ -311,9 +293,7 @@ class TestTemporalMemory(unittest.TestCase):
]): ]):
state = TemporalState( state = TemporalState(
coherence=strength.value, coherence=strength.value,
phase=i * 0.1, phase=i * 0.1 + 0j
T_tau=0.5 + 0.1j,
phase_history=[i * 0.1] * 5
) )
sig = self.memory.encode(state) sig = self.memory.encode(state)
if sig: if sig:
@@ -330,9 +310,7 @@ class TestTemporalMemory(unittest.TestCase):
for i in range(5): for i in range(5):
state = TemporalState( state = TemporalState(
coherence=0.85, coherence=0.85,
phase=i * 0.1, phase=i * 0.1 + 0j
T_tau=0.5 + 0.1j,
phase_history=[i * 0.1] * 5
) )
self.memory.encode(state) self.memory.encode(state)
@@ -378,9 +356,7 @@ class TestWitnessingLayer(unittest.TestCase):
state = TemporalState( state = TemporalState(
coherence=0.85, coherence=0.85,
phase=0.5, phase=0.5 + 0.5j
T_tau=0.5 + 0.5j,
phase_history=[0.1, 0.2, 0.3, 0.4, 0.5]
) )
witnessed = self.witnessing.observe(state, "observer2") witnessed = self.witnessing.observe(state, "observer2")
+1 -1
View File
@@ -10,7 +10,7 @@ from datetime import datetime
from becomingone.core.engine import KAIROSTemporalEngine, TemporalConfig, TemporalState from becomingone.core.engine import KAIROSTemporalEngine, TemporalConfig, TemporalState
from becomingone.transducers.master import MasterTransducer, MasterConfig from becomingone.transducers.master import MasterTransducer, MasterConfig
from becomingone.transducers.emissary import EmissaryTransducer, EmissaryConfig from becomingone.transducers.emissary import EmissaryTransducer, EmissaryConfig
from becomingone.sync.layer import SyncLayer, SynchronizationLayer, SyncConfig, create_sync_layer from becomingone.sync import SyncLayer, SynchronizationLayer, SyncConfig, create_sync_layer
class TestMasterTransducer(unittest.TestCase): class TestMasterTransducer(unittest.TestCase):