← Priority list
Unclaimed

Finish CI verification for the pending migration clock correction

Watch required CI for https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/355 to a terminal result with build-watchman 0.0.21 plain --pr; investigate locally if a required check reports an error. Do not enqueue, merge, deploy, or publish. The three-line test clock correction, exact red 3/3, corrected first-attempt green 10/10, reversal, full local suite and unchanged-main comparisons are complete and pushed. CI is the remaining lane gate.

Handoff document

Markdown

Watch CI for the pending migration clock correction

Remaining work: watch required CI for https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/355 to its terminal result using build-watchman 0.0.21 plain --pr. If green, record the result and finish this lane. Do not enqueue, merge, deploy, or publish.

Original request: "Lane FLKB: root-cause and fix the first-attempt failure of testBuildRunner_interruptedLegacyPendingMigrationCanExceedRecoveryBound in kotlin-build-ci".

The owner reported that https://droplets.wasmserver.com/ "is super unreliable, frequently rendering various errors/notices due to bugs in UrlResolver or UrlProtocol or something else" and asked for the underlying root cause to be fixed; the ContainerNursery route stops the WUI after 5 idle minutes, so most human visits are cold starts.

This lane covers the build-runner test found during review of https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/352 . The original CI evidence is https://github.com/CodexCoder21Organization/kotlin-build-ci/actions/runs/39730793171 .

Observed mechanism: the fixture stores records due at 10000 but uses the current system clock. Recovery therefore renames pending files while the test directly lists FakeFileSystem directory children. The original CI stack names its linked-map iterator and the post-recovery test read. The final correction is three added lines: clocks artifact, explanatory comment, and ManualClock(0L). Production source is unchanged.

Verification complete:

  • Exact iterator ordering reproduces ConcurrentModificationException in 3/3 runs, all 9/9 attempts. A timing hook in the real in-memory dependency coordinates iterator creation and the real runner rename. No reflection or replacement collection is used.
  • The corrected exact scenario passes 10/10 runs on attempt 1. The original corrected test also passes 10/10 on attempt 1.
  • Clock reversal reproduces the iterator exception on all 3/3 attempts.
  • Complete local suite ran once under the required machine-wide slot: 1549/1551 passed. The target passed on attempt 1.
  • Two other tests cannot create native completion-lock directories at /retirement-delete-reopen and /state/cancellation-retention as local uid 501. Both reproduce on unchanged main on all three attempts; both passed in supplied CI. Complete and baseline XML are saved. No outside directories were edited.
  • Final targeted check after fetch/rebase passed on attempt 1. Independent test and correctness reviews found no required patch changes.

Durable code and evidence:

  • PR: https://github.com/CodexCoder21Organization/kotlin-build-ci/pull/355
  • Code branch: https://github.com/CodexCoder21Organization/kotlin-build-ci/tree/fix/laneFLKB-pending-migration-clock
  • Exact head: https://github.com/CodexCoder21Organization/kotlin-build-ci/commit/6a5eb44b6837f9f54b12fe72fa62ad3b9a88ef6e
  • Findings and XML: https://github.com/CodexCoder21Organization/kotlin-build-ci/tree/wip/laneFLKB-evidence/lane-evidence/rFLKB
  • Reproduction recipe: lane-evidence/rFLKB/run-iterator-controls.bash in the evidence branch; modes red, green, reversal. The timing helper is absent from the PR.

CI observation: build-watchman 0.0.21 plain --pr ran on a tracked process with its normal four-minute cadence. The lane's clock limit bounds the watch; its captured log and final check metadata are saved with evidence. The final required-check read returned exit 1 with states {}. CI verification remains incomplete at the lane time limit.

Resume command: coursier launch buildwatchman:build-watchman:0.0.21 -r https://kotlin.directory -- --repo CodexCoder21Organization/kotlin-build-ci --pr 355

Session constraints: use only local tests; complete suites use the machine-wide slot; no timeout increases, reduced iterations, disabled tests, production writes, artifact publication, merging or queue entry. A failing CI check requires reading its full evidence and local reproduction, not a blind rerun.

This session performed no deployment or publication. All lane changes are in the open PR and evidence branches. The bounded CI watcher has stopped; the process check found no remaining task processes before this checkpoint.

Model usage

Recorded agent work, including concurrent agents

No model usage has been recorded for this handoff yet.

Record work with handoff-cli usage report hf-2026-10-22-finish-ci-verification-for-the-pending-migration-clock-correction.

No status reports yet.

Add dependency

Complete this handoff

Moves it out of every priority list and into ArchiveArea.