RE-VERIFY (2026-09-27 16:32 UTC): This is a write-time snapshot. Recheck https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1109, its current head, GitHub Actions checks, and GraphQL isInMergeQueue before acting.
Finish CI and mark BuildTestEmbedded PR 1109 ready for review
Mission and current state
The user asked to close the final-review finding that shutdown-time worker exceptions could disappear, run both review passes, refresh the description, mark PR 1109 ready after a green head, and stop before queueing or merging. The code, tests, reviews, rebase, push, and description refresh are done. The remaining work is to watch the four shards and later bld-build on head 8dbb8564a4e3b9c14649ff1ec7180e9ff4ebd4ff, fix any real failure locally, then mark the PR ready only after green. Do not enqueue, merge, publish, or deploy.
At 16:32 UTC GitHub reported the PR OPEN/DRAFT, head 8dbb8564a, four shards IN_PROGRESS, mergeStateStatus=BLOCKED while checks are pending, and no merge. The run is https://github.com/CodexCoder21Organization/BuildTestEmbedded/actions/runs/36332888133. bld-build appeared later than the four shards in the prior green run, so its absence at this snapshot is expected. The PR watcher was started with coursier launch buildwatchman:build-watchman:0.0.18 -r https://kotlin.directory -- --repo CodexCoder21Organization/BuildTestEmbedded --pr 1109 --interval-seconds 300, with no --to-merged; it was stopped at the 60-minute checkpoint and must be restarted by the next worker.
What changed and why
The initial ownership work fenced projection journal generations and retained source publication obligations so overlapping service instances cannot overwrite one another's journal work. After seven shutdown-related commits, final review found that close-time exceptions were discarded by the deferred ingestion, dispatch, worker terminalization, and shard close guards. A red-first public test reproduced the gap: shutdown left the run recoverable, but stderr was empty after an interrupted native snapshot lock. The final fix reports each cause once with run ID, context, and full stack trace to stderr while preserving a nonterminal run for successor recovery. A second public test injects an unrelated runner exception during close and verifies one full diagnostic plus successor recovery. Review also found and closed neighboring short-message-only catches in original and resumed shards, resumed run workers, and upload finalization.
The PR branch was rebased on current main 8d76d00240dc48a84697c9545c4ac5ca1d42af2d (which includes PRs 1106 and 1113). The expected build.kts conflict was resolved to this PR's buildtest.embedded:buildtest-embedded:0.0.69270608. That POM returned HTTP 404 at 16:23 UTC, so the coordinate remains unpublished. The PR description was updated through REST PATCH because gh pr edit uses a deprecated GraphQL field.
Validation and reviews
- Red-first
closeDuringRunSnapshotLockAcquisitionPreservesRestart: 0/1 before the fix, with empty stderr; 1/1 after the fix.
closeReportsUnexpectedRunWorkerFailureWithoutTerminalizing: 1/1 locally; both public diagnostic tests together passed 2/2 on the final committed source.
- First remote shutdown-family batch: 6/6 at https://buildtest.kotlin.build/run?id=6be5f17b. Seven-test batch including both diagnostic tests: 7/7 at https://buildtest.kotlin.build/run?id=96a58f61. The seven-test batch was uploaded before the final one-line reporter calls in resumed/upload paths; the final-source local 2/2 run compiled those calls. The current-head shards provide the full integration gate.
- Prior head
a7576b1d9 passed 2790/2790 across four shards plus bld-build at https://github.com/CodexCoder21Organization/BuildTestEmbedded/actions/runs/36326864507.
- Dedicated final-diff test review checked public API, local dependencies, temp-directory cleanup, exact diagnostic content, deduplication, and successor recovery. Dedicated adversarial code review traced close-time catch paths, found the additional resumed/sharded/upload gaps, and addressed them. No test timeout, iteration count, or assertion was weakened.
git diff --check passed.
Remote refs and unmerged state
| Work |
Full URL |
Verified state |
| Implementation PR |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/pull/1109 |
OPEN/DRAFT, unmerged, head 8dbb8564a4e3b9c14649ff1ec7180e9ff4ebd4ff |
| Implementation branch |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/tree/wip/journal-generation-fencing-W54 |
Pushed at 8dbb8564a4e3b9c14649ff1ec7180e9ff4ebd4ff |
| Earlier implementation backup |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/tree/wip/journal-generation-fencing-W57 |
Pushed at 85d7e8c6a1af2ecaaa8fd1c43da40f40a891d91b |
| Fail-first evidence |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/tree/wip/journal-boundary-baseline-W57 |
Pushed at 39b1c9675d592014ecac8e26d383c7386a0f8e78 |
| W54/W57 evidence |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/tree/evidence/projection-journal-ownership-W54-W57 |
Prior ownership proof and gate details |
| Base main |
https://github.com/CodexCoder21Organization/BuildTestEmbedded/commit/8d76d00240dc48a84697c9545c4ac5ca1d42af2d |
Verified current at 16:32 UTC |
The F15 checkout had no uncommitted files, stashes, or local-only commits at this snapshot; git worktree list showed only its primary worktree. No production service was deployed, no artifact was published, and no code was merged as part of this work. The unpublished coordinate was checked against the repository; no production endpoint was changed.
Next steps
- Recheck the PR state, head SHA, queue status, and all checks. Keep using build-watchman without
--to-merged; act on any real failure through a local reproducer and a new push. Do not rerun CI blindly.
- When all four shards and bld-build are green on the current head, REST PATCH the PR description with the new run URL and count, then mark it ready via
gh pr ready 1109 --repo CodexCoder21Organization/BuildTestEmbedded (or the equivalent GraphQL mutation if needed). Verify OPEN, not queued, not draft, and green. Stop there.
- If this handoff remains open after that, complete/archive it through handoff-cli.
The user explicitly prohibited queueing, merging, publishing, deploying, weakening tests, raising timeouts, and a full local suite. The exact local test runner constraint was one local JVM through cx/jvm-slot.sh; the final two-test local run passed. The buildtest WUI briefly returned a cached-view HTTP 503 for an intermediate run while the direct client progressed and passed; preserve runs and use build-watchman evidence before taking action.