| special_treatment.auto_expire_days | 90 | 90 | INTEGER | 1-365 | Days before a standing special treatment exception expires and needs renewal |
| special_treatment.require_second_auth_usd | 100000 | 100000 | INTEGER | 0-999999999 | USD threshold above which special treatment requires second authoriser |
| trader_input.quarantine_hrs | 72 | 72 | INTEGER | 24-168 | Hours before unresolved quarantine auto-archives |
| trader_input.stale_threshold_hrs | 48 | 48 | INTEGER | 12-168 | Hours before input considered stale |
| validation.auto_fail_threshold | 0.30 | 0.30 | NUMERIC | 0.1-0.5 | Below this confidence, auto-mark as FAILED |
| validation.confidence_threshold | 0.70 | 0.70 | NUMERIC | 0.5-1.0 | Min confidence score to accept PASSED verdict |
| validation.price_tolerance_pct | 2.0 | 2.0 | NUMERIC | 0.5-10.0 | % deviation allowed before price flagged as suspicious |
| validation.primary_model | SONAR_PRO | SONAR_PRO | TEXT | — | Primary model for AI validation checks |
| validation.queue.max_age_hours | 48 | 48 | INTEGER | 12-168 | Max hours to keep completed queue items before cleanup |
| validation.secondary_model | GEMINI | GEMINI | TEXT | — | Secondary model for flagged record second opinion |
| validation.sign_off_hours | 2 | 2 | INTEGER | 1-12 | Hours before next session open for sign-off deadline |
| validation.skip_sources | LME_INV,PBOC | LME_INV,PBOC | TEXT | — | Sources skipped for AI validation (authoritative) |
| validation.tier_a.expiry_minutes | 30 | 30 | INTEGER | 5-120 | Minutes before Tier A queue item expires |
| validation.tier_a_sources | REUTERS | REUTERS,REFINITIV | TEXT | — | Comma-separated sources that default to Tier A |
| validation.tier_b.expiry_hours | 4 | 4 | INTEGER | 1-24 | Hours before Tier B queue item expires |