From 811680f5b6e15427361a294e85c9dfc3d090a8df Mon Sep 17 00:00:00 2001 From: Lex Christopherson Date: Wed, 25 Mar 2026 11:20:35 -0600 Subject: [PATCH] fix: make workflow event hash platform-deterministic The hash included `ts` in the input despite the docstring promising it was "independent of ts/actor/session". On Windows, millisecond timer resolution caused two calls within the same tick to get different timestamps, producing different hashes for identical cmd+params. Remove `ts` from the hash input to match documented behavior. Revert continue-on-error on windows-portability now that the root cause is fixed. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/ci.yml | 1 - src/resources/extensions/gsd/workflow-events.ts | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79ff612a0..e6ce25893 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -144,7 +144,6 @@ jobs: windows-portability: timeout-minutes: 15 - continue-on-error: true needs: detect-changes if: >- needs.detect-changes.outputs.docs-only != 'true' diff --git a/src/resources/extensions/gsd/workflow-events.ts b/src/resources/extensions/gsd/workflow-events.ts index 7ffee2843..87bac5efb 100644 --- a/src/resources/extensions/gsd/workflow-events.ts +++ b/src/resources/extensions/gsd/workflow-events.ts @@ -40,7 +40,7 @@ export function appendEvent( event: Omit & { actor_name?: string; trigger_reason?: string }, ): void { const hash = createHash("sha256") - .update(JSON.stringify({ cmd: event.cmd, params: event.params, ts: event.ts })) + .update(JSON.stringify({ cmd: event.cmd, params: event.params })) .digest("hex") .slice(0, 16);