fix(local): stop proposing per-dependent patches for dependency-cascade failures #121

Merged
pat-s merged 1 commit from t3code/fix-dependency-cascade-proposals into main 2026-07-14 18:40:42 +00:00
Owner

Problem

The scheduled --open-issue run (issue #120) posted 800+ proposed entries, all rcppparallel-bundled-tbb on ubuntu-2604, each pre-filling RcppParallel/disable-tbb.patch for an unrelated package (ACEsimFit, AovBay, AdaptGauss, ...).

Root cause: those packages fail on ubuntu-2604 only because their RcppParallel dependency does not build there. bincraft records RcppParallel's TBB error text against each dependent, so every one of them matches the rcppparallel-bundled-tbb signature. Proposing a RcppParallel source patch for ACEsimFit is not just noise -- it is broken: the diff targets RcppParallel's Makevars.in, so it cannot apply to a dependent's source.

Fix

Add an optional applies_to field that pins a package-specific fix to the package it targets:

  • A signature whose fix is a curated per-package source patch (rcppparallel-bundled-tbb -> RcppParallel) is only ever proposed for that package.
  • Other packages matching the signature are downstream failures, reported as "blocked on <dependency>" and never proposed a bogus entry. Fix the dependency once and the whole cascade clears.

Generic levers (the tbb-stddef-removed makevars fix) are unaffected -- they carry no applies_to, so they still apply to any matching package.

Changes

  • gate proposal generation in build_triage_report() on applies_to; add a blocked_on field to group records
  • surface blocked groups in both failing-builds-report.R and propose-patches.R instead of the misleading "already registered" note
  • document applies_to in the signature-table header

Verification

  • New tests: RcppParallel dependents are blocked (no proposed_entries, blocked_on = "RcppParallel"), while RcppParallel itself is still proposed when it is the failing package.
  • Reproduced the avalanche end-to-end with a stubbed DB: 5 dependents now report "Blocked on RcppParallel: 5 package(s) fail because RcppParallel does not build" and zero candidates are emitted; a genuine tbb-stddef proposal in the same run is unaffected.
  • Full suite: 84 tests pass; all pre-commit hooks pass.

Refs #120.

Note: the underlying build problem (RcppParallel failing on ubuntu-2604 despite its registry entry) is real and separate -- this PR stops the classifier from spamming broken per-dependent proposals about it.

## Problem The scheduled `--open-issue` run (issue #120) posted **800+** proposed entries, all `rcppparallel-bundled-tbb` on `ubuntu-2604`, each pre-filling `RcppParallel/disable-tbb.patch` for an unrelated package (`ACEsimFit`, `AovBay`, `AdaptGauss`, ...). Root cause: those packages fail on ubuntu-2604 only because their **RcppParallel dependency** does not build there. bincraft records RcppParallel's TBB error text against each dependent, so every one of them matches the `rcppparallel-bundled-tbb` signature. Proposing a RcppParallel source patch for `ACEsimFit` is not just noise -- it is **broken**: the diff targets RcppParallel's `Makevars.in`, so it cannot apply to a dependent's source. ## Fix Add an optional `applies_to` field that pins a package-specific fix to the package it targets: - A signature whose fix is a curated per-package source patch (`rcppparallel-bundled-tbb` -> `RcppParallel`) is only ever proposed **for that package**. - Other packages matching the signature are downstream failures, reported as **"blocked on `<dependency>`"** and never proposed a bogus entry. Fix the dependency once and the whole cascade clears. Generic levers (the `tbb-stddef-removed` makevars fix) are unaffected -- they carry no `applies_to`, so they still apply to any matching package. ## Changes - gate proposal generation in `build_triage_report()` on `applies_to`; add a `blocked_on` field to group records - surface blocked groups in both `failing-builds-report.R` and `propose-patches.R` instead of the misleading "already registered" note - document `applies_to` in the signature-table header ## Verification - New tests: RcppParallel dependents are blocked (no `proposed_entries`, `blocked_on = "RcppParallel"`), while RcppParallel *itself* is still proposed when it is the failing package. - Reproduced the avalanche end-to-end with a stubbed DB: 5 dependents now report "Blocked on RcppParallel: 5 package(s) fail because RcppParallel does not build" and **zero** candidates are emitted; a genuine `tbb-stddef` proposal in the same run is unaffected. - Full suite: 84 tests pass; all pre-commit hooks pass. Refs #120. Note: the underlying build problem (RcppParallel failing on ubuntu-2604 despite its registry entry) is real and separate -- this PR stops the classifier from spamming broken per-dependent proposals about it.
The `--open-issue` run proposed 800+ entries, all `rcppparallel-bundled-tbb` on
ubuntu-2604, each pre-filling `RcppParallel/disable-tbb.patch` for an unrelated
package (ACEsimFit, AovBay, ...). Those packages fail only because their
RcppParallel *dependency* does not build there, so bincraft records
RcppParallel's TBB error text against each dependent and they all match the
signature. Applying a RcppParallel source patch to a dependent's source is not
just noise -- it is broken (the diff targets RcppParallel's Makevars.in).

Add an optional `applies_to` field pinning a package-specific fix to the package
it targets. A signature whose fix is a curated per-package source patch
(rcppparallel-bundled-tbb -> RcppParallel) is only ever proposed for that
package; other matching packages are downstream failures reported as "blocked on
<dependency>" and never proposed a bogus entry. Fix the dependency once and the
whole cascade clears.

- gate proposal generation in build_triage_report on applies_to, add blocked_on
- surface blocked groups in the report and proposer instead of a misleading
  "already registered" note
- cover both the dependent-blocked and RcppParallel-itself-proposed cases
pat-s merged commit 9bc4973159 into main 2026-07-14 18:40:42 +00:00
pat-s deleted branch t3code/fix-dependency-cascade-proposals 2026-07-14 18:40:42 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!121
No description provided.