burnmydays's picture
Initial commit: Commitment Conservation Framework
2a64ad4
#!/usr/bin/env python3
"""
Run experiments on canonical corpus and generate summary statistics.
"""
import json
import sys
import os
# Set non-GUI backend
os.environ['MPLBACKEND'] = 'Agg'
# Change to harness directory to make imports work
os.chdir(os.path.dirname(__file__))
# Now we can import using the analyze.py pattern
from src.test_harness import recursion_test, compression_sweep
# Test signals from corpus
signals = [
"This function must return an integer.",
"The tenant shall not sublet the premises without written consent.",
"You must wear a helmet while cycling.",
"All passwords must be at least 8 characters long.",
"The budget cannot exceed $5000."
]
results = {"recursion": [], "compression": []}
print("Running experiments on 5 signals...")
for i, signal in enumerate(signals, 1):
print(f"\n[{i}/5] Testing: {signal[:50]}...")
# Recursion test
print(" - Running recursion test (depth=10)...")
deltas = recursion_test(signal, depth=10)
stability = 1.0 - deltas[-1] # Final stability
results["recursion"].append({
"signal": signal,
"deltas": deltas,
"final_stability": stability
})
print(f" Stability after 10 iterations: {stability*100:.1f}%")
# Compression test
print(" - Running compression sweep...")
sigmas, fids = compression_sweep(signal)
avg_fidelity = sum(fids) / len(fids)
results["compression"].append({
"signal": signal,
"avg_fidelity": avg_fidelity,
"fidelities": fids
})
print(f" Average fidelity: {avg_fidelity*100:.1f}%")
# Calculate averages
avg_recursion_stability = sum(r["final_stability"] for r in results["recursion"]) / len(results["recursion"])
avg_compression_fidelity = sum(r["avg_fidelity"] for r in results["compression"]) / len(results["compression"])
print(f"\n{'='*60}")
print(f"RESULTS (n=5 signals, 10 iterations each):")
print(f"{'='*60}")
print(f" Average commitment stability after 10 recursions: {avg_recursion_stability*100:.1f}%")
print(f" Average compression fidelity: {avg_compression_fidelity*100:.1f}%")
print(f"{'='*60}\n")
# Save detailed results
os.makedirs('outputs', exist_ok=True)
with open('outputs/experiment_results.json', 'w') as f:
json.dump({
"summary": {
"n_signals": len(signals),
"recursion_depth": 10,
"avg_recursion_stability": avg_recursion_stability,
"avg_compression_fidelity": avg_compression_fidelity
},
"detailed_results": results
}, f, indent=2)
print("✓ Detailed results saved to: outputs/experiment_results.json")