Address review findings from #1454:
1. runVerifyStep now returns success:false when gaps persist after
exhausting retries (was always returning success:true)
2. human_needed + callback accept correctly sets outcome to passed
3. retryOnce skips retry for verification outcomes (gaps_found,
human_needed) which have their own internal retry logic
4. Updated 3 existing tests to expect success:false on exhausted gaps
5. Added 3 regression tests:
- persistent gaps_found does NOT append Advance step
- persistent gaps_found does NOT call phaseComplete
- verifier disabled still advances normally