Rubber Duck が検出した3つのサイレントフェイル

いずれもメインモデルの self-reflection をすり抜け、テストもパスする種類のバグ

🔴 Architecture flaw OpenLibrary / async scheduler
メインモデルが提案したスケジューラは起動直後に終了し、ジョブを1件も実行しない設計だった。さらにスケジュールされたタスクの1つが無限ループ。
Duck の検出 → 起動ライフサイクルの欠陥 + 無限ループ。1つの提案に2つの構造的欠陥を発見。
サイレントフェイルの性質: スケジューラは exit code 0 で正常終了。エラーログなし。
🔴 Data loss OpenLibrary / Solr ファセットクエリ
ループ内で同じ dict キーを毎イテレーション上書きしており、4つの Solr ファセットカテゴリのうち3つが全検索クエリから無言で脱落していた。エラーは一切出ない。
Duck の検出 → 検索ファセットの 75% がサイレントに欠損。ランタイムエラーなしのデータ欠損。
サイレントフェイルの性質: 検索結果は返るがファセットが不完全。テストはパスしてしまう。
🔴 Cross-file dependency NodeBB / メール確認(Redis)
新コードが Redis キーへの書き込みを削除したが、同じキーを読み取る3つのファイルが残存していた。メール確認UIとクリーンアップパスがデプロイ後にサイレントに破壊されるところだった。
Duck の検出 → 書き込みが消えたキーを3ファイルが読み取り続けている。ファイル境界を超えたサイレント破壊。
サイレントフェイルの性質: デプロイ時にエラーなし。メール確認が数日後に静かに停止する。
3事例の共通パターン

すべてランタイムエラーを出さない。テストはパスし、デプロイは成功するが、機能がサイレントに壊れる。これが self-reflection では検出できず、異なるモデルの視点が最も価値を発揮するカテゴリである。

出典:GitHub Blog「GitHub Copilot CLI combines model families for a second opinion」(2026年4月6日)