docs/waves/transport_e2e_readiness_scorecard.md
Transport E2E Readiness Scorecard
Status: active tracking metric
Date: 2026-03-06
Owner: transport-rust + browser + gateway docs
Purpose
Track how close Waves is to a reliable end-to-end test path against:
- local Kannel gateway
- local WML/WAP server behind Kannel
- either:
transport-rustdirectly, or- browser host flow through
fetchDeck
This scorecard is not a protocol-conformance replacement. It is a practical execution-readiness metric for local and CI-like E2E validation.
Scoring model
Each gate is scored as:
1.0: implemented and usable as a repeatable signal0.5: partially present, but not yet strong enough to rely on as a gate0.0: absent
Two roll-up scores are tracked:
transport-to-kannel:transport-rust-> local Kannel -> local WML serverbrowser-to-kannel: browser/host -> transport -> local Kannel -> local WML server
Applicable gates:
transport-to-kannel:G1..G6(6.0max)browser-to-kannel:G1..G8(8.0max)
Current score
Transport-to-Kannel
Score: 6.0 / 6.0 (100%)
Browser-to-Kannel
Score: 8.0 / 8.0 (100%)
Gate table
| Gate | Description | Transport-to-Kannel | Browser-to-Kannel | Evidence |
|---|---|---|---|---|
G1 |
Local Kannel + WML stack boots reliably with one command | 1.0 |
1.0 |
make up, make status, docs/wap-test-environment/README.md |
G2 |
Real transport request can fetch through local Kannel | 1.0 |
1.0 |
transport-rust/tests/kannel_smoke.rs, browser/src-tauri/src/tests/fetch_commands.rs, make smoke-transport-wap; native-mode smoke now forces wap-net-core rather than relying on ambient bridge defaults |
G3 |
Assertions validate deck identity and normalized engine input, not just HTTP success | 1.0 |
1.0 |
transport smoke asserts deck/card markers for root + login decks; browser host smokes assert engine load, card identity, render markers, and navigation outcome |
G4 |
At least one multi-step real gateway scenario exists (redirect/login/session/navigation) | 1.0 |
1.0 |
native Kannel smoke now covers register -> login success flow at transport, host, and browser-engine levels |
G5 |
One-command runnable smoke exists for local and CI-like use | 1.0 |
1.0 |
make smoke-transport-wap now runs native-only transport, host, and browser-render smoke checks |
G6 |
Failure diagnostics are preserved automatically (gateway/server/test logs) | 1.0 |
1.0 |
scripts/transport-wap-smoke.sh now writes status/log artifacts into a temp directory and prints the path on success/failure |
G7 |
Browser path runs against real Kannel via host transport rather than mocks | n/a |
1.0 |
ignored host-native smoke in browser/src-tauri/src/tests/fetch_commands.rs forces wap-net-core and disabled fallback |
G8 |
Browser/render assertions validate visible WML outcome from real gateway-served deck | n/a |
1.0 |
browser host smokes validate real Kannel-backed render output for the root deck and the navigated menu card via native fetch in browser/src-tauri/tests/kannel_smoke.rs |
Interpretation
What the score means now
transport-rustnow has a credible native Kannel smoke gate for both baselineGETdecks and constrained WML formPOST.- browser-level real-gateway E2E is credible at the host/engine layer for root/menu navigation and register/login form submission.
- protocol-core replay readiness (
T0-22) still exceeds end-user browser realism, but live ingress evidence now matches the active profile posture for the constrained MVP lane.
What this score does not mean
- it does not prove
wap-net-coreis ready for full browser/UI parity or futurewap-net-extpromotion - it does not prove full WSP/WTP/WDP conformance
- it does not guarantee emulator/browser UX correctness
- it proves constrained connectionless form
POST, but it does not prove full connection-oriented WSP/WTP session support
Current evidence base
Existing strengths
- active profile is explicitly
wap-net-core, withgateway-bridgedretained as rollback posture, in docs/waves/NETWORK_PROFILE_DECISION_RECORD.md - local Kannel + WML stack is documented and runnable in docs/wap-test-environment/README.md
- transport-specific native smoke path exists:
- transport-rust/tests/kannel_smoke.rs
make smoke-transport-wap
- on-demand CI smoke workflow exists in docs/ci/CI_SETUP.md
- protocol-native replay harness exists in transport-rust/tests/interop_replay.rs
Main gaps
- the Kannel smoke lane is still ignored/manual rather than part of default local Rust test execution
- browser real-gateway coverage still stops at Tauri host + engine render/navigation, not frontend UI automation
- smoke artifacts are temp-dir based rather than checked into a durable report format
- non-ASCII charset-sensitive form submission is still not a proven smoke path
Recommended next threshold targets
Threshold A: credible transport E2E smoke (>= 5.0 / 6.0)
Required moves:
- met
Threshold B: credible browser E2E smoke (>= 6.5 / 8.0)
Current status: met
Required moves:
- met
Suggested follow-up ticket
Suggested ticket:
A5-01history entry fidelity follow-up
Suggested scope:
- preserve current native Kannel/browser smoke credibility while tightening history/session fidelity after network navigation
- verify browser-visible back/reload behavior stays aligned with engine/runtime history semantics
- update this scorecard only if the browser-to-kannel execution posture or signal quality changes materially
Update policy
When transport/gateway/browser integration changes materially, update:
- this scorecard
- docs/waves/NETWORK_PROFILE_DECISION_RECORD.md
- docs/waves/networking-implementation-checklist.md if promotion gates or execution posture change