← Priority list
Blocked

Add durable upload marker reassignment independent of run projection work

Complete the expired-marker ownership change after adding an engine-owned durable transition independent of the old run projection boundary. The lane stopped at the explicit contract condition; the PR guard has 0/3 successful attempts while unchanged main passes first attempt. Review round 3 records exact source paths and pinned artifact verification.

The brief requires stopping because durable marker updates currently take the old run projection lock; an engine-owned independent transition is needed.

Handoff document

Markdown

Add durable upload marker reassignment independent of run projection work

Written 2026-10-21 08:54 UTC.

RE-VERIFY: this is a write-time snapshot. Recheck https://github.com/CodexCoder21Organization/BuildTestServerService/pull/434 and engine source before continuing.

Design decisions

The owner ruled: “Intake must never return an expired session's ID” and “intake must never wait for maintenance work”. Existing assertions remain unchanged. The lane explicitly must stop before a workaround if durable ownership writes share projection or recovery locks. No merge, queue, deployment, restart or artifact publication is authorized.

Mission and findings

Complete the ownership change requested in https://github.com/CodexCoder21Organization/BuildTestServerService/pull/434 after adding an engine-owned durable marker transition independent of the old run projection boundary. Lane I10g verified PR head 0cd9c4cae5efa50ea2cdcdb03b837cbafa7706ad. Repeated creates return the cached session without applying the expiry check already used for chunks. The unchanged guard also requires old run notes to be empty immediately before releasing an older listing snapshot and verifies ownership after restart.

In https://github.com/CodexCoder21Organization/BuildTestEmbedded/blob/37e96475c17d02968a35552577625c9c99520ab3/src/buildtest/embedded/BuildTestEmbeddedService.kt#L26753 every run.json replacement takes the old run projection lock, then prepares marker ownership at line 26820 and commits it at 26907. Deletion takes that lock at line 16155. DurableUploadRequestOwnership treats its index as derived from committed run.json, with pending writes repaired from that source. javap inspection of the actual pinned 0.0.69274770 artifact confirms the same shared writer/lock relationship, with source line 26694 in the artifact. A local-only marker change leaves both durable marker notes until cleanup and does not satisfy the direct engine read or restart check. The explicit conditional stop was used; no implementation workaround was written.

Local command: scripts/test.bash --local --test expiringWhileMarkerListingReadsDoesNotReturnDeletedOwner --log <local.xml>. On the PR the XML has attempts 1, 2 and 3 unsuccessful at assertNotEquals; on main 86920465f44c369be6c8d11fe9efcce914ac7816 it passes on attempt 1 with no history rows. Existing tests are unchanged. No new test, README change, reversal, ten-run campaign, neighbours or complete suite was performed under the stop condition. Review round 3 in the PR carries the ruling and counts.

Relevant refs

Repo Branch Remote head PR Contents State
BuildTestServerService https://github.com/CodexCoder21Organization/BuildTestServerService/tree/wip/laneI10g-marker-analysis 2d54c4e8de578df2cea1f0411fea523e9b8dde0f https://github.com/CodexCoder21Organization/BuildTestServerService/pull/434 Empty evidence commit recording baseline and lock finding Source matches requested PR baseline

No deployment or artifact publication occurred in this lane. There is no partial source patch to recover. The PR description and evidence commit retain the findings needed after local files are removed.

Next steps

Design the engine-owned durable marker transfer so intake does not take the old run projection/recovery path. Then add the requested deterministic paused-maintenance scenario, show it red on the baseline, implement the ownership change and README contract, preserve every existing assertion, run reversal plus requested focused checks, obtain the complete local suite slot, classify XML histories against main, and update the existing PR after confirming OPEN. Run --local only.

Operational notes

Fresh lane checkout: /tmp/claude-501/-code/79f96be0-ae83-4479-b38c-8894e2722ba8/scratchpad/workspace/laneI10g/repoI10g. Findings: /tmp/claude-501/-code/79f96be0-ae83-4479-b38c-8894e2722ba8/scratchpad/out/rI10g-findings.md. Logs are in .git/lane-evidence locally; they are not needed to reconstruct the result because counts and exact source paths are in the PR. No production system was changed.

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-21-add-durable-upload-marker-reassignment-independent-of-run-projection-work.

No status reports yet.

Add dependency

Complete this handoff

Moves it out of every priority list and into ArchiveArea.