ARR2 deterministic processing
The active ARR2 path uses two modules:
policy.pyloads the frozen processor version and rule-set SHA-256 fromarr-opera-daily-ingest.local.pyrunsprocess_daily.pyin 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.