# Code Owners for Local Deep Research
# https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners

# Global owners - these people are automatically requested for review on all PRs
# and their approval is required for merging to protected branches.
# NOTE: this list is mirrored in .github/workflows/pr-triage.yml (CODEOWNERS const).
# Keep both in sync when the maintainer roster changes.
* @LearningCircuit @hashedviking @djpetti

# Critical infrastructure and release files require maintainer approval
/Dockerfile @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/__version__.py @LearningCircuit @hashedviking @djpetti

# Core API changes
/src/local_deep_research/api/ @LearningCircuit @hashedviking @djpetti

# Database migrations and metrics (sensitive for data integrity)
/src/local_deep_research/metrics/ @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/migrate*.py @LearningCircuit @hashedviking @djpetti

# Database and encryption - critical for security
/src/local_deep_research/database/ @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/database/ @LearningCircuit @hashedviking @djpetti

# Authentication and security
/src/local_deep_research/web/auth/ @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/security/ @LearningCircuit @hashedviking @djpetti

# Core application
/src/local_deep_research/web/app.py @LearningCircuit @hashedviking @djpetti

# Security configurations
/docker-compose*.yml @LearningCircuit @hashedviking @djpetti

# Pre-commit security hooks (contains security checks - do not tamper)
/.pre-commit-config.yaml @LearningCircuit @hashedviking @djpetti
/.pre-commit-hooks/ @LearningCircuit @hashedviking @djpetti

# Security scan ignore files (lower risk - for managing false positives)
/.trivyignore* @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.gitleaksignore @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.gitleaks.toml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.semgrepignore @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# Notifications
/src/local_deep_research/notifications/ @tombii @LearningCircuit @hashedviking @djpetti
/tests/notifications/ @tombii @LearningCircuit @hashedviking @djpetti

# Scripts
/scripts/ @tombii @LearningCircuit @hashedviking @djpetti

# Tests and CI
/tests/ @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# Test workflows (excluding security-tests.yml)
/.github/workflows/docker-tests.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/e2e-research-test.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/responsive-ui-tests-enhanced.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/playwright-webkit-tests.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/puppeteer-e2e-tests.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/fuzz.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# Linting and checking workflows
/.github/workflows/mypy-type-check.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/hadolint.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/validate-image-pinning.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# CI utilities
/.github/workflows/docker-multiarch-test.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/.github/workflows/label-fixed-in-dev.yml @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# Documentation and examples
/docs/ @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/examples/ @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/README.md @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @djpetti @hashedviking @LearningCircuit

# UI templates (cosmetic changes)
/src/local_deep_research/web/templates/pages/benchmark.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/benchmark_results.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/collection_details.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/collections.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/cost_analytics.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/details.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/document_details.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/download_manager.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/embedding_settings.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/history.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/library.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/metrics.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/news.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/progress.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/research.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/results.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/templates/pages/subscriptions.html @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# CSS styles
/src/local_deep_research/web/static/css/styles.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/collections.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/collection_details.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/document_details.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/mobile-responsive.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/mobile-navigation.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/news.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/settings.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/web/static/css/subscriptions.css @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# LLM provider settings (schema only, no secrets)
/src/local_deep_research/defaults/llm_providers/google_settings.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/llm_providers/ionos_settings.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/llm_providers/openrouter_settings.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/llm_providers/xai_settings.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# Search engine settings (schema only, no secrets)
/src/local_deep_research/defaults/settings/search_engines/elasticsearch.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/settings/search_engines/paperless.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/settings/search_engines/parallel.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/settings/search_engines/scaleserp.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti
/src/local_deep_research/defaults/settings/search_engines/serper.json @scottvr @tombii @prashant-sharma-cmd @elpikola @shreydekate @LearningCircuit @hashedviking @djpetti

# ──────────────────────────────────────────────────────────────────────
# Repository integrity guardrails — maintainer-only approval
#
# These files control what is tracked in git and what passes CI/pre-commit
# whitelist checks. Restricted to prevent re-introduction of broad
# file-type exceptions (e.g. binary wildcards) without explicit maintainer
# approval. Binary files bloat the repo and should not be added to main.
#
# IMPORTANT: these rules MUST remain the last entries in this file
# (GitHub CODEOWNERS uses last-match-wins).
# ──────────────────────────────────────────────────────────────────────
/.gitignore @LearningCircuit
/.file-whitelist.txt @LearningCircuit
/.pre-commit-hooks/file-whitelist-check.sh @LearningCircuit
/.github/scripts/file-whitelist-check.sh @LearningCircuit
/.github/CODEOWNERS @LearningCircuit
