feat(local): report unclassified and dependency-blocked failures for discovery

The proposer issue only lists auto-proposable fixes (currently the TBB
signatures), so every failure without a signature -- and every group blocked on
a dependency build -- was invisible unless someone read the run log. That hid
the classifier's blind spots and, with them, which new signatures are worth
adding next.

Extend the tracker to surface those blind spots and give them the same
visibility as the proposals:

- add pure `unclassified_summary()` (unknown-signature groups ranked by build
  count, capped with an explicit dropped count) and `blocked_summary()` helpers
- print both sections in proposal-tracking.R and add a `--open-issue` mode that
  posts/updates a "Unclassified build failures (needs signatures)" Forgejo issue
- run the tracker with --open-issue in the weekly crow pipeline (second issue)
- cover the new helpers with tests and document the flow in the patches README
This commit is contained in:
Patrick Schratz 2026-07-15 07:34:07 +00:00
commit 6ed17f3fb1
No known key found for this signature in database
GPG key ID: 62050D5BC68AB6DC

View file

@ -1,12 +1,13 @@
# Weekly failure-triage proposals (issue #115, steps 3 + 4).
# Classifies the recorded `single_builds` failures and:
# 1. posts/updates a Forgejo tracking issue with the auto-proposable registry
# entries (human reviews, trial-builds, and opens the PR -- nothing merges), and
# 2. prints the feedback-loop metrics (signature hit rate, proposed-vs-merged,
# retirement candidates) to the run log.
# 1. posts/updates a Forgejo issue with the auto-proposable registry entries
# (human reviews, trial-builds, and opens the PR -- nothing merges),
# 2. posts/updates a second Forgejo issue with the classifier's blind spots
# (unclassified failures = candidates for new signatures, and groups
# blocked on a dependency), and prints the feedback-loop metrics to the log.
# Global across platforms (the classifier groups over all of single_builds), so
# a single job -- no matrix. Clones read-only; the only write is the Forgejo
# issue via FORGEJO_TOKEN.
# a single job -- no matrix. Clones read-only; the only writes are the two
# Forgejo issues via FORGEJO_TOKEN.
when:
- event: manual
- event: cron
@ -36,7 +37,7 @@ steps:
- rm -rf /mnt/cache/R-pkgs/00LOCK-*
- /opt/R/$R_VERSION/bin/R -q -e 'pak::pak(c("httr2", "jsonlite"))'
- /opt/R/$R_VERSION/bin/Rscript local/propose-patches.R --open-issue
- /opt/R/$R_VERSION/bin/Rscript local/proposal-tracking.R
- /opt/R/$R_VERSION/bin/Rscript local/proposal-tracking.R --open-issue
backend_options:
kubernetes:
resources: