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
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
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
selfPlagiarismCheck(candidateFingerprint, recentOwnSubmissions)function consulted by the Governor chokepoint before anopen_praction is allowedisDuplicateClusterWinnerByClaim(fail closed on missing/ambiguous timing data) rather than inventing new adjudication logic.gittensory-miner.yml, with a conservative built-in defaultReferences
src/signals/duplicate-winner.ts(isDuplicateClusterWinnerByClaim, fail-closed-on-sparse-data pattern) — explicitly reused here for self-claim adjudication, per the architecture skeletonsrc/signals/slop.ts(buildDuplicateClusterFinding) — the existing duplicate-cluster signal vocabulary this throttle's rationale should stay consistent withopen_prwrite path specifically