Fixes a JSONDecodeError ('Unterminated string') in the auto-close
duplicate-issue workflow. gh api --paginate emits pages as concatenated
JSON arrays with no separators, so the previous line-based parsing broke
whenever an issue body contained an unescaped line-separator character
(U+2028, form feed, etc.) that str.splitlines treats as a newline.
Use gh api --paginate --slurp to collect pages into a single JSON array
and parse it in one json.loads call, then flatten and drop PRs.
Add a Python script that detects duplicate issues using title similarity
(difflib.SequenceMatcher) and closes them via the gh CLI. Two-tier system:
- 0.6 threshold: informational comment via existing wow-actions step
- 0.85 threshold: auto-close with comment, label, and not_planned reason
Includes a workflow_dispatch workflow for one-time batch scans and
integrates auto-close into the existing check_duplicate_issues workflow
for newly opened issues.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>