feat(local): aggregate blocked-on-dependency reporting by dependency #131

Merged
pat-s merged 1 commit from t3code/aggregate-blocked-by-dep into main 2026-07-16 21:24:04 +00:00
Owner

Why

With cascade detection (#128) live, the latest auto-apply-patches run did exactly the right thing — proposed nothing (No auto-proposable candidates) because every failure is a dependency cascade, and it surfaced the ~30 root-cause dependencies to fix.

But the "Blocked on a dependency" list printed one line per fingerprint group, so the same dependency repeated (rstan ×4, lpsymphony ×4, salso ×2, BH ×2, GO.db ×2, RcppCWB ×2, …), burying the priority.

What

Aggregate blocked packages across all groups by the dependency they wait on:

  • Expose blocked_map (package → dependency) from build_triage_report().
  • Add blocked_by_dependency() — dedupes dependents (a package in two groups counts once) and ranks dependencies by how many distinct dependents they block.
  • Proposer and tracker (log + issue) now print one line per dependency, sorted by impact. Replaces the per-group blocked_summary.

Result (same data, aggregated)

Blocked on a dependency (3 dependencies block 6 dependents; fix the dependency, not each dependent):
  RcppParallel             3 dependent(s)
  rstan                    2 dependent(s)
  sf                       1 dependent(s)

So the real run becomes a crisp, ranked worklist: RcppParallel (894), sf (128), rstan (~96), Rfast (33), clarabel/DescTools (26), Rglpk (22), xgboost (18), …

Verified

New test covers cross-group aggregation, dedup (a dependent in two groups counted once), the example cap, and ranking. 112 tests pass; hooks pass.

## Why With cascade detection (#128) live, the latest `auto-apply-patches` run did exactly the right thing — **proposed nothing** (`No auto-proposable candidates`) because every failure is a dependency cascade, and it surfaced the ~30 root-cause dependencies to fix. But the "Blocked on a dependency" list printed **one line per fingerprint group**, so the same dependency repeated (rstan ×4, lpsymphony ×4, salso ×2, BH ×2, GO.db ×2, RcppCWB ×2, …), burying the priority. ## What Aggregate blocked packages across all groups **by the dependency they wait on**: - Expose `blocked_map` (package → dependency) from `build_triage_report()`. - Add `blocked_by_dependency()` — dedupes dependents (a package in two groups counts once) and ranks dependencies by how many distinct dependents they block. - Proposer and tracker (log + issue) now print one line per dependency, sorted by impact. Replaces the per-group `blocked_summary`. ## Result (same data, aggregated) ``` Blocked on a dependency (3 dependencies block 6 dependents; fix the dependency, not each dependent): RcppParallel 3 dependent(s) rstan 2 dependent(s) sf 1 dependent(s) ``` So the real run becomes a crisp, ranked worklist: RcppParallel (894), sf (128), rstan (~96), Rfast (33), clarabel/DescTools (26), Rglpk (22), xgboost (18), … ## Verified New test covers cross-group aggregation, dedup (a dependent in two groups counted once), the example cap, and ranking. 112 tests pass; hooks pass.
With cascade detection live, a run surfaced ~30 root-cause dependencies, but the
"blocked on a dependency" list repeated the same dependency once per fingerprint
group (rstan x4, lpsymphony x4, salso x2, ...), burying the priority.

Aggregate across all groups by the dependency each dependent waits on: expose
`blocked_map` (package -> dependency) from build_triage_report, and add
`blocked_by_dependency()` which dedupes dependents and ranks dependencies by how
many they block. One line per dependency, sorted by impact, in the proposer and
tracker (log + issue). Replaces the per-group `blocked_summary`.
pat-s merged commit 6c03f278ec into main 2026-07-16 21:24:04 +00:00
pat-s deleted branch t3code/aggregate-blocked-by-dep 2026-07-16 21:24:05 +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!131
No description provided.