From 8fcae9cafb4850bd52b8fb1816854cedee3ddd5a Mon Sep 17 00:00:00 2001 From: Ali Al Dallal Date: Wed, 12 Aug 2026 09:59:19 -0400 Subject: [PATCH] =?UTF-8?q?fix:=20bump=20MCP=20round-trip=20test's=20shutd?= =?UTF-8?q?own=20timeout=202s=E2=86=9210s=20(CI=20flake)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #20's test-go job failed with 'Shutdown: context deadline exceeded' on TestMillMCPService_RealClientRoundTrip -- unrelated to that PR's own diff (composition/graph.go, executionsvc), and a rerun of the exact same failing job went green, confirming a shared-CI-runner timing flake rather than a real bug: 2s was too tight a grace window for a real network server's Shutdown() under variable runner load. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_01FYwojT8GdUbYSoggbvEFft --- .../mill/internal/services/executionsvc/models.ts | 12 ++++-------- internal/services/mcpsvc/millmcpservice_test.go | 6 +++++- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/frontend/bindings/github.com/alicoding/mill/internal/services/executionsvc/models.ts b/frontend/bindings/github.com/alicoding/mill/internal/services/executionsvc/models.ts index 5c48e0b4..1d855618 100644 --- a/frontend/bindings/github.com/alicoding/mill/internal/services/executionsvc/models.ts +++ b/frontend/bindings/github.com/alicoding/mill/internal/services/executionsvc/models.ts @@ -208,14 +208,10 @@ export interface RunStep { * Input/InputAttributes are this step's recorded INPUT (docs/adr/0031 * item 3): the immediately-preceding EXECUTED step's own recorded * Payload/Attributes, or the run's own seeded starting values for - * the first executed step. Previously undiscoverable at all -- only - * a step's OUTPUT was ever surfaced. Input deliberately has NO - * omitempty, matching Output below -- goal 0021 gap 3, caught live: - * a run started with no payload seeded a genuinely empty first-step - * Input, and omitempty dropped the JSON key entirely over MCP, - * reading as "the field doesn't exist" rather than "it's empty" -- - * indistinguishable from a real mapping bug. An always-present key - * (empty string when there's truly nothing) is unambiguous. + * the first executed step. No omitempty on Input, matching Output + * below (goal 0021 gap 3): omitempty on a genuinely-empty first + * step dropped the JSON key entirely over MCP, indistinguishable + * from a real mapping bug. */ "input": string; "inputAttributes"?: { [_ in string]?: any } | null; diff --git a/internal/services/mcpsvc/millmcpservice_test.go b/internal/services/mcpsvc/millmcpservice_test.go index 49fdaa7b..f394ccfb 100644 --- a/internal/services/mcpsvc/millmcpservice_test.go +++ b/internal/services/mcpsvc/millmcpservice_test.go @@ -33,7 +33,11 @@ func TestMillMCPService_RealClientRoundTrip(t *testing.T) { t.Fatalf("Start: %v", err) } defer func() { - ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second) + // 2s previously flaked on shared CI runners under load + // ("Shutdown: context deadline exceeded") -- confirmed a runner- + // timing flake, not a real bug, by rerunning the exact failing + // job to green (goal 0021 Phase-1-remainder PR #20, 2026-08-12). + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() if err := svc.Shutdown(ctx); err != nil { t.Errorf("Shutdown: %v", err)