Description
The issue discovery scoring pipeline does not honor the is_transferred flag on Issue objects.
any issue that has been transferred at any point must be treated as closed/failed — awarded 0 discovery score and counted against the discoverer's issue_credibility. The spec explicitly calls this out as an anti-gaming measure to prevent miners from transferring closed issues to burner repos to dodge credibility hits.
Steps to Reproduce
- Register as a miner and link a valid GitHub identity.
- File an issue on a tracked repository that gets linked to a merged PR (via
fixes #N), so is_solved == True in the scoring pipeline.
- Set
issue.is_transferred = True on the resulting Issue record (simulating the state after a TransferredEvent, which a later repo-scan upgrade will populate from GitHub's timeline API).
- Run
score_discovered_issues(...) over the miner evaluations.
- Inspect the resulting
MinerEvaluation: total_solved_issues, issue_credibility, and issue_discovery_score.
Expected Behavior
Per spec :
discovery_earned_score == 0 for the transferred issue.
- The issue contributes to
total_closed_issues (negative credibility), not total_solved_issues.
issue_credibility reflects the failed outcome.
Actual Behavior
scoring layer(scoring.py) has zero explicit transfer handling.
Environment
Description
The issue discovery scoring pipeline does not honor the
is_transferredflag onIssueobjects.any issue that has been transferred at any point must be treated as closed/failed — awarded 0 discovery score and counted against the discoverer's
issue_credibility. The spec explicitly calls this out as an anti-gaming measure to prevent miners from transferring closed issues to burner repos to dodge credibility hits.Steps to Reproduce
fixes #N), sois_solved == Truein the scoring pipeline.issue.is_transferred = Trueon the resultingIssuerecord (simulating the state after aTransferredEvent, which a later repo-scan upgrade will populate from GitHub's timeline API).score_discovered_issues(...)over the miner evaluations.MinerEvaluation:total_solved_issues,issue_credibility, andissue_discovery_score.Expected Behavior
Per spec :
discovery_earned_score == 0for the transferred issue.total_closed_issues(negative credibility), nottotal_solved_issues.issue_credibilityreflects the failed outcome.Actual Behavior
scoring layer(scoring.py) has zero explicit transfer handling.
Environment