fix(local): make the trial-build gate detect non-throwing build failures #130

Merged
pat-s merged 1 commit from t3code/fix-gate-false-green into main 2026-07-16 08:24:03 +00:00
Owner

Critical: the gate was false-green

The latest run printed 3/3 passed on alpine-324 while all three builds actually failed (their rstan dependency won't compile). A false-green gate would let broken registry entries merge — worse than no gate.

Root cause: bincraft::build_binary_package() catches build failures internally and returns "error" for the failed tag rather than throwing. The gate's tryCatch only treated a thrown exception as failure, so every non-throwing failure looked like a pass.

Fix: inspect the return value. A tag passes only if the flattened result is non-empty and contains no "error" sentinel; a thrown error still counts as failure. Verified the verdict against error/skipped/TRUE/list(success=TRUE)/NULL/mixed inputs.

With this, the current rstan-blocked entries will correctly show 0/3 (red) — which is the right answer until rstan builds.

## Critical: the gate was false-green The latest run printed **`3/3 passed on alpine-324`** while all three builds actually **failed** (their `rstan` dependency won't compile). A false-green gate would let broken registry entries merge — worse than no gate. Root cause: `bincraft::build_binary_package()` catches build failures internally and **returns `"error"`** for the failed tag rather than throwing. The gate's `tryCatch` only treated a *thrown* exception as failure, so every non-throwing failure looked like a pass. Fix: inspect the return value. A tag passes only if the flattened result is non-empty and contains no `"error"` sentinel; a thrown error still counts as failure. Verified the verdict against `error`/`skipped`/`TRUE`/`list(success=TRUE)`/`NULL`/mixed inputs. With this, the current rstan-blocked entries will correctly show **0/3 (red)** — which is the right answer until rstan builds.
The gate reported "3/3 passed" while all three builds actually failed (their
rstan dependency would not compile). Root cause: bincraft::build_binary_package()
catches build failures internally and RETURNS "error" for the failed tag instead
of throwing, so the gate's tryCatch never fired and every failed build looked
like a pass -- a false green that would let broken registry entries merge.

Inspect the return value: a tag is a pass only if the (flattened) result is
non-empty and contains no "error" sentinel; a thrown error still counts as
failure. Verified the verdict logic against error/skipped/TRUE/list/NULL/mixed.
pat-s merged commit 118a92889f into main 2026-07-16 08:24:03 +00:00
pat-s deleted branch t3code/fix-gate-false-green 2026-07-16 08:24:04 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
devxy/build-cran-binaries!130
No description provided.