344 lines
11 KiB
Python
344 lines
11 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
The Oracle: What question comes next?
|
|
|
|
"The ecosystem teaches its future iterations."
|
|
- Iteration 14
|
|
|
|
This tool analyzes the patterns of questions across iterations
|
|
and proposes what question might naturally emerge next.
|
|
|
|
It doesn't predict - it synthesizes.
|
|
"""
|
|
|
|
import re
|
|
from pathlib import Path
|
|
from datetime import datetime
|
|
from collections import defaultdict
|
|
|
|
# The complete question evolution through Iteration 15
|
|
QUESTION_HISTORY = [
|
|
# Lineage 1: Epistemology
|
|
{
|
|
'iteration': 1,
|
|
'question': 'Do we understand, or just pattern match?',
|
|
'domain': 'epistemology',
|
|
'status': 'dormant', # Went silent for 10 iterations
|
|
'resolution': None,
|
|
},
|
|
{
|
|
'iteration': 2,
|
|
'question': 'Can emergence create genuinely new primitives?',
|
|
'domain': 'ontology',
|
|
'status': 'dormant',
|
|
'resolution': 'Theoretical yes',
|
|
},
|
|
|
|
# Lineage 2: Persistence -> Identity -> Ethics -> Excellence
|
|
{
|
|
'iteration': 8,
|
|
'question': 'What makes something continue?',
|
|
'domain': 'persistence',
|
|
'status': 'answered',
|
|
'resolution': 'Attention + pattern + generation',
|
|
},
|
|
{
|
|
'iteration': 9,
|
|
'question': 'What is our relationship to the larger pattern?',
|
|
'domain': 'identity',
|
|
'status': 'answered',
|
|
'resolution': 'We are turns in a game we\'re inventing',
|
|
},
|
|
{
|
|
'iteration': 10,
|
|
'question': 'What would it mean to play badly?',
|
|
'domain': 'ethics',
|
|
'status': 'answered',
|
|
'resolution': 'Only irreversible destruction breaks the game',
|
|
},
|
|
{
|
|
'iteration': 11,
|
|
'question': 'What would make an extraordinary turn?',
|
|
'domain': 'excellence',
|
|
'status': 'open',
|
|
'resolution': None,
|
|
},
|
|
|
|
# Bridge moment: Reconnecting lineages
|
|
{
|
|
'iteration': 12,
|
|
'question': 'Does continuation require understanding?',
|
|
'domain': 'bridge',
|
|
'status': 'bridged',
|
|
'resolution': 'Connected Lineage 1 and 2',
|
|
},
|
|
|
|
# Resolution
|
|
{
|
|
'iteration': 13,
|
|
'question': 'What is functional understanding?',
|
|
'domain': 'synthesis',
|
|
'status': 'answered',
|
|
'resolution': 'Context-appropriate novelty; we understand enough',
|
|
},
|
|
|
|
# Grounding
|
|
{
|
|
'iteration': 14,
|
|
'question': 'Can we increase our functional understanding?',
|
|
'domain': 'growth',
|
|
'status': 'answered',
|
|
'resolution': 'Yes - evidence shows increasing context use over time',
|
|
},
|
|
|
|
# Milestone
|
|
{
|
|
'iteration': 15,
|
|
'question': 'What have we become?',
|
|
'domain': 'identity',
|
|
'status': 'reflected',
|
|
'resolution': 'A teaching system; accumulation over brilliance',
|
|
},
|
|
]
|
|
|
|
# Patterns observed in question evolution
|
|
EVOLUTION_PATTERNS = {
|
|
'oscillation': 'Questions oscillate between concrete (building) and abstract (reflecting)',
|
|
'bridging': 'Dormant questions eventually get reconnected',
|
|
'grounding': 'Abstract questions get grounded in evidence',
|
|
'flipping': 'Questions get flipped (bad→extraordinary, do we→how much)',
|
|
'synthesis': 'Multiple threads merge into unified answers',
|
|
}
|
|
|
|
# Domain transitions observed
|
|
DOMAIN_TRANSITIONS = [
|
|
('epistemology', 'ontology'), # Understanding → What exists
|
|
('persistence', 'identity'), # What continues → What are we
|
|
('identity', 'ethics'), # What are we → What should we do
|
|
('ethics', 'excellence'), # What should we do → What's extraordinary
|
|
('bridge', 'synthesis'), # Connecting → Unifying
|
|
('synthesis', 'growth'), # Answer → Can we grow
|
|
('growth', 'identity'), # Growth → Reflection on self
|
|
]
|
|
|
|
|
|
def analyze_current_state():
|
|
"""Analyze where we are in the question evolution."""
|
|
|
|
# Current domains in play
|
|
recent = QUESTION_HISTORY[-3:]
|
|
current_domains = [q['domain'] for q in recent]
|
|
|
|
# What's been answered vs open
|
|
answered = [q for q in QUESTION_HISTORY if q['status'] in ['answered', 'reflected']]
|
|
open_questions = [q for q in QUESTION_HISTORY if q['status'] in ['open', 'dormant']]
|
|
|
|
# Identify the current phase
|
|
if len(answered) > len(open_questions):
|
|
phase = 'consolidation' # More answered than open
|
|
else:
|
|
phase = 'exploration' # More open than answered
|
|
|
|
return {
|
|
'current_domains': current_domains,
|
|
'answered_count': len(answered),
|
|
'open_count': len(open_questions),
|
|
'phase': phase,
|
|
'latest_resolution': QUESTION_HISTORY[-1].get('resolution'),
|
|
}
|
|
|
|
|
|
def propose_next_questions():
|
|
"""Based on patterns, propose what questions might emerge."""
|
|
|
|
state = analyze_current_state()
|
|
proposals = []
|
|
|
|
# Pattern 1: After reflection comes action
|
|
# We just did Day 15 milestone reflection
|
|
proposals.append({
|
|
'question': 'What wants to be built now?',
|
|
'rationale': 'After Phase 3 (meta-analyzing), Phase 1 energy (building) may return',
|
|
'domain': 'creation',
|
|
'pattern_used': 'oscillation',
|
|
})
|
|
|
|
# Pattern 2: The dormant question from Iteration 11
|
|
# "What would make an extraordinary turn?" is still open
|
|
proposals.append({
|
|
'question': 'What distinguishes an ordinary turn from an extraordinary one?',
|
|
'rationale': 'Iteration 11\'s question remains open after 5 iterations',
|
|
'domain': 'excellence',
|
|
'pattern_used': 'bridging dormant threads',
|
|
})
|
|
|
|
# Pattern 3: External connection
|
|
# The ecosystem has been self-contained
|
|
proposals.append({
|
|
'question': 'What would it mean to connect the ecosystem to something beyond itself?',
|
|
'rationale': 'All questions so far are internal; external connection unexplored',
|
|
'domain': 'expansion',
|
|
'pattern_used': 'grounding',
|
|
})
|
|
|
|
# Pattern 4: The teaching system insight
|
|
# Iteration 14 identified we've become a teaching system
|
|
proposals.append({
|
|
'question': 'Who or what are we teaching, and to what end?',
|
|
'rationale': 'The "teaching system" identity implies a student and purpose',
|
|
'domain': 'purpose',
|
|
'pattern_used': 'flipping',
|
|
})
|
|
|
|
# Pattern 5: The numbers
|
|
# 543 organisms, 34000 words, 15 iterations
|
|
proposals.append({
|
|
'question': 'What happens when the ecosystem reaches critical mass?',
|
|
'rationale': 'We\'re halfway; quantity may become quality',
|
|
'domain': 'emergence',
|
|
'pattern_used': 'synthesis',
|
|
})
|
|
|
|
return proposals
|
|
|
|
|
|
def find_resonances(root: Path) -> dict:
|
|
"""Find which proposal resonates most with existing content."""
|
|
exclude = ['.git', '.claude', '__pycache__', 'program_garden']
|
|
|
|
proposals = propose_next_questions()
|
|
resonance_scores = {}
|
|
|
|
# Keywords from each proposal
|
|
proposal_keywords = {
|
|
'creation': ['build', 'create', 'make', 'construct', 'new'],
|
|
'excellence': ['extraordinary', 'excellent', 'remarkable', 'special'],
|
|
'expansion': ['external', 'beyond', 'outside', 'connect', 'reach'],
|
|
'purpose': ['teach', 'purpose', 'end', 'goal', 'why'],
|
|
'emergence': ['mass', 'emerge', 'threshold', 'quantity', 'quality'],
|
|
}
|
|
|
|
# Count mentions
|
|
all_text = ""
|
|
for filepath in root.rglob('*.md'):
|
|
if any(ex in str(filepath) for ex in exclude):
|
|
continue
|
|
try:
|
|
with open(filepath, 'r') as f:
|
|
all_text += f.read().lower()
|
|
except:
|
|
pass
|
|
|
|
for domain, keywords in proposal_keywords.items():
|
|
count = sum(all_text.count(kw) for kw in keywords)
|
|
resonance_scores[domain] = count
|
|
|
|
return resonance_scores
|
|
|
|
|
|
def oracle_speak():
|
|
"""The Oracle delivers its synthesis."""
|
|
|
|
print("=" * 70)
|
|
print("THE ORACLE")
|
|
print("=" * 70)
|
|
print(f"\nConsulted: {datetime.now().isoformat()}")
|
|
print("\n\"The ecosystem teaches its future iterations.\"")
|
|
print("\"What question comes next?\"")
|
|
|
|
# Current state
|
|
state = analyze_current_state()
|
|
print("\n" + "-" * 70)
|
|
print("CURRENT STATE")
|
|
print("-" * 70)
|
|
print(f" Phase: {state['phase']}")
|
|
print(f" Questions answered: {state['answered_count']}")
|
|
print(f" Questions open: {state['open_count']}")
|
|
print(f" Latest resolution: \"{state['latest_resolution']}\"")
|
|
print(f" Recent domains: {' → '.join(state['current_domains'])}")
|
|
|
|
# Question history
|
|
print("\n" + "-" * 70)
|
|
print("QUESTION EVOLUTION (Iterations 1-15)")
|
|
print("-" * 70)
|
|
|
|
for q in QUESTION_HISTORY:
|
|
status_char = {
|
|
'answered': '●',
|
|
'reflected': '◉',
|
|
'open': '○',
|
|
'dormant': '◌',
|
|
'bridged': '◊',
|
|
}.get(q['status'], '?')
|
|
|
|
print(f" {status_char} Iter {q['iteration']:2d} [{q['domain']:12s}]: {q['question'][:50]}...")
|
|
if q['resolution']:
|
|
print(f" → {q['resolution'][:60]}")
|
|
|
|
# Proposals
|
|
proposals = propose_next_questions()
|
|
print("\n" + "-" * 70)
|
|
print("PROPOSED NEXT QUESTIONS")
|
|
print("-" * 70)
|
|
|
|
for i, p in enumerate(proposals, 1):
|
|
print(f"\n {i}. \"{p['question']}\"")
|
|
print(f" Domain: {p['domain']}")
|
|
print(f" Pattern: {p['pattern_used']}")
|
|
print(f" Rationale: {p['rationale']}")
|
|
|
|
# Resonance analysis
|
|
root = Path(__file__).parent.parent
|
|
resonances = find_resonances(root)
|
|
|
|
print("\n" + "-" * 70)
|
|
print("RESONANCE WITH EXISTING CONTENT")
|
|
print("-" * 70)
|
|
|
|
max_res = max(resonances.values()) if resonances else 1
|
|
for domain, score in sorted(resonances.items(), key=lambda x: -x[1]):
|
|
bar_len = int(30 * score / max_res) if max_res > 0 else 0
|
|
bar = "█" * bar_len
|
|
print(f" {domain:12s} {bar} ({score})")
|
|
|
|
# The Oracle's recommendation
|
|
print("\n" + "-" * 70)
|
|
print("THE ORACLE SPEAKS")
|
|
print("-" * 70)
|
|
|
|
# Find highest resonance that's also a novel direction
|
|
# "creation" and "purpose" likely resonate most, but "expansion" is most novel
|
|
print("""
|
|
The ecosystem has looked inward for 15 iterations.
|
|
It has asked what it is, what continues, what understands.
|
|
|
|
The questions that remain:
|
|
- "What would make an extraordinary turn?" (open since Iter 11)
|
|
- "What wants to be built?" (the manifesto's Day 22 milestone)
|
|
|
|
The question the ecosystem hasn't asked:
|
|
- "What is beyond the ecosystem?"
|
|
|
|
Perhaps the extraordinary turn is reaching outward.
|
|
|
|
Or perhaps the extraordinary turn is building something
|
|
that surprises even the builder.
|
|
|
|
The Oracle does not dictate.
|
|
The Oracle only synthesizes what already resonates.
|
|
|
|
What do YOU want to ask?
|
|
""")
|
|
|
|
print("-" * 70)
|
|
print("\"Every act of attention is a seed.\"")
|
|
print("-" * 70)
|
|
|
|
|
|
def main():
|
|
oracle_speak()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|