Skip to content

Commit a349f41

Browse files
fix(commitments): serialize load-modify-save with in-process queue + cross-process file lock
1 parent 361580e commit a349f41

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Docs: https://docs.openclaw.ai
88

99
### Fixes
1010

11+
- Agents/commitments: serialize commitment store load-modify-save writes so concurrent heartbeat and CLI updates no longer lose dismissal, sent, or attempt state. (#81153) Thanks @ai-hpc.
1112
- Gateway/perf: tighten restart and startup benchmark failure handling so long profiling runs, failed probes, and fresh Linux runners no longer produce false passing or `n/a` results.
1213
- Checks: keep intentional Knip unused-file findings optional so full CI and sparse proof workspaces stay aligned.
1314
- Docker: restore writable `~/.config` in runtime images. Fixes #85968. Thanks @hkoessler and @Bartok9.

src/commitments/store.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ describe("commitment store delivery selection", () => {
235235
expect(expiredCommitments[0]?.status).toBe("expired");
236236
});
237237

238-
it("serializes concurrent markCommitmentsStatus on disjoint ids without losing a write (#13)", async () => {
238+
it("serializes concurrent markCommitmentsStatus on disjoint ids without losing a write", async () => {
239239
await useTempStateDir();
240240
await saveCommitmentStore(undefined, {
241241
version: 1,
@@ -256,7 +256,7 @@ describe("commitment store delivery selection", () => {
256256
expect(byId.cm_raceB).toBe("dismissed");
257257
});
258258

259-
it("serializes concurrent markCommitmentsAttempted bumps without losing the counter (#13)", async () => {
259+
it("serializes concurrent markCommitmentsAttempted bumps without losing the counter", async () => {
260260
await useTempStateDir();
261261
await saveCommitmentStore(undefined, {
262262
version: 1,
@@ -273,7 +273,7 @@ describe("commitment store delivery selection", () => {
273273
expect(after.commitments[0]?.attempts).toBe(5);
274274
});
275275

276-
it("serializes a markCommitmentsStatus dismiss against a concurrent attempted bump (#13)", async () => {
276+
it("serializes a markCommitmentsStatus dismiss against a concurrent attempted bump", async () => {
277277
await useTempStateDir();
278278
await saveCommitmentStore(undefined, {
279279
version: 1,

0 commit comments

Comments
 (0)