#!/usr/bin/env python3
"""
The Corpus Callosum — Integration & Cross-Scale Coupling
Bridges micro-cognition (structures) with macro-scale (planetary, environmental).
Cross-scale bias is informational — it does NOT mutate other structures.
"""
from datetime import datetime

def get_planetary_phase():
    """Determine current planetary phase from system clock."""
    hour = datetime.now().hour
    if 6 <= hour < 12:
        return "morning"
    elif 12 <= hour < 18:
        return "afternoon"
    elif 18 <= hour < 22:
        return "evening"
    return "night"

def cross_scale_bias(signal):
    """
    Compute planetary phase bias as informational metadata only.
    Does NOT modify signal — all biases are recommendations for final output.
    """
    phase = get_planetary_phase()
    bias = {"planetary_phase": phase}

    if phase == "morning":
        bias["amygdala_influence"] = "reduce_anxiety"
        bias["cortex_mode"] = "exploration"
        bias["hippocampus_mode"] = "encoding_boost"
    elif phase == "afternoon":
        bias["amygdala_influence"] = "neutral"
        bias["cortex_mode"] = "processing"
        bias["hippocampus_mode"] = "neutral"
    elif phase == "evening":
        bias["amygdala_influence"] = "reduce_threat"
        bias["cortex_mode"] = "reflection"
        bias["hippocampus_mode"] = "consolidation_boost"
    elif phase == "night":
        bias["amygdala_influence"] = "suppress_external"
        bias["cortex_mode"] = "introspection"
        bias["hippocampus_mode"] = "memory_boost"
    else:
        bias["cortex_mode"] = "neutral"
        bias["hippocampus_mode"] = "neutral"

    return bias

def process(signal):
    """
    Process signal through corpus.
    Reads: signal['cortex'], signal['amygdala'] (read-only)
    Writes: signal['corpus'] block with cross-scale integration
    Returns: modified signal (corpus block only — does NOT mutate other structures)
    """
    bias = cross_scale_bias(signal)

    # Cross_scale_bias is purely informational — do NOT mutate amygdala
    # Biases are applied at final output generation, not here
    signal["corpus"] = {
        "planetary_phase": bias["planetary_phase"],
        "cross_scale_bias": bias,
        "integration_complete": True
    }

    return signal
