---
phase: 33-fix-mcp-tester-failure-with-v1-12-0
plan: 01
type: execute
wave: 1
depends_on: []
files_modified:
  - crates/mcp-tester/Cargo.toml
  - cargo-pmcp/Cargo.toml
autonomous: true
requirements: []

must_haves:
  truths:
    - "mcp-tester 0.2.2 compiles against pmcp 1.12.0 without struct literal errors"
    - "cargo-pmcp depends on mcp-tester 0.2.2 and compiles cleanly"
    - "mcp-tester 0.2.2 is published to crates.io before cargo-pmcp"
    - "cargo-pmcp patch release is published to crates.io"
    - "cargo install cargo-pmcp (without --locked) succeeds"
  artifacts:
    - path: "crates/mcp-tester/Cargo.toml"
      provides: "mcp-tester version bump to 0.2.2"
      contains: 'version = "0.2.2"'
    - path: "cargo-pmcp/Cargo.toml"
      provides: "cargo-pmcp version bump and mcp-tester dep update"
      contains: 'mcp-tester.*0.2.2'
  key_links:
    - from: "cargo-pmcp/Cargo.toml"
      to: "crates/mcp-tester/Cargo.toml"
      via: "crates.io dependency"
      pattern: 'mcp-tester.*version.*0\\.2\\.2'
---

<objective>
Bump mcp-tester to 0.2.2 and cargo-pmcp to 0.3.4, then publish both to crates.io in dependency order so that `cargo install cargo-pmcp` works without `--locked`.

Purpose: The v1.12.0 release added #[non_exhaustive] to Result structs. The code migration is already done (commits 97200c1, 5e01f3c), but the crate versions haven't been bumped and published.
Output: Both crates published to crates.io with correct versions.
</objective>

<execution_context>
@./.claude/get-shit-done/workflows/execute-plan.md
@./.claude/get-shit-done/templates/summary.md
</execution_context>

<context>
@.planning/PROJECT.md
@.planning/ROADMAP.md
@.planning/STATE.md
@.planning/phases/33-fix-mcp-tester-failure-with-v1-12-0/33-CONTEXT.md
@crates/mcp-tester/Cargo.toml
@cargo-pmcp/Cargo.toml
</context>

<tasks>

<task type="auto">
  <name>Task 1: Bump versions in Cargo.toml files</name>
  <files>crates/mcp-tester/Cargo.toml, cargo-pmcp/Cargo.toml</files>
  <action>
1. In `crates/mcp-tester/Cargo.toml`: change `version = "0.2.1"` to `version = "0.2.2"`.
2. In `cargo-pmcp/Cargo.toml`: change `version = "0.3.3"` to `version = "0.3.4"`.
3. In `cargo-pmcp/Cargo.toml`: change the mcp-tester dependency from `version = "0.2.1"` to `version = "0.2.2"` (keep the `path` attribute unchanged).
4. Run `cargo check -p mcp-tester` and `cargo check -p cargo-pmcp` to verify both compile cleanly.
5. Run `cargo test -p mcp-tester --test-threads=1` to verify tests pass.
  </action>
  <verify>
    <automated>cd /Users/guy/Development/mcp/sdk/rust-mcp-sdk && cargo check -p mcp-tester && cargo check -p cargo-pmcp && grep 'version = "0.2.2"' crates/mcp-tester/Cargo.toml && grep 'version = "0.3.4"' cargo-pmcp/Cargo.toml && grep 'mcp-tester.*0.2.2' cargo-pmcp/Cargo.toml</automated>
  </verify>
  <done>mcp-tester is version 0.2.2, cargo-pmcp is version 0.3.4 depending on mcp-tester 0.2.2, both compile cleanly</done>
</task>

<task type="auto">
  <name>Task 2: Publish crates to crates.io in dependency order</name>
  <files>crates/mcp-tester/Cargo.toml, cargo-pmcp/Cargo.toml</files>
  <action>
1. Run `cargo publish -p mcp-tester` from the workspace root. Wait for it to complete successfully.
2. Wait ~30 seconds for crates.io index to update (the registry needs time to propagate).
3. Run `cargo publish -p cargo-pmcp` from the workspace root.
4. Verify both publishes succeeded by checking the command exit codes.

Note: If `cargo publish` fails with auth errors, create a checkpoint for the user to authenticate. If it fails because the path dependency needs to be temporarily removed, update the Cargo.toml to use only the version (no path) for the publish, then restore after.

Important: `cargo publish` may require that path dependencies are also published versions. Since mcp-tester publishes first, cargo-pmcp should resolve. If cargo-pmcp publish fails because the crates.io index hasn't updated yet, retry after a short wait.
  </action>
  <verify>
    <automated>cd /Users/guy/Development/mcp/sdk/rust-mcp-sdk && cargo search mcp-tester 2>/dev/null | head -3 && cargo search cargo-pmcp 2>/dev/null | head -3</automated>
  </verify>
  <done>mcp-tester 0.2.2 and cargo-pmcp 0.3.4 are both live on crates.io. `cargo install cargo-pmcp` works without --locked.</done>
</task>

</tasks>

<verification>
- `cargo check -p mcp-tester` succeeds
- `cargo check -p cargo-pmcp` succeeds
- `cargo search mcp-tester` shows 0.2.2
- `cargo search cargo-pmcp` shows 0.3.4
- `cargo install cargo-pmcp` completes without errors (final validation)
</verification>

<success_criteria>
Both mcp-tester 0.2.2 and cargo-pmcp 0.3.4 are published to crates.io, and `cargo install cargo-pmcp` succeeds without `--locked`.
</success_criteria>

<output>
After completion, create `.planning/phases/33-fix-mcp-tester-failure-with-v1-12-0/33-01-SUMMARY.md`
</output>
