Skip to content

ci: gate on relay interop's real exit code instead of grep-scraping stdout - #43

Merged
SoundMatt merged 1 commit into
mainfrom
ci/fix-relay-interop-exit-code
Aug 21, 2026
Merged

ci: gate on relay interop's real exit code instead of grep-scraping stdout#43
SoundMatt merged 1 commit into
mainfrom
ci/fix-relay-interop-exit-code

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Fixes the exit-code-swallowing anti-pattern in SoundMatt/RELAY's
INTEROP-04 (#149), against the pattern defined in
docs/INTEROP-ARCHITECTURE.md
(THEME-K, SoundMatt/RELAY#125). Same fix already merged for rust-RCP:
rust-RCP#171.

What changed

Replaces interop_out=$(relay interop ... 2>&1) || true + a grep of
stdout for ERROR|FAIL with a plain relay interop --strict --protocol LIN ./target/release/rust-lin invocation whose real exit code gates
the step directly. The old form silently tolerated both a genuinely
broken run and any future change to relay interop's output format,
since || true swallowed the real exit code before the grep ever ran.

The surrounding job is already correctly named conformance (not
"interop"), so — unlike the rust-RCP fix — no rename was needed here.

Verification

  • cargo build --release --locked / cargo test --release --locked /
    cargo fmt --check clean (pure CI YAML change, no Rust source
    touched)
  • Confirmed no job-id collisions in this workflow (5 unique job ids,
    none duplicated) — checked deliberately after the rust-RCP fix hit
    exactly this bug on its first push
  • Verified locally against the exact relay v2.0.4 build this job
    installs: a real rust-lin binary produces RESULT: PASS / exit 0;
    mutation-tested against a deliberately broken binary, confirmed
    RESULT: FAIL / exit 1 (the previous || true form would have
    swallowed this)

…tdout

Replaces `interop_out=$(relay interop ... 2>&1) || true` + a grep of
stdout for ERROR/FAIL with a plain `relay interop --strict --protocol
LIN ./target/release/rust-lin` invocation whose real exit code gates
the step directly. The old form silently tolerated both a genuinely
broken run and any future change to relay interop's output format,
since `|| true` swallowed the real exit code before the grep ever ran.

--protocol LIN restricts the check to rust-lin's own protocol and
--strict fails on a missing convert rather than treating it as an
innocuous skip -- matching the pattern already fixed in rust-RCP
(SoundMatt/rust-RCP#171) and go-RCP/go-LIN's existing clean form.

The surrounding job is already correctly named 'conformance' (not
'interop'), so no rename needed here, unlike rust-RCP's fix.

Verified locally against the exact relay v2.0.4 build this job
installs: a real rust-lin binary produces RESULT: PASS / exit 0;
mutation-tested against a deliberately broken binary, confirmed
RESULT: FAIL / exit 1 (the previous || true form would have swallowed
this). Also confirmed no job-id collisions exist in this workflow
(5 unique job ids, none duplicated) before pushing, after the
job-collision bug found while fixing rust-RCP's identical pattern.

SoundMatt/RELAY THEME-K (#125) / INTEROP-04 (#149).

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit 7472269 into main Aug 21, 2026
7 checks passed
@SoundMatt
SoundMatt deleted the ci/fix-relay-interop-exit-code branch August 21, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant