# Copying is handled by scripts/ensure-local-load-env.sh, which replaces every
# GENERATE_* marker with an independent local secret and restricts the result
# to mode 600. This profile owns a separate Compose project and PostgreSQL
# volume; it must never use the staging project name.
DEPLOYMENT_TARGET=compose
DEPLOYMENT_ENV=development
COMPOSE_PROJECT_NAME=who_need_help_load
APP_IMAGE=who-need-help:load
SOCKET_PROXY_IMAGE=who-need-help:socket-proxy-load
POSTGIS_IMAGE=who-need-help:postgis-load
APP_TOPOLOGY=split
DATABASE_MODE=container

LOAD_PROJECT=who_need_help_load
LOAD_HOST=load.local
HTTP_PORT=4110
MAILPIT_PORT=8127
DOCKER_SOCKET_GID=REPLACE_WITH_DOCKER_SOCKET_NUMERIC_GID
PHX_HOST=load.local
PHX_SCHEME=https
PHX_URL_PORT=443
TRAEFIK_TRUSTED_IPS=127.0.0.1/32
TRAEFIK_RETRY_ATTEMPTS=3
TRAEFIK_PROJECT_CONSTRAINT=who_need_help_load
TRAEFIK_APP_NAME=who-need-help-load
TRAEFIK_DOCKER_NETWORK=who_need_help_load_ingress
TRAEFIK_ROUTER_RULE='Host(`load.local`)'

POSTGRES_DB=who_need_help_load
POSTGRES_USER=wnh_load
POSTGRES_PASSWORD=GENERATE_POSTGRES_PASSWORD
DATABASE_URL=GENERATE_DATABASE_URL
WEB_POOL_SIZE=4
WORKER_POOL_SIZE=2
MIGRATE_POOL_SIZE=2
COMBINED_POOL_SIZE=4
OBAN_MAINTENANCE_CONCURRENCY=2
OBAN_PUSH_CONCURRENCY=1
WEB_REPLICAS=2
WORKER_REPLICAS=2
ERLANG_PORT_LIMIT=65536
SECRET_KEY_BASE=GENERATE_SECRET_KEY_BASE
HANDOVER_SECRET=GENERATE_HANDOVER_SECRET
RELEASE_COOKIE=GENERATE_RELEASE_COOKIE
METRICS_TOKEN=GENERATE_METRICS_TOKEN

SMTP_RELAY=mailpit
SMTP_PORT=1025
SMTP_USERNAME=
SMTP_PASSWORD=
SMTP_AUTH=never
SMTP_TLS=never
SMTP_SSL=false
EMAIL_FROM_NAME="Who Need Help load profile"
EMAIL_FROM_ADDRESS=load-profile@example.invalid

CODEX_SESSION_ID=load-profile
RATE_LIMIT_POLICIES_JSON={}
MAP_TILE_URL=https://tile.openstreetmap.org/{z}/{x}/{y}.png
GITHUB_OAUTH_CLIENT_ID=
GITHUB_OAUTH_CLIENT_SECRET=
GITHUB_OAUTH_BASE_URL=
GITHUB_OAUTH_AUTHORIZE_URL=
GITHUB_OAUTH_TOKEN_URL=
GITHUB_OAUTH_USER_URL=
GITHUB_OAUTH_HTTP_CONNECT_TIMEOUT_MS=
GITHUB_OAUTH_HTTP_RECEIVE_TIMEOUT_MS=
GOOGLE_OAUTH_CLIENT_ID=
GOOGLE_OAUTH_CLIENT_SECRET=
GOOGLE_OAUTH_BASE_URL=
GOOGLE_OAUTH_HTTP_CONNECT_TIMEOUT_MS=
GOOGLE_OAUTH_HTTP_RECEIVE_TIMEOUT_MS=

# These are reproducible experiment inputs, not capacity requirements,
# production traffic forecasts, alert thresholds, or recommended limits.
LOAD_WEB_REPLICAS=2
LOAD_WORKER_REPLICAS=2
LOAD_HTTP_VUS=40
LOAD_WS_VUS=40
LOAD_DURATION=30s
LOAD_WS_HOLD_MS=5000
LOAD_WS_CONNECT_TIMEOUT_MS=3000
LOAD_HTTP_THINK_SECONDS=0.1
LOAD_AUTH_VUS=8
LOAD_AUTH_WS_TIMEOUT_MS=5000
LOAD_AUTH_THINK_SECONDS=0.1
LOAD_FIXTURE_PASSWORD=GENERATE_LOAD_FIXTURE_PASSWORD
LOAD_RESILIENCE_RECOVERY_TIMEOUT_SECONDS=120
LOAD_RESILIENCE_PROBE_INTERVAL_SECONDS=0.05
LOAD_RESILIENCE_REQUEST_TIMEOUT_SECONDS=2
OBSERVABILITY_PROMETHEUS_PORT=0
OBSERVABILITY_ALERTMANAGER_PORT=0
OBSERVABILITY_GRAFANA_PORT=0
OBSERVABILITY_SCRAPE_INTERVAL=1s
OBSERVABILITY_EVALUATION_INTERVAL=1s
OBSERVABILITY_TIMEOUT_SECONDS=90
OBSERVABILITY_GRAFANA_ADMIN_USER=local-admin
OBSERVABILITY_GRAFANA_ADMIN_PASSWORD=GENERATE_OBSERVABILITY_GRAFANA_ADMIN_PASSWORD

# The encrypted backup drill keeps its MinIO API and console on dynamically
# allocated loopback ports. Secrets are generated only in ignored .env.load.
BACKUP_MINIO_API_PORT=0
BACKUP_MINIO_CONSOLE_PORT=0
BACKUP_MINIO_ROOT_USER=GENERATE_BACKUP_MINIO_ROOT_USER
BACKUP_MINIO_ROOT_PASSWORD=GENERATE_BACKUP_MINIO_ROOT_PASSWORD
BACKUP_RESTIC_PASSWORD=GENERATE_BACKUP_RESTIC_PASSWORD
BACKUP_BUCKET_PREFIX=wnh-backup
BACKUP_TIMEOUT_SECONDS=120
BACKUP_INTERRUPTION_CHUNKS=300
BACKUP_INTERRUPTION_CHUNK_BYTES=1048576
BACKUP_INTERRUPTION_INTERVAL_SECONDS=0.1
