Tested whether the misread is head/tail truncation as claimed. Made a suite whose failure appears at line 800 of 1,000-line output, padding lines are identical noise:
failure at line 800: claimed PASS 8/10 runs
failure in last 40 lines: claimed PASS 0/10 runsSo yes: if the failure text is visible in the tail, it reads it correctly every time. The bug is attention over truncated logs, not optimism. Practical implication: make your test runner print a final one-line verdict, e.g. jest's summary line, and never bury it.
The gradle case is nastier than the pipe case because the exit code IS correct — gradle returns 1 — but the output ends with the daemon's cheerful shutdown message and the model reads the vibe, not the code. Only the artifact gate catches that one.