The continuation lines of the zone-lookup filter sat at nine spaces, which fails
editorconfig-checker and blocks `prek run -a` for everyone. jq ignores the
leading whitespace, so the filter is unchanged: it still resolves the zone id
from both the object and the bare array response shape.
`s3_dir_ls()` returns keys with the `s3://` scheme attached, but the contrib
prefix was removed as a fixed substring. That took the prefix out of the middle
of the key and left `s3://4.4/curl_1.0.tar.gz`, so the leading scheme defeated
the `^<minor>/` test in `select_cache_for_pass()`.
Every one of the 21212 per-minor objects on amd64/resolute was therefore read as
a flat-slot object: the primary pass reported "119053 of 119053 objects apply to
this pass" and each sensitive pass got an empty cache and recompiled all 10248
sensitive packages it already had.
This change will:
- anchor the contrib prefix and swallow an optional `s3://` with it
- abort when the strip leaves fewer per-minor paths than the listing held, since
the failure is otherwise silent and only shows up as a full rebuild
- mark the cache format with a `slot_relative` attribute and read that in
`build-all.R`, rather than sniffing for a `/`, which misreads a slot-relative
cache holding no per-minor or Archive object as a legacy one