Most fix loops chase a single gate to exit 0 and tolerate warnings. This loop enforces the stricter merge bar where a single warning is a failure: lint with max-warnings 0, typecheck with fail-on-warnings, the full test run, and a clean production build must ALL pass together in one chained command every iteration. The point is to surface the cross-gate failure that only appears when they run as a set — a typecheck warning lint ignores, a build that breaks on a test-only import. Distinct from lint-typecheck-fix (two gates, default warning posture) and independent-verifier-pass (runs build/lint/test but treats warnings as non-fatal): the exit condition is the entire chain exiting 0 with grep finding 'warning' nowhere in the captured output.
Loop
- Goal
- lint, typecheck, tests, and the production build all pass as one chained gauntlet with zero warnings emitted
- Exit when
- the chained command exits 0 AND the captured output contains zero occurrences of the word 'warning' (case-insensitive)
Check between iterations