c36ec439ce44c5d55fcd9cc757eb4899ec87b0dd
Round 44's verify-icon.sh had never run inside deploy.sh — only by hand — and it does two things there that it cannot do standalone. deploy.sh exports MSYS_NO_PATHCONV=1 for its adb calls, and that switch is global, so the APK path reached aapt2 as /f/Coding/... Windows binaries cannot open an MSYS path, and aapt2's answer is "failed opening zip: I/O error", which reads exactly like a corrupt APK rather than like a path. The four aapt2 calls now get cygpath -w explicitly; unzip and cmp keep the MSYS form, because they want that one. The second is worse, because it is intermittent. Every membership test was `echo "$VAR" | grep -q PATTERN`, under the `set -o pipefail` at the top. grep -q exits the moment it matches; echo is still pushing 70 KB of unzip listing into a pipe that just closed, takes SIGPIPE, exits 141 — and pipefail promotes the writer's status to the pipeline, so a check that FOUND what it was looking for reports failure. Whether it fires depends on where the match falls in the stream, so three runs against one unchanged APK gave fail, pass, fail, each naming a different missing file. Six of those, now herestrings: no writer process, nothing to kill. Eight runs green afterwards. Worth saying plainly: the APK was correct the entire time. The gate was wrong, and a gate that is green at random is worse than no gate, because the failure it invents points at the build.
Languages
Rust
48.3%
Svelte
38.1%
JavaScript
13.4%
CSS
0.2%