Repository navigation
Conversation
The reporter panics on any machine name it has no visualizer for, so every state machine has to be listed there.
`clippy::type_complexity` rejects the inline nested type, and the lint is denied through `-D warnings` in `cargo test-lint`.
They hold each machine to a wrong event type, a missing recorded event and a recorded event lang does not reissue, which core_tests/channels.rs does not cover.
The A10 case reached the failed attempt through an incremental history update on a cached run, a path the first-task fold test does not take.
This was referenced Oct 5, 2026
Owner
Author
|
Replaced by #40 in the v5 series (phase 1, Signal wake only). The branch stays as a pin. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR brings the Core suite back to green on top of Max's import, and fills the channel test gaps the import exposed.
What changed?
ExternalStreamMachineis registered with the transition coverage reporter, betweenNexusOperationMachineand the two channel machines. The flush-window record in an external stream test becomes a type alias, socargo test-lintpasses.The two channel machine unit test files come in as the old unified Core had them,
subscribe_notification_channel_state_machine_tests.rsandunsubscribe_notification_channel_state_machine_tests.rs, with their#[cfg(test)] modlines. They compile unchanged, since the machine files are the same. They cover a wrong event type, replay without the recorded event, a recorded event lang doesn't reissue, and a subscribed event offered to the unsubscribe machine, whichcore_tests::channelsdidn't. They also check that a wrong-channel error names both channels.channels::a_failed_later_task_hands_its_notifications_to_the_retrycovers a failed later task whose retry reaches a cached run by an incremental update, and the same history cold. It needsmax_cached_workflows = 1. Without a cache slot, the run is evicted after the first task and the case never takes the incremental path.The old suite-health PR had more chores, but they came out empty here. Upstream
mainalready carries the Nexus request-timeout fix and the two integ fixes, #24 has the per-runner timeout, and the vendored WIT files already match upstream.Part of AI-198 (epic AI-37).
Why?
Every PR above this one needs a green suite to stand on. The test files belong with the channel machines in #26, but that layer is the base of both forks and is already reused across the series, so a fix there would cascade through every head. They land here instead. Several of the ported tests repeat cases in
core_tests/channels.rs. Trimming that overlap is a later cleanup, outside this series.How did you test it?
Link to a test plan if any -
cargo fmt --check,cargo lint,cargo test-lint, the workspace lib suite, the Core lib suite with--include-ignored(so the coverage reporter runs) and the CIcargo doccheck all pass. The integ suites weren't run, since they need a server.