From f847ff37318c7efb12ac7a011c0ec0bd8f0e500f Mon Sep 17 00:00:00 2001 From: Michael Suchacz <203725896+ibetitsmike@users.noreply.github.com> Date: Tue, 12 May 2026 14:50:30 +0200 Subject: [PATCH] test(coderd/x/chatd): skip stale notification flakes (#25177) Skip the chatd tests that currently flake because the control notification flow cannot distinguish stale wake/status NOTIFY payloads from real interrupt requests. Each skipped test includes a TODO to re-enable it after the chatd notification flow refactor handles stale notifications correctly. Supersedes #25133, #25134, #25135, and #25139. Refs [CODAGT-353](https://linear.app/coder/issue/CODAGT-353), [CODAGT-356](https://linear.app/coder/issue/CODAGT-356), [CODAGT-360](https://linear.app/coder/issue/CODAGT-360), and [CODAGT-361](https://linear.app/coder/issue/CODAGT-361). > Mux working on behalf of Mike. --- coderd/x/chatd/chatd_test.go | 6 +++++ coderd/x/chatd/integration_responses_test.go | 24 ++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/coderd/x/chatd/chatd_test.go b/coderd/x/chatd/chatd_test.go index 02d8cf50d9..6074bebd3b 100644 --- a/coderd/x/chatd/chatd_test.go +++ b/coderd/x/chatd/chatd_test.go @@ -2623,6 +2623,12 @@ func TestPromoteQueuedMessageReloadsChatWhenModelConfigChangesDuringPending(t *t func TestAutoPromoteQueuedMessagesPreservesPerTurnModelOrder(t *testing.T) { t.Parallel() + // TODO(CODAGT-353): Re-enable this test after the chatd notification flow + // refactor gives workers enough causal information to distinguish stale + // control NOTIFY messages from real interrupts. The current design reuses + // the same status notification shape for wake-only and interrupt intents, + // so a stale NOTIFY can cancel a new processChat run. + t.Skip("skipped until chatd notification flow refactor handles stale control notifications") db, ps := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitSuperLong) diff --git a/coderd/x/chatd/integration_responses_test.go b/coderd/x/chatd/integration_responses_test.go index ecb99539ba..97e1f0a076 100644 --- a/coderd/x/chatd/integration_responses_test.go +++ b/coderd/x/chatd/integration_responses_test.go @@ -25,6 +25,12 @@ import ( func TestOpenAIResponsesNoStaleWebSearchReplay(t *testing.T) { t.Parallel() + // TODO(CODAGT-353): Re-enable this test after the chatd notification flow + // refactor gives workers enough causal information to distinguish stale + // control NOTIFY messages from real interrupts. The current design reuses + // the same status notification shape for wake-only and interrupt intents, + // so a stale NOTIFY can cancel a new processChat run. + t.Skip("skipped until chatd notification flow refactor handles stale control notifications") db, ps := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitLong) @@ -108,6 +114,12 @@ func TestOpenAIResponsesNoStaleWebSearchReplay(t *testing.T) { func TestOpenAIResponsesFullReplayPairsReasoningAndWebSearch(t *testing.T) { t.Parallel() + // TODO(CODAGT-353): Re-enable this test after the chatd notification flow + // refactor gives workers enough causal information to distinguish stale + // control NOTIFY messages from real interrupts. The current design reuses + // the same status notification shape for wake-only and interrupt intents, + // so a stale NOTIFY can cancel a new processChat run. + t.Skip("skipped until chatd notification flow refactor handles stale control notifications") db, ps := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitLong) @@ -190,6 +202,12 @@ func TestOpenAIResponsesFullReplayPairsReasoningAndWebSearch(t *testing.T) { func TestOpenAIResponsesChainModeSkipsWhenLocalCallPending(t *testing.T) { t.Parallel() + // TODO(CODAGT-353): Re-enable this test after the chatd notification flow + // refactor gives workers enough causal information to distinguish stale + // control NOTIFY messages from real interrupts. The current design reuses + // the same status notification shape for wake-only and interrupt intents, + // so a stale NOTIFY can cancel a new processChat run. + t.Skip("skipped until chatd notification flow refactor handles stale control notifications") db, ps := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitLong) @@ -257,6 +275,12 @@ func TestOpenAIResponsesChainModeSkipsWhenLocalCallPending(t *testing.T) { func TestOpenAIResponsesChainModeStillFiresForProviderExecutedOnly(t *testing.T) { t.Parallel() + // TODO(CODAGT-353): Re-enable this test after the chatd notification flow + // refactor gives workers enough causal information to distinguish stale + // control NOTIFY messages from real interrupts. The current design reuses + // the same status notification shape for wake-only and interrupt intents, + // so a stale NOTIFY can cancel a new processChat run. + t.Skip("skipped until chatd notification flow refactor handles stale control notifications") db, ps := dbtestutil.NewDB(t) ctx := testutil.Context(t, testutil.WaitLong)