From dd4f2cfea28ed4e67f67ea5343c8a876fef04e7d Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Tue, 14 Jul 2026 16:16:08 -0700 Subject: [PATCH] test(sessions): stabilize extended-stable reply-init proof (#107832) * test(sessions): publish concurrency markers atomically (#99212) (cherry picked from commit a004e18b4bbd30b784239741e07fdcaf569968f2) * chore(release): refresh 2026.6.33 candidate record --------- Co-authored-by: Peter Steinberger --- CHANGELOG.md | 4 +++- .../session-accessor.reply-init-concurrency.test.ts | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6729be631f8f..80d399554462 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,7 +26,7 @@ Docs: https://docs.openclaw.ai ### Complete contribution record -This audited record covers the complete v2026.6.11..544fe1e9cb46e8fbb7aed4fee8b74cd7e18ead5e history: 164 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact. +This audited record covers the complete v2026.6.11..0cfce81a3c1f7d3d5e453d9788443e6e2097cc4d history: 165 merged PRs. The generation manifest also supplies direct commits as editorial input; the grouped notes above prioritize user impact. #### Pull requests @@ -194,6 +194,8 @@ This audited record covers the complete v2026.6.11..544fe1e9cb46e8fbb7aed4fee8b7 - **PR #105746** Thanks @vincentkoc. - **PR #99266** Thanks @RomneyDa. - **PR #100448** Thanks @kevinslin. +- **PR #99212** + ## 2026.6.11 ### Highlights diff --git a/src/config/sessions/session-accessor.reply-init-concurrency.test.ts b/src/config/sessions/session-accessor.reply-init-concurrency.test.ts index 8a00934bc869..25de1d5339b5 100644 --- a/src/config/sessions/session-accessor.reply-init-concurrency.test.ts +++ b/src/config/sessions/session-accessor.reply-init-concurrency.test.ts @@ -84,7 +84,10 @@ async function waitForFile(filePath) { } async function writeJsonFile(filePath, value) { - await fs.writeFile(filePath, \`\${JSON.stringify(value, null, 2)}\\n\`, "utf8"); + // The parent treats file existence as the readiness signal, so publish atomically. + const tempPath = filePath + "." + process.pid + ".tmp"; + await fs.writeFile(tempPath, \`\${JSON.stringify(value, null, 2)}\\n\`, "utf8"); + await fs.rename(tempPath, filePath); } const storePath = process.env.REPLY_INIT_STORE_PATH; @@ -192,7 +195,6 @@ describe("reply session initialization concurrency", () => { stdio: ["ignore", "pipe", "pipe"], }, ); - await waitForFile(readyPath); const snapshot = await readJsonFile<{ currentEntry?: unknown; revision: string }>(readyPath); expect(snapshot.revision).toBe(JSON.stringify({ sessionId: "existing-session" }));