Skip to content

Follow the ex_mcp fork to b633187: owned-process close race fix - #108

Merged
deepfates merged 1 commit into
mainfrom
claude/exmcp-bump
Sep 16, 2026
Merged

deepfates merged 1 commit into
mainfrom
claude/exmcp-bump

Conversation

@deepfates

Copy link
Copy Markdown
Owner

One ex_mcp ref across kite, haven and imp (dwell inherits it through imp). It moves from 7222f0f5fa65c71988a946abe76c6b5fd5438342 to b63318718d623f87a28a9723039233ca1627783b, origin/master of the deepfates/ex_mcp fork. kite, haven and imp get this same sha in three PRs opened together.

What the fork gained

Flaky tests this addresses

test/acp_imp_acp_test.exs:1628 and test/acp_local_test.exs:64, both flaky in CI on the {:error, :no_process} MatchError race.

Those two files, run five times in a row on the new ref:

run result
1 57 tests, 0 failures
2 57 tests, 0 failures
3 57 tests, 0 failures
4 57 tests, 0 failures
5 57 tests, 0 failures

5/5.

Verification

  • mix deps.get; grep ex_mcp mix.lock shows b63318718d623f87a28a9723039233ca1627783b.
  • mix check54 doctests, 9 properties, 2858 tests, 0 failures, 13 skipped (261 excluded).
  • mix quality.check — credo --only warning is clean (14577 mods/funs, no issues); mix hex.audit still exits 1 on the three cowlib 2.20.0 advisories (EEF-CVE-2026-43971, EEF-CVE-2026-43966, EEF-CVE-2026-43969). That is the known red that PR Fix the failure-campaign leak-baseline flake; bump nltk and transformers #107 fixes, it predates this change, and nothing here touches it.

Also in this diff

  • examples/deployment/mix.lock and examples/workspace_agent/mix.lock. Both example projects build against the local imp in CI (IMP_PATH=../..), so their locks resolve to the same ref; regenerated with mix deps.get, one line each.
  • decisions.md row for the pin states it by sha, so its sha moves with it. The decision itself — one ref for all four repositories, moved only in a coordinated change — is unchanged.

Not in this diff

dwell pins imp by git ref (@imp_ref in its mix.exs) and needs bumping to imp's new main after this merges. Deliberately left out.

The constellation's one ex_mcp ref moves from 7222f0f5 to b6331871.
Two fork commits land with it: #7 teaches OwnedProcess to treat a child
that already exited as stopped during close, and #8 stops git_hooks from
reinstalling itself on every mix run.

#7 is the one imp needed. The {:error, :no_process} MatchError race made
test/acp_imp_acp_test.exs:1628 and test/acp_local_test.exs:64 flaky in CI.
Those two files ran five times in a row on this ref: 5/5 green, 57 tests
and 0 failures each time.

The two example projects build against the local imp in CI
(IMP_PATH=../..), so their locks follow the same ref. decisions.md names
the pin, so its sha moves too; the decision itself is unchanged.

mix check: 54 doctests, 9 properties, 2858 tests, 0 failures, 13 skipped.
mix quality.check: credo clean, mix hex.audit still red on the three
cowlib 2.20.0 advisories that PR #107 fixes. Untouched here.
@deepfates
deepfates merged commit d59d7d9 into main Sep 16, 2026
10 checks passed
@deepfates
deepfates deleted the claude/exmcp-bump branch September 16, 2026 00:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant