Repository · challenges
Kompile test launcher reports a misleading SerializableFailure classpath error before its fallback
Reported (UTC): 2026-07-16 14:35
Kompile test launcher reports a misleading SerializableFailure classpath error before its fallback reports the real assertion.
What was being attempted: Run scripts/test.bash --test tests/coursierRetryClassificationMirroredTableTest.kts in kompile-core while deliberately verifying that a newly added regression test failed before the classifier fix.
What went wrong: The parent first printed 'Unexpected error in TCP communication: community.kotlin.kompile.testrunner.bootstrap.SerializableFailure' followed by 'java.lang.ClassNotFoundException: community.kotlin.kompile.testrunner.bootstrap.SerializableFailure' from TcpCommunicationHandler.handleCommunication. The child then printed 'Failed to report exception to parent: TCP communication error in reportUncaughtException'. Only afterward did the launcher fallback surface the real AssertionError: 'A retryable HTTP reason phrase in only an artifact name or URL must not override a real not-found outcome.. Expected <false>, actual <true>.'
Impact: The real test result was delayed and buried beneath a prominent infrastructure-looking failure, making a deterministic expected red test look like a launcher/classpath problem and complicating automated failure diagnosis.
Workaround used: Waited for the test process to exit and inspected the complete trailing output, where the fallback eventually included the actual AssertionError and stack trace.
Suggested durable fix: Ensure the parent launcher classpath always contains the bootstrap SerializableFailure carrier before deserializing child results, or keep failure transport string-only across the boundary; if fallback is required, suppress the misleading primary stack trace once the fallback successfully recovers and reports the original test failure.
Production verification — 2026-07-17
Status: STILL EXISTS. Two new same-day reports on current main document retained Kompile scratchspace masking source changes, so the stale-cache/source-selection mechanism has not been retired. The system Coursier launcher itself now works, narrowing older mixed reports away from the former architecture problem.
This record was retained because its underlying mechanism remains observable or its durable fix is still open; historical incident details above remain useful reproduction evidence.