Replace the per-platform process-updates-<platform>-<arch>.yaml files with
process-updates-amd64.yaml and process-updates-arm64.yaml, each driving all
7 platforms via matrix.include. Split by arch because amd64 pins a nodeSelector
instance-type and runs on agent 'artemis' with backend_options, while arm64
runs on agent 'gaia' with none -- a single template can't cleanly express both.
Per-platform variance (R version, image tag, codename, and the process_new
flag which is FALSE for alpine) lives in matrix rows. Current runs are preserved
1:1: each existing per-platform cron still fires only its matching row via
CI_PIPELINE_CRON, and the manual trigger uses a PR-1165 dropdown
(process_cran_updates) for 'all' or a specific <platform>-<arch>. Server-side
cron entries are unchanged.
## Summary
When a `build-all-*` workflow is restarted, the build job re-reads the static `pkgs_to_build.rds` that the install-deps step produced once, so it cycles over every package an interrupted run already built. This adds a DB-based skip filter so a restart only processes what is genuinely left.
- At job start, `build-all.R` queries the `single_builds` metadata table for `(name, tag)` already built successfully (`error_occurred = FALSE`) on this `platform`/`arch`, and drops those pairs from the chunk before the build loop. It logs how many it skipped.
- One indexed query, one round trip, run before the pak forks — no extra S3 listing and no new Python/s3fs memory pressure (`RPostgres`/`DBI` are already used in the container).
- Errored versions are intentionally **not** skipped, so transient failures still get retried on restart.
## Dependency
Correctness depends on a `error_occurred = FALSE` row meaning the binary is actually published. That guarantee is added in rpkgs/bincraft#56 (success row written only after a confirmed S3 upload). This PR should land together with / after a bincraft release including that fix.
Reviewed-on: #91