Skip to content

fix(ci): falcon-hello-demo raced on a hardcoded port — the flake that failed #365 - #383

Merged
avrabe merged 1 commit into
mainfrom
fix/falcon-hello-port-race
Sep 10, 2026
Merged

fix(ci): falcon-hello-demo raced on a hardcoded port — the flake that failed #365#383
avrabe merged 1 commit into
mainfrom
fix/falcon-hello-port-race

Conversation

@avrabe

@avrabe avrabe commented Sep 10, 2026

Copy link
Copy Markdown
Contributor

Verify-Filter: (has-tag "v0.1")

#365's gate failed on one step out of 163, and not because of anything in #365:

[ FAIL (rc=1)] FV-FALCON-WORLD-001: scripts/falcon-hello-demo.sh
  [falcon-hello-demo] vehicle sent 0 heartbeat(s)
  FAIL: expected at least 8 heartbeats, got 0
  error: bind 127.0.0.1:14701: Address already in use (os error 98)

The demo hardcoded the 14700/14701 pair, the gate runners are shared, and two
jobs on one runner fight for the same socket.

This is the worst shape a flake can take on a required check: it fails loudly, names
a plausible functional symptom ("got 0 heartbeats"), and the real cause is one line
further down. #365 promotes 105 artifacts, so the natural reading was that a
promotion had broken something.

Fix

Probe for a free pair instead of assuming one. FALCON_HELLO_PORT_BASE still wins
so a bench operator can pin it; if 64 probes all fail it falls back to the historical
default rather than erroring — a demo that can't find a port should still try, not
add a second failure mode.

Measured, both directions, 3 concurrent runs

result
forced to the old fixed base 2 of 3 FAILAddress already in use ×3, got 0 heartbeats ×2
with the probe 3 of 3 PASS, 14 heartbeats each

The negative case is #365's exact error text reproduced from the exact condition,
not a synthetic stand-in.

Refs #365, #345

🤖 Generated with Claude Code

https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG

…eads as a regression

PR #365's verification gate failed on one step out of 163:

    [ FAIL (rc=1)] FV-FALCON-WORLD-001: scripts/falcon-hello-demo.sh
      [falcon-hello-demo] vehicle sent 0 heartbeat(s)
      [falcon-hello-demo] FAIL: expected at least 8 heartbeats, got 0
      error: bind 127.0.0.1:14701: Address already in use (os error 98)

Nothing was wrong with the code. The demo hardcoded the 14700/14701 pair, the
gate runners are SHARED, and two jobs on one runner fight for the same socket.

That is the worst shape a flake can take on a REQUIRED check: it fails loudly,
names a plausible-sounding functional symptom ("got 0 heartbeats"), and the
actual cause is one line further down. #365 is a 105-artifact promotion PR, so
the obvious reading was that a promotion had broken something.

FIX: probe for a free port pair instead of assuming one. An explicit
FALCON_HELLO_PORT_BASE still wins, so a bench operator can pin it, and if 64
probes somehow all fail the script falls back to the historical default rather
than erroring — a demo that cannot find a port should still try, not add a
second failure mode.

MEASURED, both directions, three concurrent runs:

    forced to the old fixed base   2 of 3 FAIL
                                   "Address already in use" x3
                                   "expected at least 8 heartbeats, got 0" x2
    with the probe                 3 of 3 PASS, 14 heartbeats each

The negative case is the real bug reproduced on purpose, not a synthetic stand-in
— #365's exact error text, from the exact condition.

Refs #365, #345

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HvusAXYbHLyv3uTzfBcMbG
@avrabe
avrabe enabled auto-merge (squash) September 10, 2026 16:44
@avrabe
avrabe merged commit 33baa92 into main Sep 10, 2026
11 checks passed
@avrabe
avrabe deleted the fix/falcon-hello-port-race branch September 10, 2026 17:07
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