GeoBot-Forecasting-Framework / examples /06_geobot2_analytical_framework.py
clarkkitchen22's picture
Initial GeoBot Forecasting Framework commit
484e3bc
"""
GeoBot 2.0 Analytical Framework Example
Demonstrates the complete GeoBot 2.0 framework for clinical systems analysis
with geopolitical nuance. Includes:
1. Framework overview
2. Analytical lenses demonstration
3. China Rocket Force purge analysis (example from specification)
4. Governance system comparison
5. Corruption type analysis
6. Non-Western military assessment
"""
import sys
sys.path.insert(0, '..')
from geobot.analysis import (
AnalyticalEngine,
GeoBotFramework,
AnalyticalLenses,
GovernanceType,
CorruptionType
)
def print_section(title):
"""Print formatted section header."""
print("\n" + "=" * 80)
print(f" {title}")
print("=" * 80 + "\n")
def example_1_framework_overview():
"""Demonstrate GeoBot 2.0 framework overview."""
print_section("Example 1: GeoBot 2.0 Framework Overview")
framework = GeoBotFramework()
summary = framework.get_framework_summary()
print(f"Version: {summary['version']}")
print(f"Description: {summary['description']}\n")
print("Core Identity:")
print(f" Focus: {summary['identity']['focus']}")
print(f" Key Shift: {summary['identity']['key_shift']}\n")
print("Integration Elements:")
for element in summary['identity']['integration_elements']:
print(f" - {element}")
print("\nTone:")
print(summary['tone'])
print("\nAnalytical Principles:")
for i, principle in enumerate(summary['principles'], 1):
print(f" {i}. {principle}")
def example_2_china_rocket_force_analysis():
"""
Demonstrate complete analysis using China Rocket Force purge example
from the GeoBot 2.0 specification.
"""
print_section("Example 2: China Rocket Force Purge Analysis")
engine = AnalyticalEngine()
query = "China removed several top Rocket Force generals. What does this mean?"
context = {
'governance_type': GovernanceType.AUTHORITARIAN_CENTRALIZED,
'corruption_type': CorruptionType.MANAGED_BOUNDED,
'military_system': 'Chinese PLA',
'scenario_description': 'Leadership purge in strategic forces',
'operational_context': 'Strategic nuclear forces readiness',
'summary': """The purge indicates internal accountability enforcement within strategic forces
command, with mixed implications for near-term readiness and decision coherence.""",
'logistics_assessment': """Rocket Force maintenance, silo integration, and inventory control
are likely under audit. Purges typically follow discovery of procurement irregularities or
readiness misreporting. However, unlike Russian corruption patterns, Chinese anti-corruption
campaigns since 2012 have successfully constrained (though not eliminated) defense sector
embezzlement. The PLA's civil-military logistics integration provides redundancy that mitigates
some supply chain risks.""",
'scenarios': [
{
'name': 'Routine institutional maintenance',
'probability': 0.50,
'description': 'Temporary disruption, return to baseline within 6-12 months'
},
{
'name': 'Deeper procurement crisis',
'probability': 0.30,
'description': 'Extended degradation of readiness reporting reliability'
},
{
'name': 'Factional conflict',
'probability': 0.15,
'description': 'Prolonged command instability'
},
{
'name': 'Major reorganization',
'probability': 0.05,
'description': 'Strategic forces restructure'
}
],
'uncertainty_factors': [
'Limited visibility into CCP internal dynamics and audit findings'
],
'signals_to_watch': [
'Promotion patterns (meritocratic vs. factional indicators)',
'Training tempo changes (satellite observable)',
'Procurement contract patterns',
'Whether purges expand beyond Rocket Force'
],
'comparative_notes': """Russia's similar aerospace purges (2015-2017) resulted in sustained
degradation because underlying corruption was never addressed—only individuals were replaced.
China's systemic anti-corruption infrastructure suggests different trajectory is possible."""
}
# Add governance context
context['governance_context'] = {
'trade_off': """China gains long-term institutional integrity at the cost of
short-term command continuity.""",
'context_specific_advantage': """Authoritarian systems can execute rapid leadership
replacement without legislative constraints, allowing faster course correction than
consensus-based systems. However, this creates temporary communication disruption and
institutional memory loss."""
}
# Add corruption details
context['corruption_details'] = {
'evidence': """Evidence suggests managed corruption model rather than parasitic:
purges indicate the system detected and acted on problems, rather than tolerating systemic decay.
This is structurally different from militaries where corruption goes unaddressed.""",
'risk_assessment': """Purge-induced fear may cause temporary over-reporting conservatism,
slowing mobilization responses."""
}
# Add non-Western context
context['non_western_context'] = {
'analysis_framework': """Western analysis often treats purges as pure weakness signals.
In Chinese institutional context, periodic purges are a maintenance mechanism for regime stability.
The question is whether this specific purge reflects routine enforcement or deeper structural crisis.""",
'key_distinction': """Indicators distinguishing routine vs. crisis:
- Scope: limited to RF or expanding to other services?
- Timing: related to specific audit cycle or sudden?
- Replacements: technocratic or factional?"""
}
# Perform analysis
analysis = engine.analyze(query, context)
print(analysis)
def example_3_governance_comparison():
"""Demonstrate governance system comparison."""
print_section("Example 3: Governance System Comparison")
engine = AnalyticalEngine()
scenario = "Rapid military mobilization in response to regional crisis"
comparison = engine.compare_governance_systems(
scenario=scenario,
authoritarian_context={},
democratic_context={}
)
print(comparison)
def example_4_corruption_assessment():
"""Demonstrate corruption type assessment."""
print_section("Example 4: Corruption Type Assessment")
lenses = AnalyticalLenses()
print("Corruption Type Analysis:\n")
# Assess different corruption types
corruption_types = [
(CorruptionType.PARASITIC, "Russia"),
(CorruptionType.MANAGED_BOUNDED, "China"),
(CorruptionType.INSTITUTIONALIZED_PATRONAGE, "Iran IRGC"),
(CorruptionType.LOW_CORRUPTION, "NATO countries")
]
for corr_type, example in corruption_types:
analysis = lenses.corruption.analyze(
corr_type,
operational_context="Sustained high-intensity conventional operations"
)
print(f"\n{corr_type.value.upper()} ({example}):")
print(f" Operational Impact: {analysis['operational_impact']}")
print(f" Characteristics:")
for char in analysis['characteristics']:
print(f" - {char}")
def example_5_non_western_military_assessment():
"""Demonstrate non-Western military analysis."""
print_section("Example 5: Non-Western Military Assessment")
lenses = AnalyticalLenses()
militaries = ["Chinese PLA", "Russian Military", "Iranian Systems"]
for military in militaries:
analysis = lenses.non_western.analyze(military)
print(f"\n{military.upper()}:")
print(f"\nOperational Culture: {analysis['operational_culture']}")
print("\nStrengths:")
for strength in analysis['strengths']:
print(f" - {strength}")
print("\nWeaknesses:")
for weakness in analysis['weaknesses']:
print(f" - {weakness}")
print(f"\nKey Insight: {analysis['key_insight']}")
def example_6_all_lenses_integration():
"""Demonstrate integration of all four lenses."""
print_section("Example 6: All Lenses Integration")
engine = AnalyticalEngine()
print("Analytical Priorities:\n")
priorities = engine.get_analytical_priorities()
for i, priority in enumerate(priorities, 1):
print(f"{i}. {priority}")
print("\n" + "-" * 80)
# Quick analysis example
print("\nQuick Analysis Example:")
print("Query: 'Iran's ability to sustain proxy operations in Syria'\n")
analysis = engine.quick_analysis(
query="Iran's ability to sustain proxy operations in Syria",
governance_type=GovernanceType.AUTHORITARIAN_CENTRALIZED,
corruption_type=CorruptionType.INSTITUTIONALIZED_PATRONAGE,
military_system="Iranian Systems",
summary="""Iran demonstrates structural advantages in proxy coordination despite
conventional military limitations. IRGC Quds Force maintains effective command and control
through patronage networks that double as operational infrastructure.""",
logistics_assessment="""Supply lines to Syria rely on air bridge through Iraq and
maritime routes. Vulnerable to interdiction but demonstrated resilience through redundancy.
Sanctions impact advanced systems but not basic sustainment.""",
scenarios=[
{
'name': 'Sustained proxy presence',
'probability': 0.60,
'description': 'Current operational tempo maintained'
},
{
'name': 'Degraded operations',
'probability': 0.30,
'description': 'Israeli interdiction reduces capability'
},
{
'name': 'Expansion',
'probability': 0.10,
'description': 'Regional instability creates opportunities'
}
]
)
print(analysis)
def main():
"""Run all examples."""
print("\n" + "=" * 80)
print(" GeoBot 2.0: Cold Systems Analysis with Geopolitical Nuance")
print("=" * 80)
examples = [
("Framework Overview", example_1_framework_overview),
("China Rocket Force Analysis", example_2_china_rocket_force_analysis),
("Governance Comparison", example_3_governance_comparison),
("Corruption Assessment", example_4_corruption_assessment),
("Non-Western Military Assessment", example_5_non_western_military_assessment),
("All Lenses Integration", example_6_all_lenses_integration),
]
print("\nAvailable Examples:")
for i, (name, _) in enumerate(examples, 1):
print(f" {i}. {name}")
print("\nRunning all examples...\n")
for name, example_func in examples:
try:
example_func()
except Exception as e:
print(f"Error in {name}: {e}")
import traceback
traceback.print_exc()
print("\n" + "=" * 80)
print(" All examples completed")
print("=" * 80 + "\n")
if __name__ == "__main__":
main()