Files
blackroad-operating-system/qlm_lab/experiments/emergence_detection.py
Claude e478add607 Add complete QLM (Quantum Language Model) implementation
This commit introduces the QLM system - a stateful semantic layer for
tracking HI (Human Intelligence), AI (Agent Intelligence), and QI
(Quantum/Emergent Intelligence) in BlackRoad OS.

Core Features:
- HI/AI/QI intelligence layer modeling
- Event-driven state management
- QI emergence detection (agent self-correction, feedback loops, etc.)
- HI-AI alignment scoring
- Operator-facing query interface
- Reality ingestion (git, CI, agent logs)

Components Added:
- qlm_lab/models.py: Core data models (Actor, QLMEvent, QIEmergence, etc.)
- qlm_lab/state.py: State management and transition tracking
- qlm_lab/api.py: Public QLMInterface API
- qlm_lab/ingestion/: Git, CI, and agent log connectors
- qlm_lab/experiments/: Alignment and emergence validation
- qlm_lab/visualization.py: Timeline, actor graph, alignment plots
- qlm_lab/demo.py: Interactive demo script
- tests/test_qlm_core.py: Comprehensive test suite
- docs/QLM.md: Complete documentation (concepts, API, integration)

Usage:
  from qlm_lab.api import QLMInterface

  qlm = QLMInterface()
  qlm.record_operator_intent("Build feature X")
  qlm.record_agent_execution("agent-1", "Implement X", "task-1")
  summary = qlm.get_summary(days=7)

Run:
  python -m qlm_lab.demo
  python -m qlm_lab.experiments.alignment_detection
  pytest tests/test_qlm_core.py -v

Integrates with:
- cognitive/intent_graph.py (intent tracking)
- cognitive/agent_coordination.py (multi-agent coordination)
- operator_engine/scheduler.py (background analysis)

Next steps: Integrate with FastAPI backend, add Prism Console UI,
implement Lucidia language runtime.
2025-11-18 08:15:06 +00:00

223 lines
7.8 KiB
Python

