docs/waves/work_items.md
Waves Browser Work Items (Integration Track)
Purpose: execution board for Waves desktop browser integration work.
Status keys:
todoin-progressblockeddone
Current mode: active execution. Completed and in-progress tickets are tracked below.
Archive:
docs/waves/WORK_ITEMS_ARCHIVE.md
Baseline Assumptions
These assumptions are active for this board and should not be re-litigated in each ticket:
transport-rust/gateway-bridged behavior is functionally validated via CLI probes.- protocol-native networking (strict WDP/WCMP/connectionless-WSP plus capability-gated connection-oriented WSP/WTP) remains the current high-risk implementation lane.
engine-wasm/runtime/rendering has reached a substantial milestone and remains integration-ready while networking core is completed.
Project-level priority remains multi-lane:
- close committed runtime/compliance tickets already in-flight (
R0-*,W0-*,W1-*scoped work) - execute protocol-native networking closure (
T0-19,T0-18,T0-20,T0-22,T0-21) - defer broad feature expansion in any lane until these bedrock closures are stable
Networking is a top-tier lane, not a replacement for all other committed bedrock work.
Architecture standards gate
For WaveScript VM/runtime tickets, enforce these implementation standards (derived from Chromium/WebKit/WHATWG/Wasm architecture references documented in docs/waves/WAVESCRIPT_VM_ARCHITECTURE.md):
- VM/interpreter semantics must remain in
engine-wasm. - Host code must only implement side-effect capabilities (dialogs, timer wake/tick, script fetch on miss).
- Bytecode verification gates must run before execution.
- Execution must be bounded (steps, stack, call depth, growth limits).
- Script/runtime failures must trap deterministically without host/runtime crashes.
- Navigation/refresh effects from script must apply at deterministic post-invocation boundaries.
Scope
Primary implementation target:
browser/(Tauri host app)
Integrated dependencies:
engine-wasm/(runtime + wasm contract)transport-rust/(in-process transport boundary)
Project planning links:
- WAP planning closure checkpoint:
docs/waves/WAP_1_2_1_PLANNING_BASELINE.md - WAP 1.2.1 / WML 1.3 compliance program:
docs/waves/WAP_1_2_1_COMPLIANCE_PROGRAM.md - Machine-readable compliance work program:
docs/waves/wap-1.2.1-compliance-program.json - Master prioritized sprint plan:
docs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.md - Engine execution board:
docs/wml-engine/work-items.md - Engine phased backlog:
docs/wml-engine/ticket-plan.md - Maintenance/debt board:
docs/waves/MAINTENANCE_WORK_ITEMS.md - User onboarding/help plan:
docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.md - Transport planning/checklist:
transport-rust/README.md - Browser planning/checklist:
browser/README.md
Canonical sprint priority rule:
docs/waves/wap-1.2.1-compliance-program.jsonis authoritative for WAP dependency order and completion claims.docs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.mdresolves cross-lane priority for work already in flight and is rebased to that dependency order.- Section-level lists below are lane-local or dated context and must not override either authority.
Next In Line (WAP Compliance Sync - 2026-07-25)
The selected-profile source and planning lanes are complete. The active queue must now turn the 198 selected parent rows and 761 planned clauses into direct evidence.
Current priority order is:
- Preserve
WML-201’s completed 76-row SCR evidence projection and 174/174 direct WML-clause mapping. - Preserve completed
WML-202referring-URI access, root-language, and card-context/grammar evidence, then close the residual mandatoryWML-204vdata/HREF conversion and field/control validation gate. WML-202 is complete at 30/30 direct clauses; WML-204 retains its completed 23/23 mapped slice and grouped-control evidence from#342while its broader gate remains open. - Close
WML-203mandatory prologue and DTD content-model enforcement, then extendWML-205’s direct three-clause taxonomy across remaining element errors and host fetch/access failure atomicity. Sequence validation-file edits with item 2 rather than merging competing parser patches. - Preserve
TRN-706’s completed schema-v2 selected-WDP replay boundary and keep the conditional WTP mapping gap explicit under additiveTRN-704/TRN-705follow-ups.TRN-707’s bounded WDP/WCMP audit is complete but intentionally remains open while its declared WTP family is inactive and unmapped. - Treat
WSP-801/WSP-802as downstream connectionless-WSP foundation work untilTRN-7andWAE-6close. KeepD0-01, frame migration, generators, and maintenance non-preemptive unless they directly unblock a strict obligation.
The schema-v2 WDP delivery -> fetch/WBXML decode -> native engine parity path
and its paired WASM story now provide the cross-layer WML-203 evidence.
WML-203 remains in progress for mandatory prologue enforcement, full DTD
content-model validation, and broader document-family evidence.
Planning assessment:
- No selected Class C family needs further thematic extraction before implementation starts.
- Replan only when a source-derived fixture changes a dependency, a profile is activated, or implementation evidence changes a parent-row assessment.
Desktop Browser Product Lane
The Authentic Core, Modern Console direction is adopted. Current status is:
| Slice | Status | Direct evidence / next gate |
|---|---|---|
WBP-00 |
done |
The neutral 20-column Class C Reference, technical-primary audience assumption, reference hardware, 20-run startup/navigation/input baseline, and non-golden screenshots are recorded in WAVES_BROWSER_BASELINE.md. |
WBP-01 |
done |
#343 shell seams plus minimum/default-window geometry, complete stable tab order, native disclosure activation, frontend tests/build, all 9 Waves stories, and contract/Tauri checks are directly evidenced. |
WBP-02 |
done |
#344 added the reference-handset visual scaffold and independent integer display scaling without changing engine viewport semantics. |
WBP-03 |
done |
#346 separated source, derived route, and static compatibility profile while preserving navigation commands and transport truthfulness. |
WBP-04 |
done |
#347 added the Welcome/Help leaf and first tutorial deck through the ordinary local-example/engine path with executable host and Waves story coverage. |
WBP-05 |
todo |
Extend host semantics and focus treatment through leaf templates/tests without duplicating the WML runtime model. |
WBP-05 remains available after this gate within the exact seam documented in
WAVES_BROWSER_BASELINE.md. The root shell template, global stylesheet, copy module, and generated
example manifest remain single-owner integration surfaces. The same document records the seams
used by landed WBP-02 through WBP-04 for future maintenance.
Next In Line (Architecture Maintenance Sprint)
Maintenance remains non-preemptive to the strict WAP execution order:
- Keep
M1-09queued until the strict engine/runtime work and its host boundary are stable enough for the frame migration. - Keep
M1-03as a non-priority generator design/prototype unless manual contract synchronization begins blocking compliance work. - Treat the boundary-module split as complete. If active feature work exposes another concrete hotspot, create a new additive maintenance ticket rather than reopening a closed item.
Completed maintenance tickets are tracked on the maintenance board and archive:
docs/waves/MAINTENANCE_WORK_ITEMS.mddocs/waves/MAINTENANCE_WORK_ITEMS_ARCHIVE.md
Reference board: docs/waves/MAINTENANCE_WORK_ITEMS.md.
Next In Line (Networking Regroup Sprint - 2026-03-05)
Priority execution order for networking MVP closure:
- Protocol-core spec/policy closure is complete through
T0-26, includingT0-21, but desktop/browser ingress is still using the legacy HTTP gateway bridge for livewap://fetches. - Immediate transport priority is a narrow native execution lane: connectionless WSP
GET/REPLYover WDP/UDP, integrated behind the existing fetch contract. - No broader protocol expansion should preempt active runtime/compliance and hardening lanes unless required to land
T0-27..T0-29.
Sprint policy:
- The documented
wap-net-coreposture is implementation-target, not fully live browser ingress, untilT0-27..T0-29land. - Keep this lane capacity-bounded alongside committed runtime/compliance lanes; do not starve in-flight
R0-*/W0-*closure tickets. - Defer non-bedrock feature expansion unless required to unblock committed lanes.
Source-ledger reconciliation:
- The exact WAP-200/WAP-202/WAP-203 row authority is
docs/waves/WAP_1_2_1_TRANSPORT_SCR_LEDGERS.mdplus its three machine manifests. The selected connectionless Class C path is 19 rows with an audit of 11 implemented / 8 partial / 0 missing and 11/19 direct normative tests. The nine selected WDP rows are fixture-backed underTRN-701, the adopted constrained-payload policy is closed underTRN-702, the five-row general-WCMP branch is preserved as a non-IP capability underTRN-703, and both selected ICMP-backed WCMP rows are fixture-backed underTRN-708; WSP direct normative evidence remains open. - Completed thematic tickets such as
T0-19,T0-20, andT0-27are not reopened. Their existing evidence remains useful but provisional against the exact target-era rows. - Exact closure is owned by compliance-program work items
TRN-701,TRN-702,TRN-703,TRN-708,WSP-801,WSP-802,WSP-804, andWSP-805. SRC-005has normalized the selected CDPD bearer citationTIAEIA-732with an explicit licensed-payload boundary;CONF-003has completed all 198 selected nested-clause plans, while implementation work items own direct normative fixture execution.- WTP remains a conditional capability and does not gate the initial connectionless Class C path.
Next In Line (Committed Bedrock Compliance Sprint - 2026-03-04)
Committed sprint sequence:
T0-04Cache/reload andgorequest-policy conformance follow-up.A5-01History entry fidelity follow-up.R0-02Inter-card navigation process-order conformance.R0-03History/context fidelity completion.W0-06Bytecode verification gates follow-up.- Stretch:
W1-02Bytecode structural verification closure.
Execution plan and gates:
docs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.md(cross-lane canonical sprint priority plan)docs/waves/SPRINT_PLAN_2026-03_BEDROCK_COMPLIANCE.md
Sprint acceptance target:
- Each committed ticket has executable acceptance fixtures mapped in
docs/waves/SPEC_TEST_COVERAGE.md. docs/waves/WAVENAV_PLATFORM_COMPLIANCE_ANALYSIS.mdhigh-priority misses are reduced for history, request-policy, and bytecode verification semantics.
Frame Interface Migration Program (Planning-Ready)
This migration track defines the engine-host rendering/input boundary transition from legacy render calls to structured frame/input contracts.
Authoritative docs:
docs/waves/ENGINE_HOST_FRAME_MIGRATION_PLAN.mddocs/waves/ENGINE_HOST_FRAME_WORK_ITEMS.md
Execution policy:
- Run migration tickets as additive boundary changes first (
F0), then renderer/input cutover (F1-F4). - Preserve native/wasm parity and deterministic runtime behavior at each phase gate.
- Keep migration scope limited to interface and rendering boundary unless explicitly expanded.
Kickoff Guardrail (Historical)
This board was prepared before implementation kickoff. Keep ticket statuses current as execution continues.
Ticket Template
ID: stable id (B0-01,B1-02, etc.)StatusDepends OnFilesBuildTestsAcceptSpec: requirement IDs + section refs/SCR IDs from relevantdocs/waves/*TRACEABILITY*.mddocs
Spec Change Protocol
When a PR changes spec interpretation, requirement mapping, or contract behavior, update all linked artifacts in the same PR:
- traceability source:
- relevant
docs/waves/*TRACEABILITY*.mdrequirement entries (Spec,AC,Evidence)
- tests/fixtures:
docs/waves/SPEC_TEST_COVERAGE.mdrow(s) with concrete file targets and command(s)
- contract mapping:
docs/waves/CONTRACT_REQUIREMENTS_MAPPING.mdfor impacted contract surfaces
- requirement index:
docs/waves/REQUIREMENT_INDEX.mdowner/lane/status row(s)
- coverage/meta dashboards:
docs/waves/SPEC_COVERAGE_DASHBOARD.mdif scope/status changes
- source governance:
docs/waves/SOURCE_AUTHORITY_POLICY.mdanddocs/waves/OPEN_SPEC_QUESTIONS.mdwhen precedence or unresolved policy shifts
Ticket Lifecycle Guardrail
- Completed (
done) tickets remain immutable historical records. - If a later compliance audit finds a gap in a completed area, add a new follow-up ticket that references the completed ticket in
Depends Onand notes. - Do not rewrite ticket history by changing completed items back to active statuses.
Example Coverage Guardrail
- For any host-visible engine/runtime behavior change, add or update at least one example under
engine-wasm/examples/source/*.wmlin the same PR. - Regenerate
engine-wasm/examples/generated/examples.tsviapnpm --dir engine-wasm/host-sample run examples:generatein the same PR. - New/updated examples must include metadata (
work-itemsorspec-items,goal, andtesting-ac) to keep host-sample and Waves tester verification aligned. - Stable acceptance paths should add an optional adjacent
*.flow.jsoncompanion and verify it withpnpm test:story <work-item-or-spec-id>.
Initial Backlog (Prepared)
Historical kickoff tickets (P0-*) are archived in:
docs/waves/WORK_ITEMS_ARCHIVE.md
Phase B0-B3 (Archived)
Completed B0 through B3 tickets are archived in:
docs/waves/WORK_ITEMS_ARCHIVE.md
Phase T: Transport Contract Alignment (Prepared)
T0-04 Cache/reload and go request-policy conformance follow-up
Status:doneDepends On:T0-02,A5-02Files:
transport-rust/src/lib.rsbrowser/contracts/transport.tsengine-wasm/contracts/wml-engine.tsbrowser/src-tauri/src/lib.rs
Build:
- Add request-policy plumbing for WML task metadata (
cache-control, method/post context, referer policy). - Ensure
cache-control=no-cachereload intent reaches transport deterministically.
Tests:
cargo test --lib(transport-rust) covers no-cache header mapping, same-deck POST suppression, and deterministic request-policy mapping.- Browser navigation-state regression tests cover reload/external-intent request-policy propagation.
cargo test(browser/src-tauri) covers snapshot exposure/clear semantics for external navigation request-policy metadata.
Accept:
- Transport behavior reflects runtime task metadata without host-side semantic drift.
Spec:
RQ-RMK-008,RQ-WAE-008,RQ-WAE-016
Notes:
- Completed as additive follow-up linked to normalization baseline (
T0-02). - Landed transport request-policy contract (
cacheControl,refererUrl,postContext) and runtime->host->transport external-intent metadata plumbing.
T0-05 UA capability header conformance follow-up
Status:doneDepends On:T0-01Files:
transport-rust/src/lib.rsbrowser/src-tauri/src/lib.rsbrowser/contracts/transport.ts
Build:
- Add profile-gated emission path for
Accept,Accept-Charset,Accept-Encoding, andAccept-Language. - Keep defaults deterministic and explicit when capability advertising is disabled.
Tests:
cargo test --lib(transport-rust) covers:wap-baselineprofile capability header emission (Accept,Accept-Charset,Accept-Encoding,Accept-Language)- deterministic disabled profile behavior
- deterministic caller-header override behavior for capability headers
- Browser transport request-policy wiring is typechecked via frontend contract consumers.
Accept:
- Capability advertisement behavior is explicit, test-backed, and contract-documented.
Spec:
RQ-WAE-013,RQ-WAE-001
Notes:
- Added profile-gated UA capability contract field (
uaCapabilityProfile) under transport request policy. - Browser host now sends
wap-baselinecapability profile by default for network transport fetches.
T0-06 URI length and charset boundary conformance follow-up
Status:doneDepends On:T0-02Files:
transport-rust/src/lib.rstransport-rust/src/responses.rstransport-rust/tests/fixtures/transport/*docs/waves/SPEC_TEST_COVERAGE.md
Build:
- Add deterministic handling/tests for 1024-octet URI boundaries and UTF-8/UTF-16 encoding paths.
Tests:
- URI boundary coverage:
- fixture
transport-rust/tests/fixtures/transport/uri_too_long_1025/ - unit tests for
1024-octet accept and>1024reject path intransport-rust/src/lib.rs
- fixture
- Charset boundary coverage:
- mapped fixture
transport-rust/tests/fixtures/transport/utf16le_textual_wml_mapped/for UTF-16LE decode success - mapped fixture
transport-rust/tests/fixtures/transport/utf16_odd_length_protocol_error_mapped/for deterministic malformed UTF-16PROTOCOL_ERRORmapping - unit tests in
transport-rust/src/responses.rscover UTF-16 decode success/error code path behavior directly
- mapped fixture
Accept:
- URI/encoding behavior meets WAE baseline and remains regression-protected.
Spec:
RQ-WAE-010,RQ-WAE-012
Notes:
- Completed transport-scope URI/charset boundary conformance follow-up with deterministic URI length guardrails and fixture-backed UTF-16 decode success/error paths.
T0-07 WBXML token/literal compatibility conformance follow-up
Status:doneDepends On:T0-02Files:
transport-rust/src/lib.rstransport-rust/tests/fixtures/transport/*docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
Build:
- Add compatibility checks covering WBXML literal-vs-token decoding paths and section-6.1 tokenisation expectations at boundary level.
Tests:
- Fixture matrix for literal token values, binary token values, and deterministic decode failure classification.
Accept:
- WBXML boundary behavior is conformance-backed beyond decode happy-path checks.
Spec:
RQ-RMK-007,RQ-WAE-005
Notes:
- The WBXML SCR audit found that current tests establish isolation/error
behavior but do not directly prove literal/token equivalence. The additive
normative closure remains open in
R0-08; this completed ticket is not reopened.
T0-08 WTP TID/MPL replay-window conformance follow-up
Status:doneDepends On:T0-03Owner:transport-rustFiles:
transport-rust/src/lib.rstransport-rust/tests/fixtures/transport/*docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
Build:
- Add explicit responder-side TID decision policy and fixtures for cache/no-cache and duplicate-guarantee modes.
- Enforce initiator-side TID progression/rate guardrails relative to MPL assumptions for replay-window safety.
Tests:
- Fixture matrix for Table-6/7/8-like TID decisions and out-of-order invoke handling.
- Deterministic TID wrap/restart-window tests with trace assertions.
Accept:
- TID replay-window behavior is deterministic and explicitly profile-gated.
Migration gates:
- Done-1: responder/initiator TID replay policies are deterministic for table-driven fixture cases.
- Done-2: out-of-order and retransmission state transitions have deterministic terminal outcomes.
- Done-3: trace output includes transaction/timer state for replay decisions.
Spec:
RQ-TRN-007,RQ-TRN-016
T0-09 WSP connectionless primitive-profile conformance
Status:doneDepends On:T0-01Owner:transport-rustFiles:
transport-rust/src/lib.rstransport-rust/tests/fixtures/transport/*docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
Build:
- Make WSP mode selection explicit (
connection-oriented,connectionless, or both) with deterministic primitive-usage gating. - Implement/validate connectionless primitive occurrence matrix behavior and deterministic invalid-primitive handling.
Tests:
- Primitive occurrence fixtures for
S-Unit-MethodInvoke,S-Unit-MethodResult,S-Unit-Push.
Accept:
- Connectionless mode policy is explicit and test-backed; invalid primitive paths are deterministic.
Migration gates:
- Done-1: mode switch behavior is driven by profile and emitted in request/response trace metadata.
- Done-2: req/ind-only matrix is enforced and fixture-asserted.
- Done-3: invalid primitive transitions are deterministically rejected before session side effects.
Spec:
RQ-TRN-010,RQ-TRN-012,RQ-TRN-017
T0-10 WSP assigned-number registry conformance fixtures
Status:doneDepends On:T0-05,T0-07Owner:transport-rustFiles:
transport-rust/src/lib.rstransport-rust/tests/fixtures/transport/*docs/waves/SPEC_TEST_COVERAGE.md
Build:
- Add table-driven token-map fixtures for WSP PDU types, abort-reason codes, well-known parameters, and header-field names.
- Define deterministic handling policy for unassigned/unknown registry values.
Tests:
- Decode/encode round-trip fixtures anchored to assigned-number tables.
Accept:
- Assigned-number behavior is deterministic, profile-documented, and regression-guarded.
Migration gates:
- Done-1: registry decode/encode test suite exists and is fixture-backed.
- Done-2: unknown/unassigned value handling behavior is deterministic by profile.
- Done-3: no parser side-effect state is introduced by registry table lookup paths.
Spec:
RQ-TRN-014,RQ-TRN-018
Notes:
- Landed as additive registry fixture slice in
transport-rust/src/wsp_registry.rswith fixture-backed round-trip/unknown-policy tests (transport-rust/tests/fixtures/transport/wsp_assigned_number_registry_mapped/registry_fixture.json).
T0-11 WSP capability-bound and negotiation-limit enforcement
Status:doneDepends On:T0-09Owner:transport-rustFiles:
transport-rust/src/lib.rstransport-rust/tests/fixtures/transport/*docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
Build:
- Enforce min/intersection semantics for negotiated capabilities.
- Enforce negotiated SDU/message-size and outstanding-request bounds with deterministic abort/error surfacing.
Tests:
- Capability negotiation fixtures across client/server proposal mismatches and boundary exceed cases.
Accept:
- Capability negotiation and bounds behavior is deterministic and spec-linked.
Migration gates:
- Done-1: capability merge strategy is stable and documented in code-level comments or tests.
- Done-2: bound exceed/invalid capability fixtures are deterministic and mapped to clear error codes.
- Done-3: cap-limit behavior is tested under both connection-mode and connectionless profiles.
Spec:
RQ-TRN-013,RQ-TRN-019
Notes:
- Additive capability policy/limit slice landed in
transport-rust/src/wsp_capability.rswith fixture corpus attransport-rust/tests/fixtures/transport/wsp_capability_bounds_mapped/capability_fixture.json. - Current closure provides deterministic merge + bound enforcement (
MRUEXCEEDED,MOREXCEEDED) for both connection-oriented and connectionless modes; deeper protocol session integration remains in later WSP lanes.
T0-12 Wireless Profiled TCP compatibility profile declaration
Status:doneDepends On:T0-01Owner:transport-rust,specFiles:
transport-rust/README.mddocs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Declare explicit Waves TCP compatibility posture for profiled requirements (SACK/split/end-to-end/window-scale threshold behavior).
- Mark each requirement as implemented, delegated, or deferred for MVP with rationale.
Tests:
- Add compatibility-policy fixtures/checks that prevent silent drift in declared TCP posture.
Accept:
- TCP optimization baseline posture is explicit and traceable.
Migration gates:
- Done-1:
RQ-TRX-009decision is explicitly categorized per behavior. - Done-2: no code path depends on undeclared TCP behavior assumptions.
- Done-3: docs + ticket mapping for TCP posture is versioned and linked from
TECHNICAL_ARCHITECTURE.
Spec:
RQ-TRX-009
Notes:
- Landed as policy declaration + drift guard in
transport-rust/src/tcp_profile.rswith fixturetransport-rust/tests/fixtures/transport/wireless_profiled_tcp_policy_mapped/policy_fixture.json. - Current posture explicitly marks TCP baseline/SACK/window-scale/end-to-end as delegated to host TCP stack and split-mode as deferred pending profile gate decisions.
T0-13 SMPP adaptation scope gate and fixture baseline
Status:doneDepends On:T0-01Owner:transport-rust,docsFiles:
docs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.mdtransport-rust/README.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Make a hard scope decision for
WAP-159path (in scope nowvsdeferred). - If in scope, define
data_smmapping fixtures and WCMP payload type handling checks. - If deferred, document non-blocking rationale and explicit exclusion guardrails.
Tests:
- Add either adapter fixtures (in-scope) or explicit policy assertions (deferred).
Accept:
- SMPP adaptation status is unambiguous and regression-guarded.
Migration gates:
- Done-1: scope decision is documented as
in-scopeordeferredbefore implementation actions. - Done-2: deferred paths are explicitly guarded against accidental dependency in
transport-rust. - Done-3: in-scope branch has end-to-end payload-type fixture path before any parser/code activation.
Spec:
RQ-TRX-010
Notes:
- Scope decision is
deferredfor Waves MVP and is now regression-guarded intransport-rust/src/smpp_profile.rs. - Fixture-backed policy assertion lives at
transport-rust/tests/fixtures/transport/smpp_adaptation_scope_mapped/scope_fixture.json.
T0-14 WAP networking profile decision record and migration gates
Status:doneDepends On:T0-09,T0-11,T0-12,T0-13Owner:transport-rust,browser,engineFiles:
docs/waves/TECHNICAL_ARCHITECTURE.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mddocs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.mdtransport-rust/README.md
Build:
- Publish an explicit profile decision for near-term and target-state transport:
- current profile: gateway-bridged HTTP/WBXML normalization path
- target profile: in-process WDP/connectionless-WSP lane with connection-oriented WSP/WTP behind explicit activation criteria
- Define non-negotiable boundary rules so engine/browser contracts stay stable across both profiles.
- Define migration gates that block profile promotion until required protocol fixtures pass.
Tests:
- Add profile-gate checks that assert declared mode/profile against fixture coverage state.
- Add one end-to-end fixture lane per declared profile to prevent drift in behavior expectations.
Accept:
- Networking architecture direction is explicit, versioned, and test-gated.
- Team can state exactly what is spec-compliant now versus planned for protocol-complete mode.
Migration gates:
- Done-1: a single canonical profile decision is written and linked to all transport docs.
- Done-2: profile-gate checks reference
T0-08..T0-13completion criteria and required fixture coverage. - Done-3: profile migration path has explicit rollback criteria tied to contract stability.
Spec:
RQ-TRN-001..019,RQ-TRX-001..010
Notes:
- Canonical decision record added at
docs/waves/NETWORK_PROFILE_DECISION_RECORD.mdwith explicit current/target profiles, promotion gates, and rollback criteria. - Machine-checkable gate validation added via
node scripts/check-networking-profile-gates.mjsand data filedocs/waves/network-profile-gates.json.
T0-15 WAP caching model baseline and invalidation semantics
Status:doneDepends On:T0-04,R0-06Owner:transport-rust,browserFiles:
transport-rust/src/lib.rsbrowser/contracts/transport.tsbrowser/src-tauri/src/lib.rsdocs/waves/WAE_SPEC_TRACEABILITY.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Implement a deterministic cache-policy baseline for deck/script/media retrieval and invalidation triggers.
- Ensure
cache-control=no-cacheand task-driven reload semantics route through one shared policy model.
Tests:
- Fixture matrix for cache hit, forced reload, stale invalidation, and request-policy override cases.
Accept:
- Cache behavior is explicit, deterministic, and verifiably aligned with the declared WAP profile.
Migration gates:
- Done-1: policy model is single-source and contract-exported across transport/browser layers.
- Done-2: cache hit/reload/invalidation fixture path is deterministic and repeatable.
- Done-3: profile switch does not alter cache semantics without explicit migration note.
Spec:
RQ-WAE-008,RQ-WAE-010,WML-29, section9.5.1
Notes:
- This completed ticket established request-policy and deterministic reload plumbing. It is not full WAP-120 conformance and is not reopened.
- Exact corrective closure remains in program item
WAE-603:WAPCachingMod:MCFselects five mandatory client rows, currently audited as 0 implemented / 3 partial / 2 missing with zero direct normative tests. - Source authority:
spec-processing/source-manifests/wap-1.2.1-caching-scr.jsonanddocs/waves/WAP_1_2_1_CACHING_SCR_LEDGER.md.
T0-16 Spec queue canonicalization and conflict resolution follow-up
Status:doneDepends On:T0-14Owner:spec-processingFiles:
spec-processing/new-source-material/spec-processing/source-material/WAP-259-WDP-20010614-a.pdfspec-processing/finalize-new-source-material.fishdocs/waves/SOURCE_MATERIAL_MASTER_AUDIT.mddocs/waves/SOURCE_MATERIAL_REVIEW_LEDGER.mddocs/waves/SPEC_COVERAGE_DASHBOARD.md
Build:
- Resolve
WAP-259-WDP-20010614-a.pdfconflict variant left in queue and enforce deterministic case/variant policy. - Document whether conflict variant is a replacement, supersedence candidate, or legacy duplicate.
Tests:
./spec-processing/finalize-new-source-material.fish --dry-runreports zero unresolved conflicts for active transport spec IDs.docs/waves/SOURCE_MATERIAL_REVIEW_LEDGER.mdcontains one row per canonical transport/security spec ID.
Accept:
- Canonical corpus has one active source material path for each spec ID and the queue only contains unresolved non-canonical items.
Migration gates:
- Done-1: no transport spec ID has multiple active canonical variants in source-material.
- Done-2: conflict-resolution log is current and versioned with timestamped decision rationale.
- Done-3: ticket-dependent parser/automation paths resolve to canonical IDs.
Spec:
RQ-TRN-001,RQ-TRN-003
Notes:
- Completed: new-source
WAP-259variant was promoted after byte-comparison and manual archival of prior legacy source. - Archive captured at:
spec-processing/source-material/archive/WAP-259-WDP-20010614-a.legacy-v1.pdf
- Conflict rationale recorded:
spec-processing/source-material/WAP-259-WDP-20010614-a.pdfis canonical as of2026-03-05, and the prior variant remains archived with explicit legacy status.
T0-17 Protocol-adjacent transport context sweep (deferred specs)
Status:doneDepends On:T0-14,T0-16Owner:docs,transportFiles:
docs/waves/OUT_OF_SCOPE_DOMAIN_SPEC_REVIEW.mddocs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mddocs/waves/networking-implementation-checklist.md
Build:
- Record explicit in-scope/out-of-scope policy for non-core transport-adjacent specs that can affect transport boundaries.
- Add one-line rationale for each deferred family in transport-adjacent docs (
WAP-204*,WAP-120*,WAP-213*, related messaging-cache deltas). - Keep this decision synchronized with
T0-14profile gates.
Tests:
- checklist validation fixtures:
WAP-204remains transport-deferred; WAP-120 remains outside transport ownership and active underWAE-603- no hidden protocol behavior dependency introduced in
transport-rustwithout ticket and contract update - command:
node scripts/check-adjacent-scope-lock.mjs
Accept:
- future transport scope changes are policy-driven, explicit, and reversible.
Migration gates:
- Done-1: adjacent scope deferrals are explicit with pass/fail rationale.
- Done-2: profile gates block adjacent-path promotion when deferral state is uncleared.
- Done-3: checklist asset exists and references this ticket as gate source.
Spec:
RQ-TRX-001..010where applicableRQ-TRN-001..019
Notes:
- Completed the explicit transport-scope rationale and checklist alignment
for
WAP-204*,WAP-120*,WAP-213*, and related cache/adjacent messaging families; later source-ledger work moved WAP-120 user-agent closure toWAE-603without reopening this transport ticket:docs/waves/OUT_OF_SCOPE_DOMAIN_SPEC_REVIEW.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mddocs/waves/networking-implementation-checklist.md
- Remaining acceptance is a scope-lock and verification sweep before moving to
blocked-to-done criteria (T0-17).
T0-18 WTP retransmission/NACK hold-off policy extraction and implementation
Status:doneDepends On:T0-08,T0-14Owner:transport-rust,docsFiles:
transport-rust/src/network/wtp/state_machine.rstransport-rust/src/network/wtp/retransmission.rstransport-rust/src/network/wtp/duplicate_cache.rsdocs/waves/wtp-state-machine.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Implement explicit WTP retransmission timer/counter behavior and bounded abort conditions.
- Implement deterministic NACK delay and retransmission hold-off policy for SAR-enabled profiles.
- Add a documented policy object for timer defaults and backoff strategy (profile-overridable).
Tests:
- Fixture set for timer expiry -> retransmit -> max-retry abort.
- Fixture set for duplicate invoke/result handling with cached terminal response behavior.
- Fixture set for NACK delay/hold-off suppressing redundant retransmissions.
Accept:
- WTP reliability policy is explicit, deterministic, and test-covered for core flows.
RQ-TRN-007,RQ-TRN-008, andRQ-TRN-016map to concrete test artifacts.
Migration gates:
- Done-1: retransmission policy table is committed and linked from WTP docs.
- Done-2: duplicate handling fixtures pass for initiator and responder roles.
- Done-3: SAR-off and SAR-on profile behavior is explicitly gated and non-ambiguous.
Spec:
RQ-TRN-007,RQ-TRN-008,RQ-TRN-016
Notes:
- Completed with retransmission, duplicate-cache, and NACK hold-off fixture evidence; this is the mandatory WTP policy baseline consumed by
T0-22.
T0-19 WDP datagram trait + UDP port mapping baseline
Status:doneDepends On:T0-14,T0-16Owner:transport-rustFiles:
transport-rust/src/network/wdp/transport_trait.rstransport-rust/src/network/wdp/datagram.rstransport-rust/src/network/wdp/udp_adapter.rstransport-rust/src/network/wdp/sar.rsdocs/waves/networking-layer-definition.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Create protocol-native WDP datagram trait with strict
(src_port, dst_port, payload)contract. - Implement UDP adapter with deterministic behavior for active WAP service ports and error mapping.
- Define SAR handling contract boundary for deferred/non-UDP bearers without enabling them by default.
Tests:
- Port routing fixtures for
9200..9203service behavior. - Datagram malformed/truncation fixtures with deterministic errors.
- SAR reassembly fixtures in profile-enabled mode.
Accept:
- WDP trait and UDP baseline are live and do not leak gateway-only assumptions.
- Port mapping and error paths are fixture-backed and traceable.
Migration gates:
- Done-1: datagram trait is the only connectionless-WSP ingress path in
wap-net-coreand the only WTP ingress when that conditional module is activated. - Done-2: port-mapping fixtures pass for declared profile modes.
- Done-3: SAR behavior is explicit (
offby default) and guarded by profile flags.
Spec:
RQ-TRN-001,RQ-TRN-002,RQ-TRN-003,RQ-TRN-004
Notes:
- Completed with protocol-native datagram trait, UDP service-port mapping for
9200..9203, and SAR baseline evidence; this is the mandatory WDP ingress surface consumed byT0-22.
T0-20 WSP header registry completion and unknown-token policy
Status:doneDepends On:T0-10,T0-11Owner:transport-rust,docsFiles:
transport-rust/src/network/wsp/header_registry.rstransport-rust/src/network/wsp/encoder.rstransport-rust/src/network/wsp/decoder.rstransport-rust/src/network/wsp/header_block.rstransport-rust/src/network/wsp/pdu.rstransport-rust/src/network/wsp/session.rstransport-rust/tests/fixtures/transport/wsp_assigned_number_registry_mapped/transport-rust/tests/fixtures/transport/wsp_pdu_baseline_mapped/transport-rust/tests/fixtures/transport/wsp_session_method_baseline_mapped/docs/waves/wsp-pdu-reference.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Complete assigned-number header/token registry coverage used by active profile lanes.
- Implement deterministic unknown-token and unsupported-code-page behavior.
- Implement explicit fallback behavior for extension headers when page negotiation is unavailable.
Tests:
- Token roundtrip fixtures for core header set.
- Unknown token/page fixtures for strict and permissive policy modes.
- Code-page shift fixtures for multi-page header blocks.
- Minimal
Get/Post/ReplyPDU and session-method classification fixtures. - WBXML/token-stream fixture candidates from
docs/waves/WILEY_BOOK_CODE_EXAMPLES.md:WBK-FX-009,WBK-FX-010.
Accept:
- WSP encoding/decoding behavior is table-driven and reproducible.
- Unknown token handling is documented, deterministic, and profile-aware.
- Narrow method request/result session parsing is available for replay harness promotion.
Migration gates:
- Done-1: registry source of truth is versioned and linked to WSP docs.
- Done-2: unsupported encoding/page behavior has deterministic status output.
- Done-3: profile promotion is blocked when token fixture coverage is stale.
Spec:
RQ-TRN-014,RQ-TRN-018
Notes:
- Closed on
codex/t0-20-wsp-header-registrywith registry, encoding-version, header-block, minimal PDU, and session-method fixture evidence;T0-22now consumes this surface instead of raw byte parsing.
T0-21 WTLS phase boundary and minimal handshake reliability lane
Status:doneDepends On:T0-14Owner:transport-rust,docsFiles:
transport-rust/src/network/wtls/record.rstransport-rust/src/network/wtls/handshake.rstransport-rust/src/network/wtls/alerts.rsdocs/waves/wtls-record-structure.mddocs/waves/SECURITY_BOUNDARY_TRACEABILITY.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Publish explicit phase boundary: no-op mode vs minimal active mode.
- Implement minimal record parsing and handshake retransmission/duplicate handling policy for active mode.
- Keep WTLS disabled by default until profile gate explicitly enables it.
Tests:
- Record parse/serialize fixture lane for active mode.
- Handshake retransmission and duplicate-message fixtures.
- No-op mode parity fixtures proving transport behavior stability when disabled.
Accept:
- WTLS scope is explicit, testable, and aligned with profile gates.
- Security-path behavior cannot activate implicitly.
Migration gates:
- Done-1: WTLS mode defaults and activation criteria are documented.
- Done-2: active-mode fixtures pass and map to security requirement IDs.
- Done-3: no-op mode remains deterministic and contract-compatible.
Spec:
RQ-SEC-004,RQ-SEC-005
Notes:
- Closed on
codex/t0-21-wtls-boundarywith an explicit disabled-vs-active-minimal prototype boundary, record/alert/handshake module split, and fixture-backed envelope plus reliability coverage. - The 2026-07-24 WAP-261 audit established that these envelopes are not WTLS wire encodings and are not used by live
waps://.T0-21remains complete as a phase-boundary ticket, but provides no WAP-261 conformance evidence. - Insecure-test labeling, release gating, exact replacement, certificate/SIN behavior, crypto, and interop are tracked as
WTLS-00..WTLS-10indocs/architecture/wtls-modernization-research.md.
T0-22 Networking interop replay harness and golden event corpus
Status:doneDepends On:T0-18,T0-19,T0-20Owner:transport-rust,docsFiles:
transport-rust/tests/network/interop/transport-rust/tests/interop_replay.rsdocs/waves/networking-implementation-checklist.mddocs/waves/SPEC_TEST_COVERAGE.mddocs/waves/networking-migration-readiness-checklist.md
Build:
- Add replay harness for
CONNECT/GET/REPLYplus retransmit/duplicate transaction flows. - Normalize replay output into deterministic protocol events for assertion.
- Gate profile promotion on replay-corpus pass status.
Tests:
connect_session_replayget_reply_replayretransmit_flowduplicate_tid_flow
Accept:
- Interop behavior is fixture-backed beyond unit-only coverage.
- Migration gates can cite replay results as promotion evidence.
Migration gates:
- Done-1: replay corpus exists for all active profile paths.
- Done-2: retransmit/duplicate lanes are included in mandatory gating checks.
- Done-3: fixture updates require corresponding traceability/status updates.
Spec:
RQ-TRN-005..019
Notes:
- Baseline replay harness now exists in
transport-rust/tests/interop_replay.rswith schema-versioned seed corpus files undertransport-rust/tests/network/interop/covering deterministicGET/REPLYevent ordering over WDP/WSP. T0-24now formalizes these replay inputs as schema-versioned seed corpus files undertransport-rust/tests/network/interop/.- The same harness now covers a first WTP retransmission flow (timer expiry -> send, ack -> completed).
- The same harness now covers duplicate-TID replay outcomes for terminal replay and nonterminal duplicate drop.
- The same harness now covers minimal
Connect/ConnectReplyreplay over connection-oriented service ports. - Follow-up work can deepen corpus realism, but the baseline promotion gate for
CONNECT/GET/REPLY+ retransmit/duplicate lanes is now present and runnable.
T0-23 External corpus ingestion spike (Kannel + Wireshark)
Status:doneDepends On:T0-16Owner:docs,spec-processing,transport-rustFiles:
docs/waves/networking-external-response-triage.mddocs/waves/NETWORKING_EXTERNAL_SOURCE_INDEX.mddocs/waves/NETWORKING_GAP_MASTER.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.mdspec-processing/external-source-index.jsonspec-processing/new-source-material/external-networking/README.mdspec-processing/new-source-material/spec-processing/source-material/WAP.pdfspec-processing/source-material/vdoc.pub_the-wireless-application-protocol-wap-a-wiley-tech-brief.pdfspec-processing/external-parsed/wap_emulator_spec_notes.mdspec-processing/README.md
Build:
- Ingest and catalog implementation-reference materials for:
- Kannel networking sources (
wtp,wsp,wdplanes) - Wireshark dissectors (
packet-wtp,packet-wsp,packet-wdp,packet-wtls)
- Kannel networking sources (
- Classify local supplemental context sources (slides/tech-brief/LLM-parsed notes) as
heuristicunless they are backed by canonical WAP/OMA section anchors. - Produce a normalized source index with per-source trust class (
normative,interop-reference,heuristic). - Map extracted behaviors to existing
RQ-TRN-*IDs without creating new transport requirements.
Tests:
- Deterministic source-index lint/check (file present + source class + mapped requirement IDs).
- Spot-check fixture that one behavior from each external source family maps to an existing local requirement.
Accept:
- External reference corpus is indexed and traceable without changing normative precedence.
- Each imported behavior note cites a local requirement and implementation target lane.
Migration gates:
- Done-1: source index exists and is versioned.
- Done-2: all imported notes are tagged
interop-referenceorheuristicunless backed by canonical WAP spec. - Done-3: no
RQ-TRN-*requirement is redefined by external source text.
Spec:
RQ-TRN-001..019
Notes:
- Research spike only; non-blocking for protocol implementation unless it uncovers a contradiction with local normative anchors.
- Initial closure may catalog present supplemental sources and explicitly mark Kannel/Wireshark interop families as planned if no local snapshots are yet checked in.
- Closure landed with a versioned source index, provenance fields, behavior-note mapping, and intake scaffolding; future Kannel/Wireshark artifact drops remain follow-on ingestion work rather than blockers for
T0-23.
T0-24 Networking PCAP corpus spike and replay fixture seed pack
Status:doneDepends On:T0-23Owner:transport-rust,docsFiles:
transport-rust/tests/network/interop/transport-rust/tests/interop_replay.rstransport-rust/tests/network/interop/README.mddocs/waves/networking-migration-readiness-checklist.mddocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Build a curated PCAP seed corpus for:
CONNECThandshake pathGET/REPLYrequest-response- retransmit and duplicate transaction scenarios
- Define deterministic replay-fixture schema (
capture,expected events,expected transaction outcomes). - Document capture provenance and legal/reuse constraints.
Tests:
- Replay parser can consume seed fixtures and emit deterministic event traces.
- At least one fixture each for connect, get/reply, retransmit, duplicate flow classes.
Accept:
- PCAP seed corpus exists and is runnable via replay harness scaffolding.
- Fixture schema is stable and linked from transport/networking docs.
Migration gates:
- Done-1: seed corpus is committed with metadata and expected outputs.
- Done-2: replay harness stub validates schema and event ordering.
- Done-3: ticket
T0-22references these fixtures as required baseline inputs.
Spec:
RQ-TRN-005..019
Notes:
- Spike output is an enabling artifact for
T0-22; it does not itself satisfy protocol-core implementation gates. - Closure landed with schema-versioned replay seed files for
Connect,Get/Reply, retransmission, and duplicate-TID flows, plus provenance/legal-reuse metadata and transaction-outcome assertions in the replay harness.
T0-25 External conformance/vector source sweep spike
Status:doneDepends On:T0-23Owner:docs,spec-processingFiles:
docs/waves/NETWORKING_GAP_MASTER.mddocs/waves/NETWORKING_VECTOR_ADOPTION_SWEEP.mddocs/waves/networking-vector-adoption.jsondocs/waves/SPEC_TEST_COVERAGE.mddocs/waves/TRANSPORT_SPEC_TRACEABILITY.md
Build:
- Identify publicly available WAP interoperability/conformance vectors that can be safely reused.
- Classify candidate vectors by usefulness for current lanes (
WDP,WTP,WSP,WTLS) and profile compatibility (gateway-bridged,wap-net-core). - Produce a recommended adoption list with effort/benefit estimates.
Tests:
- Checklist validation proving each recommended vector maps to at least one active ticket and one fixture target path.
Accept:
- Conformance/vector candidates are ranked and tied to current execution lanes.
- No adoption recommendation conflicts with current spec precedence or scope-defer rules.
Migration gates:
- Done-1: ranked vector adoption list exists.
- Done-2: each item maps to
T0-*andRQ-*references. - Done-3: explicit
adopt nowvsdeferdecisions are documented.
Spec:
RQ-TRN-001..019,RQ-SEC-004..005
Notes:
- Research spike only; adoption decisions must remain profile-gated and additive.
- Closure landed with a ranked adoption register plus validator; Wireshark dissector source and Kannel source/release artifacts are
adopt-now, while Wireshark sample captures staydeferpending explicit provenance/reuse intake.
T0-26 Local Kannel E2E readiness gate
Status:doneDepends On:T0-14,T0-22Owner:transport-rust,browser,docsFiles:
transport-rust/tests/kannel_smoke.rsbrowser/docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.mddocs/waves/NETWORK_PROFILE_DECISION_RECORD.md
Build:
- Convert current local Kannel smoke posture into an explicit scored readiness gate.
- Strengthen transport smoke assertions beyond
ok/status/content-typeto expected deck/card identity. - Add one deterministic browser/host real-gateway smoke path.
- Normalize failure diagnostics for Kannel + WML server runs.
Tests:
- transport-only Kannel smoke with deterministic deck assertions
- browser/host real-gateway smoke with rendered outcome assertions
- local/CI-compatible one-command runner
Accept:
transport-to-kannelreadiness is measurable and reviewable over time- browser real-gateway E2E posture is explicit rather than inferred
- scorecard is updated whenever readiness meaningfully changes
Migration gates:
- Done-1: scorecard exists and is linked from profile docs
- Done-2: transport-only local Kannel E2E reaches credible smoke threshold
- Done-3: browser real-gateway lane has at least one deterministic smoke path
Spec:
RQ-TRN-001..015,RQ-TRX-010
Notes:
- Tracking ticket only until browser/transport real-gateway E2E gates are promoted into standard verification.
- Closure landed with explicit scorecard tracking, transport and browser ignored Kannel smokes, one-command runner diagnostics, and direct test/request-policy hardening so loopback-safe local runs do not rely on hidden host env state.
T0-27 Native connectionless WSP GET fetch path
Status:doneDepends On:T0-19,T0-20,T0-22,T0-26Owner:transport-rustFiles:
transport-rust/src/fetch_runtime.rstransport-rust/src/lib.rstransport-rust/src/network/wdp/*transport-rust/src/network/wsp/*transport-rust/src/network/native_fetch.rs(new)transport-rust/tests/network/interop/*transport-rust/tests/fixtures/transport/*
Build:
- Add an additive transport-mode selector inside
fetch_deck_in_processwithout changing the host contract. - Implement a native executor for
wap://GETrequests using connectionless WSPGET/REPLYover WDP/UDP port9200. - Reuse existing WDP adapter and WSP codec/session modules rather than introducing browser-side protocol logic.
- Normalize native replies back into the existing
FetchDeckResponseand engine handoff shape. - Keep the legacy gateway bridge as explicit fallback while the native lane is proving out.
Tests:
- unit tests for mode selection and fallback behavior
- integration tests with a deterministic local UDP responder exercising
GET->REPLY - replay/fixture coverage proving encoded request and decoded reply align with the seed corpus
Accept:
fetch_deck_in_processcan load at leastwap://localhost/andwap://localhost/loginthrough the native transport lane- browser/engine contracts remain unchanged
- native path is additive and does not regress gateway-bridged fetches
Migration gates:
- Done-1: native transport mode exists and is selectable without contract drift
- Done-2: connectionless
GETrequest encode/send/receive/decode flow is deterministic and test-backed - Done-3: native path returns normalized
FetchDeckResponseequivalent to existing gateway-bridge success shape for baseline decks
Spec:
RQ-TRN-001..004,RQ-TRN-010..015,RQ-TRN-017..019
Notes:
- Scope is intentionally narrow:
GETonly, no POST/forms, no full connection-oriented WTP client in this slice. - Design goal is low-regret reuse: later POST/session support must extend this executor rather than replace it.
T0-28 Browser host native-transport mode selection + fallback
Status:doneDepends On:T0-27Owner:browser,transport-rustFiles:
browser/src-tauri/src/fetch_host.rsbrowser/src-tauri/src/waves_config.rsbrowser/frontend/src/app/navigation-state.tsbrowser/frontend/src/app/browser-controller.tsbrowser/contracts/transport.ts(only if additive config becomes contract-visible)docs/waves/NETWORK_PROFILE_DECISION_RECORD.md
Build:
- Introduce explicit desktop host selection between legacy gateway bridge and native protocol fetch, defaulting to the safest posture.
- Preserve the current
fetch_deckhost command and response shape. - Ensure local-lab/private-address fetches can opt into the native lane without weakening public-destination policy for unrelated targets.
- Retain deterministic fallback to legacy bridge when native mode is disabled or unsupported.
Tests:
- host tests for default mode, override mode, and fallback behavior
- frontend request-policy/state tests proving network mode uses the intended transport path
Accept:
- desktop browser can deliberately run native mode for
wap://localhost/andwap://localhost/login - fallback behavior is explicit and visible rather than accidental
- no browser-side WSP/WTP logic is introduced
Migration gates:
- Done-1: host-side mode selection is explicit and documented
- Done-2: browser network mode can target native fetch path without contract breakage
- Done-3: fallback remains available for rollback and debugging
Spec:
RQ-TRX-010,RQ-TRN-001..015
Notes:
- Prefer env/config-first activation before adding user-facing UI controls.
- Keep all protocol behavior in
transport-rust; browser host owns only mode selection and diagnostics.
T0-29 Native Kannel GET smoke gate
Status:doneDepends On:T0-27,T0-28Owner:transport-rust,browser,docsFiles:
transport-rust/tests/kannel_smoke.rsbrowser/src-tauri/tests/kannel_smoke.rsscripts/transport-wap-smoke.shdocs/waves/TRANSPORT_E2E_READINESS_SCORECARD.mddocs/wap-test-environment/README.md
Build:
- Add a real native-transport smoke lane for baseline Kannel-served
GETdeck fetches. - Distinguish native-mode evidence from legacy gateway-bridge evidence in tests and docs.
- Capture diagnostics that make packet-shape/interoperability failures reviewable.
Tests:
- native-mode transport smoke for root + login decks
- browser host smoke proving render/navigation from native-mode fetch
- one-command runner support preserving logs on failure
Accept:
- local Kannel stack can be exercised from the desktop/browser path without relying on the raw HTTP bridge to
13002 - readiness docs clearly distinguish native vs legacy evidence
- native smoke is strong enough to guide subsequent POST/session work
Migration gates:
- Done-1: transport native smoke against Kannel is committed and runnable
- Done-2: browser host native smoke is committed and runnable
- Done-3: scorecard/profile docs are updated to reflect the live ingress posture
Spec:
RQ-TRN-001..015,RQ-TRX-010
Notes:
- This ticket is the evidence gate for promoting native desktop fetch from “experimental” to “default candidate.”
- Completed with explicit native-only transport smoke, host-native smoke, browser render/navigation smoke, and artifact-preserving smoke runner support.
T0-30 Native WSP form POST baseline
Status:todoDepends On:T0-27,T0-28,T0-29Owner:transport-rust,browser,docsFiles:
transport-rust/src/native_fetch.rstransport-rust/src/lib.rstransport-rust/tests/kannel_smoke.rsbrowser/src-tauri/src/fetch_host.rsbrowser/src-tauri/tests/kannel_smoke.rsdocs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.mddocs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
Build:
- extend the native fetch executor to support WML form
POSTsubmission for the training environment login/register flows - keep the existing transport contract and host entrypoint stable while adding native
POST - preserve gateway-bridged fallback behavior for rollback/debugging
Tests:
- native-mode transport smoke for login/register
POSTsubmission - browser host smoke proving native
POSTcan submit through the host fetch command - browser render/navigation smoke proving returned success/error decks load correctly after native
POST
Accept:
- desktop/browser can submit
wap://localhost/loginandwap://localhost/registerforms through the native lane - no browser-side protocol logic is introduced
- native
POSTevidence is strong enough to guide later session/connection-oriented work
Migration gates:
- Done-1: native
POSTtransport smoke against Kannel is committed and runnable - Done-2: host/browser native
POSTsmokes are committed and runnable - Done-3: docs distinguish native
GETcompletion from remaining nativePOSTwork
Spec:
RQ-TRN-001..015,RQ-TRX-010
Notes:
- Keep scope constrained to WML form submission first; do not widen into full connection-oriented WSP session work unless required to land baseline login/register flows.
- Research note: NATIVE_WSP_POST_RESEARCH_NOTES.md
- Landed evidence:
- transport native
POSTlogin/register smoke in transport-rust/tests/kannel_smoke.rs - Tauri host native
POSTsmoke in browser/src-tauri/src/tests/fetch_commands.rs - browser-engine native
POSTsmoke in browser/src-tauri/tests/kannel_smoke.rs
- transport native
A5-04 Minimal WML text-input interaction baseline
Status:doneDepends On:T0-30,A5-02Owner:engine-wasm,browserFiles:
engine-wasm/engine/src/parser/wml_parser/*engine-wasm/engine/src/runtime/*engine-wasm/engine/src/layout/*engine-wasm/contracts/wml-engine.tsbrowser/frontend/src/app/*browser/src-tauri/tests/*
Build:
- promote form support from submit metadata only into real viewport-editable text inputs for the training-environment login/register decks
- preserve deterministic focus traversal between links, inputs, and softkey actions in the constrained viewport
- add explicit edit/commit/cancel semantics so text entry mutates runtime field state without browser-owned shadow state
- render active field state back through the existing engine/frame contract
Tests:
- engine fixtures for focus traversal, edit commit, edit cancel, and variable update behavior
- browser integration coverage proving typed values appear in the viewport and are used by native submit
- manual demo coverage via a host-sample or Waves fixture deck with verification notes
Accept:
- Waves can focus, edit, and commit text values inside the viewport for
wap://localhost/loginandwap://localhost/register - committed values survive render refreshes and feed the existing native
POSTsubmission path
Spec:
RQ-RMK-008,RQ-RMK-002,RQ-RMK-003
Notes:
- keep first scope to text-style inputs only; do not widen into select/option or mask validation edge cases in this ticket
- Landed evidence:
- engine focused-input lifecycle and maxlength coverage (
engine-wasm/engine/src/engine_tests/navigation_metadata.rs) - edited input value feeding accept/postfield request payload (
engine-wasm/engine/src/engine_tests/actions_timers.rs) - host command and render integration for focused input edit (
browser/src-tauri/src/tests/tauri_commands.rs)
- engine focused-input lifecycle and maxlength coverage (
A5-05 WML select/option interaction baseline
Status:doneDepends On:A5-04Owner:engine-wasm,browserFiles:
engine-wasm/engine/src/parser/wml_parser/*engine-wasm/engine/src/runtime/*engine-wasm/engine/src/layout/*engine-wasm/contracts/wml-engine.tsbrowser/frontend/src/app/*
Build:
- add runtime and viewport interaction for
select/optioncontrols with deterministic choice cycling and commit behavior - preserve WML option ordering and selection state in runtime-owned form state
Tests:
- engine fixtures for default selection, cycling, commit, and cancellation
- browser integration coverage for focus and selection rendering
Accept:
- viewport users can inspect and change
selectvalues without leaving deterministic engine-owned state
Spec:
RQ-RMK-008,RQ-RMK-003
Notes:
- keep this ticket independent from multipart or advanced request-encoding work
- Landed in
#108(Select Support in Forms) with engine select/option runtime support, host contract updates, browser select-edit integration, and local/manual regression coverage indocs/waves/FORM_HANDLING_LOCAL_MODE_TESTING.md.
A5-06 Form-state submit integration hardening
Status:doneDepends On:A5-04,A5-05,T0-30Owner:engine-wasm,browser,transport-rustFiles:
engine-wasm/engine/src/runtime/*engine-wasm/contracts/wml-engine.tsbrowser/contracts/transport.tsbrowser/src-tauri/src/*transport-rust/src/*
Build:
- ensure engine-owned field state is the single source of truth for
postfieldresolution at submit time - harden submit-time substitution, empty/default field handling, and deterministic request generation across local/native/browser paths
Tests:
- cross-layer fixtures covering edited field values, default field values, and deterministic postfield ordering
- Kannel-backed browser smoke proving interactive edits change the submitted payload
Accept:
- interactive viewport edits are reflected in the exact request payload sent through the native transport
Spec:
RQ-RMK-008,RQ-WAE-008
Notes:
- this is the hardening bridge between new engine interaction semantics and the already-landed native submit path
- Landed across
#105,#108, and#109, including edited-field payload coverage, select-aware submit flow, native Kannel browser/host smoke, and deterministic external-intent/request-policy handling.
A5-07 Browser responsiveness and startup blocking investigation spike
Status:doneDepends On:A5-06Owner:browser,docsFiles:
browser/frontend/src/app/*browser/frontend/src/main.tsbrowser/src-tauri/src/*docs/waves/WORK_ITEMS.md- follow-up design note if the spike produces a concrete execution plan
Build:
- perform a deep investigation of UI-blocking paths during browser startup and run-mode transitions
- trace which browser, Tauri, and engine calls are currently awaited on the critical interaction path
- define a contract for which checks/load operations must be backgroundable versus user-blocking
- propose a concrete remediation plan that preserves deterministic state while removing avoidable UI stalls
Tests:
- reproduce and document the current lag cases with targeted frontend timing/regression coverage where feasible
- capture before/after measurement approach for startup and mode-switch responsiveness
Accept:
- there is a documented diagnosis for the known lag cases:
- network-mode startup with no reachable server blocks before the unavailable notification
- switching from local mode back to network mode waits on the fetch/probe path before the mode change fully settles
- the spike outputs an implementation-ready follow-up plan for moving non-critical checks and loads into async/background execution
Spec:
RQ-RMK-002,RQ-RMK-003
Notes:
- treat this as design and diagnosis first; do not land speculative async rewrites without measured evidence
- evaluate browser-shell architecture holistically, not just the startup probe, to identify any awaited work that degrades perceived UI responsiveness
- Review artifact landed in
docs/waves/WAVES_REVIEW_2026-03-15.md. - Follow-through landed in
#109and#110: background startup probing, timer/render churn reduction, stale-safe navigation, combined frame-oriented host commands, off-UI-thread fetch execution, and targeted coverage around the affected coordinators.
WAE Selected-Profile Gap Queue
WAE-607 HTTP Basic authentication closure
Status:todoDepends On:CONF-002,WSP-8Owner:transport-rust,browserFiles:
transport-rust/src/network/wsp/*transport-rust/src/fetch_policy.rsbrowser/src-tauri/src/*browser/frontend/src/*docs/waves/WAP_1_2_1_WAE_SCR_LEDGER.md
Build:
- Parse and surface Basic authentication challenges across the active transport profiles.
- Define host-owned credential acquisition/storage/cancellation policy.
- Retry with
Authorizationdeterministically without logging credentials. - Preserve explicit failure and user-cancel outcomes.
Tests:
- Challenge parsing and malformed-challenge fixtures.
- Credential retry, wrong-credential, cancellation, and retry-bound tests.
- Browser-host tests proving secrets do not enter traces or persisted history.
Accept:
WAESpec-C-002has an end-to-end browser/transport flow; WSP header token registration alone cannot close the item.
Spec:
WAESpec-C-002, WAP-190 section5.1.2,RQ-WAE-014
Phase D: Engine Debug Connector (Planning-Ready)
Reference plan:
docs/waves/ENGINE_DEBUG_CONNECTOR_PLAN.md
D0-01 Debug connector contract and architecture baseline
Status:todoDepends On:A5-06Owner:engine-wasm,browser,docsFiles:
engine-wasm/contracts/wml-engine.tsbrowser/contracts/engine.tsbrowser/src-tauri/src/contract_types.rsdocs/waves/ENGINE_DEBUG_CONNECTOR_PLAN.mddocs/waves/CONTRACT_REQUIREMENTS_MAPPING.md
Build:
- define additive debug session contracts (
open,poll,snapshot,close) and event/snapshot type surfaces - pin runtime/host responsibilities and determinism constraints for debug instrumentation
- document masking/default-disable policy for sensitive fields
Tests:
- contract generation/typecheck passes for host/frontend consumers
- docs lint/checks pass
Accept:
- debug connector interfaces are contract-first, additive, and implementation-ready
- no existing runtime/host contract behavior is broken
Spec:
RQ-RMK-002,RQ-RMK-008,RQ-WAE-017
Notes:
- this ticket establishes interfaces only; no runtime emission implementation in this slice
D0-02 Engine event stream and snapshot emitter
Status:todoDepends On:D0-01Owner:engine-wasmFiles:
engine-wasm/engine/src/lib.rsengine-wasm/engine/src/engine_runtime_internal/*engine-wasm/engine/src/engine_public_api.rsengine-wasm/engine/src/engine_tests/*
Build:
- add in-engine fixed-size debug event ring buffer with cursor and drop accounting
- emit deterministic events at deck/nav/focus/input/action/script/timer boundaries
- add read-only snapshot export with sensitive-field masking defaults
Tests:
- engine tests for event ordering determinism and drop accounting
- engine tests for masked sensitive fields in snapshot/event payloads
Accept:
- engine exposes deterministic, pollable debug events and snapshots without changing runtime behavior
Spec:
RQ-RMK-002,RQ-RMK-003,RQ-WAE-016
Notes:
- keep emitter path allocation-light and side-effect free for non-debug execution
D0-03 Host bridge integration for attach/poll/close
Status:todoDepends On:D0-01,D0-02Owner:browser,engine-wasmFiles:
browser/src-tauri/src/engine_bridge/*browser/src-tauri/src/lib.rsbrowser/contracts/generated/*browser/src-tauri/src/tests/*
Build:
- expose tauri commands for debug session lifecycle and event polling
- map host contract types to engine debug contract surfaces
- ensure command failures are deterministic and non-fatal to runtime state
Tests:
- tauri command tests for attach/poll/close behavior and error handling
- contract wrapper generation/typecheck
Accept:
- running desktop host can attach and retrieve debug events/snapshots through host APIs
Spec:
RQ-WAE-017,RQ-RMK-002
Notes:
- scope excludes UI panel; this is command/API integration only
D0-04 Browser debug panel and capture workflow
Status:todoDepends On:D0-03Owner:browserFiles:
browser/frontend/src/app/*browser/frontend/src/components/*browser/frontend/src/styles.cssbrowser/frontend/src/app/*.test.ts
Build:
- add optional dev-tools panel to start/stop debug session and stream recent events
- include export-to-json workflow for bug reproduction artifacts
- keep panel isolated from runtime control path (read-only)
Tests:
- frontend unit/integration tests for panel lifecycle and export behavior
Accept:
- operators can capture deterministic engine debug timelines without console scraping
Spec:
RQ-RMK-003,RQ-WAE-017
Notes:
- if UI scope threatens active lane capacity, ship as follow-up after
D0-03
Phase U: User Onboarding + Help Experience (Planning-Ready)
Reference plan:
docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.md
U0-01 Welcome home and first-run entrypoint
Status:todoDepends On: noneOwner:browser,docsFiles:
browser/frontend/src/app/*browser/frontend/src/components/*browser/frontend/src/styles.cssdocs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.mdbrowser/frontend/src/app/*.test.ts
Build:
- add a first-run intro/home surface for Waves
- explain what Waves is and present primary entry points (
Take the tour,Try local examples,Connect to a WAP server,Open help) - keep the experience skippable and non-blocking for returning users
Tests:
- frontend tests for first-run visibility, dismissal, and re-entry behavior
- content rendering checks for primary call-to-action states
Accept:
- new users are not dropped directly into an unexplained shell state
- first screen explains product purpose and gives a safe next step
Spec:
RQ-RMK-002,RQ-RMK-003
Notes:
- shell-level orientation only; do not fold tutorial sequencing or hint systems into this ticket
U0-02 Guided tour and replayable concept walkthrough
Status:todoDepends On:U0-01Owner:browser,docsFiles:
browser/frontend/src/app/*browser/frontend/src/components/*browser/frontend/src/styles.cssbrowser/frontend/src/app/*.test.ts
Build:
- add a replayable guided tour for shell chrome, local vs network mode, example loading, and debug-surface discovery
- keep the tour step-based, skippable, and resumable within a session
Tests:
- frontend tests for step progression, skip/replay behavior, and state reset
Accept:
- users can complete a short product tour without leaving Waves
- returning users can replay the tour from Help
Spec:
RQ-RMK-002,RQ-RMK-003
Notes:
- do not tie this ticket to deep runtime/debug implementation work; it is a shell-level teaching layer
U0-03 Help hub and durable in-app documentation
Status:todoDepends On:U0-01Owner:browser,docsFiles:
browser/frontend/src/app/*browser/frontend/src/components/*docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.mdbrowser/frontend/src/app/*.test.ts
Build:
- add an in-app help hub with
Start Here,Quickstart,Core Concepts,Troubleshooting,Developer Guide, andReference - make help reachable after onboarding, not just during first launch
Tests:
- frontend tests for section navigation and stable rendering of core help content
Accept:
- users can access core help inside the product without external documentation
- help content is versioned in-repo and can be updated with product changes
Spec:
RQ-RMK-002,RQ-RMK-003,RQ-WAE-017
Notes:
- keep content local-first and testable; avoid building a docs sync pipeline in the MVP slice
U0-04 Tutorial decks and task-based learning content
Status:todoDepends On:U0-03Owner:browser,engine-wasm,docsFiles:
engine-wasm/examples/source/*engine-wasm/examples/generated/examples.tsbrowser/frontend/src/app/*docs/waves/FORM_HANDLING_LOCAL_MODE_TESTING.md
Build:
- add local tutorial content for common tasks (
first deck,edit and submit a form,understand local vs network mode,inspect runtime state) - connect tutorial discovery through the welcome page and help hub
Tests:
- example generation remains green
- frontend tests verify tutorial discovery and launch paths
Accept:
- users can learn core Waves interactions through built-in content and examples
- tutorial content remains within normal engine/browser boundaries
Spec:
RQ-RMK-002,RQ-RMK-003,RQ-RMK-008
Notes:
- prefer product-native tutorial content over external-only prose
U0-05 Contextual hints and onboarding state persistence
Status:todoDepends On:U0-02,U0-03Owner:browserFiles:
browser/frontend/src/app/*browser/frontend/src/components/*browser/frontend/src/app/*.test.ts
Build:
- add lightweight contextual hints for first network failure, first local example load, first edit flow, and first dev-tools open
- persist dismiss/replay state locally with a clear reset path
Tests:
- frontend tests for trigger rules, dismissal, and persistence/reset behavior
Accept:
- contextual help appears only when relevant and remains dismissible
- returning users are not forced through repeated onboarding
Spec:
RQ-RMK-002,RQ-RMK-003
Notes:
- hints are additive and non-blocking; do not replace the welcome page or help hub with hint-only onboarding
Phase W: WMLScript Runtime and VM (Active)
Reference architecture:
docs/waves/WAVESCRIPT_VM_ARCHITECTURE.mddocs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
Compliance target for this lane:
- Implement and prove all 121 mandatory interpreter/library rows selected by
WAP 1.2.1 Class C (
WMLScript:MCF+WMLScriptLibs:MCF). Optional capabilities and enhancements remain separately declared. - Prioritize bedrock compliance closure before breadth-library expansion:
- external-call/pragma/url invocation correctness
- bytecode structure verification gates
- deterministic function/local/conversion/error semantics
- script content-type routing/handoff correctness
W0 Foundation (Archived)
Completed W0-01 through W0-04 are archived in:
docs/waves/WORK_ITEMS_ARCHIVE.md
W0-05 Timer/dialog integration baseline
Status:doneDepends On:W0-04Files:
engine-wasm/engine/src/wavescript/stdlib/dialogs.rsengine-wasm/engine/src/wavescript/stdlib/wmlbrowser.rsengine-wasm/engine/src/runtime/events.rsengine-wasm/engine/src/lib.rsbrowser/contracts/engine.tsbrowser/frontend/src/main.tsbrowser/src-tauri/src/*
Build:
- Add timer/event plumbing and dialog hostcall path.
Tests:
engine-wasm/engine/src/engine_tests/actions_timers.rs(timer_expiry_invokes_script_and_publishes_dialog_in_order)engine-wasm/examples/source/timer-script-dialog.wmlengine-wasm/examples/source/timer-script-dialog.flow.jsonpnpm test:story W0-05
Accept:
- Timer-triggered script flow works with deterministic host/runtime behavior.
Spec:
RQ-WMLS-022,RQ-WAE-016,RQ-WAE-017
Architecture Compliance:
- Dialog/timer features are host capability calls only.
- Timer semantics remain runtime-owned and deterministic.
- Host integration cannot bypass runtime error/trap handling model.
Closure Boundary:
- This closes the project baseline only. Strict WAP Dialogs library/function
identifiers, interactive dialog result round-trips, and full
WMLS-5conformance remain inWMLS-504/WMLS-505andW1-05..W1-07.
W0-06 Bytecode verification gates follow-up
Status:doneDepends On:W0-02Files:
engine-wasm/engine/src/wavescript/decoder.rsengine-wasm/engine/src/wavescript/vm.rsdocs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
Build:
- Implement structural verification gates (header/pools/index/jump-target validity) before VM execution.
Tests:
- Verification-failure fixtures for malformed pools, invalid branch targets, and out-of-range references.
Accept:
- Decoder rejects structurally invalid units before interpreter execution begins.
Spec:
RQ-WMLS-008,RQ-WMLS-009,RQ-WMLS-010
Notes:
- Additive compliance follow-up to completed decoder skeleton (
W0-02). - Completed with pre-execution structural gates in decoder and boundary entry validation in VM (
invalid local index references,call arity/frame bounds,host arg-count bounds, and instruction-boundary entry checks). - This completed slice applies to the project-specific VM skeleton. It is provisional architecture evidence, not WAP-193 bytecode conformance.
- Strict WAP header/pool/function-table/instruction verification closure
remains tracked in
W1-02.
W0-07 newContext + getCurrentCard semantics follow-up
Status:doneDepends On:W0-04Files:
engine-wasm/engine/src/wavescript/stdlib/wmlbrowser.rsengine-wasm/engine/src/lib.rsengine-wasm/contracts/wml-engine.ts
Build:
- Implement
WMLBrowser.newContextandWMLBrowser.getCurrentCardbehavior per spec. - Ensure interaction with pending
go/prevrequests is deterministic and spec-aligned.
Tests:
- Invocation fixtures for context reset semantics and current-card URL formatting (relative vs absolute).
Accept:
- Missing context APIs are present and behaviorally aligned with WMLScript library semantics.
Spec:
RQ-WMLS-019,RQ-WMLS-020
Notes:
- Additive compliance follow-up to completed var/nav subset (
W0-04). - Completed in
R0-03closure pass with deterministic runtime + stdlib tests and host-visible fixture (wmlbrowser-context-fidelity.wml).
W0-08 External function access-control conformance follow-up
Status:todoDepends On:W0-01,W0-04Files:
engine-wasm/engine/src/lib.rsengine-wasm/engine/src/wavescript/*docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
Build:
- Enforce external-call constraints (
externvisibility, access pragma checks, deterministic call failure categories).
Tests:
- Resolver fixtures for allowed/denied domain/path calls and non-extern function rejection.
Accept:
- External script invocation semantics include conformance access checks before execution.
Spec:
RQ-WMLS-001,RQ-WMLS-002,RQ-WMLS-003
Phase W1: Bedrock Compliance Closure (Priority Lane)
W1-01 Script content-type routing and ownership boundaries
Status:todoDepends On:W0-01Files:
transport-rust/src/lib.rsbrowser/contracts/transport.tsbrowser/src-tauri/src/lib.rsdocs/waves/CONTRACT_REQUIREMENTS_MAPPING.md
Build:
- Add explicit transport/host handling policy for:
text/vnd.wap.wmlscriptapplication/vnd.wap.wmlscriptc
- Keep boundary ownership explicit: transport classification + runtime execution handoff; no host-side script semantic execution.
Tests:
- Fixture matrix for both content types and deterministic unsupported/error mappings.
Accept:
- Script media types are routed deterministically and reflected in contract/docs.
Spec:
RQ-WMLS-011
W1-02 Bytecode structural verification (header/pools/indexes/jumps)
Status:todoDepends On:W0-06Files:
engine-wasm/engine/src/wavescript/decoder.rsengine-wasm/engine/src/wavescript/vm.rsengine-wasm/engine/src/lib.rs
Build:
- Replace or front the project-specific byte stream with the effective WAP-193 compilation-unit format.
- Implement pre-execution verification gates for WAP header, constant pool, pragma pool, function pool, instruction stream, and references.
- Keep trap taxonomy deterministic and host-safe.
Tests:
- Source-derived valid
.wmlscfixtures plus malformed cases covering version/header fields, multi-byte encodings, section sizes, pool references, function boundaries, every mandatory instruction family, and jump targets.
Accept:
- Invalid bytecode fails before execution, with deterministic trap class.
Spec:
RQ-WMLS-008,RQ-WMLS-009,RQ-WMLS-010
W1-03 Extern/pragma/access-control conformance
Status:todoDepends On:W0-08Files:
engine-wasm/engine/src/lib.rsengine-wasm/engine/src/wavescript/*docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
Build:
- Enforce
externvisibility and pragma-based external access control (use url,use access,use meta) for external invocation paths.
Tests:
- Allowed/denied call fixtures and non-extern rejection fixtures with deterministic outcomes.
Accept:
- External invocation behavior is policy-complete and spec-linked.
Spec:
RQ-WMLS-001,RQ-WMLS-002,RQ-WMLS-003
W1-04 Function/local/return and conversion semantics parity closure
Status:todoDepends On:W0-03Files:
engine-wasm/engine/src/wavescript/vm.rsengine-wasm/engine/src/wavescript/value.rsengine-wasm/engine/src/wavescript/stdlib/*
Build:
- Close gaps against spec semantics for arity, pass-by-value, implicit return value, local initialization, and conversion behavior.
Tests:
- Deterministic conformance fixtures mapped to requirement IDs in
docs/waves/SPEC_TEST_COVERAGE.md.
Accept:
- Function/call/conversion semantics are deterministic and spec-aligned for mandatory coverage scope.
Spec:
RQ-WMLS-004,RQ-WMLS-005,RQ-WMLS-006
W1-05 SCR conformance matrix and CI guardrail for WMLScript lane
Status:in-progressDepends On:W1-02,W1-03,W1-04Files:
docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.mddocs/waves/WAP_1_2_1_WMLSCRIPT_SCR_LEDGER.mddocs/waves/WAP_1_2_1_WMLSCRIPT_LIBRARIES_SCR_LEDGER.mddocs/waves/SPEC_TEST_COVERAGE.mdspec-processing/source-manifests/wap-1.2.1-wmlscript-scr.jsonspec-processing/source-manifests/wap-1.2.1-wmlscript-libraries-scr.jsonscripts/check-wap-wmlscript-conformance-ledger.mjs.github/workflows/*
Build:
- Maintain the machine-checkable mapping for all 112 WMLScript rows and 95
effective WMLScript Libraries rows, including source-exact
WMLSSL048. - Apply exact Class C selection: 41
WMLScript:MCFrows and 80WMLScriptLibs:MCFrows. - Fail CI when mandatory SCRs are unmapped or regress to untracked.
Tests:
node scripts/check-wap-wmlscript-conformance-ledger.mjs- CI dry-run with one intentionally unmapped mandatory SCR.
Accept:
- Effective SCR source/order/status/profile mappings are machine-checked.
- Every selected row maps to implementation status, requirements, and open work.
- Every selected row has direct normative test evidence or an explicit release-blocking gap.
- The validator runs in required CI and an intentional mapping regression fails the job.
Spec:
RQ-WMLS-001..022(mandatory subsets first)
Notes:
- Current audit is intentionally conservative:
- WMLScript: 23 partial / 18 missing / 0 implemented;
- Libraries: 14 partial / 66 missing / 0 implemented;
- direct normative tests: 0.
- Existing custom-VM tests are provisional links only. They cannot close WAP-193 binary-format or standard-library identifier rows.
W1-06 Fatal/non-fatal script error taxonomy closure
Status:in-progressDepends On:W1-02,W1-04Files:
engine-wasm/engine/src/wavescript/vm.rsengine-wasm/engine/src/wavescript/value.rsengine-wasm/engine/src/lib.rsengine-wasm/contracts/wml-engine.tsdocs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
Build:
- Implement explicit fatal vs non-fatal execution error classes and map non-fatal computational failures to
invalidsemantics. - Keep host contract deterministic: invocation-abort vs recoverable-result outcomes must be machine-checkable.
- Progress (
2026-03-02): added structured executionerror_class+error_category+invocation_abortedcontract fields, non-fatal mapping for computationalTypeErrorandStackUnderflowtraps toinvalid, preserved deferred side-effects for non-fatal outcomes, added fatal-abort recovery coverage, and enforced explicitVmTrapclass/category matrix tests across all current variants. - Progress (
2026-07-25): corrected a spec-accuracy bug from the prior slice:WAP-193_10112.3.1.7 classifies Stack Underflow as Fatal (“only generated if compiler generates bad code”), not Non-fatal, and the VM’sTypeErroris the same “compiler generated bad code” condition. Both now classifyfatal/integrityinclassify_vm_trap/classify_vm_trap_category(engine_script_types.rs); scripts hitting either trap now abort invocation instead of yieldinginvalid. Updated the affected trace/invocation tests inengine_tests/script_runtime.rsandengine_tests/traces_public_api.rsto match, and addednon_fatal_execution_outcome_contract_shapeto pin theScriptExecutionOutcome::non_fatalcontract shape directly, since no currentVmTrapvariant reaches it. Remaining scope: no VM opcode can trigger a real chapter-12.4 Non-fatal error yet (divide-by-zero, integer/float overflow/underflow, float constant/conversion range) — those need new opcodes, which isW1-04territory, not this ticket.
Tests:
- Conformance fixtures for arithmetic/conversion/runtime-error classes with expected fatal/non-fatal outcomes.
- Integration fixtures proving host/runtime liveness after fatal script invocation failure.
Accept:
- Error handling behavior aligns with chapter
12taxonomy and no longer relies on generic trap collapsing.
Spec:
RQ-WMLS-006,RQ-WMLS-010
W1-07 W1-06 closure split and acceptance finalization
Status:todoDepends On:W1-06Files:
docs/waves/WORK_ITEMS.mddocs/waves/SPEC_TEST_COVERAGE.mddocs/waves/WMLSCRIPT_SPEC_TRACEABILITY.mdengine-wasm/contracts/wml-engine.ts
Build:
- Split remaining
W1-06open work into explicit closure bullets (missing fixture classes, unresolved trap mappings, and host contract assertions). - Define objective close criteria so
W1-06can move fromin-progresstodonewithout ambiguity.
Tests:
- Coverage matrix update proving each remaining
W1-06closure bullet maps to a deterministic fixture/test lane.
Accept:
W1-06has a concrete closure checklist with no implicit scope remaining.
Spec:
RQ-WMLS-006,RQ-WMLS-010
Phase R: WAP-191 Full-Stack Conformance Completion
Reference:
docs/waves/WML_191_FULL_STACK_COMPLIANCE_AUDIT.mdspec-processing/source-material/parsed-markdown/docling-cleaned/WAP-191-WML-20000219-a.cleaned.mdspec-processing/source-manifests/wap-1.2.1-effective-spec.json
R0-01 WML-191 conformance matrix and CI gate
Status:in-progressDepends On:S0-14Files:
docs/waves/WML_191_FULL_STACK_COMPLIANCE_AUDIT.mddocs/waves/SPEC_TEST_COVERAGE.mddocs/waves/CONTRACT_REQUIREMENTS_MAPPING.md.github/workflows/*
Build:
- Create a machine-checkable effective WML 1.3 conformance matrix
(
WML-C-01..59,WML-S-60..69,WML-C-70..76) with source SCR ID, status, profile disposition, and test mapping. - Apply
WAP-191_105afterWAP-191_104; SIN 105 adds optionalWML-C-76(tabindex) and clarifies POST/multipart behavior. - Add CI guardrail that fails when mandatory items are unmapped.
Tests:
- CI dry-run with one intentionally unmapped mandatory ID.
Accept:
- Mandatory WML IDs cannot silently regress to unmapped/untracked state.
Spec:
- effective
WAP-191section15.1through15.4plusWAP-191_105section3
Notes:
- Source/status/disposition/work-item accounting is implemented in
spec-processing/source-manifests/wap-1.2.1-wml-scr.jsonand guarded bynode scripts/check-wap-conformance-ledger.mjs. - The exact sequence includes
WML-S-60..69. The mandatory code audit records 7 implemented, 23 partial, and 17 missing rows, with validated code/test evidence for 30 rows.WML-201directly projects all 76 rows and maps all 174 selected WML clauses without treating gaps as implementation. Nested clause, optional capability, and release-gate evidence remain, so this ticket is not done.
R0-02 Inter-card navigation process-order conformance
Status:doneDepends On:A5-02,T0-04Files:
engine-wasm/engine/src/lib.rsengine-wasm/engine/src/runtime/*engine-wasm/engine/src/parser/wml_parser/actions.rstransport-rust/src/lib.rsbrowser/frontend/src/session-history.tsbrowser/frontend/src/app/navigation-state.tsbrowser/frontend/src/app/navigation-state.test.tsdocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Implement and verify section
12.5step-order behavior forgo,prev,noop,refresh, including deterministic task-failure handling. - Ensure request metadata handoff (method/postfield/headers) stays aligned between runtime and transport.
Tests:
- Cross-layer fixtures for forward/back/refresh/error paths with trace assertions.
- Seed fixture candidates from
docs/waves/WILEY_BOOK_CODE_EXAMPLES.md:WBK-FX-002,WBK-FX-003,WBK-FX-004,WBK-FX-005,WBK-FX-007.
Accept:
- Runtime and host behavior match documented WML process ordering for covered flows.
Spec:
WML-18, section9.5, section12.5
R0-03 History/context fidelity completion
Status:doneDepends On:A5-01,B2-02Files:
engine-wasm/engine/src/runtime/*engine-wasm/contracts/wml-engine.tsbrowser/contracts/transport.tsbrowser/frontend/src/session-history.ts
Build:
- Expand history entries to include request identity fields needed by WML history semantics.
- Complete
newcontextand context-reset behavior across runtime and browser history integration.
Tests:
- Deterministic back-stack fixtures with repeated URLs, mixed transitions, and context resets.
Accept:
- History and context behavior is deterministic and conforms to section
9.2+10.2.
Spec:
WML-07,WML-10,WML-11,WML-13
Notes:
- Context reset semantics closed via
WMLBrowser.newContextruntime effect handling andWMLBrowser.getCurrentCardAPI coverage. - Acceptance evidence includes deterministic engine tests and shared local example coverage (
engine-wasm/examples/source/wmlbrowser-context-fidelity.wml).
R0-04 Parser semantic completeness for structure/task/form elements
Status:in-progressDepends On:M1-07Files:
engine-wasm/engine/src/parser/wml_parser/*engine-wasm/engine/src/runtime/*engine-wasm/engine/tests/fixtures/*docs/wml-engine/work-items.md
Build:
- Complete parser/runtime coverage for
head/template/access/meta,do/onevent,select/option/optgroup/input/fieldset,timer, and associated validity constraints. - Keep deterministic failure behavior for invalid bindings/conflicts.
Tests:
- Fixture matrix for element parse/validation and runtime effects.
Accept:
- Core WML element families in section
11are represented or explicitly profile-gated.
Spec:
WML-21,WML-25,WML-26,WML-33,WML-34,WML-39,WML-40,WML-41,WML-43,WML-47,WML-48,WML-52,WML-53,WML-66,WML-67,WML-69
Notes:
head(WML-C-30) andaccess(WML-C-21) landed: the parser enforces ordered, unique deck-level<head>, extracts authored<access domain= path=>values, and rejects more than one access element per section11.3.1. Orderedmeta(WML-C-34, optional) records now retain name/http-equiv identity, content, forua, and scheme with deterministic EMPTY/attribute validation.accessremainspartial: defaults, relative-path resolution, and referring-URI policy enforcement are the cross-boundaryR0-07scope.template(WML-C-47) split out toR0-12: it is spec-inseparable from card/deck task shadowing (WML-C-08, section9.6) and requires a real nameddo/oneventbinding model this codebase doesn’t have yet, not a small addition alongsidehead/access.- Mandatory
input/select/optionsyntax validation forWML-C-33,WML-C-41, andWML-C-43now rejects invalid DTD content, undeclared attributes, and invalid NMTOKEN/enum/boolean/number values deterministically. Optionalfieldsetand nestedoptgroupwrappers receive deterministic DTD-derived attribute/content validation, reject empty fieldsets and leaf optgroups, and continue processing their children in document order. Their capability declaration and grouping presentation remain unmodeled and therefore not assessed. - Input commit now enforces valid Basic Latin format codes, escaped literals, invalid-mask fallback,
emptyokprecedence, andmaxlength. Rejection returns a deterministic host-visible error while preserving the prior variable and active draft for retry; password rendering conceals entered characters without replacing the real variable and preserves visible format literals. - Input name/value initialization now runs in document order on load, navigation, back, and refresh; input
valuevdata defaults are evaluated at entry, and invalid existing values are unset before valid-default fallback. Active input/select edits commit before card task execution, and invalid masked input blocks task side effects. - Select initialization, multiple selection,
iname/ivalueprecedence, option-value evaluation, serialization, onpick dispatch, and no-implicit-refresh behavior have direct runtime evidence. - Remaining scope:
do/onevent, optionalfieldset/optgroupcapability declaration and grouping presentation,timer, general vdata/HREF validation and conversion outside the bounded input/select paths, and language-aware non-Basic-Latin mask repertoires. The mandatory Unicode Basic Latin input floor is implemented and directly tested.
R0-05 Renderer semantics completion (11.8/11.9)
Status:todoDepends On:B5-02,B5-03,C5-01,C5-02Files:
engine-wasm/engine/src/layout/*engine-wasm/engine/src/render/*engine-wasm/engine/tests/fixtures/*
Build:
- Close remaining text/paragraph/table/pre/image semantic gaps and maintain deterministic render output.
- Preserve logical focus semantics under wrap and inline break behavior.
Tests:
- Snapshot and semantic fixtures across viewport widths and mixed markup.
Accept:
- Renderer behavior aligns with section
11.8and11.9requirements for implemented profiles.
Spec:
WML-24,WML-32,WML-36,WML-46,WML-49,WML-50,WML-54..59,WML-68,WML-73,WML-75
R0-06 Transport/request-policy and postfield plumbing
Status:todoDepends On:T0-04,R0-02Files:
transport-rust/src/lib.rsbrowser/contracts/transport.tsengine-wasm/contracts/wml-engine.tsbrowser/src-tauri/src/lib.rs
Build:
- Add runtime-to-transport request-policy channel for task metadata (
cache-control, referer policy, postfield payload context). - Preserve boundary ownership: transport executes requests, runtime defines semantic intent.
Tests:
- End-to-end request-shape fixtures for form submit and refresh/no-cache scenarios.
Accept:
- Request metadata semantics are deterministic and traceable to runtime task state.
Spec:
WML-29,WML-37,WML-52, section9.5.1, section12.5
R0-07 Browser policy path: access control, low-memory, unknown-DTD behavior
Status:todoDepends On:R0-04Files:
browser/frontend/src/*browser/src-tauri/src/*engine-wasm/contracts/wml-engine.tsdocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Implement policy-consistent handling for deck access-control metadata, low-memory behavior toggles, and unknown-DTD handling strategy.
- Keep enforcement at host boundary where required by architecture constraints.
Tests:
- Policy fixtures and integration tests for allow/deny paths and deterministic error/reporting behavior.
Accept:
- Browser host has explicit, test-backed policy behavior for sections
12.1-12.4.
Spec:
WML-14,WML-15,WML-16,WML-17
R0-08 WML encoder/validation tooling and WBXML conformance fixtures
Status:todoDepends On:T0-07Files:
transport-rust/tests/fixtures/transport/*docs/waves/SPEC_TEST_COVERAGE.mddocs/waves/RUNTIME_MARKUP_SPEC_TRACEABILITY.mdspec-processing/source-manifests/wap-1.2.1-wbxml-scr.json
Build:
- Add tooling/fixtures that validate WML token table expectations, XML well-formed/validation gates, and server/client conformance constraints.
- Close the selected
WBXML-C-001,WBXML-C-010, andWBXML-C-011rows against a pinned decoder implementation rather than permissive subprocess behavior. - Keep ownership explicit where behavior is authoring/tooling vs runtime-execution.
Tests:
- Fixture matrix for valid/invalid tokenization and decode compatibility classes.
- Source-derived cases for WBXML headers, multi-byte integers, string tables, code pages, global tokens, entities, opaque/extensions, literals, default attributes, and malformed input.
Accept:
- Section
14and15.2/15.3/15.4obligations are concretely represented in testable artifacts. - All three
WBXML:MCFclient rows have direct normative evidence or a deterministic explicit unsupported result; fake fixed-output decoders andeitherfixtures cannot satisfy the gate.
Spec:
WML-60,WML-61,WML-62,WML-63,WML-64,WML-65,WML-70RQ-RMK-010,WBXML-C-001,WBXML-C-010,WBXML-C-011
R0-09 BACK key hard-availability and do type=prev precedence
Status:todoDepends On:R0-02,R0-03Files:
engine-wasm/engine/src/runtime/*engine-wasm/engine/src/parser/wml_parser/*browser/frontend/src/*browser/contracts/transport.tsdocs/waves/WAE_SPEC_TRACEABILITY.md
Build:
- Guarantee BACK is always user-accessible and maps to deterministic history pop semantics.
- Implement WML1 override behavior where first-in-document-order
do type="prev"takes precedence for BACK behavior.
Tests:
- Fixture set for BACK availability, stack-pop behavior, and
do type=prevprecedence with conflicting bindings.
Accept:
- BACK semantics are always available and precedence rules are deterministic across runtime + host UI paths.
Spec:
RQ-WAE-017, section9.2, section9.7
R0-10 Cross-layer acceptance fixture ledger
Status:in-progressDepends On:R0-02,R0-03,R0-06,W1-06Files:
docs/waves/SPEC_TEST_COVERAGE.mddocs/waves/WORK_ITEMS.mddocs/wml-engine/work-items.mdtransport-rust/tests/fixtures/transport/*engine-wasm/engine/tests/fixtures/*browser/frontend/src/app/*.test.ts
Build:
- Add a single ledger mapping active
R0/T0/W1tickets to concrete fixture and test assets across engine, transport, and browser. - Record explicit “implemented”, “partial”, and “missing” fixture lanes for each ticket acceptance criterion.
Tests:
- Manual consistency pass confirming every referenced fixture path exists and each mapped ticket has at least one deterministic test lane.
Accept:
- Ticket closure decisions can be made from one cross-layer fixture map without ad hoc test discovery.
Spec:
- Aggregated IDs from
WML-191,RQ-WAE-*,RQ-TRN-*, andRQ-WMLS-*lanes linked by mapped tickets.
Progress:
- The shared WML example corpus now accepts validated executable-flow companions whose work-item
and spec-item mappings must exactly match example metadata.
pnpm test:story listexposes this first machine-readable host-sample ledger slice. - Full
R0/T0/W1cross-layer asset enumeration and implemented/partial/missing acceptance lanes remain open; this slice does not close the ticket.
R0-11 Deterministic cross-layer replay runner
Status:in-progressDepends On:R0-10,T0-04,R0-03Files:
transport-rust/tests/fixtures/transport/*engine-wasm/engine/tests/fixtures/*browser/frontend/src/app/navigation-state.test.tsbrowser/src-tauri/src/lib.rsdocs/waves/SPEC_TEST_COVERAGE.md
Build:
- Add a deterministic replay runner that executes representative
transport -> engine -> browserflows from shared fixture inputs and validates timeline/frame/state outputs. - Keep this runner behavior-focused (semantic drift guard), not just type/contract shape checks.
Tests:
- One replay lane for load->fragment nav->back.
- One replay lane for external intent follow + request-policy metadata.
Accept:
- Cross-layer behavioral regressions are detectable in one reproducible replay lane with stable fixture outputs.
Spec:
WML-07,WML-18,RQ-WAE-008,RQ-WAE-016,RQ-TRN-004
Progress:
pnpm test:story <id|all>now provides deterministic Playwright replay against the production WASM host sample with automatic Vite lifecycle, semantic state/trace assertions, and structured failure artifacts.- Representative fragment/external-intent, history-back, and timer flows are executable. The required transport-to-engine-to-native-browser replay and request-policy lane remain open; this slice does not close the ticket.
R0-12 Template element and card/deck task shadowing (WML-C-47, WML-C-08)
Status:doneDepends On:R0-02,R0-04Files:
engine-wasm/engine/src/runtime/card.rsengine-wasm/engine/src/runtime/deck.rsengine-wasm/engine/src/parser/wml_parser/mod.rsengine-wasm/engine/src/parser/wml_parser/actions.rsengine-wasm/engine/src/parser/wml_parser/tests.rsdocs/waves/WAP_1_2_1_WML_SCR_LEDGER.mdspec-processing/source-manifests/wap-1.2.1-wml-scr.jsonspec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json
Build:
- Introduce a named
do[name]/onevent[type]binding model (the currentCardstruct only has four special-cased single actions:accept,onenterforward,onenterbackward,ontimer) so deck-level (template) and card-level bindings can be represented independently. - Parse
<template>at deck level (do/oneventchildren) per section11.4. - Implement card/deck task shadowing per section
9.6: a card-level binding of a given name/type overrides (“shadows”) a deck-level binding of the same name/type; a shadowing card-level binding that bindsnoopmasks the event entirely (no side effects on either the card- or deck-level binding); an unshadowed deck-level binding stays active for cards that don’t override it; an unshadowed binding that itself bindsnoopis also masked.
Tests:
- Fixture matrix covering: card overrides deck binding; card shadows deck binding with
noop(fully masked); deck-level binding stays active when not shadowed; unshadowednoopbinding (masked, no shadowing partner) - matching the three-card<do>example in section9.6.
Accept:
WML-C-47(template) andWML-C-08(card/deck task shadowing) have direct code/test evidence, and the compliance ledger reflects it: obligation status inwap-1.2.1-wml-scr.json, parent-status mirrors inwap-1.2.1-selected-normative-clauses.json, and the drift-guard snapshots inscripts/check-wap-conformance-ledger.mjs/scripts/check-requirement-status-drift.mjs, following the same update patternR0-04’shead/accessslice used.
Spec:
WML-08,WML-47, section9.6, section9.7, section11.4, section11.5.1
Notes:
- Split out of
R0-04’s “parser semantic completeness” scope:template/shadowing turned out to need a real named-binding model and merge algorithm, not a small addition alongsidehead/access. WML-C-08(shadowing) is formally covered byR0-02, which isdone- perAGENT_STANDARDS.md’s backlog lifecycle policy,R0-02’s status is not reopened for this. This ticket is the scoped corrective follow-up for a gap the newer clause-level ledger (CONF-003) found inR0-02’s original coverage, not a reversal ofR0-02’s completion.
Progress:
- Added ordered, independent card/template
do[name]andonevent[type]bindings in the shared Rust deck model, including effective-name matching, cross-syntax intrinsic precedence, and inactivenoopmasking. - Added deterministic parser rejection for duplicate templates, misplaced/invalid template content, duplicate effective do names, and conflicting intrinsic bindings.
- Added native parser/runtime tests, a WASM boundary parity test, and executable
wml-202-template-shadowing.wml+.flow.jsonevidence (pnpm test:story WML-202). - Direct evidence closes the original 14 mapped WML-202 root/head/access, template, and task-shadowing clauses. The additive C5-03 closure supplies the remaining 16 access-policy, root-language, card-grammar/context, and newcontext clauses without rewriting this completed ticket’s history. Optional
WML-C-34/WML-C-72behavior remainsoptional-not-assesseduntil the capability pass.
Phase S (Archived)
Completed S0 and S1 source-material audit tickets are archived in:
docs/waves/WORK_ITEMS_ARCHIVE.md