# ARR2 deterministic processing The active ARR2 path uses two modules: - `policy.py` loads the frozen processor version and rule-set SHA-256 from `arr-opera-daily-ingest`. - `local.py` runs `process_daily.py` in an isolated directory with a bounded timeout, requires process exit status to agree with both JSON artifacts, and permits only basename-confined declared XLSX outputs. The caller stores the success/failure artifacts and passes a canonical `DeliveryEnvelope` to `arr_ingestion`. Processor stdout/stderr, temporary paths and source bytes never enter the public response or database. Older remote-run, signature and callback modules remain as ARR1 compatibility/audit code. The ARR2 Web entrypoint does not import them, root requirements do not install their HTTP client, and Compose exposes no corresponding service.