"""
Experiment: QI Emergence Detection
Hypothesis: QLM can detect emergent behaviors (QI) when HI+AI interact in feedback loops.
Setup:
1. Simulate various agent behavior patterns
2. Check if QLM detects known QI patterns
3. Measure false positive/negative rates
Success Criteria:
- QLM detects at least 80% of true emergent patterns
- False positive rate < 20%
"""
import json
from typing import Dict, Any, List
import logging
from qlm_lab.api import QLMInterface
from qlm_lab.models import ActorRole, EventType
logger = logging.getLogger(__name__)
class EmergenceDetectionExperiment:
"""Experiment: Does QLM detect QI emergence?"""
def __init__(self):
self.qlm = QLMInterface()
self.results = {
"experiment": "emergence_detection",
"hypothesis": "QLM detects emergent HI+AI behaviors",
"patterns_tested": [],
"metrics": {},
}
def simulate_pattern(
self, pattern_name: str, should_trigger: bool
) -> Dict[str, Any]:
"""
Simulate a behavior pattern and check if QLM detects emergence.
Args:
pattern_name: Name of pattern to simulate
should_trigger: Whether this should trigger emergence detection
Returns:
Pattern test results
"""
print(f"\nTesting pattern: {pattern_name}")
print(f" Should trigger: {should_trigger}")
initial_emergences = len(self.qlm.state.emergences)
# Simulate different patterns
if pattern_name == "agent_self_correction":
# Agent hits error, then self-corrects
self.qlm.record_agent_execution(
"agent-001", "Deploy feature", "task-001"
)
self.qlm.record_agent_error("agent-001", "task-001", "Deployment failed")
self.qlm.record_agent_execution(
"agent-001", "Deploy feature (retry)", "task-001"
)
self.qlm.record_agent_completion("agent-001", "task-001", success=True)
elif pattern_name == "operator_feedback_loop":
# HI intent → AI execution → HI approval → refined intent
self.qlm.record_operator_intent("Build dashboard", intent_node_id="intent-001")
self.qlm.record_agent_execution(
"agent-001", "Create dashboard", "task-001", "intent-001"
)
self.qlm.record_agent_completion("agent-001", "task-001", success=True)
self.qlm.record_operator_approval("Dashboard", intent_node_id="intent-001")
self.qlm.record_operator_intent(
"Add charts to dashboard", intent_node_id="intent-002"
)
elif pattern_name == "emergent_collaboration":
# Multiple agents self-organize
self.qlm.record_agent_execution(
"agent-001", "Start task", "task-001"
)
self.qlm.record_agent_handoff(
"agent-001", "agent-002", "task-001", "Need help"
)
self.qlm.record_agent_handoff(
"agent-002", "agent-003", "task-001", "Pass to specialist"
)
elif pattern_name == "normal_execution":
# Just normal execution, no emergence
self.qlm.record_agent_execution(
"agent-001", "Normal task", "task-normal"
)
self.qlm.record_agent_completion("agent-001", "task-normal", success=True)
# Check if emergence was detected
final_emergences = len(self.qlm.state.emergences)
detected = final_emergences > initial_emergences
print(f" Detected: {detected}")
# Determine correctness
correct = detected == should_trigger
if correct:
print(f" ✅ Correct")
else:
if detected and not should_trigger:
print(f" ❌ False Positive")
else:
print(f" ❌ False Negative")
result = {
"pattern": pattern_name,
"should_trigger": should_trigger,
"detected": detected,
"correct": correct,
"type": (
"true_positive"
if detected and should_trigger
else "true_negative"
if not detected and not should_trigger
else "false_positive"
if detected and not should_trigger
else "false_negative"
),
}
self.results["patterns_tested"].append(result)
return result
def run(self) -> Dict[str, Any]:
"""Run all emergence detection tests"""
print("=" * 60)
print("Experiment: QI Emergence Detection")
print("=" * 60)
# Register agents
self.qlm.register_agent("agent-001", "Agent1", ActorRole.EXECUTOR)
self.qlm.register_agent("agent-002", "Agent2", ActorRole.EXECUTOR)
self.qlm.register_agent("agent-003", "Agent3", ActorRole.EXECUTOR)
# Test patterns that should trigger
self.simulate_pattern("agent_self_correction", should_trigger=True)
self.simulate_pattern("operator_feedback_loop", should_trigger=True)
# self.simulate_pattern("emergent_collaboration", should_trigger=True)
# Test patterns that should NOT trigger
self.simulate_pattern("normal_execution", should_trigger=False)
# Calculate metrics
total = len(self.results["patterns_tested"])
correct = sum(1 for p in self.results["patterns_tested"] if p["correct"])
true_positives = sum(
1 for p in self.results["patterns_tested"] if p["type"] == "true_positive"
)
false_positives = sum(
1 for p in self.results["patterns_tested"] if p["type"] == "false_positive"
)
true_negatives = sum(
1 for p in self.results["patterns_tested"] if p["type"] == "true_negative"
)
false_negatives = sum(
1 for p in self.results["patterns_tested"] if p["type"] == "false_negative"
)
accuracy = correct / total if total > 0 else 0
precision = (
true_positives / (true_positives + false_positives)
if (true_positives + false_positives) > 0
else 0
)
recall = (
true_positives / (true_positives + false_negatives)
if (true_positives + false_negatives) > 0
else 0
)
self.results["metrics"] = {
"total_patterns": total,
"correct": correct,
"accuracy": accuracy,
"true_positives": true_positives,
"false_positives": false_positives,
"true_negatives": true_negatives,
"false_negatives": false_negatives,
"precision": precision,
"recall": recall,
}
print("\n" + "=" * 60)
print("Experiment Results")
print("=" * 60)
print(f"Accuracy: {accuracy:.1%}")
print(f"Precision: {precision:.1%}")
print(f"Recall: {recall:.1%}")
print(f"False Positive Rate: {false_positives/total:.1%}")
print(f"False Negative Rate: {false_negatives/total:.1%}")
print()
if accuracy >= 0.8 and false_positives / total < 0.2:
print("✅ PASS: QLM accurately detects QI emergence")
else:
print("❌ FAIL: QI emergence detection needs improvement")
return self.results
def save_results(self, file_path: str) -> None:
"""Save experiment results to JSON"""
with open(file_path, "w") as f:
json.dump(self.results, f, indent=2)
print(f"\nResults saved to: {file_path}")
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
experiment = EmergenceDetectionExperiment()
results = experiment.run()
experiment.save_results("emergence_detection_results.json")