docs/waves/networking-implementation-checklist.md
Networking Implementation Checklist (WAP 1.x Rewrite)
Date: 2026-03-04
Status: draft
1) Scope posture
For transport-rust, the current network goal is deterministic, in-process protocol behavior behind a stable contract boundary, while preserving browser/runtime ownership boundaries.
Current implementation posture for now:
profile_mode=wap-net-corewith the gateway bridge retained as explicit fallback and comparison lane.WDPover UDP core implementation must be operational and deterministic.- Connectionless
WSPis the strict native method path;WTPand connection-oriented WSP remain separately gated capabilities. WTLSremains phased with explicit feature flag and deterministic no-op path.
Target implementation posture:
- full strict WDP/WCMP/connectionless-WSP operation from
transport-rustwithout a mandatory external protocol dependency. - Explicit transport profile declaration with migration gates in
docs/waves/WORK_ITEMS.mdanddocs/waves/TECHNICAL_ARCHITECTURE.md. - Optional connection-oriented WSP/WTP remains modular and cannot replace the strict connectionless path.
2) Architecture contract gates
All network paths must satisfy these invariant rules:
transport-rustowns protocol parsing, transaction/session state, and error-taxonomy emission.- parsers and encoders are pure and stateless (
decode_* -> struct,encode_* -> bytes). browser/contracts/transport.tsandengine-wasm/contracts/wml-engine.tsare only transport/runtime contracts.- All protocol behavior that can affect determinism is traced with event log fields: profile, peer tuple, transaction id/session id, sequence state, and timer state.
Traceability requirement:
- each new transport behavior must map to an exact WDP/WCMP/WSP source row
when it affects the strict profile, plus an existing thematic
RQ-TRN-*orRQ-TRX-*owner. - each mapping must include a test location in
docs/waves/SPEC_TEST_COVERAGE.md; direct normative evidence must be distinguished from provisional project-authored tests.
3) Immediate implementation checklist
Execution priority override (2026-03-08 refresh):
T0-27native connectionless desktop fetch pathT0-28browser host mode selection + fallbackT0-29native Kannel smoke evidence gateM1-16payload guardrails- after
T0-27..T0-29, prioritize cross-lane runtime/compliance work over broader transport breadth
F0: Foundation and policy
- confirm
spec-processing/source-materialhas canonical transport corpus:- strict authority: effective
WAP-200,WAP-202, and effectiveWAP-203 - conditional WTP authority: effective
WAP-201 - successor context:
WAP-259,WAP-224,OMA-WAP-224_002,WAP-230, andOMA-WAP-TS-WSP - exact WDP/WCMP/WSP manifests pass
node scripts/check-wap-transport-conformance-ledgers.mjs
- strict authority: effective
- add/verify parser modules for deterministic PDU roundtrip:
wdp,wtp,wspcodecs + validation stubs
- lock transport profile constants:
- service mode(s), UDP/WTLS default posture, bearer placeholders
- acceptance gates:
T0-16source-queue canonicalization remains cleanT0-14profile decision gates authored and reviewed
- keep explicit source-pipeline mapping from queued raw input -> parsed markdown ->
source-materialpromotion in README and ticket artifacts.
F1: WDP bedrock
- finalize datagram trait (
DatagramTransport,WdpDatagram,WdpAddress,WdpError). - implement/lock UDP mapping and ports 9200-9203.
- map address/port source metadata in request/response trace context.
- test gates:
- port mapping fixture set
- malformed header/body error mapping fixture set
- acceptance:
RQ-TRN-001..004fully traceable and no regressions in request-policy flow.
F2: WCMP selected core
- select RFC 792 ICMP for the strict CDPD/IPv4 path.
- implement destination-unreachable code 3, code 4 with DF/MTU, and echo request/reply at the WDP boundary.
- keep the general-WCMP codec behind an explicit non-IP capability.
- test gates:
- direct WAP-202/RFC 792 fixtures for both selected rows and nine clauses
- malformed ICMP and profile-mismatch assertions
- acceptance:
TRN-708, exact WCMP ledger, and thematicRQ-TRX-006..008
F3: WSP connectionless service
- make connectionless mode the explicit strict profile and keep connection-oriented mode capability-gated.
- implement method invoke/reply primitives and primitive transition validation.
- implement header/token registries and deterministic unknown-token policy.
- close all eight selected WAP-203 rows before extending optional breadth.
- test gates:
- source-derived GET/POST/REPLY fixtures
- selected header-encoding and encoding-version fixtures
- acceptance:
WSP-801,WSP-802,WSP-804,WSP-805
F3a: Conditional connection-oriented WSP/WTP
- activate only when the profile explicitly claims connection-oriented WSP.
- extract the exact effective WAP-201 ledger before making a conformance claim.
- reuse existing WTP transaction/replay evidence as provisional input.
- acceptance:
- dependency-closed WAP-201/WAP-203 rows and direct normative fixtures
F4: Security path and gateway bridge bridge
- stabilize WTLS shim contract and explicit disabled-by-default behavior.
- keep gateway bridge path deterministic for HTTP/WAP gateway behavior while protocol path is behind feature gate.
- test gates:
- handshake-disabled path compatibility checks
- security-posture migration check fixture
- acceptance:
RQ-SEC-004,RQ-SEC-005, WAP networking profile gate fromT0-14
F5: Migration and integration hardening
- add protocol-profile gate assertions to CI-like fixture script path:
- required tickets and minimum layer status checks before profile promotion.
- run a cross-layer contract smoke map with
browser+engine-wasm+transport-rust. - publish explicit profile transition decision: current -> target.
- canonical record:
docs/waves/NETWORK_PROFILE_DECISION_RECORD.md - gate check command:
node scripts/check-networking-profile-gates.mjs
- canonical record:
- maintain an explicit local gateway E2E readiness score for:
transport-rust -> Kannel -> WML serverbrowser -> host transport -> Kannel -> WML server- canonical record:
docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
- acceptance:
- implementation gates
T0-08..T0-26retain explicit owners/artifacts - exact closure gates
TRN-701,TRN-702,TRN-703, andWSP-801/802/804/805pass - no behavior drift in transport contracts (
browser/contracts/transport.ts,engine-wasm/contracts/wml-engine.ts).
- implementation gates
F6: Native desktop fetch activation
- add an internal transport-mode selector at the
fetch_deck_in_processboundary. - implement a narrow native executor for connectionless WSP
GET/REPLYover WDP/UDP. - keep legacy gateway bridge path available as additive fallback.
- prove browser-host integration without moving protocol logic into browser code.
- acceptance:
- desktop/browser can load baseline Kannel-served decks through the native lane
- native mode and fallback mode are both explicit and test-backed
- no contract changes are required for the initial slice
4) Known adjacent-but-deferred transport context
WAP-204-WAPOverGSMUSSDandWAP-204_103are deferred: transport-rewrite scope is currently protocol-layer only and these docs are bearer-adaptation specific (docs/waves/OUT_OF_SCOPE_DOMAIN_SPEC_REVIEW.md+T0-14).WAP-120-WAPCachingModis outside the transport layer but mandatory for the selected user-agent profile; exact closure is owned byWAE-603.WAP-213*pictogram/display adjuncts are deferred: adjacent rendering/content behavior is UX-adjacent and intentionally excluded from core WSP/WTP/WDP path (T0-16canonicalization +T0-17).WAP-175,WAP-227,WAP-231, andWAP-204messaging/cache-adjacent families stay out of scope for now because they add profile-adapter behavior not yet required by transport milestones (T0-14profile gates +T0-17scope lock).- Bearer adaptation beyond UDP (
SMS/packet tunnelvariants) is deferred to gateway/adapter modules with explicitdeferred/out-of-scopeflags and not-implemented stubs.
5) Execution alignment with project docs
docs/waves/WORK_ITEMS.mdis the execution source of truth for sequencing (T0-08..T0-26).docs/waves/TRANSPORT_SPEC_TRACEABILITY.mdand..._ADJACENT_...are the requirement sources.docs/waves/SPEC_TEST_COVERAGE.mdhosts acceptance status and must remain synchronized on every migration gate.docs/waves/TECHNICAL_ARCHITECTURE.mdshould describe transport profile states before each milestone gate.docs/waves/NETWORK_PROFILE_DECISION_RECORD.mdis the single canonical profile decision record and rollback source.