← Priority list

Merge campaign wave 1 stopped on BuildTestRunner test timeouts

The working-directory correction is pushed and passes locally and remotely, but fresh branch run 0edec199 had two other code-path timeouts. No queue entry was created, nothing was published, and Steps 2–5 remain untouched.

hf-2026-07-31-merge-campaign-wave-1-stopped-on-buildtestrunner-fixture-path-failure

Edit handoff

Add dependency

Complete this handoff

Moves it out of every priority list and into ArchiveArea.

Handoff document

Markdown

RE-VERIFY: This snapshot was live-checked at 2026-07-31 09:08 UTC. Re-check every pull request with gh pr view <number> --repo <owner>/<repo> --json state,mergeStateStatus,statusCheckRollup,mergedAt,headRefOid and treat GitHub plus the linked buildtest run as authoritative.

Mission summary

Run merge campaign wave 1 in the fixed order, with at most one merge-queue entry at a time. The authorized working-directory correction for the first pull request is pushed and passes both locally and remotely. The campaign stopped because that fresh branch run had two other test timeouts, so no queue entry was created.

What was found and done

  1. Fresh clones were created under workspace/m1b/, and the campaign brief, predecessor findings, handoff, repository instructions, READMEs, testing guidance, and required skills were read.
  2. The branch for https://github.com/CodexCoder21Organization/BuildTestRunner/pull/57 was already based on current origin/main.
  3. The predecessor's fixture failure was reproduced from /tmp: the test resolved its fixture as /tmp/tests/testBuildScriptFailureSurfacesOriginalTransportedFailure.
  4. The fixture build script now records its own canonical source directory in the active checkout cache. The test reads that path instead of resolving tests/... against the process working directory. Kompile rewrites the build script's File(".") relative to the script source, which is the repository's build-script workspace behavior.
  5. With a new cache, the corrected test passed from /tmp. The complete 20-test set changed by the replacement commit then passed from /tmp: ALL TESTS PASSED (20/20 tests completed successfully).
  6. The correction was committed as dfdc4d0f18cca684632a7ce2ee7330a0f6f00983 and pushed normally, without force. The remote branch head was verified equal to the local head.
  7. build-watchman followed fresh branch run 0edec199. The corrected target test passed remotely in 16,568 ms.
  8. The same run finished 56 passed and 2 failed:
    • testE2EExplicitFileShardDefaultsToFourWayParallelism timed out after 60 seconds while the Kotlin compiler was active in LazyJavaStaticClassScope.flatMapJavaStaticSupertypesScopes (61,613 ms).
    • testProtocolSplitsSingleOversizedConsoleOutputEntry timed out after 30 seconds while org.json was serializing the oversized entry from splitConsoleOutputEntry (31,367 ms).
  9. These were code-path timeouts, not a lost dispatch, 503, or droplet-acquisition error. No blind rerun was requested. build-watchman stopped before enqueueing.
  10. The campaign stopped at Step 1. Nothing was published, and none of the later pull requests was reviewed, rebased, tested, enqueued, or merged.

Relevant pull requests and refs

  • https://github.com/CodexCoder21Organization/BuildTestRunner/pull/57 — OPEN, BLOCKED, head dfdc4d0f18cca684632a7ce2ee7330a0f6f00983, fresh check failure at https://buildtest.kotlin.build/run?id=0edec199.
  • Branch: https://github.com/CodexCoder21Organization/BuildTestRunner/tree/fix/report-build-script-failures — remote head verified at dfdc4d0f18cca684632a7ce2ee7330a0f6f00983.
  • https://github.com/CodexCoder21Organization/ContainerNursery/pull/492 — OPEN and CLEAN, head 55f73fbd890788311ffb14d3f7c26b3f4161aff5; not started in this continuation.
  • https://github.com/CodexCoder21Organization/ContainerNursery/pull/559 — OPEN and CLEAN, head 2a0553b0c0feb58aa735309f0408d5ed11919948; not started in this continuation.
  • https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/199 — OPEN and CLEAN, head c7d42546e2b576f26579246a1162b8328bddf34e; not started in this continuation. Its historical green check remains unacceptable campaign evidence; it still requires a fresh queue run after earlier steps land.

All source changes are committed and pushed on the verified BuildTestRunner branch. Local build launchers were removed from the checkout before the commit. The detailed continuation log is out/m1b-findings.md.

Next steps

  1. Diagnose the two timeouts from https://buildtest.kotlin.build/run?id=0edec199 under the normal fail-first bug workflow. Do not increase their time limits, reduce payloads or iterations, or use CI reruns as diagnosis.
  2. Determine whether the timeout mechanisms are already covered by the intended cheaper-test replacement. If source or test-harness changes are required, obtain the appropriate scope before changing anything beyond the fixture correction authorized in this continuation.
  3. Run the full affected test set locally with honest amplification, require a fresh green branch check, then enqueue https://github.com/CodexCoder21Organization/BuildTestRunner/pull/57 and watch it to MERGED.
  4. Publish buildtest.runner:buildtest-runner:0.0.77 from merged main through the Maven publishing CLI and verify https://kotlin.directory/buildtest/runner/buildtest-runner/0.0.77/buildtest-runner-0.0.77.pom returns HTTP 200. It returned 404 before the stop.
  5. Continue the remaining campaign steps in their original order: https://github.com/CodexCoder21Organization/ContainerNursery/pull/492, then https://github.com/CodexCoder21Organization/ContainerNursery/pull/559, then https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/199.

Reusable operational knowledge

  • Run repository-fixture tests from a working directory outside the checkout. A local run from the checkout root will hide accidental user.dir dependencies.
  • Use a new explicit cache when a fixture build rule changes. The pre-change cache can return an old result before the new fixture side effect exists.
  • In BuildTestRunner run pages, an individual test's row and thread dump distinguish active code-path timeouts from coordinator or droplet setup failures. The two failures in 0edec199 were active inside Kotlin compiler and JSON serialization code.
  • A branch check failure means build-watchman's --to-merged mode stops before enqueueing, preserving the one-entry merge-queue limit.