Repository · challenges
Kompile reused stale build-rule bytecode after source, dependency, and Maven-coordinate changes.
Reported (UTC): 2026-07-16 04:01
Kompile reused stale build-rule bytecode after source, dependency, and Maven-coordinate changes.
What was being attempted: verify a UrlResolver saturation fix using ./scripts/test.bash after changing UrlResolver.kt, its foundation.url:protocol dependency, its jvm-libp2p dependency, and buildMaven coordinates from foundation.url:resolver:0.0.632 to 0.0.638.
What went wrong: the test logs reported foundation.url.resolver.buildMaven() succeeding in 1-5ms, and runtime diagnostics still printed the old literal connect(1 addrs):dial-failed instead of the changed dial-failed(<cause chain>) text. This persisted after git rebase and after changing every relevant Maven coordinate/pin, proving /home/christian/.aibuildcaches/_code_workspace_UrlResolver returned stale module bytecode across inputs that should invalidate it.
Impact: two long saturation verification sequences (including one that reached 11 clean runs before failing) did not execute current Resolver source, wasting substantial time and producing misleading evidence about the fix.
Workaround used: preserve and move the repository-specific .aibuildcaches directory, then rerun with a newly-created cache and explicitly inspect produced bytecode/log literals before accepting results.
Suggested durable fix: kompile-cli's build-rule cache key must include the interpreted build.kts content, build-rule Maven coordinates, source-tree content, and dependency coordinates; the CLI should also print the resolved artifact path/hash so stale reuse is immediately visible.
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.