# Renacer Performance Assertions for entrenar
#
# These assertions enforce performance budgets for entrenar (training & optimization library).
# Assertions run at build time (via cargo test) and fail CI if violated.
#
# Toyota Way Principle: Andon (stop the line when defects detected)

[[assertion]]
name = "training_iteration_latency"
type = "critical_path"
max_duration_ms = 2000  # Training iterations (forward + backward + optimizer step)
fail_on_violation = true
enabled = true

[[assertion]]
name = "max_syscall_budget"
type = "span_count"
max_spans = 10000  # Autograd tape operations + I/O
fail_on_violation = true
enabled = true

[[assertion]]
name = "memory_allocation_budget"
type = "memory_usage"
max_bytes = 2147483648  # 2GB maximum for model parameters + gradients
tracking_mode = "allocations"
fail_on_violation = true
enabled = true

[[assertion]]
name = "prevent_god_process"
type = "anti_pattern"
pattern = "GodProcess"
threshold = 0.8  # 80% confidence threshold
fail_on_violation = false  # Warning only (training may be compute-intensive)
enabled = true

[[assertion]]
name = "detect_tight_loop"
type = "anti_pattern"
pattern = "TightLoop"
threshold = 0.7  # Detect excessive loop iterations
fail_on_violation = false  # Warning only (gradient descent has intentional loops)
enabled = true

# Disabled assertion (example - can be enabled for stricter checking)
[[assertion]]
name = "ultra_strict_latency"
type = "critical_path"
max_duration_ms = 500  # <500ms (very aggressive for ML training)
fail_on_violation = true
enabled = false  # Disabled by default

# ==============================================================================
# Golden Trace Performance Validation
# ==============================================================================
# Validates that training operations (autograd, optimizer, LoRA, model I/O)
# meet performance expectations using golden traces for regression detection.

[semantic_equivalence]
enabled = true
baseline_dir = "golden_traces/baseline"
min_confidence = 0.90  # 90% confidence required for PASS

# Validation checks
check_write_patterns = true          # Output correctness
check_file_operations = true         # Model I/O validation
check_output_correctness = true      # Exact output matching
check_memory_allocations = false     # Allocations may vary

# Performance expectations
expected_speedup_min = 1.0           # Baseline comparison
expected_speedup_max = 10.0          # Sanity check for performance improvements

# Lamport clock configuration
[lamport_clock]
enabled = true
propagate_across_fork = true
propagate_across_exec = true
env_var = "RENACER_LAMPORT_CLOCK"

# Trace compression
[compression]
enabled = true
algorithm = "rle"  # Run-length encoding
min_file_size_kb = 100  # Only compress traces >100KB

# OpenTelemetry export (optional - for Jaeger/Grafana integration)
[otlp]
enabled = false  # Enable when observability stack available
endpoint = "http://localhost:4317"
service_name = "entrenar"

# CI/CD integration
[ci]
fail_fast = true  # Stop on first assertion failure (Andon principle)
export_format = "json"
export_path = "target/renacer-reports"
compare_with_baseline = true
