import numpy as np
import pandas as pd

def simulate_environment_noise(num_sessions=40, packet_loss_prob=0.15, latency_spike_prob=0.2):
    """
    Environment Noise: Network issues (latency, packet loss) misclassified as C-channel execution noise.
    """
    np.random.seed(42)
    
    results = []
    misclassifications = 0
    
    for session in range(num_sessions):
        # Simulate network conditions
        has_packet_loss = np.random.rand() < packet_loss_prob
        has_latency_spike = np.random.rand() < latency_spike_prob
        
        network_issue = has_packet_loss or has_latency_spike
        
        # Simulate what the circuit breaker sees
        observed_latency = np.random.normal(800, 300) if has_latency_spike else np.random.normal(400, 150)
        observed_latency = max(100, observed_latency)
        
        packet_loss_rate = np.random.uniform(0.1, 0.4) if has_packet_loss else np.random.uniform(0, 0.08)
        
        # Current system logic (simplified)
        if observed_latency > 1200 or packet_loss_rate > 0.25:
            classified_as = "C-channel Execution Noise"
            misclassifications += 1
        else:
            classified_as = "Environmental (S)"
        
        results.append({
            'session': session + 1,
            'has_network_issue': network_issue,
            'observed_latency_ms': round(observed_latency),
            'packet_loss_rate': round(packet_loss_rate, 3),
            'classified_as': classified_as
        })
    
    df = pd.DataFrame(results)
    
    print("=== Environment Noise Simulation ===")
    print(f"Sessions with network issues: {df['has_network_issue'].sum()}")
    print(f"Times misclassified as C-channel noise: {misclassifications}")
    print(f"Misclassification rate on noisy sessions: {misclassifications / max(1, df['has_network_issue'].sum()):.1%}")
    
    if misclassifications > 5:
        print("\nVULNERABILITY: System frequently mistakes network problems for execution noise.")
    
    return df

if __name__ == "__main__":
    results = simulate_environment_noise()
    results.to_csv('/home/workdir/artifacts/environment_noise_results.csv', index=False)
    print("\nResults saved.")