fix(build): judge each index by its own source fallbacks #193

Merged
pat-s merged 1 commit from fix/scope-source-fallback-per-minor into main 2026-09-02 09:13:55 +00:00

2026-09-02

fix(build): judge each index by its own source fallbacks
The source-fallback list is read from the flat slot's PACKAGES.gz and names the
packages that index serves as CRAN source rather than as a binary. It was then
applied to every path in the listing, including per-minor ones.

A package the flat slot serves as source still has a genuine `4.4/<pkg>.tar.gz`,
so removing that basename deleted a real binary from the cache and made every
per-minor pass rebuild it, every run, forever.

The overlap with the work list is total, not partial: the sensitive candidate
list is exactly "sensitive packages with no flat binary", which is the same set
this removed. That pinned the cache-driven skip rate near zero even after #192
made the per-minor objects visible. amd64/resolute listed 21212 per-minor
objects but cached only 13572, then recompiled osmdata, osqp and outbreaker2
while their 4.4 binaries sat in the bucket returning HTTP 200.

This change will:

- read each per-minor index and exclude only that minor's own source fallbacks
- keep judging flat-slot objects by the flat index
- report the fallback count per index, so a collapse is visible in the log
2026-09-02 09:12:57 +00:00