wai dev's test: the stand-in room service listens without a reverse lookup #663

Merged
dcharlot merged 2 commits from fix/fake-stack-reverse-lookup into main 2026-11-06 13:15:50 -05:00
Owner

Replaces #661, whose commit message and first body stated things I have since measured to be wrong.

tests/cli_studio.rs failed on every run on one macOS runner and passed on every other, with "the room service's clock on the relay: not within 30 s". Across 22 runs of that job on 5 November it was 3 of 3 on that runner and 19 of 19 passing elsewhere.

Cause. The stand-in room service starts an HTTPServer, whose server_bind calls socket.getfqdn before the server listens. On that host, under the runner's Python 3.15.2, getfqdn("127.0.0.1") takes 35 s, past the 30 s wai dev waits. The stand-in relay opens a plain socket, so it was up in about 0.1 s and only the room service stalled. A second macOS host shows the same 35 s; two others answer the same call in milliseconds on the same Python version. Why those hosts are slow is not established, and this change doesn't depend on it.

Nothing in the fixture reads the name, so it no longer asks for it.

Tested, on that host and Python, with a stack dump armed:

Stand-in Time to answer Where it was
Unchanged 35.5 s socket.getfqdn, from http/server.py's server_bind
This change 0.12 s over three rounds

On another host, a socket.getfqdn planted to stall for 40 s fails the test with the same message at 30.18 s, and passes with this change in 0.30 s.

CI checks out each PR's own head, so a PR already open keeps the old fixture until it carries this commit. The same commit is on #640, #656 and #658.

Changes the test fixture only, so there is no changelog entry.

🤖 Generated with Claude Code

Replaces #661, whose commit message and first body stated things I have since measured to be wrong. `tests/cli_studio.rs` failed on every run on one macOS runner and passed on every other, with "the room service's clock on the relay: not within 30 s". Across 22 runs of that job on 5 November it was 3 of 3 on that runner and 19 of 19 passing elsewhere. **Cause.** The stand-in room service starts an `HTTPServer`, whose `server_bind` calls `socket.getfqdn` before the server listens. On that host, under the runner's Python 3.15.2, `getfqdn("127.0.0.1")` takes 35 s, past the 30 s `wai dev` waits. The stand-in relay opens a plain socket, so it was up in about 0.1 s and only the room service stalled. A second macOS host shows the same 35 s; two others answer the same call in milliseconds on the same Python version. Why those hosts are slow is not established, and this change doesn't depend on it. Nothing in the fixture reads the name, so it no longer asks for it. **Tested, on that host and Python, with a stack dump armed:** | Stand-in | Time to answer | Where it was | |---|---|---| | Unchanged | 35.5 s | `socket.getfqdn`, from `http/server.py`'s `server_bind` | | This change | 0.12 s over three rounds | | On another host, a `socket.getfqdn` planted to stall for 40 s fails the test with the same message at 30.18 s, and passes with this change in 0.30 s. CI checks out each PR's own head, so a PR already open keeps the old fixture until it carries this commit. The same commit is on #640, #656 and #658. Changes the test fixture only, so there is no changelog entry. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
wai dev's test: the stand-in room service listens without a reverse lookup
All checks were successful
WAI conformance / quantum core and corpus under wasm32-wasip2 (wasmtime) (pull_request) Successful in 3m36s
wai-fleet service / service · linux (pull_request) Successful in 2m27s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m0s
wai-pack / wai-pack · linux (pull_request) Successful in 1m57s
wai-ledger service / service · linux (pull_request) Successful in 2m32s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 17s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 13s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 28s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 1m42s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 17m43s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 10m44s
WAI Studio / the catalogue's actions, the unit tests and the core · linux (pull_request) Successful in 58s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 15m37s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 6m10s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 2m39s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 8m47s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 4m48s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 11m58s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 1m55s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m6s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 21s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 17s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 12m4s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 2m20s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 2m51s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m29s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 6m46s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 23m36s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 18m56s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h40m40s
576511d62b
tests/cli_studio.rs failed on every run on one macOS runner and passed on
every other runner, 3 of 3 against 19 of 19 on 5 November, with "the room
service's clock on the relay: not within 30 s".

