"""Central benchmark constants and tuning knobs."""

from __future__ import annotations

# Unit conversions
KIB = 1024.0
MIB = 1024.0 * 1024.0
MILLISECONDS_PER_SECOND = 1000.0
SECONDS_PER_MINUTE = 60.0

# Smoke suite caps
SMOKE_NUM_DATASETS_CAP = 25
SMOKE_WARMUP_DATASETS_CAP = 5
SMOKE_LATENCY_SAMPLES_CAP = 5
SMOKE_N_TRAIN_CAP = 256
SMOKE_N_TEST_CAP = 128
SMOKE_N_FEATURES_CAP = 24
SMOKE_N_NODES_CAP = 16

# Formatting/presentation
PRESET_KEY_HASH_SUFFIX_LEN = 8
DIAGNOSTICS_DUPLICATE_PRESET_SUFFIX_BASE = 1

# Guardrail thresholds and sample controls
MISSINGNESS_RATE_WARN_ABS_ERROR = 0.03
MISSINGNESS_RATE_FAIL_ABS_ERROR = 0.05
SHIFT_GUARDRAIL_RUNTIME_GATING_MIN_SAMPLE = 5
SHIFT_GUARDRAIL_DIRECTIONAL_GATING_MIN_SAMPLE = 5
NOISE_GUARDRAIL_RUNTIME_GATING_MIN_SAMPLE = 5

# Misc behavior knobs
THROUGHPUT_SLO_DATASETS_PER_MINUTE = 100.0

# Microbenchmark knobs
MICRO_CONFIG_N_TRAIN_CAP = 128
MICRO_CONFIG_N_TEST_CAP = 64
MICRO_CONFIG_N_FEATURES_CAP = 16
MICRO_CONFIG_N_NODES_CAP = 8
MICROBENCH_SYNTH_ROWS = 512
MICROBENCH_SYNTH_FEATURES = 64
MICROBENCH_PARENT_DIM = 24
MICROBENCH_DEFAULT_REPEATS = 5
MICROBENCH_REPEATS = 3
