背景
Issue #444(N1投入前提実装、PR #446)のformal review(agmsg_reviewer_claude)で、
変異試験N1P-04/05(阻害画面判定の優先順位検証)の検出力が不完全であることが判明した。
何が問題か
PR #446本文は「準備完了の判定を阻害画面の判定より先にする → KILLED(N1P-04/05)」と
主張していたが、reviewerが独立に同じ変異を当てて10回連続実行したところ、
N1P-04は5/10でSURVIVED、N1P-05は6/10でSURVIVEDした。
原因(reviewer調査)
fake launcherは阻害画面のテキストを出力した後sleep 1し、その後? for shortcutsを
出力する。command_wait_n1_readyは0.2秒間隔でポーリングし、その時点までに蓄積された
ログ全文を評価する。優先順位を反転する変異を当てても、「阻害画面のテキストだけが
見えている(readyテキストがまだ出ていない)」タイミングでポーリングが命中すれば、
変異の有無に関わらず正しく阻害画面を検出できてしまう。
development.rule.md「対照は、疑っている失敗モードを再現できる条件で選ぶ」原則に
照らすと、この対照は阻害画面とreadyテキストが同時に存在する状態を保証しておらず、
疑っている失敗モード(優先順位の逆転)を確実には再現できていない。
実装自体への影響
実装自体は正しく機能している(変異なしでは常にPASS)。問題はテストの検出力のみ。
CI環境のタイミング変動次第で、この特定の回帰(優先順位の逆転)が将来CIをすり抜ける
可能性がある、という潜在リスク。
修正案(reviewer提案)
fake launcherを、阻害画面のテキストと? for shortcutsを同時に(1回の書き込みで)
出力するよう変更すれば、優先順位ロジックの検証が完全に決定論的になる。
対象
tests/test_pilot_gate_runner.bats(N1P-04/05に対応するfake launcher fixture)
担当
実装: programmer
formal review: reviewer
README への影響
無。
Refs #444
背景
Issue #444(N1投入前提実装、PR #446)のformal review(agmsg_reviewer_claude)で、
変異試験N1P-04/05(阻害画面判定の優先順位検証)の検出力が不完全であることが判明した。
何が問題か
PR #446本文は「準備完了の判定を阻害画面の判定より先にする → KILLED(N1P-04/05)」と
主張していたが、reviewerが独立に同じ変異を当てて10回連続実行したところ、
N1P-04は5/10でSURVIVED、N1P-05は6/10でSURVIVEDした。
原因(reviewer調査)
fake launcherは阻害画面のテキストを出力した後
sleep 1し、その後? for shortcutsを出力する。
command_wait_n1_readyは0.2秒間隔でポーリングし、その時点までに蓄積されたログ全文を評価する。優先順位を反転する変異を当てても、「阻害画面のテキストだけが
見えている(readyテキストがまだ出ていない)」タイミングでポーリングが命中すれば、
変異の有無に関わらず正しく阻害画面を検出できてしまう。
development.rule.md「対照は、疑っている失敗モードを再現できる条件で選ぶ」原則に
照らすと、この対照は阻害画面とreadyテキストが同時に存在する状態を保証しておらず、
疑っている失敗モード(優先順位の逆転)を確実には再現できていない。
実装自体への影響
実装自体は正しく機能している(変異なしでは常にPASS)。問題はテストの検出力のみ。
CI環境のタイミング変動次第で、この特定の回帰(優先順位の逆転)が将来CIをすり抜ける
可能性がある、という潜在リスク。
修正案(reviewer提案)
fake launcherを、阻害画面のテキストと
? for shortcutsを同時に(1回の書き込みで)出力するよう変更すれば、優先順位ロジックの検証が完全に決定論的になる。
対象
tests/test_pilot_gate_runner.bats(N1P-04/05に対応するfake launcher fixture)担当
実装: programmer
formal review: reviewer
README への影響
無。
Refs #444