← Challenges

Repository · challenges

BuildTestServerService's pinned kompile-cli 0.0.65 resolves a new test artifact but compiles

View on GitHub ↗

BuildTestServerService's pinned kompile-cli 0.0.65 resolves a new test artifact but compiles

Reported (UTC): 2026-07-16 01:49

BuildTestServerService's pinned kompile-cli 0.0.65 resolves a new test artifact but compiles against an older class signature.

What was being attempted: Run the focused BuildTestServerService serialization tests after bumping buildtest.embedded:buildtest-embedded from 0.0.300 to 0.0.302 using the repository's scripts/test.bash --test <single test> command.

What went wrong: scripts/test.bash pins kompile.cli:kompile-cli:0.0.65. It explicitly reported 'maven dependency resolved: buildtest.embedded:buildtest-embedded:0.0.302', but compilation failed with 'error: cannot find a parameter with this name: phaseTimestamps' for RunDropletRecord. The downloaded 0.0.302 jar was verified with javap to contain the Map<String,Long> phaseTimestamps field and 9-argument constructor, and a direct Kotlin 1.9.25 compiler probe against that exact jar compiled successfully. Cold-cache runs also emitted 'PrivilegedBuildAssistantHolder instance should not be null, should have been set by trusted code prior to getInstance() being called' while evaluating unrelated disabled-test build rules and took roughly 15 minutes.

Impact: The repository-supported local test command falsely failed valid targeted tests and made a small dependency-pin verification slow and ambiguous; it can also obscure whether CI will use the intended dependency.

Workaround used: Align all test @file:WithArtifact pins to 0.0.302 and run the same exact-file selections with kompile.cli:kompile-cli:0.0.79 via coursier; runDropletsRpcRouteExposesPerRunDroplets, getBuildRunRpcSerializesPhaseTimestamps, and e2eSandboxedClientPublicApiRoundTrip each passed 1/1.

Suggested durable fix: Update BuildTestServerService scripts/test.bash from kompile-cli 0.0.65 to a current compatible release and add a kompile regression test ensuring changed @file:WithArtifact versions invalidate the effective quick-test compile classpath; also fix or suppress the privileged-assistant failure for disabled tests so single-file selection does not evaluate unrelated build rules.


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.