@@ -9,55 +9,132 @@ work are:
99- RFC 9622: An Abstract Application Programming Interface (API) for Transport Services
1010- RFC 9623: Implementing Interfaces to Transport Services
1111
12- Initial observations
13- --------------------
14-
15- - The public API is centered on ``Preconnection ``, ``Connection ``, and
16- ``Listener ``, which is compatible with the overall TAPS architecture, but the
17- available operations and event coverage are much smaller than the final API.
18- - Transport properties are still modeled using an older, smaller property set
19- and do not yet include the full RFC 9622 property catalog.
20- - Candidate gathering and racing exist, but they currently implement a much
21- simpler protocol ranking scheme than the branch-sorting and cache-informed
22- candidate selection described in RFC 9623.
23- - Optional YANG and multicast integrations are wired into the repository, but
24- they are not yet packaged as cleanly optional features for modern installs.
25-
26- Suggested phases
27- ----------------
28-
29- Phase 1: Modernize the developer surface
30-
31- - keep package importable on current Python versions
32- - declare dependencies and optional features explicitly
33- - make automated tests runnable in a clean environment
34-
35- Phase 2: Define the spec delta
36-
37- - map every RFC 9622 API object, method, callback, property, and event to
38- current implementation status
39- - classify each item as implemented, partial, missing, or draft-only legacy
40-
41- Phase 3: Reconcile the core object model
42-
43- - make Preconnection state immutable after Initiate or Listen
44- - add a model for Connection Groups and cloned Connections
45- - distinguish Selection Properties from Connection Properties
46-
47- Phase 4: Rework establishment and racing
48-
49- - gather candidate paths, endpoints, and protocol stacks separately
50- - sort branches using prohibited, required, preferred, and avoided properties
51- - incorporate cached state and policy hooks per RFC 9623
52-
53- Phase 5: Expand transfer semantics
54-
55- - extend message contexts and message properties
56- - align send and receive events with the RFC 9622 lifecycle
57- - support additional establishment patterns such as InitiateWithSend and Rendezvous
58-
59- Phase 6: Grow transport and security coverage
60-
61- - refresh TLS handling against the RFC security parameter model
62- - assess protocol support for QUIC, SCTP, multipath, and multistreaming
63- - add targeted conformance and interoperability tests
12+ Current status
13+ --------------
14+
15+ The repository is no longer at its original draft-era baseline. It now has a
16+ usable RFC-facing core, but it is still a partial implementation of RFC 9622.
17+ The status labels below are practical engineering labels rather than formal
18+ conformance claims:
19+
20+ - ``implemented `` means the repo has a real, tested implementation of the
21+ feature area
22+ - ``partial `` means a meaningful subset exists, but the RFC surface is broader
23+ - ``missing `` means the feature is not meaningfully present yet
24+
25+ RFC 9622 checklist
26+ ------------------
27+
28+ +---------------------------------------------+-------------+--------------------------------------------------------------+
29+ | API area | Status | Notes |
30+ +=============================================+=============+==============================================================+
31+ | ``Preconnection `` object | partial | Endpoints, properties, security, YANG loading, ``initiate ``, |
32+ | | | ``listen ``, and ``rendezvous `` are implemented; full RFC |
33+ | | | API still broader. |
34+ +---------------------------------------------+-------------+--------------------------------------------------------------+
35+ | ``Connection `` object | partial | Send/receive/close, property access, clone support, |
36+ | | | lifecycle waiters, batching, and expiration exist. |
37+ +---------------------------------------------+-------------+--------------------------------------------------------------+
38+ | ``Listener `` object | partial | ``wait_listening() ``, ``accept() ``, ``stop() ``, error |
39+ | | | propagation, and lifecycle state are present. |
40+ +---------------------------------------------+-------------+--------------------------------------------------------------+
41+ | ``ConnectionGroup `` | partial | Group-wide close/abort and shared connection-property |
42+ | | | propagation exist, but semantics are still lightweight. |
43+ +---------------------------------------------+-------------+--------------------------------------------------------------+
44+ | Selection Properties | partial | Clear split from connection properties with RFC-style |
45+ | | | canonical names and a stronger security property set. |
46+ +---------------------------------------------+-------------+--------------------------------------------------------------+
47+ | Connection Properties | partial | Query/update support exists, but the RFC catalog is not |
48+ | | | complete yet. |
49+ +---------------------------------------------+-------------+--------------------------------------------------------------+
50+ | Message Properties / Context | partial | ``msgPriority ``, ``msgOrdered ``, ``msgLifetime ``, |
51+ | | | ``safelyReplayable ``, ``final ``, batching, and addressing |
52+ | | | metadata are implemented. |
53+ +---------------------------------------------+-------------+--------------------------------------------------------------+
54+ | ``Initiate `` | partial | Real candidate racing, failure propagation, and waiters |
55+ | | | exist, but not all RFC establishment behaviors. |
56+ +---------------------------------------------+-------------+--------------------------------------------------------------+
57+ | ``InitiateWithSend `` | implemented | Present and backed by runtime behavior, including |
58+ | | | pre-establishment expiration handling. |
59+ +---------------------------------------------+-------------+--------------------------------------------------------------+
60+ | ``Listen `` | partial | Works for TCP, UDP, and TLS listeners with explicit |
61+ | | | lifecycle state. |
62+ +---------------------------------------------+-------------+--------------------------------------------------------------+
63+ | ``Rendezvous `` | partial | Implemented with simultaneous local listen and active |
64+ | | | initiate, but still without broader rendezvous policy |
65+ | | | semantics. |
66+ +---------------------------------------------+-------------+--------------------------------------------------------------+
67+ | ``Clone `` | partial | Exists and integrates with connection groups, but semantics |
68+ | | | are not fully RFC-complete. |
69+ +---------------------------------------------+-------------+--------------------------------------------------------------+
70+ | ``Send `` | partial | Message context, expiration, batch send, queueing, |
71+ | | | and priority scheduling are implemented. |
72+ +---------------------------------------------+-------------+--------------------------------------------------------------+
73+ | ``Receive `` | partial | Awaitable and callback-driven receive paths both exist, |
74+ | | | including partial stream delivery. |
75+ +---------------------------------------------+-------------+--------------------------------------------------------------+
76+ | Close / Abort | partial | Connection and group close/abort exist with improved |
77+ | | | lifecycle handling, but not the full RFC event surface. |
78+ +---------------------------------------------+-------------+--------------------------------------------------------------+
79+ | Add/Remove Local and Remote Endpoints | partial | Implemented on ``Connection `` with basic endpoint merging |
80+ | | | and removal behavior. |
81+ +---------------------------------------------+-------------+--------------------------------------------------------------+
82+ | Property inspection and mutation | partial | Connection, preconnection, listener, and message property |
83+ | | | accessors exist, but not yet a full RFC API map. |
84+ +---------------------------------------------+-------------+--------------------------------------------------------------+
85+ | Ready / Closed / Error lifecycle events | partial | Much more explicit than the original code; still not a |
86+ | | | complete RFC event matrix. |
87+ +---------------------------------------------+-------------+--------------------------------------------------------------+
88+ | Sent / SendError / Expired events | partial | Sent and send-error callbacks exist, and expired messages |
89+ | | | now trigger real runtime behavior. |
90+ +---------------------------------------------+-------------+--------------------------------------------------------------+
91+ | Received / Partial Received events | partial | Present and now carry structured message context. |
92+ +---------------------------------------------+-------------+--------------------------------------------------------------+
93+ | Security Parameters | partial | Trust CA, identity, ALPN, SNI, cipher suites, and peer-auth |
94+ | | | control exist, but not the full RFC security surface. |
95+ +---------------------------------------------+-------------+--------------------------------------------------------------+
96+ | Framers | partial | Supported with working helper API and message-context |
97+ | | | propagation; still relatively lightweight overall. |
98+ +---------------------------------------------+-------------+--------------------------------------------------------------+
99+ | QUIC / SCTP | missing | Not implemented. |
100+ +---------------------------------------------+-------------+--------------------------------------------------------------+
101+ | Multistreaming / Multipath runtime support | missing | Property names exist in part, but real transport/runtime |
102+ | | | support is not there yet. |
103+ +---------------------------------------------+-------------+--------------------------------------------------------------+
104+ | YANG alignment | partial | Existing YANG examples still work, but the final RFC model |
105+ | | | is not fully mapped. |
106+ +---------------------------------------------+-------------+--------------------------------------------------------------+
107+
108+ Where the repository is strongest
109+ ---------------------------------
110+
111+ - The core object model is now much cleaner and better structured.
112+ - The establishment path is substantially closer to RFC 9623 than the original
113+ codebase.
114+ - TLS handling is real rather than nominal, and the test PKI is current.
115+ - Message lifecycle behavior is now materially better, including receive
116+ waiters, expiration, batching, and priority-aware queue flush.
117+ - The test and lint baseline is healthy enough to support further spec work.
118+
119+ Largest remaining RFC 9622 gaps
120+ -------------------------------
121+
122+ - Complete the RFC 9622 property catalog, especially the remaining connection
123+ and message properties.
124+ - Expand the event model and advisory-error surface beyond the current subset.
125+ - Complete the remaining event and advisory-error surface around the now
126+ broader establishment API.
127+ - Decide which advanced transports are genuinely in scope for this repository,
128+ especially QUIC, SCTP, multistreaming, and multipath.
129+ - Build a more systematic conformance matrix and targeted interoperability
130+ tests.
131+
132+ Recommended next steps
133+ ----------------------
134+
135+ 1. Complete the property catalog section by section from RFC 9622.
136+ 2. Fill out the remaining event and advisory-error semantics.
137+ 3. Extend the now-present API surface with fuller RFC event and policy
138+ semantics, especially around groups and advisory errors.
139+ 4. Decide whether this repository will grow into a fuller transport
140+ implementation or remain a cleaned-up reference subset.
0 commit comments