Skip to content

Fix the arm64 release build and a racy routing test - #333

Merged
sproctor merged 2 commits into
mainfrom
fix-arm64-release-and-routing-test
Nov 3, 2026
Merged

sproctor merged 2 commits into
mainfrom
fix-arm64-release-and-routing-test

Conversation

@sproctor

@sproctor sproctor commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Fixes the two failures from e3b4c47d, so a new beta can publish.

Linux arm64 release build

The v3.2.0-beta.2 run failed on ubuntu-22.04-arm with Could not create task ':core:kspKotlinIosArm64' / Unknown host target: linux aarch64, so nothing published. The other four desktop targets built, including their --version checks.

The cause is in Nucleus, fixed by NucleusFramework/Nucleus#904. Until that ships, the release build passes -PiosSkip=true, as CI and the Android job already do. Desktop packaging doesn't use the iOS targets.

Racy routing test

aPushToADeclaredStreamGoesThere failed on main at WraythStreamRoutingTests.kt:87. The harness cancelled its collectors as soon as the client disconnected, while they could still be draining buffered lines on other threads. The test code itself was the problem, not the client. The collectors now run on Dispatchers.Unconfined, so each takes a line inside the client's own send and nothing is buffered at disconnect.

Tested

  • WraythStreamRoutingTests passes 20 reruns with every core under load. The original failure never reproduced here, so that doesn't prove the race is gone.
  • :desktopApp:packageGraalvmDeb and :desktopApp:packageGraalvmAppImage with -PiosSkip=true build on Linux x64. The packaged binary reports its version with exit code 0 and replayed a game log for 25 seconds.

Not tested: the arm64 build itself, which only a release run exercises, or iosSkip builds on Windows and macOS.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores

    • Desktop release builds now explicitly skip iOS-specific tasks.
  • Tests

    • Stream-routing checks now wait for stream events to be collected after disconnecting, making the checks more reliable when event delivery takes time. The existing timeout continues to limit how long the checks can wait.

v3.2.0-beta.2 failed on Linux arm64: Nucleus's native-image resource task creates the
iOS tasks of the app's modules, and the Kotlin plugin refuses to create those there.
Pass iosSkip, as CI and the Android job already do. NucleusFramework/Nucleus#904 fixes
the cause.

WraythStreamRoutingTests cancelled its collectors as soon as the client disconnected,
which could drop lines they hadn't reached yet and failed CI on main. Wait for them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 3, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

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 52 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 20af7acd-b9b6-4bfa-8d85-914571f4814f
Commits

Reviewing files that changed from the base of the PR and between 5efadab and f22415b.

Files selected for processing: 1
  • wrayth/src/jvmTest/kotlin/WraythStreamRoutingTests.kt
Walkthrough

The release workflow passes -PiosSkip=true to desktop Gradle builds. The stream routing test helper waits for collectors to receive expected events and for the main event count to remain unchanged before it returns.

Changes: Release workflow

Layer / File(s) Summary
Set release Gradle property
.github/workflows/release.yaml
The desktop release Gradle invocation now passes -PiosSkip=true for all matrix runners.

Stream routing test waits

Layer / File(s) Summary
Wait for stream collectors to drain
wrayth/src/jvmTest/kotlin/WraythStreamRoutingTests.kt
After disconnecting, the helper waits until collectors receive at least feed.linesSent events. It then waits for the main event count to remain unchanged across a 50 ms interval. Both waits remain within the existing 10-second timeout.

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Bug fix

Possibly related PRs

Merge Risk: Low · previous review 5efad

The routing test can remain intermittently flaky; add an explicit eventFlow completion barrier before merging.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely identifies both main changes: the arm64 release build fix and the racy routing test fix.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentat…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff with cyclomatic complexity of at least 2. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 1 files. (1 skipped: 1 unsupported.)

Finishing Touches
Generate docstrings
  • Commit to this branch
  • Create a new PR
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Tip

🎯 Customize your risk assessments

Guide how CodeRabbit assesses merge risk and security architecture risk. Highlight sensitive changes and explain your security boundaries using Merge Risk Instructions and Security Risk Instructions in your review settings. Security architecture risk assessments require the Advanced plan or above.

✅ Automatic approvals, with your rules

Let CodeRabbit approve pull requests once required threads are resolved, pre-merge checks pass, and your risk limits are met. Enable Automatic approvals in review settings, with overrides for teams or file paths.

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

CodeRabbit Verify

  • Run CodeRabbit Verify to test the changes in this pull request.
Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 937c3c4e-367a-4dba-8090-eb3ac6ca3b71
Commits

Reviewing files that changed from the base of the PR and between e3b4c47 and 5efadab.

Files selected for processing: 2
  • .github/workflows/release.yaml
  • wrayth/src/jvmTest/kotlin/WraythStreamRoutingTests.kt

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@coderabbitai coderabbitai Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • Fix comments: Fix CodeRabbit comments on this PR

Waiting for main to go quiet for 50 ms still loses events if the collector stalls for
longer. Unconfined collectors take each line inside the client's send, so nothing is
buffered at disconnect and the test needs no wait at all.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sproctor
sproctor merged commit f7d2e65 into main Nov 3, 2026
2 checks passed
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