From 21e2e6346a2025a68529bb96c2bd5ffad9182861 Mon Sep 17 00:00:00 2001 From: Norin Lavaee Date: Thu, 2 Jul 2026 21:24:22 -0700 Subject: [PATCH 1/2] chore: add deepwiki MCP server config Assistant-model: Claude Fable 5 --- .mcp.json | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 .mcp.json diff --git a/.mcp.json b/.mcp.json new file mode 100644 index 000000000..214bd6808 --- /dev/null +++ b/.mcp.json @@ -0,0 +1,7 @@ +{ + "mcpServers": { + "deepwiki": { + "url": "https://mcp.deepwiki.com/mcp" + } + } +} From 2083a530c50d3b13884f8d060a2d69ded207a642 Mon Sep 17 00:00:00 2001 From: Norin Lavaee Date: Thu, 2 Jul 2026 22:01:06 -0700 Subject: [PATCH 2/2] ci: run binary smoke tests from a clean temp cwd The release-archive smoke steps invoked the built atomic binary with --no-session from the repository checkout, so repo-local config (the newly added root .mcp.json) was discovered at startup and the binary hung connecting to the remote DeepWiki MCP server, stalling CI. Run the --no-session smoke invocation from a clean RUNNER_TEMP working directory in both test.yml and publish.yml (Linux and Windows) so repo-local config can never leak into smoke runs. Assistant-model: Claude Fable 5 --- .github/workflows/publish.yml | 18 +++++++++++++++--- .github/workflows/test.yml | 14 +++++++++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 90dd62dc1..e67e31802 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -85,9 +85,14 @@ jobs: # --version exits before builtin extensions are loaded. Start the # non-interactive runtime far enough to surface extension diagnostics, - # but allow the expected no-models exit in CI. + # but allow the expected no-models exit in CI. Run from a clean temp + # cwd so repo-local config (e.g. .mcp.json) can't leak into the smoke + # run and hang startup. + work_dir="$RUNNER_TEMP/atomic-linux-binary-smoke-cwd" + rm -rf "$work_dir" + mkdir -p "$work_dir" set +e - output=$(printf '' | "$smoke_dir/atomic/atomic" --no-session 2>&1) + output=$(cd "$work_dir" && printf '' | "$smoke_dir/atomic/atomic" --no-session 2>&1) status=$? set -e echo "$output" @@ -164,9 +169,16 @@ jobs: # --version exits before builtin extensions are loaded. Start the # non-interactive runtime far enough to surface extension diagnostics, - # but allow the expected no-models exit in CI. + # but allow the expected no-models exit in CI. Run from a clean temp + # cwd so repo-local config (e.g. .mcp.json) can't leak into the smoke + # run and hang startup. + $workDir = Join-Path $env:RUNNER_TEMP "atomic-windows-binary-smoke-cwd" + Remove-Item -Recurse -Force $workDir -ErrorAction SilentlyContinue + New-Item -ItemType Directory -Path $workDir | Out-Null + Push-Location $workDir $output = "" | & $atomic --no-session 2>&1 | Out-String $status = $LASTEXITCODE + Pop-Location Write-Host $output if ($output -match "Failed to load extension") { exit 1 diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f33e14abf..ca372b3ec 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -95,8 +95,13 @@ jobs: exit 1 } done + # Run from a clean temp cwd so repo-local config (e.g. .mcp.json) + # can't leak into the smoke run and hang startup. + work_dir="$RUNNER_TEMP/atomic-binary-smoke-cwd" + rm -rf "$work_dir" + mkdir -p "$work_dir" set +e - output=$(printf '' | "$smoke_dir/atomic/atomic" --no-session 2>&1) + output=$(cd "$work_dir" && printf '' | "$smoke_dir/atomic/atomic" --no-session 2>&1) status=$? set -e echo "$output" @@ -145,8 +150,15 @@ jobs: throw "Missing release archive path: $requiredPath" } } + # Run from a clean temp cwd so repo-local config (e.g. .mcp.json) + # can't leak into the smoke run and hang startup. + $workDir = Join-Path $env:RUNNER_TEMP "atomic-binary-smoke-cwd" + Remove-Item -Recurse -Force $workDir -ErrorAction SilentlyContinue + New-Item -ItemType Directory -Path $workDir | Out-Null + Push-Location $workDir $output = "" | & $atomic --no-session 2>&1 | Out-String $status = $LASTEXITCODE + Pop-Location Write-Host $output if ($output -match "Failed to load extension") { exit 1