Skip to content

test(smoke): drop the Python abort retry and the browser reload - #6064

Merged
kixelated merged 7 commits into
mainfrom
claude/smoke-no-retries
Oct 21, 2026
Merged

kixelated merged 7 commits into
mainfrom
claude/smoke-no-retries

Conversation

@kixelated

@kixelated kixelated commented Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Two subscriber retries in test/smoke break the harness's own rule (test/smoke/AGENTS.md): a client that failed to exchange media gets no retry. Codex flagged both on #6046, where they were declined as out of scope for a verbatim move.

  1. smoke.sh re-ran the Python subscriber once on exit 134.
  2. clients/js/driver.ts reloaded the page halfway through when <moq-watch> had decoded nothing.

Both root causes are already fixed in published packages, so the retries now only hide new regressions.

Approach

Delete both retries. No source change is needed.

Python exit 134. The abort was the moq-ffi runtime thread asking for the GIL after CPython finalization began. CPython pthread_exits that thread, and the unwind aborts in Rust. Fixed by #3766: an atexit hook stops the runtime thread first. It ships in moq-ffi 0.4.17 / moq-rs 0.5.1, which is what smoke installs. Reproduced against that published wheel with #3766's forced-order script (py/moq-ffi/tests/exit_inside_callback.py):

  • with moq_ffi_shutdown unregistered from atexit: exit 134, panic in a function that cannot unwind, the same signature as the smoke failure
  • as published: 10/10 clean

The regression test py/moq-ffi/tests/test_exit.py already runs under just py test.

Browser catalog give-up. The reload covered <moq-watch> subscribing to catalog.json before the publisher had announced, getting RESET, and stopping (the harness dates from May). The current @moq/watch (0.6.3) requests with announced: true through @moq/net's origin, so it subscribes only after the announce. It subscribes blind only when the relay has no discovery, and a refusal there is final by design, since no announce will ever come to wait for.

Local runs. Published moq-relay 0.17.7 and moq 0.14.7, with both retries removed. --publishers js-web,python,rust --subscribers js-web,js-jsdelivr,python, 10 runs:

  • 90/90 cells passed
  • no exit 134
  • in all 60 browser-subscriber cells, the announced: broadcast=… active=true log line comes before the catalog subscribe start

Impact

  • Public API: none.
  • Wire: none.
  • Harness only. A Python teardown abort or a browser give-up now turns its cell red on the first attempt.

Alternatives

  • Keep the retries and log when they fire. Rejected: a cell that passes on its second attempt is still a pass that hides a regression.

Follow-ups

  • On public relays without discovery (the browser logs broadcast discovery failed), a js-web subscriber that beats the publisher's announce is refused and stays offline. The reload used to hide this on the relays page. A red cell there is the honest result for that relay.

(Written by Claude Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 6 commits October 19, 2026 21:41
Verbatim copy of https://github.com/moq-dev/smoke/tree/66dd9f4 into
test/smoke/, adapted to the monorepo in the following commits.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Adapt the imported moq-dev/smoke harness to test/smoke: its own nested
flake and stable toolchain, a lockfile ban scoped to the directory, the
Cloudflare client outside the cargo workspace, a path-filtered Smoke
workflow, and the relay report published under /relays/ on moq's single
gh-pages site.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The negative pass minted the unrelated key with the verifier under test and
only warned when that failed, so a verifier could pass without ever being
shown a foreign key. Mint it with the canonical generator, which just worked,
and fail the cell otherwise.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Both covered bugs already fixed in the published packages: moq-ffi's
runtime thread now stops at exit (#3766, moq-ffi 0.4.17), and
@moq/watch waits for the announce before subscribing to the catalog. A
client that failed to exchange media gets no retry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Base automatically changed from claude/smoke-monorepo to main October 20, 2026 21:03
# Conflicts:
#	test/smoke/clients/js/driver.ts
#	test/smoke/smoke.sh
@kixelated
kixelated marked this pull request as ready for review October 20, 2026 21:12
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 20, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-20T21:14:25.051931Z e09660c Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 10 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 628f9376-7467-49c7-a747-2ba152425a2a
📥 Commits

Reviewing files that changed from the base of the PR and between 80d0930 and e09660c.

📒 Files selected for processing: 2
  • test/smoke/clients/js/driver.ts
  • test/smoke/smoke.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merging: removes the Python exit-134 re-run and the mid-run browser reload from test/smoke; both root causes are fixed in the published packages (see the body). Harness-only, no API or wire change. Codex reviewed e09660c8 with no findings; PR checks pass.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 20, 2026
Merged via the queue into main with commit 56edae8 Oct 21, 2026
21 checks passed
@kixelated
kixelated deleted the claude/smoke-no-retries branch October 21, 2026 00:00
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