verbose = "info"
no_progress = true
max_concurrency = 4
include_mail = false

# Network tuning
timeout = 30            # seconds per request (increased for slow servers)
max_retries = 5         # retry transient failures
retry_wait_time = 3     # seconds between retries
max_redirects = 10
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0 Safari/537.36"

# Treat successes, rate-limiting, and server errors as acceptable in CI
# Accept all 2xx as valid, 429 (rate limited), and 5xx (server errors are transient)
# Server errors (500-599) are included because external services can be temporarily unavailable
# and we don't want CI to fail due to transient third-party outages
accept = ["200..=299", "429", "500..=599"]

# Only check web links
scheme = ["https", "http"]

# Ignore common local/test URLs, sites with bot protection, and known flaky sites
exclude = [
  "^https?://localhost",
  "^http://127\\.0\\.0\\.1",
  "^https?://0\\.0\\.0\\.0",
  "^file://",
  # Sites with aggressive bot protection that return 403 but links are valid
  "^https?://www\\.npmjs\\.com",
  "^https?://doi\\.org",
  # Known flaky/unreliable sites that cause intermittent CI failures
  "^https?://bugs\\.python\\.org",
  # Academic/hobby/archive sites with intermittent connectivity from GitHub Actions runners
  # These sites are valid but frequently timeout or fail from CI runner networks
  # Verified working from regular internet connections (Feb 2026)
  # When adding new external URLs to docs, evaluate CI reliability for academic,
  # archive, and conference sites -- add exclusions here if they are reference-only
  "^https?://www\\.pcg-random\\.org",
  "^https?://www\\.greensort\\.org",
  # Web Archive frequently times out from CI runners; snapshot URLs are reference-only
  "^https?://web\\.archive\\.org",
  # Old conference subdomains are unreliable; referenced in third-party-notices/performance docs
  "^https?://2014\\.splashcon\\.org",
  # Defunct or permanently unavailable sites
  "^https?://wiki\\.unity3d\\.com",
  "^https?://grepcode\\.com",
  # Will Stafford Parsons repositories (offline)
  "^https?://github\\.com/wileylooper",
  "^https?://github\\.com/wstaffordp"
]

# Exclude file paths (regex patterns) - avoid scanning third-party code
exclude_path = [
  "node_modules",
  "\\.git"
]
