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 |
WML-202 covers deck metadata/context; WML-203 adds mandatory text prologue enforcement and source-derived validation for every selected WML 1.3 DTD element family in native Rust, WASM, and wml-203-dtd-family.wml; commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_203, wasm-pack test --node engine-wasm/engine, and pnpm test:story WML-203 |
RQ-RMK-002 task model and template/card shadowing |
covered |
WML-303 closes its 27 directly mapped action/event clauses; WML-302 closes its 20 variable/setvar clauses; WML-309 closes active-do visibility, authored-label best effort, and unique frame-bound activation through wml_309_frame.rs, native/WASM serialization parity, Tauri command tests, and wml-309-frame-affordances.flow.json. Commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_309, wasm-pack test --node engine-wasm/engine, cargo test --manifest-path browser/src-tauri/Cargo.toml, and pnpm test:story WML-309. Broader form presentation belongs to WML-308 rather than this task-model group. |
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-005 variable substitution and setvar ordering |
covered |
WML-302 closes 20/20 directly mapped clauses for post-XML substitution, text/vdata/HREF locations, conversion/default/undefined/$$ behavior, validation, control commit, task snapshots, go/prev/refresh order, and resolved history/navigation boundaries. Evidence: engine-wasm/engine/src/engine_tests/wml_302_variables.rs, wasm_wml_302_variable_render_and_task_snapshot_match_native, and wml-302-variable-substitution.flow.json; commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_302, wasm-pack test --node engine-wasm/engine, and pnpm test:story WML-302. Request serialization/postfields remain WML-304. |
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 |
covered |
WML-203 tests classify canonical versus alternate external DTDs, reject malformed identity combinations, preserve recognized content inside unknown alternate-DTD wrappers, require the canonical text prologue, and validate selected DTD models deterministically through native and WASM boundaries |
RQ-RMK-012 WML user-agent error handling |
covered |
WML-205 native tests reject an invalid form of every declared WML element and enforce case, literal, length, table, task, event, variable, prologue, and structural errors atomically; browser tests and the production-WASM wml-205-error-recovery story prove fetch/access denial notification with invoking deck/card/focus/context/pending-intent/session/history preservation; commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_205, pnpm --dir browser/frontend test, and pnpm test:story WML-205 |
RQ-WAE-016, RQ-WAE-017 history and back semantics |
covered |
WML-303 adds first-active do type="prev" override precedence, noop/template masking, empty-history behavior, unchanged-card handled reporting, empty <prev/> reporting for host fallback, and failure rollback in engine-wasm/engine/src/engine_tests/wml_303_actions.rs; native/WASM/host snapshot parity is covered by the engine WASM and Tauri wrapper suites. Browser tests prove BACK remains reachable and uses explicit lastBackNavigationHandled rather than snapshot-difference inference before host fallback. A typed navigateBackToCard host boundary restores same-deck host history with onenterbackward semantics, without a forward history push or transport refetch, while native Waves scenarios prove same-deck and cross-deck host history unwind through the production shell. Four host/Waves flows in wml-303-actions-softkeys.flow.json provide stable cross-layer evidence. |
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 |
Bounded mandatory WMLS-502 semantics are directly covered by wavescript/wap_runtime.rs, value.rs, the source-derived wap-193-operator-conversions.wmlsc.hex fixture, native/WASM parity tests, and script-link-execution.flow.json. The executor covers local calls, argument order, empty-initialized locals, implicit/explicit returns, automatic conversions, operator precedence, all local language opcode variants, deterministic invalid operations, and step/stack/call/allocation bounds. Optional integer-only behavior remains under RQ-WMLS-007, so this grouped requirement row stays partial. Commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wap_runtime, wasm-pack test --node engine-wasm/engine --features wasm-bindings, and pnpm test:story WMLS-502. |
RQ-WMLS-008..010 bytecode format/verification/error model |
partial |
wavescript/wap_decoder.rs, wavescript/wap_runtime.rs, and source-pinned WAP-193 fixtures cover framing, pools, every instruction encoding, references, WAP-194 Appendix A library/function indexes and arities, reachable whole-function stack dataflow, bounded language execution, malformed input, deterministic fatal resource/integrity outcomes, non-fatal invalid-operation results, recovery, and native/WASM parity. Manual PCs explicitly select the isolated non-normative nine-opcode fixture VM. WMLS-501/W1-02 and the bounded WMLS-502 execution tranche are closed; access/URL behavior, standard-library execution, integer-only constant behavior, and the remaining chapter 12 matrix stay in WMLS-503..505. Commands: cargo test --manifest-path engine-wasm/engine/Cargo.toml wap_decoder, cargo test --manifest-path engine-wasm/engine/Cargo.toml wap_runtime, cargo test --manifest-path engine-wasm/engine/Cargo.toml registered_wap, and wasm-pack test --node engine-wasm/engine --features wasm-bindings. |
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; graph: spec-processing/source-manifests/wap-1.2.1-wml-2-knowledge-graph.json; commands: node scripts/check-wap-conformance-ledger.mjs, node scripts/check-wap-selected-normative-clauses.mjs, and node scripts/check-active-compliance-facts.mjs. Selected-family, direct-graph, and evidence totals are derived from those artifacts rather than copied into this table; 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 3 narrow clauses implemented while parent rows remain 0 implemented / 32 partial / 9 missing. Direct normative links cover 22 rows, including B1 stack/reference verification and fatal stack classification. Opcode execution, access control, and remaining chapter 12 closure stay open. |
| 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 12 Appendix A identifier clauses implemented while parent rows remain 0 implemented / 21 partial / 59 missing. Direct normative links cover the 7 identifier rows; library execution remains open and 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 43 WML examples. Its 41 adjacent companions contain 52
executable stories: 33 host-sample and 19 waves-browser. Therefore 41 examples have executable
evidence and 2 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, WMLS-501 / RQ-WMLS-001, RQ-WMLS-008, RQ-WMLS-009 |
P1, stable host-visible | script-link-success-and-navigation-continuity (host-sample) |
Automated verified WAP-193 named-function success, ordered trace, and subsequent fragment navigation using the pinned RETURN_ES fixture. |
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-305 / WML-R-014, WML-CL-TIMER-INVALID-VALUE |
P1, stable host-visible | zero-timer-disabled (host-sample) |
Automated proof that a zero-value timer is disabled and does not dispatch ontimer. |
wml305TimerLifecycle |
A5-03, WML-305 / ten directly mapped WML timer clauses |
P0, stable host-visible | host-refresh-resume-and-expire (host-sample); waves-refresh-resume-and-expire, waves-exit-persists-current-value (waves-browser) |
Automated named-value precedence, tenths, refresh stop-update-resume, exact host wakeups, one-to-zero dispatch, exit persistence, and native/WASM/Waves parity. |
wml309FrameAffordances |
WML-309, WBP-06, F0-01 / three WML 1.3 do presentation clauses |
P0, stable host-visible contract | host-frame-affordance-contract (host-sample) |
Automated exact ordered affordance projection, label fallback, optional/noop exclusion, logical control association, and frame-bound action activation. |
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. |
wml203DtdFamily |
WML-203 / selected WML 1.3 DTD structure clauses |
P0, stable host-visible text-deck boundary | strict-selected-dtd-family-render (waves-browser) |
Automated production-WASM proof for mandatory prologue handling and representative render/focus behavior from a deck covering every selected WML element family. |
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-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, exact vdata/literal-dollar/undefined-variable conversion proof, and native/WASM invalid-reference atomicity. Optional fieldset capability status remains not assessed. |
wml204SelectSemantics |
R0-04, C5-05, WML-204 / WML-C-41, WML-C-43 |
P1, stable host-visible | initialization-and-user-commit (host-sample) |
Automated nested-optgroup option ordering, input/select document-order initialization, empty option-value serialization, vdata conversion, HREF-default escaping, 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 | 8 implemented / 0 partial / 0 missing; 8/8 direct normative tests and 57/57 implemented clauses |
spec-processing/source-manifests/wap-1.2.1-wsp-scr.json; WSP-801 byte fixture: transport-rust/tests/fixtures/transport/wsp_connectionless_matrix/matrix_fixture.json; WSP-802 header fixture: transport-rust/tests/fixtures/transport/wsp_header_grammar_mapped/header_fixture.json; validate with cargo test --manifest-path transport-rust/Cargo.toml --test wsp_connectionless_matrix, cargo test --manifest-path transport-rust/Cargo.toml --test wsp_header_grammar, and node scripts/check-wap-transport-conformance-ledgers.mjs; detailed WML media/charset ownership remains WML-304 |
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 |
Stateless endpoint-role and direct Unitdata mapping is in transport-rust/src/wsp_connectionless_primitive_profile.rs; source-linked matrix: transport-rust/tests/fixtures/transport/wsp_connectionless_matrix/matrix_fixture.json; command: cargo test --manifest-path transport-rust/Cargo.toml --test wsp_connectionless_matrix; work item WSP-801 |
RQ-TRN-018 WSP assigned-number registry fidelity |
implemented |
The complete effective default-page registry, unknown policy, and code-page ranges are directly exercised by transport-rust/tests/wsp_header_grammar.rs and transport-rust/tests/fixtures/transport/wsp_header_grammar_mapped/header_fixture.json; command: cargo test --manifest-path transport-rust/Cargo.toml --test wsp_header_grammar |
RQ-TRN-014 WSP encoding-version and header encoding rules |
implemented |
Direct WSP-802 evidence covers negotiation defaults/caps/cache, text fallback/retry, hop-by-hop and extension-page values, SIN 001 Expect, generic framing, registry, and PDU/session round trips; command: cargo test --manifest-path transport-rust/Cargo.toml --test wsp_header_grammar |
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/matrix tests; direct cross-layer parity: wml_203_reconstructed_wdp_sdu_matches_text_engine_behavior; strict normalized-WBXML DTD parity in native/WASM WML-203 tests; paired stories: pnpm test:story WML-203. WML-203’s mandatory prologue and document-family gates are complete; generic non-WML WBXML routing and release evidence remain broader parent-row work. |
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) |
implemented |
Source-derived fixtures in engine-wasm/engine/tests/fixtures/wml-306/; direct native policy tests in engine-wasm/engine/src/engine_tests/wml_306_policy.rs; Tauri parity in browser/src-tauri/src/tests/engine_wrappers.rs; bounded host history and safe-copy tests in browser/frontend/src/session-history.test.ts, browser/frontend/src/app/navigation-state.load.test.ts, and browser/frontend/src/app/browser-presenter.test.ts; executable story pnpm test:story WML-306; ticket R0-07 / WML-306. |
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).