Exit zero is not evidence
Two real pitzDaily runs both end with End and exit 0. One is a valid result. The other stopped above its own convergence bar.
Agents report success when the solver exits cleanly. The exit code says the process ended. It says nothing about whether the answer is right.
- Tutorial
solvers.p.tolerance 1e-6End· exit 0 · 281 iterationsaccept · VER-5.6 - Faulted
solvers.p.tolerance 1e-2End· exit 0 · 300 iterationsreject · VER-5.4 · Final residual above convergence criterion: final worst residual 0.0098 > 0.001
Two runs
Both are OpenFOAM’s pitzDaily tutorial, simpleFoam, on the same mesh. One is the tutorial as shipped.
In the other, the pressure solver’s tolerance was loosened from 1e-6 to 1e-2. Nothing else changed.
Both logs end with End. Both processes exit 0. An agent watching the exit code reports two successes.
What Courant says
courant verify accepts the first, under rule VER-5.6.
It rejects the second, under VER-5.4. Its first reason: the final worst residual is 0.0098, above the bar of 0.001.
The reason cites the file it read, the method, the threshold and the value.
The report gives three more reasons, including the loose solver tolerance.
Why it matters for agents
An agent that treats exit 0 as done will ship the second run.
A gate in the loop turns that into a failed step the agent can see.
It runs on your machine, never edits a case, and sends nothing to Courant. Try it on the shipped runs: courant demo.
Both runs, and every number behind them: the repository.