Skip to content

feat(miner-governor): self-plagiarism throttle across the miner's own repos #2345

Description

@JSONbored

An autonomous miner working many repos in parallel risks submitting near-duplicate fixes/PRs derived from the same underlying diff across multiple targets (self-plagiarism, distinct from copying someone else's work) — a distinct slop-at-scale vector the roadmap flags. This issue adds a Governor-consulted check that compares a prospective PR's diff fingerprint against the miner's own RECENT submission history and throttles (denies or demotes) near-duplicate submissions across repos, reusing the deterministic election logic already proven for duplicate-issue-cluster adjudication.

This gates a PR submission based on the SAME miner's own recent history only — a self-referential, fail-closed throttle (see the required tests below), not a shared or cross-actor safety chokepoint. Open, scored contributor work, provided the fail-closed behavior on ambiguous data is thoroughly tested.

Deliverables

  • A selfPlagiarismCheck(candidateFingerprint, recentOwnSubmissions) function consulted by the Governor chokepoint before an open_pr action is allowed
  • Reuses the same claim-time/earliest-wins election style as isDuplicateClusterWinnerByClaim (fail closed on missing/ambiguous timing data) rather than inventing new adjudication logic
  • A configurable similarity threshold (not hard-coded) sourced from .gittensory-miner.yml, with a conservative built-in default
  • Tests: a genuinely distinct PR passes, a near-duplicate diff across two different target repos is throttled, and missing/ambiguous fingerprint data fails closed (denies rather than assumes uniqueness)
  • Denials recorded to the governor ledger with the flagged prior submission referenced

References

  • src/signals/duplicate-winner.ts (isDuplicateClusterWinnerByClaim, fail-closed-on-sparse-data pattern) — explicitly reused here for self-claim adjudication, per the architecture skeleton
  • src/signals/slop.ts (buildDuplicateClusterFinding) — the existing duplicate-cluster signal vocabulary this throttle's rationale should stay consistent with
  • The Governor chokepoint (companion maintainer issue) — this check gates the open_pr write path specifically

Metadata

Metadata

Assignees

No one assigned

    Labels

    gittensor:featureGittensor-scored feature linked to a feature issue — scores a 0.25x multiplier.gittensor:priorityMaintainer-selected Gittensor priority — scores a 1.5x multiplier.

    Projects

    Status
    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions