Skip to content

fix(server): registry test stubs no longer outlive the test run - #15457

Merged
juliusmarminge merged 1 commit into
pingdotgg:mainfrom
TrogonStack:yordis/fix-registry-test-stub-leak
Oct 4, 2026
Merged

juliusmarminge merged 1 commit into
pingdotgg:mainfrom
TrogonStack:yordis/fix-registry-test-stub-leak

Conversation

@yordis

@yordis yordis commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Problem

The fake claude CLI spawned by ProviderInstanceRegistryLive.test.ts keeps an unconditional setInterval(() => {}, 1_000) alive. The probe aborts the SDK without awaiting the child, so the stub is orphaned (reparented to PID 1) and keeps running until the machine reboots. Every run of this test strands more idle node processes.

Change

The stub clears its interval and exits once stdin closes, the same pattern testing/ClaudeCapabilitiesProbe.fixture.mjs already uses.

Scope and approval

Very small, focused fix for an obvious bug: one test fixture in one file, no product behavior touched. It only lets a stub process exit once its parent is gone.

Verification

  • Before (unmodified main): cd apps/server && vp test run src/provider/Layers/ProviderInstanceRegistryLive.test.ts passed 8/8, but ps -axo pid,ppid,command | grep t3-provider-path-test afterwards listed 5 orphaned node .../claude processes with PPID 1. The process list was empty before the run.
  • After: same command, 8/8 pass, and the same ps check is empty.
  • Lint scoped to the file is clean.
  • Not checked: other providers' test fixtures for the same pattern, since this PR covers only the leak reproduced here.

The fake claude CLI this test spawns kept an unconditional setInterval
alive, so when the parent aborts without awaiting the child, the stub
process is orphaned and keeps running until the machine reboots. Every
run of this suite stranded one more idle node process.

Signed-off-by: Yordis Prieto <yordis.prieto@gmail.com>
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XS 0-9 changed lines (additions + deletions). labels Oct 4, 2026
@macroscopeapp

macroscopeapp Bot commented Oct 4, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved at cf20b96

Macroscope's review found this PR approvable — This is a one-file, test-only fix that cleans up a spawned fake CLI process after the test ends. All changes are confined to ignored paths and have no product, default, deployment, security, billing, or static-analysis impact.

Notes:

  • No code objects were reviewed. Approvability was decided on eligibility alone.

You can add or adjust custom eligibility rules. Learn more.

@juliusmarminge
juliusmarminge merged commit 8fb068c into pingdotgg:main Oct 4, 2026
29 of 30 checks passed
ohbentos pushed a commit to ohbentos/t3code that referenced this pull request Oct 4, 2026
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Oct 4, 2026
## What's Changed
* fix(server): registry test stubs no longer outlive the test run by @yordis in pingdotgg/t3code#15457
* test(server): the registry's fake Claude CLI is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15463
* refactor(clients): share opening a machine's No project folder by @bmdavis419 in pingdotgg/t3code#14759
* test(server): the git-ssh wrapper's fake SSH script is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15480
* test(server): the ACP registry's fake npm is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15483
* test(server): the ACP registry's fake uv is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15484
* feat(clients): step a new thread to the next machine from the keyboard by @juliusmarminge in pingdotgg/t3code#15391
* fix(web): promoting a draft thread no longer logs a React key warning by @yordis in pingdotgg/t3code#15458
* test(server): the text generation's fake Claude CLI is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15479
* fix(mobile): keep dictation running across navigation behind an edge pill by @juliusmarminge in pingdotgg/t3code#15502
* fix(client-runtime): relay disconnects no longer show as thread errors by @juliusmarminge in pingdotgg/t3code#15470
* fix(web): subagent cards name the provider account by @SunkenInTime in pingdotgg/t3code#15493
* fix(server): read paginated review replies when watching PRs by @eimexdev in pingdotgg/t3code#15427
* fix(server): offer one-click provider updates for every install by @maria-rcks in pingdotgg/t3code#15416
* fix(mobile): keep the dictation timer from shifting width by @juliusmarminge in pingdotgg/t3code#15504
* fix(relay): T3 Connect links no longer fail on colliding prepared statements by @juliusmarminge in pingdotgg/t3code#15411
* fix(server): sqlite transactions wait for the write lock instead of failing by @juliusmarminge in pingdotgg/t3code#15488
* fix(web): unpin button shows the pin-off icon on hover by @flamboh in pingdotgg/t3code#15425
* fix(mobile): make queued message removal tappable by @PixPMusic in pingdotgg/t3code#15417
* fix(web): keep workspace panels below dialogs by @maria-rcks in pingdotgg/t3code#15454
* fix(clients): Working section keeps its order while agents finish and wake by @t3dotgg in pingdotgg/t3code#15418
* feat(mobile): full-screen simulator viewer with on-demand controls by @juliusmarminge in pingdotgg/t3code#15551
* fix(client-runtime): closing a busy stream no longer drops the connection by @t3dotgg in pingdotgg/t3code#15563
* feat(web): add shift-held pull request quick actions by @maria-rcks in pingdotgg/t3code#15549
* fix: expanded tool calls show their output, empty ones don't expand by @maria-rcks in pingdotgg/t3code#15505


