{
  "required_docs": [
    {
      "path": "README.md",
      "description": "Top-level repository handbook."
    },
    {
      "path": "Jenkinsfile",
      "description": "Top-level Jenkins mirror for multibranch discovery."
    },
    {
      "path": "ci/Jenkinsfile.titan-iac",
      "description": "Canonical titan-iac Jenkins pipeline definition."
    }
  ],
  "managed_modules": [
    "ci/scripts/publish_test_metrics.py",
    "ci/scripts/publish_test_metrics_quality.py",
    "ci/scripts/semgrep_report.py",
    "ci/scripts/supply_chain_report.py",
    "services/mailu/scripts/mailu_sync.py",
    "services/mailu/scripts/mailu_sync_listener.py",
    "testing/__init__.py",
    "testing/quality_contract.py",
    "testing/quality_docs.py",
    "testing/quality_hygiene.py",
    "testing/quality_coverage.py",
    "testing/quality_gate.py",
    "ci/tests/glue/test_ariadne_schedules.py",
    "ci/tests/glue/test_glue_metrics.py",
      "testing/tests/test_publish_test_metrics.py",
      "testing/tests/test_supply_chain_report.py",
      "testing/tests/test_semgrep_report.py",
      "testing/tests/test_quality_contract.py",
    "testing/tests/test_quality_gate.py"
  ],
  "lint_paths": [
    "ci/scripts/publish_test_metrics.py",
    "ci/scripts/publish_test_metrics_quality.py",
    "ci/scripts/semgrep_report.py",
    "ci/tests/glue",
    "scripts/tests",
    "services/comms/scripts/tests",
    "services/mailu/scripts/mailu_sync.py",
    "services/mailu/scripts/mailu_sync_listener.py",
    "testing/tests",
    "testing"
  ],
  "pytest_suites": {
    "unit": {
      "description": "Fast unit and contract tests for repo automation.",
      "paths": [
        "scripts/tests",
        "services/comms/scripts/tests",
        "testing/tests"
      ],
      "junit": "build/junit-unit.xml",
      "coverage_sources": [
        "ci/scripts",
        "scripts.render.dashboards_render_atlas",
        "services/mailu/scripts",
        "testing"
      ],
      "coverage_xml": "build/coverage-unit.xml"
    },
    "glue": {
      "description": "Cluster-live glue checks that validate CronJobs and exported metrics.",
      "paths": [
        "ci/tests/glue"
      ],
      "junit": "build/junit-glue.xml"
    }
  },
  "profiles": {
    "local": [
      "docs",
      "smell",
      "hygiene",
      "unit",
      "coverage"
    ],
    "jenkins": [
      "docs",
      "smell",
      "hygiene",
      "unit",
      "coverage",
      "sonarqube",
      "ironbank",
      "glue"
    ]
  },
  "manual_scripts": [
    {
      "path": "scripts/manual-tests/test_atlas_user_cleanup.py",
      "description": "Manual cleanup validation for Atlas user lifecycle automation."
    },
    {
      "path": "scripts/manual-tests/test_user_cleanup.py",
      "description": "Manual cleanup validation for shared user lifecycle automation."
    },
    {
      "path": "scripts/manual-tests/test_vaultwarden_user_cleanup.py",
      "description": "Manual cleanup validation for Vaultwarden user lifecycle automation."
    },
    {
      "path": "services/bstein-dev-home/scripts/test_portal_onboarding_flow.py",
      "description": "Portal onboarding end-to-end flow validation with mail delivery checks."
    },
    {
      "path": "services/keycloak/scripts/tests/test_keycloak_execute_actions_email.py",
      "description": "Standalone Keycloak SMTP execute-actions-email validation script."
    },
    {
      "path": "services/keycloak/scripts/tests/test_portal_token_exchange.py",
      "description": "Standalone Keycloak token-exchange validation script."
    }
  ],
  "hygiene": {
    "max_lines": 500,
    "line_limit_globs": [
      "testing/**/*.py",
      "ci/scripts/*.py",
      "ci/tests/**/*.py",
      "scripts/tests/**/*.py",
      "services/*/scripts/tests/**/*.py",
      "services/mailu/scripts/mailu_sync.py",
      "services/mailu/scripts/mailu_sync_listener.py"
    ],
    "naming_rules": [
      {
        "glob": "testing/*.py",
        "pattern": "^(?:__init__|quality_[a-z0-9_]+)\\.py$",
        "description": "Top-level testing helpers use quality_* module names."
      },
      {
        "glob": "testing/tests/*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "Top-level pytest files use test_*.py names."
      },
      {
        "glob": "ci/tests/**/*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "CI pytest files use test_*.py names."
      },
      {
        "glob": "scripts/tests/**/*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "Script pytest files use test_*.py names."
      },
      {
        "glob": "scripts/test_*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "Standalone script tests use test_*.py names."
      },
      {
        "glob": "services/*/scripts/tests/**/*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "Service pytest files use test_*.py names."
      },
      {
        "glob": "services/*/scripts/test_*.py",
        "pattern": "^test_[a-z0-9_]+\\.py$",
        "description": "Standalone service test scripts use test_*.py names."
      }
    ]
  },
  "coverage": {
    "minimum_percent": 95.0,
    "tracked_files": [
      "ci/scripts/publish_test_metrics.py",
      "ci/scripts/publish_test_metrics_quality.py",
      "ci/scripts/semgrep_report.py",
      "ci/scripts/supply_chain_report.py",
      "services/mailu/scripts/mailu_sync.py",
      "services/mailu/scripts/mailu_sync_listener.py",
      "testing/quality_contract.py",
      "testing/quality_docs.py",
      "testing/quality_hygiene.py",
      "testing/quality_coverage.py",
      "testing/quality_gate.py"
    ]
  }
}
