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.