**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261004.2644...v0.0.46-nightly.20261004.2648

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261004.2648
github-actions Bot added a commit to davidvanderklay/t3code-flake that referenced this pull request Oct 4, 2026
## What's Changed
* fix(server): registry test stubs no longer outlive the test run by @yordis in pingdotgg/t3code#15457
* test(server): the registry's fake Claude CLI is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15463
* refactor(clients): share opening a machine's No project folder by @bmdavis419 in pingdotgg/t3code#14759
* test(server): the git-ssh wrapper's fake SSH script is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15480
* test(server): the ACP registry's fake npm is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15483
* test(server): the ACP registry's fake uv is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15484
* feat(clients): step a new thread to the next machine from the keyboard by @juliusmarminge in pingdotgg/t3code#15391
* fix(web): promoting a draft thread no longer logs a React key warning by @yordis in pingdotgg/t3code#15458
* test(server): the text generation's fake Claude CLI is a fixture file, not a generated string by @yordis in pingdotgg/t3code#15479
* fix(mobile): keep dictation running across navigation behind an edge pill by @juliusmarminge in pingdotgg/t3code#15502
* fix(client-runtime): relay disconnects no longer show as thread errors by @juliusmarminge in pingdotgg/t3code#15470
* fix(web): subagent cards name the provider account by @SunkenInTime in pingdotgg/t3code#15493
* fix(server): read paginated review replies when watching PRs by @eimexdev in pingdotgg/t3code#15427
* fix(server): offer one-click provider updates for every install by @maria-rcks in pingdotgg/t3code#15416
* fix(mobile): keep the dictation timer from shifting width by @juliusmarminge in pingdotgg/t3code#15504
* fix(relay): T3 Connect links no longer fail on colliding prepared statements by @juliusmarminge in pingdotgg/t3code#15411
* fix(server): sqlite transactions wait for the write lock instead of failing by @juliusmarminge in pingdotgg/t3code#15488
* fix(web): unpin button shows the pin-off icon on hover by @flamboh in pingdotgg/t3code#15425
* fix(mobile): make queued message removal tappable by @PixPMusic in pingdotgg/t3code#15417
* fix(web): keep workspace panels below dialogs by @maria-rcks in pingdotgg/t3code#15454
* fix(clients): Working section keeps its order while agents finish and wake by @t3dotgg in pingdotgg/t3code#15418
* feat(mobile): full-screen simulator viewer with on-demand controls by @juliusmarminge in pingdotgg/t3code#15551
* fix(client-runtime): closing a busy stream no longer drops the connection by @t3dotgg in pingdotgg/t3code#15563
* feat(web): add shift-held pull request quick actions by @maria-rcks in pingdotgg/t3code#15549
* fix: expanded tool calls show their output, empty ones don't expand by @maria-rcks in pingdotgg/t3code#15505


**Full Changelog**: pingdotgg/t3code@v0.0.46-nightly.20261004.2644...v0.0.46-nightly.20261004.2648

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.46-nightly.20261004.2648
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XS 0-9 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants