Skip to content

Issue discovery#356

Merged
LandynDev merged 30 commits intotestfrom
issue-discovery
Apr 9, 2026
Merged

Issue discovery#356
LandynDev merged 30 commits intotestfrom
issue-discovery

Conversation

@anderdc
Copy link
Copy Markdown
Collaborator

@anderdc anderdc commented Apr 9, 2026

  • MVP framework for rewarding issue creators along with (already rewarded) PR creators
  • pruned repository list to capture more value/signal through developer work (also fixes Remove python-pillow #342)

anderdc and others added 30 commits April 6, 2026 14:37
Removed (no active PRs): pytest-dev/pytest, cython/cython,
PyGithub/PyGithub, PyQt5/PyQt, pymc-devs/pymc

Inactivated (have active PRs): pyca/cryptography, ipython/ipython
Miners can no longer swap GitHub accounts on the same hotkey to reset
credibility. The validator now stores github_id in miner_pats.json and
rejects PAT broadcasts that change the GitHub identity for an existing
registration. To change GitHub accounts, miners must deregister and
re-register on the subnet.

Allowed: PAT rotation (same GitHub user, new token), new miner on a
recycled UID (different hotkey).
…o 90%

Replace age-based sqrt scaling (MAX_ISSUE_AGE_BONUS, MAX_ISSUE_AGE_FOR_MAX_SCORE)
with flat multipliers: 1.33x standard, 1.66x maintainer-created issues.
Raise MIN_CREDIBILITY from 0.75 to 0.90 to increase the runway required
for eligibility and reduce low-quality PR spam.
Normalize all weights to 0-1 range with ~30x spread using Pareto
distribution, replacing the previous 0.1-100 range (1000x spread).
Issue: author_github_id, is_transferred, updated_at, 5 discovery multipliers
MinerEvaluation: issue_discovery_score, issue_credibility, is_issue_eligible,
total_solved_issues, total_closed_issues, total_open_issues

Updates BULK_UPSERT_ISSUES, BULK_UPSERT_MINER_EVALUATION, and repository
value tuples to match new schema.
…hor ID

Phase 1 of issue discovery implementation:
- Add issue discovery constants: eligibility gate (7 solved, 80% credibility),
  cliff model review quality (1.1 clean bonus, 0.15 penalty), open issue spam
  threshold (base 5), repo scan caps (300/repo, 1500 global)
- Add hardcoded emission splits: 30% OSS, 30% issue discovery, 15% treasury, 25% recycle
- GraphQL: add databaseId + updatedAt to closingIssuesReferences, add issues(OPEN) totalCount
- Populate author_github_id and updated_at on Issue from GraphQL response
- Populate total_open_issues on MinerEvaluation from User node
Phase 2 of issue discovery implementation:
- scoring.py: credibility calculation with mulligan, eligibility gate (7 solved,
  80% credibility), cliff-model review quality multiplier (1.1 clean, -0.15/round),
  open issue spam threshold, time decay reuse, same-account double-dip prevention,
  post-merge edit protection, one-issue-per-PR rule (earliest-created wins)
- normalize.py: independent normalization for issue discovery reward pool
- score_discovered_issues() orchestrator collects issues from PR data + scan results,
  classifies solved/closed, applies all multipliers, populates MinerEvaluation fields
Phase 3: Scans tracked repos for miner-authored closed issues not linked to
any miner's PR. Classifies as solved-by-non-miner (case 2, positive credibility)
or closed-without-PR (case 3, negative credibility) via find_solver_from_cross_references.

Rate limited: per-repo cap 300, global cap 1500 solver lookups per round,
2 concurrent async lookups. Repos processed in descending weight order.
Phase 4: Pipeline integration for issue discovery.

- Delete dynamic_emissions.py (exponential unlock curves removed)
- reward.py: get_rewards() returns 3-tuple (rewards, evals, cached_uids),
  no longer calls dynamic emissions or bulk_store_evaluation
- forward.py: complete rewrite of emission blending
  - 30% OSS contributions (normalized independently)
  - 30% issue discovery (normalized independently)
  - 15% issue treasury (flat to UID 111)
  - 25% recycle (flat to UID 0)
- Integrates full issue discovery pipeline: repo scan → scoring → normalize
- Moves bulk_store_evaluation to forward.py (after issue discovery populates fields)
- Fix undefined RepositoryConfig reference in forward.py
- Remove unused miner_login_to_github_id in repo_scan.py
- Remove unused PullRequest import in scoring.py
- Fix pyright BaseException narrowing in repo_scan.py
- Auto-format with ruff
Tracks solved issues where the solving PR has token_score >= 5 separately
from total solved. Eligibility gate now checks valid count (not total).
…x 404 logging

- Empty OSS/discovery pools now route their share to recycle UID 0
- Remove chrishayuk/mcp-ragdocs (deleted from GitHub)
- Treat 404 responses as debug (not warning) in repo scan
@LandynDev LandynDev merged commit 95d7d05 into test Apr 9, 2026
anderdc added a commit that referenced this pull request Apr 10, 2026
Co-authored-by: anderdc <me@alexanderdc.com>
@anderdc anderdc mentioned this pull request Apr 10, 2026
anderdc added a commit that referenced this pull request Apr 10, 2026
Co-authored-by: anderdc <me@alexanderdc.com>
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.

Remove python-pillow

2 participants