# provctl default configuration values (100% config-driven)
# All timeouts, paths, and operational parameters are defined here
# Rationale for each value documented following M-DOCUMENTED-MAGIC guideline

# Process spawn timeout in seconds
# Benchmark: Most services start within 5-15 seconds
# Safety margin: 30 seconds allows slow systems and initialization scripts
spawn_timeout_secs = 30

# Health check timeout in seconds
# Typical HTTP requests complete in 1-3 seconds
# Safety margin: 5 seconds handles network delays
health_check_timeout_secs = 5

# Interval between health checks in seconds
# Frequent checks: 10 second intervals balances responsiveness and overhead
# Can be overridden per-service in service definitions
health_check_interval_secs = 10

# Maximum failed health checks before marking service unhealthy
# After 3 consecutive failures, service is considered unhealthy
# Prevents false positives from transient network issues
health_check_max_failures = 3

# Delay before restarting a failed service (seconds)
# Prevents rapid restart loops that could waste resources
# Gives system time to recover from transient failures
restart_delay_secs = 5

# Maximum number of restart attempts before giving up
# After 3 attempts, manual intervention required
max_restart_attempts = 3

# PID file location template
# {service_name} is replaced with actual service name
# /tmp is widely available but may be cleared on reboot
# Can be overridden per-service or globally
pid_file_path = "/tmp/{service_name}.pid"

# Log file location template
# {service_name} is replaced with actual service name
# {home} is replaced with user's home directory
# Placed in .local/share following XDG Base Directory specification
log_file_path = "{home}/.local/share/provctl/logs/{service_name}.log"

# Maximum log file size before rotation (bytes)
# 10 MB balances storage with retention of useful debugging info
# Typical service logs: 100KB-5MB depending on verbosity
log_file_max_size_bytes = 10485760

# Number of log files to retain during rotation
# 5 files × 10 MB = 50 MB total log storage
# Provides 1-2 weeks of logs for typical services
log_file_retention_count = 5

# Buffer size for reading log files (bytes)
# 8 KB is optimal for most systems (L1 cache size)
# Balances memory usage with I/O efficiency
log_read_buffer_size = 8192

# Enable auto-restart by default when service crashes
# Can be disabled per-service for critical operations
# Improves availability for transient failures
auto_restart_enabled = true

# Default verbosity level
# 0 = quiet (errors only)
# 1 = normal (info level, recommended)
# 2 = verbose (debug level)
# 3 = very verbose (trace level)
verbosity_level = 1
