Skip to content

fix(ci): gazebo runs on every PR — the precondition for requiring it - #428

Merged
avrabe merged 1 commit into
mainfrom
fix/gazebo-runs-on-every-pr
Sep 16, 2026
Merged

avrabe merged 1 commit into
mainfrom
fix/gazebo-runs-on-every-pr

Conversation

@avrabe

@avrabe avrabe commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Refs #427. Does not promote the context — that is the follow-up, on evidence.

The rule this encodes

A required status check that does not run does not pass by default. It never
reports, and the PR stays blocked forever.

I promoted Gazebo SITL (real gz bridge) to required earlier today with its
stated precondition met — five consecutive green runs on main, the wasm leg
executing 6250 ticks and holding 0.01 m bit-identical to native. It deadlocked
every merge in the repo within minutes
:

#426 OPEN BLOCKED
  (zero failing checks — gazebo simply never triggered)

#426 touched only .github/workflows/kani.yml, which was not in the path
filter. Removing the required context returned it to CLEAN instantly.

The precondition I checked was "is this leg meaningful." The one that decides
whether a context can be required is "does it report on every PR." Different
properties.

What this does

Removes the pull_request path filter so the job always runs.

Cost: ~7 minutes of runner time per PR. Against: the only gate in the
repo that flies the actually-published wasm component through real physics and
compares it to native bit for bit. Cheap.

What this deliberately does not do

It does not re-add the required context. The sequence is: land this → observe
the job reporting on a PR that touches none of the old filter paths → then
promote. Promoting on reasoning rather than evidence is what caused the
deadlock, and doing it twice in one day would be hard to explain.

The shape, now that we have both halves

#417 a job that is SKIPPED but reports success — verifies nothing, looks green
#427 a job that is SKIPPED and reports nothing — blocks everything

Same root: a gate whose workflow does not always run. The only shape safe to
require is one that always runs and always reports.

🤖 Generated with Claude Code

https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG

…427)

A required status check that does not RUN does not pass by default. It never
reports, and the PR stays blocked forever.

I promoted `Gazebo SITL (real gz bridge)` to a required context earlier today
with its stated precondition met — five consecutive green runs on main, the wasm
leg executing 6250 ticks and holding 0.01 m, bit-identical to native. It
deadlocked every merge in the repo within minutes. PR #426 sat BLOCKED with ZERO
failing checks, because it touched only `.github/workflows/kani.yml` and the
path filter meant gazebo never triggered. Removing the context returned it to
CLEAN instantly.

The precondition I checked was "is this leg meaningful". The one that decides
whether a context can be required is "does it report on EVERY pr", and those are
different properties.

This removes the `pull_request` path filter so the job always runs. Cost: about
7 minutes of runner time per PR, against the only gate in the repo that flies
the actually-published wasm component through real physics and compares it to
native bit for bit. That is cheap.

NOT PROMOTING IT IN THIS COMMIT. The sequence is: land this, observe the job
reporting on a PR that touches none of the old filter paths, THEN add the
required context. Promoting on the strength of reasoning rather than evidence is
exactly what caused the deadlock, and doing it again in the same day would be
hard to explain.

Worth naming the shape, because this repo now has both halves of it:

  #417 — a job that is SKIPPED but reports `success` verifies nothing while
         looking green.
  #427 — a job that is SKIPPED and reports nothing blocks everything.

Same root: a gate whose workflow does not always run. The only shape safe to
require is one that always runs and always reports.

Refs #427.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
@avrabe
avrabe merged commit 5c7d4fa into main Sep 16, 2026
12 checks passed
@avrabe
avrabe deleted the fix/gazebo-runs-on-every-pr branch September 16, 2026 16:38
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