The stand-in room service starts an HTTPServer, whose server_bind calls
socket.getfqdn before the server listens. On that host, under the runner's
Python 3.15.2, getfqdn("127.0.0.1") takes 35 s, past the 30 s wai dev waits, and
a stack dump of the stalled stand-in shows it there. The stand-in relay opens a
plain socket and answers in 0.1 s. Nothing here reads the name, so the fixture
no longer asks for it.

On that host and Python the room stand-in took 35.5 s and now takes 0.12 s. A
socket.getfqdn planted to stall for 40 s fails the test without this change,
with the same message, and passes with it.

Changelog: none

Co-Authored-By: Claude Opus 5.5 <[email protected]>
wai dev's test fixture: the change has no changelog entry, by its trailer
All checks were successful
wai-fleet service / service · linux (pull_request) Successful in 7m5s
wai-web reach builds / wai-web reach builds · the package of record, every output as recorded (pull_request) Successful in 5m9s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 8m16s
wai-web wasm32 / wai-web wasm32 build · corpus, menu and writers (pull_request) Successful in 8m58s
wai-quantum for JavaScript / javascript · linux (pull_request) Successful in 8m9s
wai-web reach builds / wai-web reach builds · this tree's wai-web, every rung on its engine line (pull_request) Successful in 8m34s
wai-ledger service / service · linux (pull_request) Successful in 12m37s
WAI energy receipts / energy receipts · linux (pull_request) Successful in 17m14s
WAI conformance / cargo-class corpora · linux (pull_request) Successful in 22m13s
WAI Studio / Studio in WebKit · linux (pull_request) Successful in 19m19s
wai-quantum studio and desktop / desktop app · linux (pull_request) Successful in 39m28s
WAI examples / WAI examples · portable · linux (pull_request) Successful in 1h9m32s
wai-quantum studio and desktop / desktop app · windows (pull_request) Successful in 9m46s
WAI conformance / v2 vocabulary · manifests validate as stated (pull_request) Successful in 26s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 6m10s
WAI conformance / delivery telemetry · CMCD and CMSD against an independent library (pull_request) Successful in 15s
WAI conformance / cross-arch byte-equality · linux-arm64 (pull_request) Successful in 49s
WAI conformance / C2PA manifest emission · signed, read back, validated (pull_request) Successful in 2m36s
WAI examples / WAI examples · android-app · linux-arm64 (pull_request) Successful in 8m0s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (pull_request) Successful in 1m47s
WAI conformance / each feature of the independent verifiers' steps compiles alone (pull_request) Successful in 19m22s
WAI conformance / cargo-class corpora · linux-arm64 (pull_request) Successful in 25m37s
joule-moq-room room service / joule-moq-room, every target (pull_request) Successful in 4m45s
wai-pack / wai-pack · the floor through a media prober (pull_request) Successful in 33s
wai-pack / wai-pack · linux-arm64 (pull_request) Successful in 2m48s
wai-pack / wai-pack · dependency licences (pull_request) Successful in 2m29s
wai-sink-android native sink library / the JNI layer and the platform-free half on the host JVM · linux-arm64 (pull_request) Successful in 3m49s
wai-pack / wai-pack · independent verifier (Python) (pull_request) Successful in 9m35s
WAI energy receipts / energy receipts · linux-arm64 (pull_request) Successful in 24m11s
WAI conformance / independent verifiers · claims, JWP, key discovery and integer payloads (Python) (pull_request) Successful in 1h41m34s
55e17b4f6a
The fixture commit before this one carried its no-entry trailer in a paragraph
of its own, so it was not in that message's trailer block and the changelog
check read none. This commit states it where the check reads it. It changes
no file.

Changelog: none
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
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
Transaction-Science/open-standards!663
No description provided.