feat(abi): backfill per-object flat-slot safety verdicts #202
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/backfill-flat-object-safety"
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
bincraft #128 lets
union_index_records()keep a carried flat record when that specific object is recorded safe. On its own it changes nothing for the records already being dropped, because they are legacy objects with no verdict:Every one of those resolves to CRAN source for clients the routing serves correctly. This backfill inspects the objects already in the bucket and writes their verdicts, which is what actually restores the coverage.
How the verdict is made
By symbols, not heuristics. A binary fails at
dyn.load()under minor M exactly when it references a symbol M does not export, and the volatile set is derived by diffing thelibR.soexports of the R builds installed in the image — so a new R release updates it with no curated list to maintain.That matters here because the source-level classifier calls 93% of compiled packages risky (
LinkingTo: Rcppalone is enough), while a symbol scan of the same slot found 17 packages that break under 4.6 and 72 under 4.4. Recording the real answer per object is what makes the difference between ~2000 dropped records and the few dozen that genuinely need dropping.Safety
crow lintpasses.Sequencing
Merge and release bincraft #128 first, then run this per slot, then re-index. Verifying the drop counts fall is the point of the exercise, so that re-index is where the fix is confirmed rather than assumed.