If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
### 💡 Codex Review
Here are some automated review suggestions for this pull request.
**Reviewed commit:** `c599c84715`
<details> <summary>ℹ️ About Codex in GitHub</summary>
<br/>
[Your team has set up Codex to review pull requests in this repo](https://chatgpt.com/codex/cloud/settings/general). Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
</details>
When probes are produced faster than stdout and statistics processing can consume them, this loop need not ever observe Empty: a continuously advancing broadcast channel can repeatedly return events or Lagged. Because the outer loop checks Ctrl-C, peer closure, and final status only after this drain returns, a high-rate run or slow output sink can become indefinitely unresponsive to shutdown; the analogous TUI drain also starves input and rendering. Process a bounded batch per outer iteration so control checks remain reachable.
Useful? React with 👍 / 👎.
**<sub><sub></sub></sub> Bound event draining before checking for shutdown**
When probes are produced faster than stdout and statistics processing can consume them, this loop need not ever observe `Empty`: a continuously advancing broadcast channel can repeatedly return events or `Lagged`. Because the outer loop checks Ctrl-C, peer closure, and final status only after this drain returns, a high-rate run or slow output sink can become indefinitely unresponsive to shutdown; the analogous TUI drain also starves input and rendering. Process a bounded batch per outer iteration so control checks remain reachable.
Useful? React with 👍 / 👎.
Report cleanup failures on otherwise successful outcomes
When a finite test completes but the subsequent drain or close fails, the unified runtime preserves TestComplete as the primary end reason and records the error in cleanup_failure; this function only examines end_reason, so the CLI exits successfully without any diagnostic about the failed close. The TUI outcome handling similarly ignores this field, so both frontends should surface cleanup_failure even when the primary outcome remains successful.
Useful? React with 👍 / 👎.
**<sub><sub></sub></sub> Report cleanup failures on otherwise successful outcomes**
When a finite test completes but the subsequent drain or close fails, the unified runtime preserves `TestComplete` as the primary end reason and records the error in `cleanup_failure`; this function only examines `end_reason`, so the CLI exits successfully without any diagnostic about the failed close. The TUI outcome handling similarly ignores this field, so both frontends should surface `cleanup_failure` even when the primary outcome remains successful.
Useful? React with 👍 / 👎.
cfg(any()) is always false, so all 45 TUI tests below this attribute are silently excluded, including coverage for the target outcome and status mappings changed in this commit. An all-features test run consequently executes no cmd::tui::ui tests; update the fixtures for the unified managed API rather than disabling the entire module.
Useful? React with 👍 / 👎.
**<sub><sub></sub></sub> Re-enable the TUI unit-test module**
`cfg(any())` is always false, so all 45 TUI tests below this attribute are silently excluded, including coverage for the target outcome and status mappings changed in this commit. An all-features test run consequently executes no `cmd::tui::ui` tests; update the fixtures for the unified managed API rather than disabling the entire module.
Useful? React with 👍 / 👎.
Update documentation for the removed legacy exports
After these root-level legacy exports are removed, the library documentation still directs users to crate::ManagedClient, which makes RUSTDOCFLAGS='-D warnings' cargo doc -p irtt-client --all-features --no-deps fail, while README.md:179-242 still contains a managed-client example and guidance using ManagedClient, SubscriberConfig, ManagedClientGroup, and EventSubscription. Users following the published library instructions therefore receive uncompilable code; migrate those references to the new managed API and enable the required tokio feature.
Useful? React with 👍 / 👎.
**<sub><sub></sub></sub> Update documentation for the removed legacy exports**
After these root-level legacy exports are removed, the library documentation still directs users to `crate::ManagedClient`, which makes `RUSTDOCFLAGS='-D warnings' cargo doc -p irtt-client --all-features --no-deps` fail, while README.md:179-242 still contains a managed-client example and guidance using `ManagedClient`, `SubscriberConfig`, `ManagedClientGroup`, and `EventSubscription`. Users following the published library instructions therefore receive uncompilable code; migrate those references to the new `managed` API and enable the required `tokio` feature.
Useful? React with 👍 / 👎.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit:
c599c84715ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
@@ -673,2 +440,4 @@ManagedTargetFailure, ManagedTargetFailureKind, ManagedTargetFailurePhase, TargetId,};use std::sync::Arc;When probes are produced faster than stdout and statistics processing can consume them, this loop need not ever observe
Empty: a continuously advancing broadcast channel can repeatedly return events orLagged. Because the outer loop checks Ctrl-C, peer closure, and final status only after this drain returns, a high-rate run or slow output sink can become indefinitely unresponsive to shutdown; the analogous TUI drain also starves input and rendering. Process a bounded batch per outer iteration so control checks remain reachable.Useful? React with 👍 / 👎.
@@ -691,0 +465,4 @@end_reason: ManagedTargetEndReason::Failed(ManagedTargetFailure {phase: ManagedTargetFailurePhase::Receiving,kind: ManagedTargetFailureKind::Protocol,message: "primary failure".into(),When a finite test completes but the subsequent drain or close fails, the unified runtime preserves
TestCompleteas the primary end reason and records the error incleanup_failure; this function only examinesend_reason, so the CLI exits successfully without any diagnostic about the failed close. The TUI outcome handling similarly ignores this field, so both frontends should surfacecleanup_failureeven when the primary outcome remains successful.Useful? React with 👍 / 👎.
cfg(any())is always false, so all 45 TUI tests below this attribute are silently excluded, including coverage for the target outcome and status mappings changed in this commit. An all-features test run consequently executes nocmd::tui::uitests; update the fixtures for the unified managed API rather than disabling the entire module.Useful? React with 👍 / 👎.
After these root-level legacy exports are removed, the library documentation still directs users to
crate::ManagedClient, which makesRUSTDOCFLAGS='-D warnings' cargo doc -p irtt-client --all-features --no-depsfail, while README.md:179-242 still contains a managed-client example and guidance usingManagedClient,SubscriberConfig,ManagedClientGroup, andEventSubscription. Users following the published library instructions therefore receive uncompilable code; migrate those references to the newmanagedAPI and enable the requiredtokiofeature.Useful? React with 👍 / 👎.