Skip to content

Brought the Option 7 (external streams) Core suite back to green. - #29

Closed
moetemp wants to merge 4 commits into
moe/AI-198-o7-core-1-importfrom
moe/AI-198-o7-core-2-suite-health
Closed

moetemp wants to merge 4 commits into
moe/AI-198-o7-core-1-importfrom
moe/AI-198-o7-core-2-suite-health

Conversation

@moetemp

@moetemp moetemp commented Oct 5, 2026

Copy link
Copy Markdown
Owner

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?

ExternalStreamMachine is registered with the transition coverage reporter, between NexusOperationMachine and the two channel machines. The flush-window record in an external stream test becomes a type alias, so cargo test-lint passes.

The two channel machine unit test files come in as the old unified Core had them, subscribe_notification_channel_state_machine_tests.rs and unsubscribe_notification_channel_state_machine_tests.rs, with their #[cfg(test)] mod lines. 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, which core_tests::channels didn't. They also check that a wrong-channel error names both channels.

channels::a_failed_later_task_hands_its_notifications_to_the_retry covers a failed later task whose retry reaches a cached run by an incremental update, and the same history cold. It needs max_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 main already 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 -

  • Unit Tests
  • Staging
  • End to End Tests

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 CI cargo doc check all pass. The integ suites weren't run, since they need a server.

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.
@moetemp

moetemp commented Oct 6, 2026

Copy link
Copy Markdown
Owner Author

Replaced by #40 in the v5 series (phase 1, Signal wake only). The branch stays as a pin.

@moetemp moetemp closed this Oct 6, 2026
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