Severity: Medium (test coverage of the highest-risk code)
Problem
The live cxpak transport RmcpCxpakClient (src/cxpak.rs, ~lines 245-484) has no tests. Existing tests cover only RecordedClient, is_indexing, SpawnBackoff, and DTO defaults — shape checks. Untested: child-process spawn, the 15s handshake timeout, the 10s call timeout, index-warm polling, Arc-identity connection eviction, kill_child, and Drop teardown. Comments reference a #[tokio::test] teardown that does not exist.
Why it matters
This is the most failure-prone code in a crate other components depend on — process spawning and timeout/eviction logic — and it is entirely unverified. Regressions here surface as hangs or leaked child processes in every consumer.
Proposed fix
Add a fake-child / stub-server harness to exercise timeout, eviction, backoff, and teardown paths; add #[ignore] live smoke tests against a real cxpak binary for the happy path.
Acceptance criteria
- Timeout, connection-eviction, and Drop/kill_child paths have deterministic tests.
- A leaked-child assertion exists (no orphaned process after Drop).
Severity: Medium (test coverage of the highest-risk code)
Problem
The live cxpak transport
RmcpCxpakClient(src/cxpak.rs, ~lines 245-484) has no tests. Existing tests cover onlyRecordedClient,is_indexing,SpawnBackoff, and DTO defaults — shape checks. Untested: child-process spawn, the 15s handshake timeout, the 10s call timeout, index-warm polling, Arc-identity connection eviction,kill_child, and Drop teardown. Comments reference a#[tokio::test]teardown that does not exist.Why it matters
This is the most failure-prone code in a crate other components depend on — process spawning and timeout/eviction logic — and it is entirely unverified. Regressions here surface as hangs or leaked child processes in every consumer.
Proposed fix
Add a fake-child / stub-server harness to exercise timeout, eviction, backoff, and teardown paths; add
#[ignore]live smoke tests against a real cxpak binary for the happy path.Acceptance criteria