feat(abi): repair from the recorded verdicts rather than an ad-hoc scan #206
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/repair-from-recorded-verdicts"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Why
The reprex found 44 routed-path failures:
Rcpp,MatrixandRJSONIOserved to R 4.4 from 4.5 builds. Two causes, both now fixed (#205 here, #129 in bincraft) — but the repair itself also needs redoing, and the lists it ran from no longer exist.Those lists came from a one-off local symbol scan, seeded from a candidate set derived on a single slot. That made them a lower bound by construction: the scan found 846 package-slot pairs, while inspecting every object found 4077 unsafe.
abi_flat_safetynow holds the authoritative answer for every slot, written by the flat-safety backfill from the binaries themselves:against the 93% of compiled packages the source classifier suspects.
What it does
local/list-unsafe-flat-objects.Rprints the objects recorded as unable to load under some minor, for one slot.--sensitive-onlygate. Since bincraft v5.3.0 the destination is decided by the built binary's symbols, so a package needing a per-minor slot lands there and a portable one lands in the flat slot. Gating on the source classifier is exactly what letRcppslip through.Safety
It fails loudly when a slot has no verdicts at all, rather than printing an empty list. An empty repair list is indistinguishable from "nothing to repair" and would read as success while doing nothing — the same shape of silent failure as the missing
PGPASS.crow lintpasses.After this
Run it fleet-wide, re-index, then re-run the reprex. The routed paths are the ones that must come back clean; the
flatform's failures are the separate prune question.