fix(client): move backend e2e out of the client crate; provision CI backends - #20
Merged
Merged
Conversation
…ackends The four-backend Tasks e2e lived in crates/turul-mcp-client/tests/, which put sqlx, aws-config, aws-sdk-dynamodb and ext-tasks' storage features into an MCP client library's dependency graph, and coupled `cargo publish -p turul-mcp-client` to ext-tasks having already published them. Moved to tests-ext-tasks/ (publish = false). Separate from tests/ because that crate pins the 2025-11-25 lane and the protocol features are exclusive. Also fixed, all found by the red CI run: - CI ran the suite with neither Postgres nor DynamoDB started; it panics rather than skips by design, so it could only fail. Both are now provisioned without docker, matching scripts/ext-tasks-backends.sh. - The Postgres URL default hardcoded a developer's unix username in two places. No default now; derived once by the provisioning script. - The moved file's #![cfg(feature = ...)] named the client's features, so in its new home it compiled away and reported zero tests as green. No shipped code changed. Gates: 132 pass / 0 fail, conformance 37/37 scored.
… gates the drivers The in-memory store is unconditional. Listing it as a feature alongside sqlite/postgres/dynamodb implied a dependent must opt in to get a store, and obscured the point that the three durable features are the only thing that pulls sqlx or the AWS SDK. Same correction applied to the v0.4.4 release notes.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Two problems with one root cause, both surfaced by the red CI on
main.turul-mcp-clientdev-depended on Postgres and DynamoDB drivers. Thefour-backend Tasks e2e added in 0.4.4 was written into
crates/turul-mcp-client/tests/, pullingsqlx,aws-config,aws-sdk-dynamodbandturul-mcp-ext-tasks'ssqlite/postgres/dynamodbfeatures into an MCP client library's graph. It also coupled
cargo publish -p turul-mcp-clienttoturul-mcp-ext-taskshaving already published thosefeatures — which is exactly how the 0.4.1 client dry-run failed.
CI ran that suite with no backends running. The suite panics rather than
skips when a store is unreachable — deliberate, so a silent skip can't report
green — so with neither service present it could only fail.
What changed
tests-ext-tasks/, apublish = falsecrate. Separate fromtests/because that crate pins the 2025-11-25 lane throughout and the twoprotocol features are mutually exclusive.
scripts/ext-tasks-backends.shdoes locally.(
postgres://nick@…) in two places, so it connected on exactly one machine.No default now — derived once, by the script that starts the server.
scripts/ci-gates.shno longer runs the suite bare; only the backends script,which provisions first, does.
Caught before commit
The moved file kept a
#![cfg(feature = "ext-tasks", …)]guard naming theclient's features. In its new home those don't exist, so the whole file
compiled away and reported a green run of zero tests — the precise failure mode
this gate exists to prevent. The guard is gone; the manifest enables what the
suite needs unconditionally.
Verification
Dependency removal proven by absence rather than by reading the manifest:
Same for
aws-sdk-dynamodb../scripts/ext-tasks-backends.sh— ALL TASK BACKENDS PASSED (all four)./scripts/ci-gates.sh— 132 pass / 0 fail, ALL GATES PASSEDcargo test -p turul-mcp-client— 205 passNo shipped code changed, so no crate version bump: the only non-test edit is
inside
#[cfg(test)] mod conformance.🤖 Generated with Claude Code