# instinct: 自動起票ツールのdedupは経過時間でなくIssue状態を一次判定にする

## 問題
vvv bug_watchdog.py が playwright-service エラー Issue を約2時間ごとに量産(#491〜#518 で22件)。

## 真の原因
`_is_already_filed` が `DEDUP_MINUTES(120分)` の時間ベース判定を先に行っていた。OPEN Issue が存在しても120分経過すると再起票してしまう。検知対象のエラー条件が継続していると、2時間ごとに永久に同一 Issue を量産する。

## 修正(正しい判定順)
1. 紐づく Issue が OPEN → 経過時間に関わらず抑止(同じ未解決バグを量産しない)
2. Issue が CLOSED → dedup 解除して再起票可能
3. URL不明の古い state のみ時間ベース抑止

```python
if issue_url:
if _is_issue_open(issue_url):
return True # OPEN なら時間無視で抑止
# CLOSED なら state削除して再起票可
return False
# URL無し旧形式のみ時間ベース
return datetime.now(JST) - last < timedelta(minutes=DEDUP_MINUTES)
```

## ポイント
- 自動起票系の dedup は「前回起票からの経過時間」でなく「Issueが今もopenか」を一次判定にする
- gh コマンド失敗時は OPEN 扱い(=抑止)で安全側に倒す
- playwright-service の再起動41回はブラウザ Context limit(30) 到達時の正常な定期再起動で実害なし
- 本番フォルダ(vvv)は main から diverge(requests vs urllib・UAヘッダ・エラーフィルタが本番固有)。ファイル全体コピーは本番改善を消すため、修正関数のみ手動適用する

## 関連
- vvv#522(修正PR・マージ済み)
- 重複Issue #491〜#518 を #517/#518 に集約してクローズ