release(v0.39.1): SEP-2787 reference impl follows spec into camelCase#150
Conversation
The SEP-2787 draft envelope adopted MCP camelCase convention in soup-oss/modelcontextprotocol@48c739b1. Vaara's proposed-shape reference implementation now emits camelCase JSON keys on the serialisation boundary while keeping Python dataclass attributes in snake_case, so user code is unchanged. `Attestation.to_dict()` and the JCS-canonical signing payload emit `plannerDeclared`, `issuerAsserted`, `payloadDerived`, `toolCalls`, `serverFingerprint`, `secretVersion`, `expSeconds`, `requestedCapability`, `projectionDigest`. New `issuer_to_dict` helper replaces the prior `asdict()` call so the issuer block sorts and renames deterministically without leaking Python-internal names. `docs/sep2787-overt-mapping.md` updated. CHANGELOG entry under 0.39.1. pyproject.toml, src/vaara/__init__.py, and clients/ts/package.json all bumped. 28 attestation tests pass; ruff clean. The v0 test vector PR (vaaraio/modelcontextprotocol#2789, head 2a9360f, cited in modelcontextprotocol/modelcontextprotocol#2787) was regenerated with the same renames separately on 2026-05-27.
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (10)
📝 WalkthroughWalkthroughThis PR converts the SEP-2787 attestation envelope JSON serialization from snake_case to camelCase field names. The core schema serialization functions are updated, the signing and verification logic is integrated with the new schema, documentation is synchronized, tests are updated to validate the change, and version numbers are bumped to ChangesSEP-2787 camelCase Envelope Schema and Integration
🎯 2 (Simple) | ⏱️ ~10 minutes
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Summary
modelcontextprotocol/modelcontextprotocol@48c739b1; this patch updatesvaara.attestation.sep2787to emit matching JSON keys.issuer_to_dicthelper replacesdataclasses.asdict()so the issuer block sorts and renames deterministically.docs/sep2787-overt-mapping.mdfield-by-field table updated.Field renames at the JSON boundary
planner_declaredplannerDeclaredissuer_assertedissuerAssertedpayload_derivedpayloadDerivedtool_callstoolCallsserver_fingerprintserverFingerprintsecret_versionsecretVersionexp_secondsexpSecondsrequested_capabilityrequestedCapabilityprojection_digestprojectionDigestProvenance tags
sep2787-ref-v0(commit3d7af54): snake_case envelope, historical proposed-shape artefact. Preserved unchanged.sep2787-ref-v1(new, this release): camelCase envelope. Pinned for cross-repo citation againstmodelcontextprotocol/modelcontextprotocol#2787and the v0 test vector PR (vaaraio/modelcontextprotocol#2789, head2a9360f).Test plan
pytest tests/test_attestation_sep2787.py— 28/28 passruff check src/vaara/attestation/ tests/test_attestation_sep2787.py— cleanpyproject.toml0.39.0 → 0.39.1src/vaara/__init__.py0.39.0 → 0.39.1clients/ts/package.json0.39.0 → 0.39.1## [0.39.1] - 2026-05-27Summary by CodeRabbit
Version 0.39.1
plannerDeclared,issuerAsserted,payloadDerived,toolCalls,serverFingerprint) instead of previous snake_case convention.