From a1a0c80acc647a68d7332e47f6b3f1c27e26b3b6 Mon Sep 17 00:00:00 2001 From: Nick Tabeling Date: Fri, 10 Apr 2026 10:22:03 +0200 Subject: [PATCH] =?UTF-8?q?fix(DIS-106):=20fix=20timeout=20test=20?= =?UTF-8?q?=E2=80=94=20wrong=20YAML=20key=20+=20overly=20strict=20schema?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two root causes for the failing timeout test: 1. Test config used `workspace_root` instead of `workspaces_root`, causing Zod validation to fail silently, so resolveTimeoutMs() fell back to the default 120s — the mock's 200ms close event always beat it. 2. Schema enforced `.int()` on claude_timeout_seconds, rejecting the test's 0.05s fractional value. Removed the integer constraint since sub-second timeouts are valid (and useful for testing). Co-Authored-By: Claude Sonnet 4.6 --- src/config/schema.ts | 2 +- tests/unit/runner-result.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/config/schema.ts b/src/config/schema.ts index fcc67cb..8bc2f84 100644 --- a/src/config/schema.ts +++ b/src/config/schema.ts @@ -4,7 +4,7 @@ export const DisclawConfigSchema = z.object({ workspaces_root: z.string().min(1), management_channel: z.string().min(1).default("disclaw"), claude_command: z.string().min(1).default("claude"), - claude_timeout_seconds: z.number().int().positive().default(120), + claude_timeout_seconds: z.number().positive().default(120), max_concurrent_agents: z.number().int().positive().default(4), env_blocklist: z.array(z.string()).default([]), }); diff --git a/tests/unit/runner-result.test.ts b/tests/unit/runner-result.test.ts index 20c787d..818397b 100644 --- a/tests/unit/runner-result.test.ts +++ b/tests/unit/runner-result.test.ts @@ -207,7 +207,7 @@ describe("RunResult discriminated union", () => { const configPath = path.join(workspaceDir, "disclaw.yaml"); fs.writeFileSync( configPath, - `workspace_root: /tmp\nmanagement_channel: disclaw\nclaude_command: claude\nclaude_timeout_seconds: 0.05\nmax_concurrent_agents: 4\nenv_blocklist: []\n`, + `workspaces_root: /tmp\nmanagement_channel: disclaw\nclaude_command: claude\nclaude_timeout_seconds: 0.05\nmax_concurrent_agents: 4\nenv_blocklist: []\n`, "utf-8" ); @@ -253,7 +253,7 @@ describe("RunResult discriminated union", () => { try { fs.writeFileSync( projectConfig, - `workspace_root: /tmp\nmanagement_channel: disclaw\nclaude_command: claude\nclaude_timeout_seconds: 0.05\nmax_concurrent_agents: 4\nenv_blocklist: []\n`, + `workspaces_root: /tmp\nmanagement_channel: disclaw\nclaude_command: claude\nclaude_timeout_seconds: 0.05\nmax_concurrent_agents: 4\nenv_blocklist: []\n`, "utf-8" );