Skip to content

chore: add read-only duplicate-issue auditor - #595

Open
essentialbit wants to merge 5 commits into
mainfrom
chore/audit-duplicate-issues-20260817
Open

chore: add read-only duplicate-issue auditor#595
essentialbit wants to merge 5 commits into
mainfrom
chore/audit-duplicate-issues-20260817

Conversation

@essentialbit

Copy link
Copy Markdown
Owner

Summary

  • Adds scripts/audit_duplicate_issues.py: pairwise Jaccard-scores every open GitHub issue's title+body against every other open issue, using the same tokenizer as memory_store._find_similar_proposal() plus a local stopword list stripping the issue-body template boilerplate and the near-universal "badge (FRED ...)" title convention (both confirmed inflating unrelated pairs to 0.3-0.4 before filtering).
  • Closes a real coverage gap: _find_similar_proposal() only guards duplicate insertion at proposal-creation time, scoped to local feature_backlog rows with status IN ('proposed','in_progress') in the same category — it never re-audits the full live issue backlog (issues filed by hand, issues whose local row status moved on, or duplicates that slipped through before PR fix: proposal dedup misses cross-category and boilerplate-diluted duplicates #544's dedup fix).
  • Read-only: makes no GitHub write calls, closes nothing itself. Output is a JSON report for a human to review.

Live run against the real open-issue backlog (71 open issues) found:

Test plan

  • venv/bin/python3 -c "from main import *" — import OK, no regression
  • No tests/ dir exists in this repo (per CLAUDE.md fallback)
  • Ran the script live against the real open-issue backlog, verified both the known duplicate and the new duplicate finding by hand-diffing the two issues' bodies

🤖 Generated with Claude Code

Saifodius and others added 5 commits August 17, 2026 18:15
Pairwise Jaccard-scores every open GitHub issue's title+body against
every other open issue, independent of local feature_backlog state, to
catch duplicates that slip past insert_feature_proposal()'s narrower
proposal-time dedup. Strips the issue-body template's own boilerplate
and the near-universal "badge (FRED ...)" title convention, which
otherwise inflate unrelated pairs to 0.3-0.4.

Live run confirms it works: correctly flags the already-known #282/#194
Reddit-sentiment duplicate at 0.98, plus a previously-undocumented real
duplicate at 0.312 -- #519 and #568 both propose a US money-market-fund
total-assets badge (FRED MMMFFAQ027S vs OFR MMF-MMF_AG_TOT-M), just from
different data sources.
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.

1 participant