# instinct: pip-auditのFix Versionsはフレームワークのバージョン制約を考慮しない。starlette/FastAPI等の密結合は単独更新不可・連動更新が要る

`pip-audit` の `Fix Versions` 列は**そのパッケージ単体の修正版**を示すだけで、**それを依存する上位フレームワークのバージョン制約を一切考慮しない**。鵜呑みにして上げると本番アプリが import 不能になる。

**具体例(2026-06-09・#248 MCP-015 依存更新)**:
- vvv の脆弱性: `starlette 0.50.0` → pip-audit は `fix 1.0.1` と表示
- 実際に `starlette 1.2.1` を入れたら **`fastapi 0.128.0 requires starlette<0.51.0,>=0.40.0` で衝突**し、`app.main` の import が失敗
- starlette のメジャー更新には **FastAPI 0.128 → 最新(0.136等)へのメジャー更新が連動して必要**(pydantic/SQLAlchemy 互換も再検証)=破壊的変更リスク高・別タスク

**How to apply**:
- 依存更新前に**密結合フレームワークのバージョン制約を確認**: `pip show fastapi | grep Requires` や `requires` で `starlette- patch/minor 更新(aiohttp 3.13→3.14・pillow 12.1→12.2・urllib3 2.6→2.7・pyjwt 2.12→2.13 等)は概ね安全。**メジャー更新(0.50→1.x・密結合パッケージ)は単独で上げない**
- 更新は**検証ループ必須**: 更新→`pip-audit`再監査→`app.main` import→pytest→API起動。壊れたら即ロールバック(本番プロセスは旧依存をメモリ保持で稼働継続するので、再起動前なら無停止で戻せる)
- **依存衝突警告(`yfinance requires curl_cffi<0.14`等)は実機import・実動作で確認**: 警告が出ても実際に動くことが多い(yfinanceはcurl_cffi 0.15でAAPL価格取得成功)。警告=即NGではない

**横展開**: security の MCP venv だけでなく**全サービスvenvを一括pip-audit**すると漏れが見つかる(56件→2件に削減できた)。新規サービス(pay)は依存が新しく0件のことも。

関連: [[instinct-env-permission-drift-664]](同じく全.env/venv一括点検) / [[instinct-python-module-edit-needs-restart]] / [[thinking-model-best-practices]](検証ループ)

---
(migrated from local memory/instinct_pip_audit_framework_constraint.md)