pmcp-code-mode 0.2.0

Code Mode validation and execution framework for MCP servers
Documentation
name: pmcp-code-mode
version: 0.1.0
description: Code Mode validation and execution framework for MCP servers
contracts:
  - name: hmac_token_roundtrip
    type: property
    description: "Tokens generated by HmacTokenGenerator verify successfully against the same code"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- hmac_roundtrip"

  - name: hmac_modification_detection
    type: property
    description: "Modified code fails token verification"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- hmac_detects"

  - name: hmac_bitflip_rejection
    type: property
    description: "Bit-flipped tokens fail verification (negative token fuzzing)"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- bitflip"

  - name: hmac_wrong_secret_rejection
    type: property
    description: "Tokens generated with one secret cannot be verified with a different secret"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- wrong_secret"

  - name: hash_code_determinism
    type: property
    description: "hash_code produces identical output for identical input"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- hash_code_deterministic"

  - name: canonicalize_idempotency
    type: property
    description: "canonicalize_code(canonicalize_code(x)) == canonicalize_code(x)"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- canonicalize_idempotent"

  - name: graphql_validation_determinism
    type: property
    description: "Same GraphQL query produces identical validation results across invocations"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- graphql_validation_deterministic"

  - name: token_secret_zeroize
    type: invariant
    description: "TokenSecret zeroes memory on drop via secrecy::SecretBox"
    verification: "grep -q SecretBox crates/pmcp-code-mode/src/token.rs"

  - name: token_secret_no_serialize
    type: invariant
    description: "TokenSecret does not implement Serialize, Deserialize, Debug, Display, or Clone"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- token_secret_trait"

  - name: default_deny_policy
    type: invariant
    description: "Without NoopPolicyEvaluator, operations are denied by default (DenyAllEvaluator rejects valid queries)"
    verification: "cargo test -p pmcp-code-mode --test property_tests -- default_deny"

  - name: parser_no_panic
    type: robustness
    description: "GraphQL and JavaScript parsers never panic on arbitrary input"
    verification: "Fuzz targets: fuzz/fuzz_targets/fuzz_graphql_code_mode.rs and fuzz/fuzz_targets/fuzz_javascript_code_mode.rs (requires nightly: cargo +nightly fuzz run fuzz_graphql_code_mode)"

  - name: token_verification_no_panic
    type: robustness
    description: "Token decode and verify never panic on arbitrary input"
    verification: "Fuzz target: fuzz/fuzz_targets/fuzz_token_code_mode.rs (requires nightly: cargo +nightly fuzz run fuzz_token_code_mode)"