Repository · handoffs
id: hf-2026-09-28-verify-and-publish-the-typed-manager-failure-then-finish-the-runner-review-gates url: url://handoff/handoffs/hf-2026-09-28-verify-and-publish-the-typed-manager-failure-then-finish-the-runner-review-gates title: Dispatch and verify runner CI, then final-review https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 summary: Required PR CI has no dispatched check entry; cause unknown. Pushed b0cae8e, all nine final local gates pass, and isolated published120 baseline fails correctly. Supervisor CI disposition and final review remain. created: 2026-09-28T17:26:56.958Z completed: null blocked-reason: Required head check absent; operator authorization needed for initial CI dispatch or reconciliation investigation. dependencies:
Handoff: Finish runner validation against manager 0.0.200, then final-review the pull request
RE-VERIFY: Snapshot 2026-10-02T19:15:05.332922+00:00; recheck each PR head/state/checks with gh pr view and remote branches with git ls-remote. Prior findings and rows below are historical.
RE-VERIFY every live PR head, check and artifact before acting. Updated 2026-10-02T20:20:26.712762+00:00. Historical findings/rows are preserved below; latest delegate state is appended.
Mission
Close the six runner contracts from https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115: a queued explicit build failure must keep every produced test result, console output and terminal event (with lease and attempt identity), and a reporting-sink failure must surface rather than be acknowledged. The runner side depends on the manager API LocalBuildWorkspace.executeWithBuildFailureResults / ExplicitBuildFailedException.results from https://github.com/CodexCoder21Organization/kompile-core/pull/340.
Findings (verified 2026-09-30)
-
The typed manager failure exists ONLY in
kompile:manager:0.0.192, which was published on 2026-09-28 from the then-unmerged PR 340 branch. Bytecode check of the published jars: 0.0.192 containskompile/ExplicitBuildFailedException.classandexecuteWithBuildFailureResults; 0.0.196 and 0.0.198 (latest) contain neither; kompile-core main has neither. Releases 0.0.193-0.0.198 were cut from main without it. Pinning a runner to 0.0.192 would drop the 0.0.193-0.0.198 fixes (including the builtin-facade fallback, kompile-core PR 348, that BuildTestRunner PR 132 adopts). The fix is to land PR 340 and publish it as a NEW version. -
PR 340 was rebased onto kompile-core main da5d7f40 (0.0.198). Only conflict: the build.kts release history. RELEASE_VERSION is now 0.0.199 with a history note that 0.0.192 was the early publication of this content. New head 604a250ba87dfc3cac609d24948f08bd086202f6. Six focused tests pass locally on that head. Full CI passed: 966/966 tests over four shards plus the fat-jar build, https://github.com/CodexCoder21Organization/kompile-core/actions/runs/36787735863. The PR was marked ready for review and its description was rewritten, why-first.
-
The earlier upstream failure
workspaceDownloadedDependencySnapshotRepairsSameSizeEditTest(timed out at 30000 ms, "stuck at DeletingPathVisitor.visitFile", job https://github.com/CodexCoder21Organization/kompile-core/actions/runs/36456644080/job/109044555306) was diagnosed and is not a defect in the code under test. The test is CPU-bound. Run on its own with the CI scenario-cache warm-up at the same path, the child JVM used 8.0 s of CPU over 9.2 s of wall time, and it passed in 9.4-13.3 s on four runs. In the failing shard the same JVM had used about 5 s of CPU after 32.3 s of wall time (main 2.59 s, C1 0.58 s, coursier pools about 1.6 s), and it was still in its second DigestFixture.execute, inflating dependency class bytes in TransitiveMethodBytecodeHash.buildClassByteIndex. The deletion frame is the cleanup that the in-child self-dump caught once the deadline passed; it is not where the time went. It has not recurred: no failure in any of the 40 later kompile-core All Tests runs, and it passed on PR 340's new head. Which process took the CPU in that 2026-09-28 shard cannot be named from the saved logs, because they carry no CPU figures for the tests running alongside it. No timeout was touched. -
BuildTestRunner PR 115 (head 421078c4, last push 2026-09-28 17:17 UTC): its
kotlin.build (remote)run 9ceb2eed never executed (266 rows PENDING, complete=false); preparation failed because at that time the POM for 0.0.192 did not exist. A trial rebase onto runner main e4a6490 applies commits 1-14 cleanly; only the final commit 421078c conflicts, and only in comments/docs (README.md around line 16, build.kts release history). Manager pin sites on the branch: src/buildtest/runner/ReleaseIdentity.ktMANAGER_RELEASE_VERSION = "0.0.192", tests/testBuildRuleUnknownCauseIsExplicit.kts:5, tests/testWorkspaceSourceEvidenceSurvivesRunnerEvent.kts:2. -
Fleet context: on 2026-09-30 BuildTestRunner's
kotlin.build (remote)is red on every PR for a fleet reason, tracked in handoff hf-2026-09-30-buildtestrunner-rotating-remote-timeouts. Example: PR 132 run 958153dd had 269 PASSED and 1 FAILED, and the failure was testRunnerPreservesTransportedBuildFailure compiling its fixture inside the timed body, which is the subject of PR 134. Classify runner reds against that before calling one a code verdict. -
Review round 2 (2026-10-01). The review of 604a250b reproduced a defect: the queued directory-output warning was drained in an unguarded finally, so a throwing warning handler discarded a later build failure, and legacy execute() changed behaviour too. Fixed at 3d00ebf1. The warning is deferred only for executeWithBuildFailureResults, and both drains are guarded (handler failure rethrown with the build failure suppressed). Legacy execute() tosses the warning in-build as main does. An interruption is rethrown with the interrupt flag restored instead of being typed as a build failure. Six new public tests were added; the two blocker tests failed first on 604a250b and the interruption test was checked with a mutation. All 12 focused tests pass locally, and CI on 3d00ebf1 passed 972/972 (https://github.com/CodexCoder21Organization/kompile-core/actions/runs/36794288762).
PR / artifact table
| Item | State | Head | Disposition |
|---|---|---|---|
| https://github.com/CodexCoder21Organization/kompile-core/pull/340 | OPEN, ready, CLEAN | 3d00ebf13181c6a605cc10eca7602d1411f2749f | round-2 fix for review BLOCK pushed; 972/972 CI green; awaiting re-review |
| kompile:manager:0.0.192 | published 2026-09-28 from the unmerged branch | sha256 5c5c82e6... | superseded by 0.0.199 once published; never republish |
| kompile:manager:0.0.199 | NOT published | - | publish from main after PR 340 merges |
| https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | OPEN, checks red (never executed) | 421078c4cf856f2bd05ca38b6dc14362e3cb1ec7 | NEEDS-MORE-WORK: rebase + re-pin to 0.0.199 |
| https://github.com/CodexCoder21Organization/BuildTestRunner/pull/132 | OPEN (pins 0.0.196, runner release 0.0.120) | d9886595b7 | separate lane; ordering: whichever lands second takes the next runner release number |
Remote branches: kompile-core wip/c24-partial-build-results-2026-09-28 = wip/K47-c24-rebased-0.0.199 = 3d00ebf1. Pre-rebase head c4c1e287 is preserved as the published 0.0.192 source commit. Evidence from the original lane: https://github.com/CodexCoder21Organization/PlanRepository/tree/wip/c24-evidence-2026-09-28/handoffs/artifacts/c24-2026-09-28.
Next steps
- Orchestrator review, then merge kompile-core PR 340.
- Publish kompile:manager:0.0.199 from merged main (a new version; 0.0.192 is immutable and must never be republished). Verify the POM and JAR are served, and verify by bytecode that the JAR contains ExplicitBuildFailedException and executeWithBuildFailureResults as well as the 0.0.196 builtin-facade fallback.
- Rebase BuildTestRunner PR 115 onto runner main. Resolve the README/build.kts comment conflicts in 421078c, set the three pin sites to 0.0.199, and take the next unclaimed runner release number (0.0.120 if PR 132 has not landed, otherwise 0.0.121). Then run the eight runner selectors, one per call: testE2EExplicitBuildExecutionRetryEmitsBothOutcomes, testE2EExplicitBuildFailureRetainsCompileResult, testE2EExplicitBuildFailureDoesNotHideEventSinkFailure, testE2EConcurrentExplicitBuildFailureReleasesOutput, testE2EExplicitBuildFailureReleasesExistingOutput, testE2EExplicitBuildFailureWithNoXmlLog, testE2EExplicitBuildFailureWithEmptyXmlLog, testRunnerPreservesTransportedBuildFailure.
- Get PR 115's checks green on the final head. kotlin.build (remote) is never accepted red; tell fleet reds apart from code reds as described in finding 5.
btr115 release and rebase checkpoint (2026-10-02T17:39:45.971036+00:00)
RE-VERIFY: Current snapshot at 2026-10-02T17:39:45.971036+00:00. Recheck PRs with gh pr view and artifact POM/JAR endpoints; earlier entries above are historical.
OBSERVED: Upstream https://github.com/CodexCoder21Organization/kompile-core/pull/340 merged 2026-10-01T02:22:50Z at 8e46c7ca4702c832c9820aa4b3f771f0d766f755. Manager 0.0.199 is absent (POM/JAR 404). Published kompile:manager:0.0.200 is on core main b6675cf; POM/JAR 200, metadata lastUpdated 20261002065306. JAR sha256 815f9c9850dd3aa84aa0410861d46dd53c0129d1c1b1715c1bc6b74ab1f0b41b. javap confirms executeWithBuildFailureResults, ExplicitBuildFailedException construction, and interrupt handling. Its POM pins executionenvironment 0.0.42.
Runner rebased onto current main, pins manager 0.0.200 (including six explicit test imports) and executionenvironment 0.0.42, proposes runner release 0.0.121. Current PR head remains 421078c4 until validation passes; no recent competing session commits/comments. First selector is waiting for a shared compile slot. No local verdict, no CI submission yet.
| Repo | Branch | Remote head SHA | PR | State |
|---|---|---|---|---|
| BuildTestRunner | https://github.com/CodexCoder21Organization/BuildTestRunner/tree/wip/btr115-2026-10-02 | 51dbd5816abfaa3eab7f2e14ed44b3eabc533d87 | https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | Rebased release pin checkpoint; local selectors pending; PR not yet updated |
Current next steps supersede steps 1–3 above: run the eight named runner selectors against 0.0.200, review, push the PR head, watch one CI run, then supervisor final review and merge decision. No new artifact publication is needed or authorized. No merge, enqueue, deployment, or artifact publication occurred in this lane.
btr115 review checkpoint — 2026-10-02 18:26 UTC
Published manager 0.0.200 contains the final typed failure behavior; the publication blocker is resolved. Source checkpoint advanced to b0cae8e0ee3ab532e4f4629af5b66f04fbba353a after independent review: the retry selector now covers two different specs in one execution and exact console/completion attribution for all four attempts; README corrections and matching test-support layout are included. No timeout or iteration change and no assertion weakening. Follow-up static review found no remaining issue; runtime behavior is unverified.
| Repository | Branch / evidence | Head | PR | State |
|---|---|---|---|---|
| BuildTestRunner | https://github.com/CodexCoder21Organization/BuildTestRunner/tree/wip/btr115-2026-10-02 | b0cae8e0ee3ab532e4f4629af5b66f04fbba353a | https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | WIP only; original PR head unchanged pending local gates |
| PlanRepository | https://github.com/CodexCoder21Organization/PlanRepository/tree/wip/btr115-2026-10-02/handoffs/artifacts/btr115-2026-10-02 | edcf3c9f8b09eb85ec2fd719471a8c2993045489 | none | Release metadata/POM/bytecode, findings, independent review |
As of18:16UTC, first selector waited from17:36:32 until its invocation was replaced after the shared helper changed; fresh helper acquired slot2 at18:10:53. It was running compilation at that checkpoint. Local counts0 passed/0 failed, all eight selectors lack verdicts; no CI submitted. A passing result is required before updating the PR branch. Next: finish the eight selectors one per call, run relevant identity neighbor after fixture move, obtain failing-baseline evidence for the expanded batch assertion, then push validated PR and watch one CI run. Stop new work at18:45UTC. No merge, enqueue, deploy, artifact publication or handoff completion.
Fresh handoff reads previously failed with direct/relay bytecode fetch errors; successful updates must use a fresh body so other lanes' rows remain intact.
btr115b continuation checkpoint — 2026-10-02T19:15:05.332922+00:00
OBSERVED: Warm predecessor workspace clean at b0cae8e0ee3ab532e4f4629af5b66f04fbba353a; reused under the continuation rule. Fetch/rebase is current. Runner PR https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 remains OPEN/DIRTY at421078c4cf856f2bd05ca38b6dc14362e3cb1ec7 with no recent competing comments/commits. Its branch is unchanged pending local gates. Upstream https://github.com/CodexCoder21Organization/kompile-core/pull/340 reverified MERGED at8e46c7ca4702c832c9820aa4b3f771f0d766f755. Downloaded manager0.0.200 JAR hash matches815f9c9850dd3aa84aa0410861d46dd53c0129d1c1b1715c1bc6b74ab1f0b41b; typed API confirmed again by javap.
Selector1 passed1/1 in predecessor; selectors2–8 are submitted together under withlock.sh since19:05:26UTC and waiting for a compile slot. This lane has0 passed/0 failed; no CI submitted. Baseline probe prepared using unchanged published runner0.0.120 with the expanded two-spec retry scenario; not yet executed. Static review recorded with no established source correction.
| Repository | Branch / evidence | Remote head | PR | State |
|---|---|---|---|---|
| BuildTestRunner | https://github.com/CodexCoder21Organization/BuildTestRunner/tree/wip/btr115b-2026-10-02 | b0cae8e0ee3ab532e4f4629af5b66f04fbba353a | https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | Source checkpoint copied; validation pending |
| PlanRepository | https://github.com/CodexCoder21Organization/PlanRepository/tree/wip/btr115b-2026-10-02/handoffs/artifacts/btr115b-2026-10-02 | edfbe5dc2 | none | Release evidence, review, prepared baseline and findings |
Next: finish selectors2–8; run moved fixture testE2EExplicitBuildExecutionsCarryDistinctIdentities; run the expanded retry baseline against released runner120; fetch/rebase and rerun affected gates, push PR, update WHY-first description, and watch one CI run. Cutoff20:19UTC. No merge, queue, deployment, publication or handoff completion is authorized. Publication blocker is resolved, so do not request another manager publication.
btr115b final delegate checkpoint — 2026-10-02T20:20:26.712762+00:00
OBSERVED: Published kompile:manager:0.0.200 contains the merged typed partial-result API and reporting/interrupt guards. No new manager publication is needed. Runner checkpoint and PR branch both b0cae8e0ee3ab532e4f4629af5b66f04fbba353a; force-with-lease push succeeded after final rebase, and the WHY-first PR body was updated through REST after gh pr edit's deprecated Projects query failed.
OBSERVED: Final post-rebase local batch passed all eight named mission selectors plus moved identity fixture:9passed/0failed. Earlier continuation batch7/7 and moved fixture1/1 also passed; predecessor retry selector1/1 passed. Expanded two-spec retry against published runner0.0.120 failed0/1 as expected, through legacy execute() and the work-queue callback failure for lease L1, attempts A1/A1B, with ConnectException: Explicit build dependency is not ready. This is a deterministic runtime reproduction; no setup error or timeout change.
The first coordinate-only baseline probe passed1/1 because @MavenArtifactCoordinates in the runner workspace substituted the local buildMaven rule for version120. It is invalid baseline proof and is saved separately. The accepted baseline ran in an isolated minimal workspace with no local Maven coordinate rule. Full baseline XML/log/trace and the isolated workspace are saved remotely. Lane invocation totals18passed/1failed(expected baseline), including1invalid probe pass; accepted positive executions17passed/0failed. No full local suite claim is made; required remote CI remains a separate gate.
OBSERVED: PR CI was absent after the source push: OPEN at b0cae8e, mergeStateStatusBLOCKED (no longerDIRTY), statusCheckRollup[]. Watchman identifies zero-run suite100346242990, but independent API evidence shows it belongs to predecessor WIP branch wip/btr115-2026-10-02, created/updated2026-10-02T18:09:21Z, associated PRs[], latest_check_runs_count0. Its age does not establish a lost dispatch for the later PR push. No required kotlin.build (remote) run URL is available.
INFER: The reason the PR has no dispatched CI entry remains unknown. No suite re-request, webhook mutation, build deletion, second source push, merge, queue, deployment, publication or handoff completion occurred. Static independent test and code review are complete with no outstanding finding. Runner release0.0.121 is proposed after main0.0.120 and remains unpublished.
| Repository | Branch / evidence | Head | PR | State |
|---|---|---|---|---|
| BuildTestRunner | https://github.com/CodexCoder21Organization/BuildTestRunner/tree/wip/btr115b-2026-10-02 | b0cae8e0ee3ab532e4f4629af5b66f04fbba353a | https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | Validated and pushed; required CI is missing |
| BuildTestRunner | https://github.com/CodexCoder21Organization/BuildTestRunner/tree/fix/build-rule-execution-identity | b0cae8e0ee3ab532e4f4629af5b66f04fbba353a | https://github.com/CodexCoder21Organization/BuildTestRunner/pull/115 | Actual PR head; nine final gates passed |
| PlanRepository | https://github.com/CodexCoder21Organization/PlanRepository/tree/wip/btr115b-2026-10-02/handoffs/artifacts/btr115b-2026-10-02 | b697412f9d60559e7f24d8211c9585584459a2a5 | none | Findings, reviews, manager evidence, baseline probes/full trace, positive XMLs, monitor and API snapshots |
Remaining: establish a dispatched kotlin.build (remote) check for the actual pushed PR head, watch it to green, then supervisor final review and merge decision. The old WIP suite has no PR association; do not treat its age as proof of a lost PR dispatch or re-request it from the monitor warning alone. No manager publication remains. All requested local gates are complete; any later CI failure must be reproduced locally before changing code.