Skip to content

fix: include label_multiplier in open PR collateral score calculation#621

Closed
Tet-9 wants to merge 2 commits intoentrius:testfrom
Tet-9:fix/612-collateral-label-multiplier
Closed

fix: include label_multiplier in open PR collateral score calculation#621
Tet-9 wants to merge 2 commits intoentrius:testfrom
Tet-9:fix/612-collateral-label-multiplier

Conversation

@Tet-9
Copy link
Copy Markdown
Contributor

@Tet-9 Tet-9 commented Apr 20, 2026

Fixes #612

Problem

calculate_open_pr_collateral_score applies repo_weight and issue
multipliers but omits label_multiplier. This means two open PRs with
identical base scores but different labels (e.g. feature = 1.5×)
receive the same collateral score, even though labels are available
from the moment the PR is opened and are applied correctly at merge time.

Fix

Added label to the multipliers dict in
calculate_open_pr_collateral_score, using the existing
pr.label_multiplier value that is already computed before this
function is called.

Changes

  • gittensor/validator/oss_contributions/scoring.py — added
    label_multiplier to collateral score multipliers

@anderdc anderdc closed this Apr 20, 2026
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@anderdc , you only merged a single one of those PR's into the issue

anderdc added a commit that referenced this pull request Apr 25, 2026
End-of-phase cache stats give operators a single-line view of how the
solving-PR cache performed during a scoring round:

  Solving-PR cache: 47 hits | 5 misses (4 fetched OK, 1 fetch failures)

Hits = cache lookup (no HTTP). Misses = get_pr_files invocation. Fetch
failures = MirrorRequestError raised; issue counts toward credibility but
no discovery_earned_score awarded. Useful for tuning expectations
(maintainer-solved miner-issues are guaranteed cache misses since
maintainer PRs are dropped at OSS load time and never enter
mirror_merged_prs) and for spotting mirror flakiness without scraping the
warning lines.

Per-issue debug logs explain every classification + scoring decision so
operators can debug "why didn't UID X get credit for issue Y?" by setting
the log level to debug. Each gate logs its specific reason:

  issue #553 (entrius/gittensor): closed-not-solved (state_reason=NOT_PLANNED, need COMPLETED)
  issue #480 (entrius/gittensor-ui): same-account (discoverer == solver 218712309) — credibility only
  issue #621 (entrius/allways): one-issue-per-PR (PR #527 already scored an earlier issue) — credibility only
  issue #410 (entrius/gittensor): solving PR #399 token_score 2.50 < 5 — credibility only

All at debug level so they don't clutter normal info-level logs.

_score_miner_mirror_issues + _resolve_solving_pr_score gain a _CacheStats
parameter; callers updated. New TestCacheStats covers all three counter
paths (hit / fetch-success / fetch-failure).

Full suite: 618 passed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Open PR collateral score ignores label_multiplier

3 participants