Skip to content

feedback の 409(重複id)時に screenshot が孤児化し、保存されない feedback の Slack 通知だけ飛ぶ #82

@kosako

Description

@kosako

概要

POST /feedback が重複 id で 409 になったとき、(a) 直前に書いた screenshot が孤児ファイルとして残り、(b) 保存されない feedback について Slack 通知だけが飛ぶ。

詳細

  • 場所: server/receive.js:204-223
  • 処理順が「screenshot 書き込み(L207) → deliverToSlack(L221) → store.insert(L223)」。store.insert は重複 id で 409 を throw する設計(server/store.js:147-149)。
  • insert 失敗時に screenshot を削除する後始末が無いため、永続化されない feedback の screenshot が SCREENSHOT_DIR に残り続ける(容量リーク)。
  • insert 前に Slack 送信済みのため、inbox に存在しない feedback の通知が送られる。
  • import 経路は insert 失敗時に deleteScreenshotFile(L284)で後始末しており、feedback 経路だけが非対称。

修正方針

  • insert を try/catch で囲み、失敗時に deleteScreenshotFile(screenshot) を呼ぶ。
  • 副作用順序を見直し「insert 成功 → Slack 通知」にし、永続化できた feedback だけ通知する。

受け入れ条件

  • 重複 id の POST /feedback で screenshot ファイルが残らない。
  • 保存されない feedback について Slack 通知が飛ばない。
  • 409 時に orphan しない回帰テストを追加。

出典: 全体監査(2026-06-20)で検出し、独立検証で実在確定(Medium / confidence high)。

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions