33This document compares WAMP protocol message attributes as defined in the WAMP specification
44against their implementation in Autobahn-Python.
55
6+ ## Table of Contents
7+
8+ ### Summary
9+ - [ Summary Matrix] ( #summary-matrix )
10+ - [ Phase 1: Pub/Sub Messages (Complete)] ( #phase-1-pubsub-messages-complete )
11+ - [ Phase 2: RPC Messages (In Progress)] ( #phase-2-rpc-messages-in-progress )
12+ - [ Phase 1+2 Summary] ( #phase-12-summary )
13+
14+ ### Phase 1: Pub/Sub Messages
15+ - [ PUBLISH.Options] ( #publishoptions )
16+ - [ EVENT.Details] ( #eventdetails )
17+ - [ SUBSCRIBE.Options] ( #subscribeoptions )
18+ - [ SUBSCRIBED] ( #subscribed )
19+ - [ PUBLISHED] ( #published )
20+ - [ UNSUBSCRIBE.Options] ( #unsubscribeoptions )
21+ - [ UNSUBSCRIBED] ( #unsubscribed )
22+
23+ ### Phase 2: RPC Messages
24+ - [ CALL.Options] ( #calloptions )
25+ - [ RESULT.Details] ( #resultdetails )
26+ - [ REGISTER.Options] ( #registeroptions ) (TODO)
27+ - [ REGISTERED] ( #registered ) (TODO)
28+ - [ UNREGISTER.Options] ( #unregisteroptions ) (TODO)
29+ - [ UNREGISTERED] ( #unregistered ) (TODO)
30+ - [ INVOCATION.Details] ( #invocationdetails ) (TODO)
31+ - [ YIELD.Options] ( #yieldoptions ) (TODO)
32+ - [ ERROR.Details] ( #errordetails ) (TODO)
33+
34+ ### Appendix
35+ - [ Recommendations] ( #recommendations )
36+ - [ Version Information] ( #version-information )
37+
38+ ---
39+
640## Summary Matrix
741
42+ ### Phase 1: Pub/Sub Messages (Complete)
43+
844| Message Type | Matched | Spec-Only | Implementation-Only | Naming Differences |
945| --------------| ---------| -----------| ---------------------| -------------------|
1046| PUBLISH.Options | 9 | 1 (+4 ppt_ * ) | 2 (+3 enc_ * ) | E2EE: ppt_ * vs enc_ * |
@@ -15,6 +51,35 @@ against their implementation in Autobahn-Python.
1551| UNSUBSCRIBE.Options | 0 | 0 | 1 | None |
1652| UNSUBSCRIBED | N/A | N/A | N/A | No Details (basic) |
1753
54+ ### Phase 2: RPC Messages (In Progress)
55+
56+ | Message Type | Matched | Spec-Only | Implementation-Only | Naming Differences |
57+ | --------------| ---------| -----------| ---------------------| -------------------|
58+ | CALL.Options | 2 | 1 (+4 ppt_ * ) | 5 (+3 enc_ * ) | E2EE: ppt_ * vs enc_ * |
59+ | RESULT.Details | 1 | 0 (+4 ppt_ * ) | 4 (+3 enc_ * ) | E2EE: ppt_ * vs enc_ * |
60+ | REGISTER.Options | - | - | - | TODO |
61+ | REGISTERED | - | - | - | TODO |
62+ | UNREGISTER.Options | - | - | - | TODO |
63+ | UNREGISTERED | - | - | - | TODO |
64+ | INVOCATION.Details | - | - | - | TODO |
65+ | YIELD.Options | - | - | - | TODO |
66+ | ERROR.Details | - | - | - | TODO (shared PubSub+RPC) |
67+
68+ ### Phase 1+2 Summary
69+
70+ ** Spec Compliance:**
71+ - ✅ Core functionality: All basic profile features implemented
72+ - ⚠️ Missing disclosure initiation: ` disclose_me ` not implemented (PUBLISH, CALL)
73+ - ⚠️ E2EE naming: Uses ` enc_* ` prefix instead of spec's ` ppt_* ` prefix
74+ - ⚠️ Missing E2EE: ` ppt_scheme ` not implemented (required in spec)
75+ - ⚠️ Missing trustlevel: ` EVENT.Details.trustlevel ` not implemented
76+
77+ ** Implementation Extensions:**
78+ - ✅ Router-to-router forwarding: ` forward_for ` (all messages with Options/Details)
79+ - ✅ Transaction deduplication: ` transaction_hash ` (PUBLISH, CALL)
80+ - ✅ Disclosure metadata: Router-added ` publisher* ` , ` caller* ` , ` callee* ` attributes
81+ - ✅ Event acknowledgement: ` x_acknowledged_delivery ` (EVENT - needs naming review)
82+
1883## PUBLISH.Options
1984
2085### Matched Attributes (9)
@@ -507,6 +572,47 @@ RESULT.Details has similar patterns as CALL.Options:
507572
508573## Version Information
509574
575+ ### Analysis Status
576+
577+ ** Phase 1: Pub/Sub Messages** ✅ ** COMPLETE**
578+ - PUBLISH.Options ✅
579+ - EVENT.Details ✅
580+ - SUBSCRIBE.Options ✅
581+ - SUBSCRIBED ✅
582+ - PUBLISHED ✅
583+ - UNSUBSCRIBE.Options ✅
584+ - UNSUBSCRIBED ✅
585+
586+ ** Phase 2: RPC Messages** 🚧 ** IN PROGRESS**
587+ - CALL.Options ✅
588+ - RESULT.Details ✅
589+ - REGISTER.Options ⏳ TODO
590+ - REGISTERED ⏳ TODO
591+ - UNREGISTER.Options ⏳ TODO
592+ - UNREGISTERED ⏳ TODO
593+ - INVOCATION.Details ⏳ TODO
594+ - YIELD.Options ⏳ TODO
595+
596+ ** Phase 3: Shared Messages** ⏳ ** TODO**
597+ - ERROR.Details (used in both Pub/Sub and RPC)
598+
599+ ### Test Coverage
600+
601+ ** SerDes Conformance Tests:**
602+ - Total: 254 passed, 35 skipped
603+ - Phase 1 (Pub/Sub): 218 tests (8 message types × ~ 27 tests/type avg)
604+ - Phase 2 (RPC so far): 24 tests (2 message types × 12 tests/type)
605+ - Serializers tested: JSON, MsgPack, CBOR, UBJSON (FlatBuffers skipped)
606+
607+ ### Source Information
608+
510609- ** WAMP Spec** : /home/oberstet/work/wamp/wamp-proto/rfc/text/
511610- ** Autobahn-Python** : /home/oberstet/work/wamp/autobahn-python/autobahn/wamp/message.py
512- - ** Analysis Date** : 2025-11-17 (Phase 1 complete: all Pub/Sub messages analyzed; Phase 2 in progress: RPC messages)
611+ - ** Test Vectors** : /home/oberstet/work/wamp/wamp-proto/testsuite/singlemessage/basic/
612+ - ** Analysis Date** : 2025-11-17
613+ - ** Last Updated** : Phase 2 - CALL/RESULT complete
614+
615+ ### Related Issues
616+
617+ - ** wamp-proto#556** : Add comprehensive test vectors for all WAMP message types
618+ - ** autobahn-python#1764** : Add SerDes conformance tests using wamp-proto test vectors
0 commit comments