# PIHA-specific overrides for paperless (KB module 2).
#
# RESOURCE CONTEXT: PIHA is the RAM-bound 8 GB box shared with Home Assistant
# and monitoring. Precondition for this service is KB module 0 (piha-slim);
# after it ~3.8 Gi should be available. Ceilings below keep the whole stack
# ≤ ~1.9 Gi worst-case so paperless can never starve HA — the cgroup OOM
# killer restarts the offending container instead of the host killer picking
# a victim.
services:
  paperless:
    # Idle expectation ~400–600 Mi (gunicorn + consumer + beat + 1 celery
    # worker). The ceiling leaves room for the concurrency-1 FALLBACK OCR of
    # a large PDF when SOLARIA is asleep; a pathological document gets the
    # container restarted rather than the host swapping.
    mem_limit: 1400m
    mem_reservation: 512m

  db:
    # Metadata-only DB (documents live on disk, not in Postgres). Same tuning
    # philosophy as kb-postgres but smaller: bounded backends because the
    # SOLARIA worker also holds connections (concurrency 4 + webserver pool).
    mem_limit: 384m
    command:
      - "postgres"
      - "-c"
      - "shared_buffers=96MB"
      - "-c"
      - "effective_cache_size=256MB"
      - "-c"
      - "work_mem=4MB"
      - "-c"
      - "maintenance_work_mem=32MB"
      - "-c"
      - "max_connections=50"

  broker:
    # Task payloads are tiny (paths + ids): even the 70k-attachment backlog
    # is ~tens of MB in-queue. NO maxmemory/eviction — evicting broker keys
    # would silently drop queued OCR tasks; if the limit is ever hit the
    # container restarts and recovers the queue from AOF instead.
    mem_limit: 256m
