docs/waves/spec_test_coverage.md
Waves Spec Test Coverage Matrix
Version: v0.2 Status: active coverage ledger
Purpose
Map requirement groups to current or planned test assets so acceptance criteria stay executable and visible across projects.
Legend:
covered: implemented and test path existspartial: some checks exist; more coverage requiredplanned: no test yet, ticketed/planned
Engine (engine-wasm)
| Requirement Group | Status | Current/Planned Test Location |
|---|---|---|
RQ-RMK-001 deck/card parse baseline |
covered |
Rust WML-202 parser/runtime tests cover root/head/access/meta/card structure, root/card language, referring-URI policy, and source content order; WASM parity includes wasm_wml_202_access_and_language_boundary_matches_native_behavior; host boundary tests cover referring-URI handoff and denial atomicity; executable story: wml-202-template-shadowing.wml |
RQ-RMK-002 task model and template/card shadowing |
partial |
WML-202 parser/runtime fixtures in engine-wasm/engine/src/parser/wml_parser/tests.rs and engine-wasm/engine/src/engine_tests/actions_timers.rs; executable engine-wasm/examples/source/wml-202-template-shadowing.wml + .flow.json; pnpm test:story WML-202. Template inheritance and shadowing are covered; broader optional do presentation remains open. |
RQ-RMK-003 fragment/history nav basics |
covered |
Rust engine tests cover fragment transitions + navigateBack and WML-202 go-only newcontext variable/history/private-state reset; wml-202-template-shadowing.flow.json proves empty history after newcontext; host samples also include basic.wml, missing-fragment.wml, and history-back-stack.wml |
RQ-RMK-006 anchor shorthand behavior |
partial |
host sample external-navigation-intent.wml; deeper parser fixture coverage planned |
RQ-RMK-007 WBXML decode boundary ownership |
covered |
contract behavior via loadDeckContext metadata and docs, including native m1_02_load_deck_context_public_api_sets_metadata_and_state, wasm wrapper checks in engine-wasm/engine/src/engine_wasm_bindings_tests.rs, and direct schema-v2 WDP SDU -> fetch/WBXML decode -> native engine state/render parity in wml_203_reconstructed_wdp_sdu_matches_text_engine_behavior |
RQ-RMK-009 compatibility/robustness behavior |
partial |
host sample parser-robustness.wml; WML-203 parser tests classify canonical versus alternate external DTDs, reject malformed identity combinations, and retain recognized content nested in unknown markup; strict prologue presence and full DTD validation remain planned |
RQ-RMK-012 WML user-agent error handling |
partial |
WML-205 structured load diagnostics and atomic rejected-load tests in engine-wasm/engine/src/engine_tests/wml_load_errors.rs, WASM parity in engine-wasm/engine/src/engine_wasm_bindings_tests.rs, and executable alternate-DTD recovery story engine-wasm/examples/source/wml-205-error-recovery.wml; exhaustive WML error enforcement plus fetch/access-control task-failure atomicity remain open |
RQ-WAE-016, RQ-WAE-017 history and back semantics |
covered |
engine navigateBack baseline remains covered in engine-wasm/engine/src/engine_tests/actions_timers.rs (navigate_back_restores_previous_card, navigate_back_returns_false_when_history_empty) and engine-wasm/engine/src/engine_tests/traces_public_api.rs (m1_02_handle_key_render_and_navigate_back_public_api_flow); browser host-history/request-identity coverage is in browser/frontend/src/session-history.test.ts, browser/frontend/src/app/navigation-state.load.test.ts, and browser/frontend/src/app/navigation-state.history.test.ts, including repeated-URL entries, method/header/post-aware back replay, and deterministic restore/fallback behavior |
RQ-WMLS-001..003 external-call/pragma/url invocation model |
partial |
Phase W fixtures + engine tests for script: link resolution and deferred invocation boundaries; access-control/pragma conformance follow-up tracked in W0-08 + W1-03 |
RQ-WMLS-004..006 function/local/conversion semantics |
partial |
engine WaveScript VM tests in engine-wasm/engine/src/wavescript/vm.rs + vm_tests.rs and invocation tests in engine-wasm/engine/src/engine_tests.rs; broader spec parity closure tracked in W1-04 |
RQ-WMLS-008..010 bytecode format/verification/error model |
partial |
decoder/VM tests under engine-wasm/engine/src/wavescript/ prove only the project-specific nine-opcode safety skeleton; they are provisional evidence and do not decode WAP-193 headers, pools, multi-byte fields, or instruction encoding; direct source-derived .wmlsc fixtures remain in W1-02 |
RQ-WMLS-011 WMLScript content-type routing |
planned |
Target files: transport-rust/src/responses.rs, transport-rust/tests/fixtures/transport/, browser/src-tauri/src/lib.rs; command: cd transport-rust && cargo test --lib then cd browser/src-tauri && cargo test; tracked in W1-01 |
RQ-WMLS-017..022 WMLBrowser/dialog/timer/refresh semantics |
partial |
engine-wasm/engine/src/wavescript/stdlib/wmlbrowser.rs + wmlbrowser_tests.rs and runtime effect tests in engine-wasm/engine/src/engine_tests.rs, including m1_02_script_invocation_public_outcome_regression, wmlbrowser_get_current_card_returns_fragment_when_context_exists, wmlbrowser_get_current_card_returns_invalid_without_context, wmlbrowser_new_context_clears_vars_and_history_and_prev_has_no_effect, and timer_expiry_invokes_script_and_publishes_dialog_in_order; engine-wasm/examples/source/timer-script-dialog.wml + .flow.json provide executable pnpm test:story W0-05 evidence for runtime timer expiry invoking a script and publishing DIALOG_ALERT in deterministic order. Strict Dialogs IDs/conversions, interactive results, refresh optionality, and full WMLS-5 remain open. |
WAP-191 section 11 text/layout semantics (p, br, table, pre, img) |
planned |
Target files: engine-wasm/engine/src/render/flow_layout.rs, engine-wasm/engine/tests/fixtures/phase-a/; command: cd engine-wasm/engine && cargo test; tickets B5-02, B5-03, C5-01, C5-02 |
WAP-191 section 12.5 inter-card process ordering (go/prev/refresh/noop) |
covered |
engine runtime + parser coverage in engine-wasm/engine/src/engine_tests.rs (fixture_accept_*_trace_order_is_deterministic, enter_accept_noop_binding_is_inactive_and_keeps_current_card_and_history, onenterforward_noop_binding_is_inactive_and_keeps_navigation_state) and parser action tests in engine-wasm/engine/src/parser/wml_parser/tests.rs; browser host-flow assertions in browser/frontend/src/app/navigation-state.test.ts (emits deterministic state-event order for host-history back fallback, keeps host history pointer stable when history-back transport load fails, replays host back using stored request method and request policy, header-aware host history replay) plus Tauri host integration path browser/src-tauri/src/lib.rs (tauri_apply_accept_noop_refresh_prev_and_error_paths_are_deterministic) confirm deterministic forward/back/refresh/noop/error behavior and request-policy handoff evidence |
Effective WAP-191 section 15 + SIN 105 conformance ID closure (76 actor-specific IDs) |
partial |
SCR ledger: spec-processing/source-manifests/wap-1.2.1-wml-scr.json; clause ledger: spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json; commands: node scripts/check-wap-conformance-ledger.mjs and node scripts/check-wap-selected-normative-clauses.mjs; all 39 selected rows expand into 174 anchored clauses, with 56 direct fixture-backed clauses including the completed 30-clause WML-202 tranche; optional capability and remaining parent rows stay open |
| Effective WAP-190 + SIN WAE SCR closure (86 active IDs) | partial |
SCR ledger: spec-processing/source-manifests/wap-1.2.1-wae-scr.json; clause ledger: spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json; WAESpec:MCF selects 11 client rows expanded into 39 clauses, with 5 implemented / 3 partial / 3 missing and direct tests linked to 8; Basic auth, generic WBXML media type, script bytecode media routing, and direct fixture execution remain open |
| Effective WAP-192 + SIN 105 WBXML SCR closure (15 actor-specific IDs) | partial |
SCR ledger: spec-processing/source-manifests/wap-1.2.1-wbxml-scr.json; clause ledger: spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json; WBXML:MCF selects 3 rows expanded into 47 client-applicable anchored clauses; 42 fixed-outcome fixtures cite and implement all 47, the encoder-only unrepresentable-name clause remains outside the selected profile, and the parent-row audit stays 0 implemented / 3 partial / 0 missing |
| Effective WAP-193_101 WMLScript SCR closure (112 actor-specific IDs) | partial |
SCR ledger: spec-processing/source-manifests/wap-1.2.1-wmlscript-scr.json; clause ledger: spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json; WMLScript:MCF selects 41 mandatory interpreter rows expanded into 107 clauses with 0 implemented / 23 partial / 18 missing; 23 local tests are provisional only and direct normative coverage remains 0/41 |
| Effective WAP-194 + SIN 103 Libraries SCR closure (95 IDs) | partial |
SCR ledger: spec-processing/source-manifests/wap-1.2.1-wmlscript-libraries-scr.json; clause ledger: spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json; WMLScriptLibs:MCF selects 80 mandatory interpreter rows expanded into 211 clauses with 0 implemented / 14 partial / 66 missing; direct normative coverage remains 0/80; source-exact WMLSSL048 is preserved |
| WAP-120 caching SCR closure (11 actor-specific IDs) | partial |
Ledger: spec-processing/source-manifests/wap-1.2.1-caching-scr.json; WAPCachingMod:MCF selects 5 mandatory user-agent rows with 0 implemented / 3 partial / 2 missing; direct normative coverage remains 0/5; the current no-storage behavior is only a provisional zero-byte-cache profile; command: node scripts/check-wap-caching-conformance-ledger.mjs |
Host sample (engine-wasm/host-sample)
Executable-story accounting
The canonical corpus now contains 32 WML examples. Before the simulator coverage synchronization it had
9 adjacent companions containing 11 executable stories: 6 host-sample and 5 waves-browser.
The synchronized corpus has 22 companions containing 24 executable stories: 18 host-sample and
6 waves-browser. Therefore 22 examples have executable evidence and 10 remain intentionally
without a companion. A WML metadata testing-ac checklist is prose acceptance guidance only and
is never counted as an executable story.
The regression priorities follow the QA test-planner convention:
P0: deterministic navigation, history/context, task ordering, rollback, and state-integrity paths that must pass on every story run.P1: major form, script, timer, and browser-integration paths that should run with the full simulator regression lane.P2: useful but duplicated or lower-risk host-visible demonstrations. These remain explicit gaps when a companion would add more maintenance than boundary evidence.
Story preconditions are Node 22.22.1, pnpm 10.23.0, a current web-target WASM package, and
Playwright Chromium. Each flow declares its initial state and setup, then pairs every action with
the expected runtime state, trace subsequence, semantic render, status, or Waves session result.
The pass condition is exact mapping validation plus all selected expectations passing with no
unexpected browser diagnostics.
Example and flow inventory
Classification values for examples without flows are the required audit classes: direct means
stable and directly automatable with the current DSL; capability means stable but blocked on a
small reusable harness capability; manual means intentionally exploratory/manual-only; and
superseded records the executable scenario that already proves the valuable boundary.
| Example ID | Work-item / spec mappings | Priority and host visibility | Executable evidence / target | Classification or honest gap |
|---|---|---|---|---|
acceptErrorRollback |
R0-02 / WML-18, WML-R-017 |
P0, stable host-visible | manual only | superseded: rollback and post-error Back recovery are exercised by actionsTaskOrderRollback/accept-go-prev-refresh-and-rollback. |
acceptNoopOrdering |
R0-02 / WML-18, WML-R-012, WML-R-015, WML-R-017 |
P0, stable host-visible | accept-noop-preserves-navigation-state (host-sample) |
Automated noop state preservation and Back recovery; broader accept ordering is intentionally split to the task-order flow. |
actionsDoOnevent |
W0-01 / RQ-WMLS-018 |
P1, stable host-visible | manual only | superseded: accept dispatch is covered by the task-order story and chained forward entry by the card-entry story. |
actionsPrevTaskModel |
A5-02 / WML-R-012, WML-R-015 |
P1, stable host-visible | manual only | superseded: accept prev is covered by the task-order story; backward-entry dispatch is covered by the card-entry story. |
actionsRefreshRollback |
A5-02 / WML-R-012, WML-R-015, WML-R-017 |
P0, stable host-visible | manual only | superseded: refresh stability and failed-entry rollback are covered by the task-order story. |
actionsTaskOrderRollback |
A5-02 / WML-R-012, WML-R-015, WML-R-017 |
P0, stable host-visible | accept-go-prev-refresh-and-rollback (host-sample) |
Automated go, prev, refresh, failure rollback, trace ordering, and post-error Back recovery. |
basic |
A2-01, A2-02 / WML-R-006, WML-R-007 |
P0, stable host-visible | fragment-and-external-intent (host-sample); waves-fragment-and-external-intent (waves-browser) |
Automated engine boundary plus real Waves keyboard/render integration. |
cardEntryForwardBackward |
A2-03 / WML-R-008 |
P0, stable host-visible | forward-entry-and-backward-reentry (host-sample) |
Automated forward-entry transit and backward re-entry redirect with ordered traces. |
externalNavigationIntent |
A2-02 / WML-R-007 |
P2, stable host-visible | manual only | direct: current DSL can automate the relative/absolute/fragment matrix, but the P0 external-intent boundary is already proven by basic; retain as focused manual diagnosis. |
fieldOpenwave2011Navigation |
A1-03, A2-01 / WML-R-002, WML-R-006 |
P2, stable host-visible | manual only | direct: legacy-style source ordering and navigation are automatable, but fragment/external outcomes duplicate basic; retain as realism/exploration corpus. |
formsSelectLocal |
A5-05, A5-06 / WML-R-019, RQ-RMK-003, RQ-RMK-008 |
P1, stable host-visible | manual only | superseded: select cycling/commit is executable in wml204SelectSemantics; Waves focus integration and exact POST capture are executable in formsSelectNavigationLocal. |
formsSelectNavigationLocal |
A5-05, A5-06 / WML-R-019, RQ-RMK-003, RQ-RMK-008 |
P1, browser-session visible | waves-merged-select-and-input-edit (waves-browser) |
Automated real keyboard select/input editing, exact form payload, local intent capture, and no-fetch status. |
formsTextSubmitLocal |
A5-04, A5-06 / WML-R-019, RQ-RMK-008 |
P1, browser-session visible | waves-text-edit-and-local-submit-intent (waves-browser) |
Automated text/password editing, masking, commit, exact POST payload, and local intent capture. |
historyBackProcessOrder |
R0-02, R0-03 / WML-18, WML-07, WML-R-008 |
P0, stable host-visible | multi-card-back-process-order (host-sample) |
Automated two-level unwind and empty-history terminal result. |
historyBackStack |
A2-03 / WML-R-008 |
P0, stable host-visible | fragment-back-and-empty-history (host-sample); waves-fragment-back-and-empty-history (waves-browser) |
Automated engine boundary plus real Waves Backspace/session status. |
missingFragment |
A2-01 / WML-R-006 |
P0, browser-session visible | waves-network-missing-fragment-error (waves-browser) |
Automated network-fixture load, stable error state, render continuity, and session error reporting. |
onenterbackwardReentry |
A2-03 / WML-R-008 |
P1, stable host-visible | manual only | superseded: cardEntryForwardBackward/forward-entry-and-backward-reentry proves the same backward-entry redirect and trace boundary. |
parserRobustness |
A1-01, A1-03 / WML-R-001, WML-R-020 |
P2, stable host-visible | manual only | direct: load/navigation is expressible, but unsupported-markup classification is parser-internal and remains better proven by lower-level fixtures; do not infer executable coverage from successful rendering. |
scriptLinkExecution |
W0-01, W0-03 / RQ-WMLS-001, RQ-WMLS-008 |
P1, stable host-visible | script-link-success-and-navigation-continuity (host-sample) |
Automated script success/trap state, ordered trace, and subsequent fragment navigation. |
timerHostClockLifecycle |
A5-03 / WML-R-014 |
P1, stable host-visible | nonzero-timer-host-clock-expiry (host-sample) |
Automated nonzero start, pre-expiry host ticks, single expiry, ontimer dispatch, and final navigation. |
timerOntimerImmediate |
A5-03 / WML-R-014 |
P1, stable host-visible | zero-timer-dispatch (host-sample) |
Automated zero-value timer dispatch at card entry; distinct from the nonzero lifecycle story. |
timerScriptDialog |
W0-05 / RQ-WMLS-022 |
P1, stable host-visible | timer-expiry-script-dialog-order (host-sample) |
Automated timer-to-script-to-dialog publication order; distinct from navigation timers. |
wavescriptGoCancel |
W0-04 / RQ-WMLS-018 |
P1, stable host-visible | script-go-cancel-clears-pending-navigation (host-sample) |
Automated canceled pending navigation, successful script outcome, and unchanged card/intent. |
wavescriptNavOrder |
W0-04 / RQ-WMLS-018 |
P1, stable host-visible | script-navigation-order-and-external-outcome (host-sample) |
Automated go/prev last-call-wins fragment and external outcomes. |
wavescriptRefreshPolicy |
W0-04 / RQ-WMLS-017, RQ-WMLS-021 |
P1, stable host-visible | script-refresh-without-navigation (host-sample) |
Automated variable mutation, refresh request, successful script result, and stable card/focus. |
wml202TemplateShadowing |
R0-04, R0-12, C5-03, WML-202 / RQ-RMK-001, RQ-RMK-002, RQ-RMK-003 |
P0, stable host-visible | template-inherit-override-and-noop-mask (host-sample) |
Automated valid head/access/meta/language load, deck-template inheritance, same-name card override, noop masking, and newcontext history clearing. |
wml203WbxmlParity |
WML-203 / WBXML-C-001, WBXML-C-010, WBXML-C-011, WML-C-17 |
P1, stable host-visible text-deck boundary | canonical-doctype-deck-render (waves-browser) |
Automated paired text-deck state/render proof through the WASM engine; the direct schema-v2 WDP SDU -> transport decode -> native engine comparison remains in the Rust integration test. |
wml204ControlValidation |
B5-01, R0-04, WML-204 / WML-C-28, WML-C-33, WML-C-41, WML-C-43 |
P1, browser-session visible | waves-input-rejection-retry-and-password-state (waves-browser) |
Automated transparent fieldset-child processing, rejection atomicity, retry draft, password masking, commit, and vdata proof; optional fieldset capability status remains not assessed. |
wml204SelectSemantics |
R0-04, C5-05, WML-204 / WML-C-40, WML-C-41, WML-C-43 |
P1, stable host-visible | initialization-and-user-commit (host-sample) |
Automated nested-optgroup document-order processing, initialization, draft isolation, commit, and variable result; optional optgroup capability status remains not assessed. |
wmlbrowserContextFidelity |
R0-03, W0-07 / RQ-WMLS-019, RQ-WMLS-020 |
P0, stable host-visible | current-card-and-context-reset (host-sample) |
Automated current-card lookup before/after navigation plus newContext variable/history reset and prev suppression. |
wmlbrowserVarNav |
W0-04 / RQ-WMLS-017, RQ-WMLS-018 |
P1, stable host-visible | variable-fragment-and-prev-effects (host-sample) |
Automated setVar/getVar-visible state, deferred fragment go, and script prev outcome. |
wrapStress |
A3-01 / WML-R-004 |
P2, visual host-visible | manual only | manual: the unique acceptance is visual wrap consistency across reloads; card navigation is redundant with basic, and text-presence assertions would not prove wrapping. |
No unpaired P0/P1 path remains blocked on a small story capability. The harness now supports exact script boolean/trap expectations, structured external request-policy assertions, normalized optional object fields, and explicitly expected host error statuses. No generic E2E framework or runtime semantic change was introduced.
Commands
wasm-pack build --target web --out-dir ../pkg # from engine-wasm/engine
pnpm test:story list
pnpm --dir engine-wasm/host-sample run test:story:unit
pnpm --dir engine-wasm/host-sample run examples:check
pnpm test:story host-sample
pnpm test:story:waves
pnpm --dir engine-wasm/host-sample run build
pnpm --dir engine-wasm/host-sample run typecheck
pnpm --dir engine-wasm/host-sample run lint
pnpm --dir engine-wasm/host-sample run format:check
The story runner still does not claim transport-native or Tauri-native replay. Transport/WBXML packet fidelity, parser-internal validation, network timing, and visual-only layout judgment remain in their lower-level or manual evidence lanes.
Transport (transport-rust)
| Requirement Group | Status | Current/Planned Test Location |
|---|---|---|
| Exact WAP-200 WDP ledger: 146 rows / 9 selected | 9 implemented / 0 partial / 0 missing; 9/9 direct normative tests and 49/49 mapped clauses |
spec-processing/source-manifests/wap-1.2.1-wdp-scr.json; fixture: transport-rust/tests/fixtures/transport/wdp_cdpd_ipv4_mapped/wdp_fixture.json; validate with cargo test --manifest-path transport-rust/Cargo.toml --lib network::wdp and node scripts/check-wap-transport-conformance-ledgers.mjs |
| Exact WAP-202 WCMP ledger: 62 rows / 2 selected | 2 implemented / 0 partial / 0 missing; 2/2 direct normative tests and 9/9 mapped clauses |
spec-processing/source-manifests/wap-1.2.1-wcmp-scr.json; strict fixture: transport-rust/tests/fixtures/transport/wcmp_cdpd_icmp_profile/icmp_fixture.json; validate with cargo test --manifest-path transport-rust/Cargo.toml --test wcmp_cdpd_icmp_profile and node scripts/check-wap-transport-conformance-ledgers.mjs |
| Exact WAP-203 WSP ledger: 109 rows / 8 selected | 0 implemented / 8 partial / 0 missing; 0/8 direct normative tests |
spec-processing/source-manifests/wap-1.2.1-wsp-scr.json; validate with node scripts/check-wap-transport-conformance-ledgers.mjs |
RQ-TRN-001..004 WDP service + UDP + addressing + error policy |
partial |
transport-rust unit tests + fixture harness scenarios under transport-rust/tests/fixtures/transport/ |
RQ-TRN-005..009 WTP semantics and SIN overlays |
partial/conditional |
WTP is not activated by the selected connectionless Class C path. Existing WTP policy/state unit coverage is in transport-rust/src/network/wtp/; replay promotion baseline includes schema-versioned retransmission and duplicate-TID seed corpus coverage in transport-rust/tests/interop_replay.rs with corpus files under transport-rust/tests/network/interop/ (retransmission_seed.json, duplicate_tid_seed.json); command: cd transport-rust && cargo test --lib && cargo test --test interop_replay; exact target-era WAP-201 closure is required only before claiming connection-oriented WSP/WTP |
RQ-TRN-010..015 WSP/session/method/capability behavior |
partial |
transport-rust request validation/gateway mapping tests plus pure WSP header-block/PDU/session coverage in transport-rust/src/network/wsp/header_block.rs, transport-rust/src/network/wsp/pdu.rs, and transport-rust/src/network/wsp/session.rs with fixture corpora transport-rust/tests/fixtures/transport/wsp_pdu_baseline_mapped/pdu_fixture.json and transport-rust/tests/fixtures/transport/wsp_session_method_baseline_mapped/session_fixture.json; replay promotion baseline now includes schema-versioned Connect/ConnectReply and GET/REPLY seed corpus replay in transport-rust/tests/interop_replay.rs + transport-rust/tests/network/interop/connect_session_seed.json and transport-rust/tests/network/interop/get_reply_seed.json; command: cd transport-rust && cargo test --lib && cargo test --test interop_replay |
RQ-TRN-018..019 WSP assigned-number + capability-bound behavior (new alignment pass) |
partial |
Assigned-number, code-page, and encoding-version policy coverage is in transport-rust/src/network/wsp/header_registry.rs, transport-rust/src/network/wsp/decoder.rs, transport-rust/src/network/wsp/encoder.rs, transport-rust/src/network/wsp/encoding_version.rs, and compatibility wrapper transport-rust/src/wsp_registry.rs with fixture corpus transport-rust/tests/fixtures/transport/wsp_assigned_number_registry_mapped/registry_fixture.json; capability-bound enforcement remains pending in T0-11; command: cd transport-rust && cargo test --lib |
RQ-TRN-016 WTP TID window/MPL discipline |
partial |
Target files: transport-rust/src/wtp_replay_window.rs, transport-rust/tests/fixtures/transport/wtp_tid_replay_window_mapped/; command: cd transport-rust && cargo test --lib wtp_tid_replay_window_fixture_matrix; ticket T0-08, T0-18 |
RQ-TRN-017 WSP connectionless primitive profile |
covered |
Fixture matrix is in transport-rust/src/wsp_connectionless_primitive_profile.rs and transport-rust/tests/fixtures/transport/wsp_connectionless_primitive_profile_mapped/; command: cd transport-rust && cargo test --lib; ticket T0-09 |
RQ-TRN-018 WSP assigned-number registry fidelity |
partial |
Deterministic decode/encode + unknown-policy + code-page-shift tests landed in transport-rust/src/network/wsp/ and transport-rust/tests/fixtures/transport/wsp_assigned_number_registry_mapped/; broader protocol-path integration remains planned under T0-22; command: cd transport-rust && cargo test --lib |
RQ-TRN-014 WSP encoding-version and header encoding rules |
partial |
Deterministic encoding-version negotiation, text fallback, unsupported binary status output, and immediate header-block/PDU/session decode-encode coverage are in transport-rust/src/network/wsp/encoding_version.rs, transport-rust/src/network/wsp/header_block.rs, transport-rust/src/network/wsp/pdu.rs, transport-rust/src/network/wsp/session.rs, transport-rust/src/network/wsp/decoder.rs, and transport-rust/src/network/wsp/encoder.rs; command: cd transport-rust && cargo test --lib |
RQ-TRN-019 WSP capability-bounds enforcement |
planned |
Target files: transport-rust/src/network/wsp/, transport-rust/tests/network/interop/; command: cd transport-rust && cargo test --lib; ticket T0-11 |
RQ-SEC-004, RQ-SEC-005 WTLS posture and certificate behavior |
planned |
T0-21 proves a deterministic disabled-vs-active-minimal prototype boundary only. Its record, alert, and handshake envelopes are not WAP-261 wire encodings, do not implement certificate/SIN behavior, and are not called by live waps://; existing unit fixtures remain prototype regression evidence, not requirement coverage. Exact replacement and evidence gates are WTLS-00..WTLS-10 in docs/architecture/wtls-modernization-research.md |
RQ-WAE-010 URI handling baseline |
partial |
transport-rust request-validation tests in src/lib.rs plus fixture tests/fixtures/transport/uri_too_long_1025 (1024-octet boundary coverage landed; transport-profile routing assertions pending) |
RQ-WAE-012 i18n baseline (UTF-8/UTF-16 + deterministic decode errors) |
partial |
textual payload decode tests in transport-rust/src/responses.rs plus mapped fixtures utf16le_textual_wml_mapped and utf16_odd_length_protocol_error_mapped; script-path parity remains pending |
RQ-RMK-010 WBXML 1.3 client decoder conformance |
partial |
Pinned decoder: transport-rust/src/wbxml_decoder.rs; 42 fixed-outcome direct corpus and exhaustive WML page-zero equivalence matrix: transport-rust/tests/fixtures/transport/wbxml_wml13/conformance.json; exact parent and matrix tests; direct cross-layer parity: wml_203_reconstructed_wdp_sdu_matches_text_engine_behavior; paired WASM story: pnpm test:story WML-203. Parent rows remain partial for broader document-family limitations, mandatory prologue/full DTD validation, and release evidence. |
RQ-TRX-006..008 WCMP handling |
covered |
The strict CDPD/IPv4 path uses ICMPv4 generation/handling and WDP-boundary error mapping in transport-rust/src/network/wcmp/ with direct fixture evidence in transport-rust/tests/fixtures/transport/wcmp_cdpd_icmp_profile/; the preserved general-WCMP codec and wcmp_core_mapped vectors are capability-gated to explicitly selected non-IP bearers |
RQ-TRX-009 Wireless Profiled TCP optimization baseline |
partial |
Policy declaration + drift check landed in transport-rust/src/tcp_profile.rs with fixture transport-rust/tests/fixtures/transport/wireless_profiled_tcp_policy_mapped/policy_fixture.json; command: cd transport-rust && cargo test --lib tcp_profile::tests::wireless_profiled_tcp_posture_matches_declared_policy_fixture; ticket T0-12 |
RQ-TRX-010 WDP/WCMP over SMPP adaptation profile |
partial |
Deferred scope declaration + guardrail fixture landed in transport-rust/src/smpp_profile.rs and transport-rust/tests/fixtures/transport/smpp_adaptation_scope_mapped/scope_fixture.json; command: cd transport-rust && cargo test --lib smpp_profile::tests::smpp_adaptation_scope_matches_declared_fixture; ticket T0-13 |
| WAP networking profile decision and migration gates | covered |
Canonical profile decision record at docs/waves/NETWORK_PROFILE_DECISION_RECORD.md with machine-checkable gate assertions in scripts/check-networking-profile-gates.mjs and config docs/waves/network-profile-gates.json; command: node scripts/check-networking-profile-gates.mjs; ticket T0-14 |
WAP-191 request-policy + post metadata plumbing (go/postfield/cache-control) |
covered |
request-policy mapping tests in transport-rust/src/lib.rs + browser host external-intent request-policy propagation tests (T0-04, R0-06) |
WAP-191 encoder/validation fixture lane (14.x, 15.2-15.4) |
planned |
T0-07, R0-08 |
External vector adoption register:
- Ranked
adopt-nowvsdeferguidance now lives in:docs/waves/NETWORKING_VECTOR_ADOPTION_SWEEP.mddocs/waves/networking-vector-adoption.json
- Validation command:
node scripts/check-networking-vector-adoption.mjs
Browser host (browser)
| Requirement Group | Status | Current/Planned Test Location |
|---|---|---|
Transport contract integration (fetchDeck) |
partial |
browser host Rust tests in browser/src-tauri/src/lib.rs + transport-rust unit/integration tests + explicit normalization guarantees in transport-rust/README.md |
| URL load state transitions | partial |
browser frontend transport-first URL flow + session-state transitions in browser/frontend/src/main.ts and host-session stack helpers in browser/frontend/src/session-history.ts |
| Engine render handoff | partial |
browser host integration-style tests browser_e2e_fetch_load_render_sequence_renders_expected_content and browser_fixture_load_navigate_and_external_intent_flow_is_deterministic |
| Input model determinism | partial |
host key-sequence checks in browser/src-tauri/src/lib.rs (smoke_key_navigation_and_back_stack) + browser global key handling in browser/frontend/src/main.ts |
| External intent handoff loop | partial |
runtime intent emission/clear tests in host Rust + fixture flow browser_fixture_load_navigate_and_external_intent_flow_is_deterministic + frontend follow-loop implementation in browser/frontend/src/main.ts |
| Event timeline/export artifacts | partial |
frontend timeline/export implementation + export-time chronology validation in browser/frontend/src/main.ts; automated regression checks still pending |
Access-control, low-memory, unknown-DTD host policy paths (12.1-12.4) |
planned |
Target files: browser/src-tauri/src/lib.rs, browser/src-tauri/tests/fixtures/integration/, engine-wasm/engine/src/runtime/; command: cd browser/src-tauri && cargo test then cd engine-wasm/engine && cargo test; ticket R0-07 |
Transport error taxonomy progress:
- table-driven deterministic trigger checks in
transport-rust/src/lib.rs(transport_error_code_trigger_matrix_is_deterministic) - documented trigger matrix in
transport-rust/README.md
Cross-project checklist (current)
- Create a minimal contract parity check between:
transport-rustrequest/response model testsbrowser/contracts/transport.ts
- Add a CI check that verifies example metadata (
work-items,spec-items,testing-ac) and optional executable-flow schema/mappings for each shared host-sample fixture. - Add engine fixture test harness expansion (
A4-02) and map fixture IDs back toRQ-RMK-*groups. - Extend the 25-row direct evidence set through nested clause, optional-capability, parity, and strict release gates (
R0-01; source and mandatory first-pass audit complete).