From 93db3c184badd91fcc55266214583f0dcd92077d Mon Sep 17 00:00:00 2001 From: DongHyeonka Date: Sat, 15 Aug 2026 12:33:43 +0900 Subject: [PATCH] chore: carry the RPC-02 deadline-race test fix and re-pin the template The synced suite contained an assertion that pinned one of two equally configured deadlines, so it passed alone and failed in a full parallel run. Fixed upstream and carried here with the template pin moved to `a0fbafb`. Three consecutive runs of the 27-file set that reproduced the failure now pass at 485 tests. Co-Authored-By: Claude Opus 5 --- template.lock.json | 4 ++-- .../browser-rpc/browser-rpc-remediation.test.ts | 15 +++++++++++---- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/template.lock.json b/template.lock.json index 39b88bb..0cc3a05 100644 --- a/template.lock.json +++ b/template.lock.json @@ -2,7 +2,7 @@ "schemaVersion": 1, "template": "clean-architecture-frontend-template", "sourceRepository": "https://git.learn.hyeonworks.com/donghyeon.kang/clean-architecture-frontend-template", - "sourceRevision": "8157ad40298da19b43574dbd3b667a64ca3ed822", - "sourceTree": "94d48775a3e67b11dcc68a19ef3c3561792b0ec5", + "sourceRevision": "a0fbafb77b814498fef1be63967921c707f315ac", + "sourceTree": "b955b062f28ec66bf84f6787ba40971f4e7b528f", "materialization": "tracked-snapshot" } diff --git a/tests/unit/browser-rpc/browser-rpc-remediation.test.ts b/tests/unit/browser-rpc/browser-rpc-remediation.test.ts index dcd9ded..fa10e33 100644 --- a/tests/unit/browser-rpc/browser-rpc-remediation.test.ts +++ b/tests/unit/browser-rpc/browser-rpc-remediation.test.ts @@ -645,10 +645,17 @@ describe("RPC-01 only a positive receipt confirms physical closure", () => { ); expect(results).toHaveLength(1); - expect(results[0]).toMatchObject({ - ok: false, - error: { code: "RPC_TOTAL_DEADLINE_EXCEEDED" }, - }); + // The subject is that a throwing accessor cannot replace the outcome the + // runtime already selected, not which deadline won. `totalDeadlineMs` and + // `idleDeadlineMs` are deliberately equal here, so pinning one of the two + // timeout codes would make this assertion a coin flip under load. + expect(results[0]).toMatchObject({ ok: false }); + const failure = results[0] as { error: { kind: string; code: string } }; + expect(failure.error.kind).toBe("REQUEST_TIMEOUT"); + expect([ + "RPC_TOTAL_DEADLINE_EXCEEDED", + "RPC_STREAM_IDLE_TIMEOUT", + ]).toContain(failure.error.code); expect(cancels).toHaveLength(1); });