WAP LabsProject atlas

docs/waves/work_items.md

Waves Browser Work Items (Integration Track)

Purpose: execution board for Waves desktop browser integration work.

Status keys:

  • todo
  • in-progress
  • blocked
  • done

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:

  1. transport-rust/ gateway-bridged behavior is functionally validated via CLI probes.
  2. protocol-native networking (strict WDP/WCMP/connectionless-WSP plus capability-gated connection-oriented WSP/WTP) remains the current high-risk implementation lane.
  3. engine-wasm/ runtime/rendering has reached a substantial milestone and remains integration-ready while networking core is completed.

Project-level priority remains multi-lane:

  1. close committed runtime/compliance tickets already in-flight (R0-*, W0-*, W1-* scoped work)
  2. execute protocol-native networking closure (T0-19, T0-18, T0-20, T0-22, T0-21)
  3. 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):

  1. VM/interpreter semantics must remain in engine-wasm.
  2. Host code must only implement side-effect capabilities (dialogs, timer wake/tick, script fetch on miss).
  3. Bytecode verification gates must run before execution.
  4. Execution must be bounded (steps, stack, call depth, growth limits).
  5. Script/runtime failures must trap deterministically without host/runtime crashes.
  6. 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
  • Failure-containment and recovery board: docs/waves/RESILIENCE_WORK_ITEMS.md
  • Desktop application completion PRD: docs/waves/PRD-WAVES-DESKTOP-APPLICATION-COMPLETION.md
  • User onboarding/help plan: docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.md
  • Public WAP lab and pre-release plan: docs/waves/PUBLIC_WAP_LAB_PRERELEASE_PLAN.md
  • Archival research incorporation and service-fixture handoff: docs/waves/ARCHIVAL_WAP_SERVICE_INCORPORATION_PLAN.md
  • Transport planning/checklist: transport-rust/README.md
  • Browser planning/checklist: browser/README.md

Canonical sprint priority rule:

  1. docs/waves/wap-1.2.1-compliance-program.json is authoritative for WAP dependency order and completion claims.
  2. docs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.md resolves cross-lane priority for work already in flight and is rebased to that dependency order.
  3. Section-level lists below are lane-local or dated context and must not override either authority.

The public network-preview plan is a separate product/release lane. Its PRE-*, INF-*, GW-*, LAB-*, PERF-*, OPS-*, DESK-*, QA-*, and REL-* identifiers do not assert WAP compliance closure or change the dependency order in the machine-readable compliance program. Public release-readiness remains gated by the plan’s access, threat-model, operations, and release evidence even though the bounded endpoint is now reachable.

Next In Line (Desktop Evidence Checkpoint - 2026-08-02)

Audit base: origin/main 6e30f89f. PRs #541, #542, #543, #544, and #545 have merged typed POST history, F2-02 scrolling, F2-03 unified input, WBP-11 phase recovery, and APP-SHELL-01 Library/Preferences. WBP-11’s merge does not by itself add native release evidence. The WBP-14 inventory in WBP_14_DESKTOP_PATH_EVIDENCE.md records 3 complete, 8 partial, 5 missing, and 3 blocked evidence scenarios and prevents release closure from being inferred from lower-level tests.

The selected-profile source and planning lanes are complete. The active queue must now turn the 198 selected parent rows and 762 planned clauses into direct evidence.

Current priority order is:

  1. Preserve WML-201’s completed 76-row SCR evidence projection and 175/175 direct WML-clause mapping.
  2. Preserve completed WML-202 referring-URI access, root-language, and card-context/grammar evidence and the completed mandatory WML-204 vdata/HREF conversion and field/control validation gate. WML-202 is complete at 30/30 direct clauses and WML-204 is complete at 23/23 direct clauses.
  3. Preserve completed WML-203 mandatory prologue, selected DTD content-model, text/WBXML parity, and broader document-family evidence (68/68 direct clauses), plus completed WML-205 exhaustive invalid-WML and atomic host-failure evidence (3/3 direct clauses). WML-2 is closed.
  4. Preserve TRN-706’s completed schema-v2 selected-WDP replay boundary and keep the conditional WTP mapping gap explicit under additive TRN-704/TRN-705 follow-ups. TRN-707’s bounded WDP/WCMP audit is complete but intentionally remains open while its declared WTP family is inactive and unmapped.
  5. Preserve completed WML-302 variable/substitution, WML-303 action/event/BACK, and WML-305 native timer evidence; treat completed WSP-801 and WSP-802 as the connectionless PDU/header foundation while WSP-8 remains behind WAE-6. Preserve completed WML-301 context/history/card-table evidence, WML-304’s merged request-intent and native request application boundary, Request A2’s completed typed POST-history replay, and WMLS-501’s completed decoder/verifier, verified-unit routing, and stack-dataflow closure plus the completed bounded WMLS-502 language executor. Preserve the completed D0-01 through D0-04 debug path and completed F0/F1/F2-01 through F2-03 frame migration; keep F3 through F4, generators, and maintenance non-preemptive unless separately authorized or needed to unblock a strict obligation.

The schema-v2 WDP delivery -> fetch/WBXML decode -> native engine parity path, strict native/WASM validation fixtures, and paired executable stories now close the cross-layer WML-203 evidence.

Planning assessment:

  1. No selected Class C family needs further thematic extraction before implementation starts.
  2. Replan only when a source-derived fixture changes a dependency, a profile is activated, or implementation evidence changes a parent-row assessment.

Current implementation batch, ordered within each lane:

  1. Request lane A1 (complete): the merged WML-304 intent is applied through R0-06/WSP-805 for GET query, form-urlencoded and multipart POST, per-part charset/content-type, smallest-relative referer, and no-cache transport behavior. This owns request serialization and the browser fetch handoff.
  2. Request lane A2 (complete): retained typed request intent is replayed when Back must refetch a prior POST deck. The browser does not retain legacy serialized postContext bytes when the semantic intent is available, and WML-CL-HISTORY-POST-REPLAY has direct browser-boundary evidence.
  3. Script lane B1 (complete): the additive WMLS-501 library-index and stack-dataflow verification tranche is closed without reopening or replacing the merged decoder/runtime history.
  4. Script lane B2 (complete): bounded WMLS-502 operator/conversion execution reuses the B1 verifier foundation and leaves URL/access, standard-library execution, and the remaining error matrix in their dedicated follow-on slices.
  5. Runtime lane C1 direct tranche (complete): the additive WML-301 card-table boundary has direct parser/native/WASM/story fixtures. The graph separates 13 direct clauses from seven aggregate card/WAE context clauses; the three broad WAE delegates remain not-assessed under WAE-601, keeping the aggregate work item in progress.
  6. Desktop contract lane D1 (complete): WML-309 closes the engine-owned frame-and-affordance contract for WBP-06/F0-01, including generated host contracts and native/WASM/story evidence. Preserve the additive EngineDebug* namespace; the separately landed visual/shell work does not replace this contract evidence.

A1 fixed the A2 dependency at the transport boundary: the replay input is the absolute requested URL plus the typed FetchRequestIntent (method, declared enctype, sendreferer, accepted charset list, same-deck classification, ordered resolved postfields, and referring deck Content-Type), together with cache policy, absolute referring URL, explicit request headers, and UA capability profile. Transport deterministically derives the effective method, query or body bytes, charset-bearing Content-Type, smallest usable Referer, and no-cache headers from that identity. A2 now retains and replays that semantic input without inventing an independent form serializer or treating the legacy pre-serialized postContext payload as the new identity.

The dependency, overlap, and release-contribution matrix is canonical in SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.md. WML-304 and WML-306 are complete; the next fresh WML-3 residual slices are WML-307 character/generic-WBXML closure and WML-308 form-presentation and capability closure, while WML-301 retains its separate aggregate WAE-delegate follow-through. PERF-101, OPS-101, and public release-gate closure remain evidence-gated rather than ready implementation dispatches.

The separately owned public-WAP-services lane may continue in parallel. Public DNS and UDP 9200 now serve bounded Home, Forms, and Interop probes through the hardened deployment. Publication governance, negative exposure evidence, measured abuse limits, operations evidence, and desktop release gates still require reconciliation in PUBLIC_WAP_LAB_PRERELEASE_PLAN.md. That lane neither blocks nor satisfies Class C evidence and is not dispatched from this board.

The resilience board is also synchronized to current main: RSL-01 through RSL-07 are done. The final pair adds allowlisted diagnostic redaction followed by bounded toast, timeline, and host-history state on the shared presenter/history surface.

Issue #450, typed POST replay, F2-02/F2-03, WBP-11 phase recovery, and APP-SHELL-01 are merged on the stabilized browser foundation. Keep WBP-10’s remaining transport-metadata delta separate from the completed WBP-11 presentation. WBP-12 now has deterministic implementation evidence, while its packaged crash-relaunch observation remains open. Close WBP-14 in evidence order: native timeout, cancellation, invalid-deck, and script-trap coverage; packaged WBP-12 crash-relaunch evidence; WBP-13 replay/memory; and packaged screen-reader and latency evidence. The bounded WMLS-502 executor is evidenced by its own engine/fixture/parity/story path; broader parent/remaining-clause closure must not be inferred from that tranche or from WBP-14 evidence.

WML-203A Legacy local-example standalone-document migration

  1. Status: done
  2. Depends On: WML-203
  3. Owner: engine-wasm, browser, qa
  4. Scope: Migrated all 31 legacy local examples that predated strict standalone-document validation to source-authentic XML declarations and explicit canonical or alternate external DTD identities, and repaired their selected-DTD content models without changing intended runtime stories.
  5. Evidence: pnpm test:story all, example manifest drift checks, and browser local-example tests.
  6. Boundary: This is additive compatibility-corpus cleanup. It does not reopen WML-203’s strict parser, WBXML, or selected-family evidence gates.

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-02A done Additive browser-only follow-up makes native Tauri chrome authoritative while preserving the neutral Class C handset/LCD, IDs, keyboard order, and existing semantics; rendered default/minimum/200-percent evidence is green.
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 done #356 added the mounted-shell accessibility audit, keyboard-reachability coverage, visible focus treatment, 24 CSS-pixel button floor, and a deliberately minimal viewport name without creating a WML DOM model. The later additive WBP-05A follow-up closed the single-announcement and rendered-evidence gap without reopening this history.
WBP-06 done F0-01 through F0-03 add the engine-owned versioned presentation frame, logical affordances, frame-bound typed input, generated native/WASM/Tauri projections, WML-309 evidence, and CI drift coverage while retaining legacy render/key compatibility and the separate EngineDebug* namespace. Canvas/CSS, physical softkey placement, hit regions, pointer/scroll input, and WBP-02B remain later work.
WBP-12 done The existing atomic v1 state boundary now persists only bounded committed local/GET sessions, debounced window state, settings, and Favorites; native clean exit clears the crash marker, local recovery is automatic, network GET recovery requires confirmation, and unsafe POST/credential state is removed. Deterministic frontend/Rust evidence is green; the packaged relaunch observation remains explicitly in WBP-14.
WBP-14 in-progress The machine-checked desktop-path audit distinguishes fixture, native-gateway, and packaged-manual evidence. The native success/recovery pilot and WBP-12 fixture policy are real, but timeout, cancellation, invalid deck, script trap, packaged crash relaunch, WBP-13 replay/memory, latency, and packaged screen-reader closure remain explicit.

Phase 1 implementation is complete; the original seams remain documented in WAVES_BROWSER_BASELINE.md for maintenance history. WBP-06/F0 is now complete after the declared prerequisites, additive D0-01 debug namespace, and sequencing rule were preserved:

  1. WML-2 is done, including the residual WML-203, WML-204, and WML-205 gates.
  2. WML-303 closed the engine-owned do/onevent task, BACK, activation-order, and softkey precedence semantics. WML-309 now directly closes the three dynamic do presentation clauses through native/WASM/Tauri tests and an executable frame/action story.
  3. WML-302 has closed engine-internal variable substitution and setvar ordering without changing wml-engine.ts or browser debug contracts; request serialization remains WML-304.
  4. D0-01 remains the separate EngineDebug* surface; WBP-06 owns the ordinary frame/input namespace and does not consume debug payloads.

F1 renderer cutover, F2 hit-region/pointer/scroll expansion, F3 layout/paint separation, and F4 legacy removal remain ordered follow-ups. D0-01 remains completed history, not a rendering API.

WBP-02A Native host-chrome default

  1. Status: done
  2. Depends On: WBP-01, WBP-02
  3. Owner: browser, qa
  4. Files:
  • browser shell leaf templates and shared host styles
  • lightweight browser-owned panel primitives
  • narrowly scoped Tauri window background metadata
  • shell/render/accessibility tests and active product documentation
  1. Build:
  • Treat the Tauri title bar and window controls as the sole application frame.
  • Remove teal desktop, beveled faux-window, global Win95 control, and heavy gradient-panel authority from the default presentation while keeping the vendored Win95 material available for later optional reuse.
  • Give host chrome compact system typography and quiet surfaces; keep deterministic period typography, inverse focus, and housing/LCD separation inside the neutral Class C handset.
  • Preserve every element ID, controller binding, keyboard order, route/source/profile behavior, and current fixed handset adapter control.
  1. Tests:
  • shell tests prove the default native presentation has no legacy faux-window/control classes
  • frontend unit, lint, typecheck, format, build, rendered axe/zoom/target/focus/overflow, default and minimum viewport/keyboard, Waves story, contract, documentation, and Tauri checks
  • matching default/minimum before-and-after screenshots remain transient PR evidence
  1. Accept:
  • the native app no longer reads as a Win95 window embedded in a second native window
  • the handset/LCD is the visual focal point; utility/help/status is secondary and Developer Tools remains subordinate and collapsible
  • 1024 by 768, 880 by 640, 200 percent zoom, collapsed utility rail, reduced motion, 24 CSS-pixel targets, visible focus, landmarks/live announcements, and no horizontal overflow remain usable
  1. Boundary:
  • This is an additive presentation correction. Completed WBP-01 and WBP-02 remain immutable.
  • Do not change browser controller/navigation state, transport, route logic, engine contracts/runtime, WML rendering semantics, focus order, or infer dynamic softkeys before WBP-06.
  1. Evidence:
  • 217 frontend unit tests, lint, typecheck, format, production build, and 19 Waves executable flows
  • generated engine/transport/Tauri contracts, schemas, icons, host formatting, Clippy, and 64 non-ignored Tauri host/contract tests (five external-Kannel tests remain intentionally ignored)
  • rendered Chromium at both configured windows and effective 200 percent zoom: zero axe violations, no horizontal overflow, one live-announcement channel, all visible targets at least 24 by 24 CSS pixels, visible two-tone focus, system host font, Courier LCD font, inverse WML focus, and no running animations
  • matching 1024 by 768 and 880 by 640 before/after screenshots were visually inspected and kept as transient PR evidence rather than committed goldens

WBP-05A Host accessibility announcement and rendered-evidence closure

  1. Status: done
  2. Depends On: WBP-05
  3. Owner: browser, qa
  4. Files:
  • browser presenter/controller accessibility tests
  • rendered browser or packaged-Tauri accessibility evidence
  • active browser evidence docs
  1. Build:
  • Keep navigation loading and failure presentation visually available while exposing each state change through one live announcement channel. Current main writes the same navigation failure to both the polite status region and the live alert toast.
  • Add rendered evidence for 200 percent zoom, visible focus, target geometry, and color contrast; the current jsdom axe-core test necessarily disables its geometry/pixel-dependent rules.
  • Preserve the future engine-derived card/action semantic adapter as WBP-09 scope.
  1. Tests:
  • deterministic loading/failure tests assert one accessible announcement per state change
  • rendered browser checks cover default and minimum window sizes at 200 percent zoom
  • packaged-host keyboard and screen-reader smoke evidence remains explicit where automation cannot cover native macOS presentation
  1. Accept:
  • loading and failure state changes have one accessible announcement without losing visual recovery information
  • rendered evidence covers the checks unavailable to jsdom without introducing a browser-authored WML semantic tree
  1. Notes:
  • This is an additive evidence/corrective follow-up. WBP-05 remains done under the backlog lifecycle policy.
  • The host now owns one visually hidden, polite, atomic announcement channel. Navigation loading and failure status changes write it once; the visual status panel and recovery toast retain their presentation without becoming parallel live regions. Toast-only script/dialog events reuse the same channel.
  • browser/frontend/src/app/navigation-announcement.test.ts deterministically counts one live mutation for loading and failure. pnpm --dir browser/frontend test:accessibility:rendered production-builds the browser-story entry and checks default/minimum windows at effective 200 percent zoom with full rendered axe, 24 by 24 target geometry, focus visibility, and overflow.
  • Accepted machine-readable evidence and screenshots are recorded in WAVES_BROWSER_ACCESSIBILITY_EVIDENCE.md. Packaged macOS VoiceOver announcement timing remains an explicit manual-only smoke; no browser-authored WML semantic tree was added.

Next In Line (Architecture Maintenance Sprint)

Maintenance remains non-preemptive to the strict WAP execution order:

  1. Keep M1-09 queued until the strict engine/runtime work and its host boundary are stable enough for the frame migration.
  2. Keep M1-03 as a non-priority generator design/prototype unless manual contract synchronization begins blocking compliance work.
  3. 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.md
  • docs/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:

  1. Protocol-core spec/policy closure is complete through T0-26, including T0-21, but desktop/browser ingress is still using the legacy HTTP gateway bridge for live wap:// fetches.
  2. Immediate transport priority is a narrow native execution lane: connectionless WSP GET/REPLY over WDP/UDP, integrated behind the existing fetch contract.
  3. No broader protocol expansion should preempt active runtime/compliance and hardening lanes unless required to land T0-27..T0-29.

Sprint policy:

  1. The documented wap-net-core posture is implementation-target, not fully live browser ingress, until T0-27..T0-29 land.
  2. Keep this lane capacity-bounded alongside committed runtime/compliance lanes; do not starve in-flight R0-*/W0-* closure tickets.
  3. Defer non-bedrock feature expansion unless required to unblock committed lanes.

Source-ledger reconciliation:

  1. The exact WAP-200/WAP-202/WAP-203 row authority is docs/waves/WAP_1_2_1_TRANSPORT_SCR_LEDGERS.md plus its three machine manifests. The selected connectionless Class C path is 19 rows with an audit of 19 implemented / 0 partial / 0 missing and 19/19 direct normative tests. The nine selected WDP rows are fixture-backed under TRN-701, the adopted constrained-payload policy is closed under TRN-702, the five-row general-WCMP branch is preserved as a non-IP capability under TRN-703, and both selected ICMP-backed WCMP rows are fixture-backed under TRN-708; WSP-801 directly evidences seven selected WSP parents, and WSP-802 closes the two delegated header rows while preserving the completed byte matrix.
  2. Completed thematic tickets such as T0-19, T0-20, and T0-27 are not reopened. Their existing evidence remains useful but provisional against the exact target-era rows.
  3. Exact closure is owned by compliance-program work items TRN-701, TRN-702, TRN-703, TRN-708, WSP-801, WSP-802, WSP-804, and WSP-805.
  4. SRC-005 has normalized the selected CDPD bearer citation TIAEIA-732 with an explicit licensed-payload boundary; CONF-003 has completed all 198 selected nested-clause plans, while implementation work items own direct normative fixture execution.
  5. 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:

  1. T0-04 Cache/reload and go request-policy conformance follow-up.
  2. A5-01 History entry fidelity follow-up.
  3. R0-02 Inter-card navigation process-order conformance.
  4. R0-03 History/context fidelity completion.
  5. W0-06 Bytecode verification gates follow-up.
  6. Stretch: W1-02 Bytecode 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.md high-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.md
  • docs/waves/ENGINE_HOST_FRAME_WORK_ITEMS.md

Execution policy:

  1. Run migration tickets as additive boundary changes first (F0), then renderer/input cutover (F1-F4).
  2. Preserve native/wasm parity and deterministic runtime behavior at each phase gate.
  3. 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

  1. ID: stable id (B0-01, B1-02, etc.)
  2. Status
  3. Depends On
  4. Files
  5. Build
  6. Tests
  7. Accept
  8. Spec: requirement IDs + section refs/SCR IDs from relevant docs/waves/*TRACEABILITY*.md docs

Spec Change Protocol

When a PR changes spec interpretation, requirement mapping, or contract behavior, update all linked artifacts in the same PR:

  1. traceability source:
  • relevant docs/waves/*TRACEABILITY*.md requirement entries (Spec, AC, Evidence)
  1. tests/fixtures:
  • docs/waves/SPEC_TEST_COVERAGE.md row(s) with concrete file targets and command(s)
  1. contract mapping:
  • docs/waves/CONTRACT_REQUIREMENTS_MAPPING.md for impacted contract surfaces
  1. requirement index:
  • docs/waves/REQUIREMENT_INDEX.md owner/lane/status row(s)
  1. coverage/meta dashboards:
  • docs/waves/SPEC_COVERAGE_DASHBOARD.md if scope/status changes
  1. source governance:
  • docs/waves/SOURCE_AUTHORITY_POLICY.md and docs/waves/OPEN_SPEC_QUESTIONS.md when 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 On and 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/*.wml in the same PR.
  • Regenerate engine-wasm/examples/generated/examples.ts via pnpm --dir engine-wasm/host-sample run examples:generate in the same PR.
  • New/updated examples must include metadata (work-items or spec-items, goal, and testing-ac) to keep host-sample and Waves tester verification aligned.
  • Stable acceptance paths should add an optional adjacent *.flow.json companion and verify it with pnpm 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

  1. Status: done
  2. Depends On: T0-02, A5-02
  3. Files:
  • transport-rust/src/lib.rs
  • browser/contracts/transport.ts
  • engine-wasm/contracts/wml-engine.ts
  • browser/src-tauri/src/lib.rs
  1. Build:
  • Add request-policy plumbing for WML task metadata (cache-control, method/post context, referer policy).
  • Ensure cache-control=no-cache reload intent reaches transport deterministically.
  1. 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.
  1. Accept:
  • Transport behavior reflects runtime task metadata without host-side semantic drift.
  1. Spec:
  • RQ-RMK-008, RQ-WAE-008, RQ-WAE-016
  1. 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

  1. Status: done
  2. Depends On: T0-01
  3. Files:
  • transport-rust/src/lib.rs
  • browser/src-tauri/src/lib.rs
  • browser/contracts/transport.ts
  1. Build:
  • Add profile-gated emission path for Accept, Accept-Charset, Accept-Encoding, and Accept-Language.
  • Keep defaults deterministic and explicit when capability advertising is disabled.
  1. Tests:
  • cargo test --lib (transport-rust) covers:
    • wap-baseline profile 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.
  1. Accept:
  • Capability advertisement behavior is explicit, test-backed, and contract-documented.
  1. Spec:
  • RQ-WAE-013, RQ-WAE-001
  1. Notes:
  • Added profile-gated UA capability contract field (uaCapabilityProfile) under transport request policy.
  • Browser host now sends wap-baseline capability profile by default for network transport fetches.

T0-06 URI length and charset boundary conformance follow-up

  1. Status: done
  2. Depends On: T0-02
  3. Files:
  • transport-rust/src/lib.rs
  • transport-rust/src/responses.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Add deterministic handling/tests for 1024-octet URI boundaries and UTF-8/UTF-16 encoding paths.
  1. Tests:
  • URI boundary coverage:
    • fixture transport-rust/tests/fixtures/transport/uri_too_long_1025/
    • unit tests for 1024-octet accept and >1024 reject path in transport-rust/src/lib.rs
  • 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-16 PROTOCOL_ERROR mapping
    • unit tests in transport-rust/src/responses.rs cover UTF-16 decode success/error code path behavior directly
  1. Accept:
  • URI/encoding behavior meets WAE baseline and remains regression-protected.
  1. Spec:
  • RQ-WAE-010, RQ-WAE-012
  1. 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

  1. Status: done
  2. Depends On: T0-02
  3. Files:
  • transport-rust/src/lib.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  1. Build:
  • Add compatibility checks covering WBXML literal-vs-token decoding paths and section-6.1 tokenisation expectations at boundary level.
  1. Tests:
  • Fixture matrix for literal token values, binary token values, and deterministic decode failure classification.
  1. Accept:
  • WBXML boundary behavior is conformance-backed beyond decode happy-path checks.
  1. Spec:
  • RQ-RMK-007, RQ-WAE-005
  1. 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

  1. Status: done
  2. Depends On: T0-03
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/lib.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  1. 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.
  1. 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.
  1. Accept:
  • TID replay-window behavior is deterministic and explicitly profile-gated.
  1. 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.
  1. Spec:
  • RQ-TRN-007, RQ-TRN-016

T0-09 WSP connectionless primitive-profile conformance

  1. Status: done
  2. Depends On: T0-01
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/lib.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  1. 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.
  1. Tests:
  • Primitive occurrence fixtures for S-Unit-MethodInvoke, S-Unit-MethodResult, S-Unit-Push.
  1. Accept:
  • Connectionless mode policy is explicit and test-backed; invalid primitive paths are deterministic.
  1. 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.
  1. Spec:
  • RQ-TRN-010, RQ-TRN-012, RQ-TRN-017

T0-10 WSP assigned-number registry conformance fixtures

  1. Status: done
  2. Depends On: T0-05, T0-07
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/lib.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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.
  1. Tests:
  • Decode/encode round-trip fixtures anchored to assigned-number tables.
  1. Accept:
  • Assigned-number behavior is deterministic, profile-documented, and regression-guarded.
  1. 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.
  1. Spec:
  • RQ-TRN-014, RQ-TRN-018
  1. Notes:
  • Landed as additive registry fixture slice in transport-rust/src/wsp_registry.rs with 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

  1. Status: done
  2. Depends On: T0-09
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/lib.rs
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  1. Build:
  • Enforce min/intersection semantics for negotiated capabilities.
  • Enforce negotiated SDU/message-size and outstanding-request bounds with deterministic abort/error surfacing.
  1. Tests:
  • Capability negotiation fixtures across client/server proposal mismatches and boundary exceed cases.
  1. Accept:
  • Capability negotiation and bounds behavior is deterministic and spec-linked.
  1. 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.
  1. Spec:
  • RQ-TRN-013, RQ-TRN-019
  1. Notes:
  • Additive capability policy/limit slice landed in transport-rust/src/wsp_capability.rs with fixture corpus at transport-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

  1. Status: done
  2. Depends On: T0-01
  3. Owner: transport-rust, spec
  4. Files:
  • transport-rust/README.md
  • docs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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.
  1. Tests:
  • Add compatibility-policy fixtures/checks that prevent silent drift in declared TCP posture.
  1. Accept:
  • TCP optimization baseline posture is explicit and traceable.
  1. Migration gates:
  • Done-1: RQ-TRX-009 decision 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.
  1. Spec:
  • RQ-TRX-009
  1. Notes:
  • Landed as policy declaration + drift guard in transport-rust/src/tcp_profile.rs with fixture transport-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

  1. Status: done
  2. Depends On: T0-01
  3. Owner: transport-rust, docs
  4. Files:
  • docs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.md
  • transport-rust/README.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Make a hard scope decision for WAP-159 path (in scope now vs deferred).
  • If in scope, define data_sm mapping fixtures and WCMP payload type handling checks.
  • If deferred, document non-blocking rationale and explicit exclusion guardrails.
  1. Tests:
  • Add either adapter fixtures (in-scope) or explicit policy assertions (deferred).
  1. Accept:
  • SMPP adaptation status is unambiguous and regression-guarded.
  1. Migration gates:
  • Done-1: scope decision is documented as in-scope or deferred before 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.
  1. Spec:
  • RQ-TRX-010
  1. Notes:
  • Scope decision is deferred for Waves MVP and is now regression-guarded in transport-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

  1. Status: done
  2. Depends On: T0-09, T0-11, T0-12, T0-13
  3. Owner: transport-rust, browser, engine
  4. Files:
  • docs/waves/TECHNICAL_ARCHITECTURE.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  • docs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.md
  • transport-rust/README.md
  1. 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.
  1. 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.
  1. 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.
  1. 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-13 completion criteria and required fixture coverage.
  • Done-3: profile migration path has explicit rollback criteria tied to contract stability.
  1. Spec:
  • RQ-TRN-001..019, RQ-TRX-001..010
  1. Notes:
  • Canonical decision record added at docs/waves/NETWORK_PROFILE_DECISION_RECORD.md with explicit current/target profiles, promotion gates, and rollback criteria.
  • Machine-checkable gate validation added via node scripts/check-networking-profile-gates.mjs and data file docs/waves/network-profile-gates.json.

T0-15 WAP caching model baseline and invalidation semantics

  1. Status: done
  2. Depends On: T0-04, R0-06
  3. Owner: transport-rust, browser
  4. Files:
  • transport-rust/src/lib.rs
  • browser/contracts/transport.ts
  • browser/src-tauri/src/lib.rs
  • docs/waves/WAE_SPEC_TRACEABILITY.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Implement a deterministic cache-policy baseline for deck/script/media retrieval and invalidation triggers.
  • Ensure cache-control=no-cache and task-driven reload semantics route through one shared policy model.
  1. Tests:
  • Fixture matrix for cache hit, forced reload, stale invalidation, and request-policy override cases.
  1. Accept:
  • Cache behavior is explicit, deterministic, and verifiably aligned with the declared WAP profile.
  1. 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.
  1. Spec:
  • RQ-WAE-008, RQ-WAE-010, WML-29, section 9.5.1
  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:MCF selects 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.json and docs/waves/WAP_1_2_1_CACHING_SCR_LEDGER.md.

T0-16 Spec queue canonicalization and conflict resolution follow-up

  1. Status: done
  2. Depends On: T0-14
  3. Owner: spec-processing
  4. Files:
  • spec-processing/new-source-material/
  • spec-processing/source-material/WAP-259-WDP-20010614-a.pdf
  • spec-processing/finalize-new-source-material.fish
  • docs/waves/SOURCE_MATERIAL_MASTER_AUDIT.md
  • docs/waves/SOURCE_MATERIAL_REVIEW_LEDGER.md
  • docs/waves/SPEC_COVERAGE_DASHBOARD.md
  1. Build:
  • Resolve WAP-259-WDP-20010614-a.pdf conflict variant left in queue and enforce deterministic case/variant policy.
  • Document whether conflict variant is a replacement, supersedence candidate, or legacy duplicate.
  1. Tests:
  • ./spec-processing/finalize-new-source-material.fish --dry-run reports zero unresolved conflicts for active transport spec IDs.
  • docs/waves/SOURCE_MATERIAL_REVIEW_LEDGER.md contains one row per canonical transport/security spec ID.
  1. Accept:
  • Canonical corpus has one active source material path for each spec ID and the queue only contains unresolved non-canonical items.
  1. 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.
  1. Spec:
  • RQ-TRN-001, RQ-TRN-003
  1. Notes:
  • Completed: new-source WAP-259 variant 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.pdf is canonical as of 2026-03-05, and the prior variant remains archived with explicit legacy status.

T0-17 Protocol-adjacent transport context sweep (deferred specs)

  1. Status: done
  2. Depends On: T0-14, T0-16
  3. Owner: docs, transport
  4. Files:
  • docs/waves/OUT_OF_SCOPE_DOMAIN_SPEC_REVIEW.md
  • docs/waves/TRANSPORT_ADJACENT_SPEC_TRACEABILITY.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  • docs/waves/networking-implementation-checklist.md
  1. 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-14 profile gates.
  1. Tests:
  • checklist validation fixtures:
    • WAP-204 remains transport-deferred; WAP-120 remains outside transport ownership and active under WAE-603
    • no hidden protocol behavior dependency introduced in transport-rust without ticket and contract update
    • command: node scripts/check-adjacent-scope-lock.mjs
  1. Accept:
  • future transport scope changes are policy-driven, explicit, and reversible.
  1. 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.
  1. Spec:
  • RQ-TRX-001..010 where applicable
  • RQ-TRN-001..019
  1. 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 to WAE-603 without reopening this transport ticket:
    • docs/waves/OUT_OF_SCOPE_DOMAIN_SPEC_REVIEW.md
    • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
    • docs/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

  1. Status: done
  2. Depends On: T0-08, T0-14
  3. Owner: transport-rust, docs
  4. Files:
  • transport-rust/src/network/wtp/state_machine.rs
  • transport-rust/src/network/wtp/retransmission.rs
  • transport-rust/src/network/wtp/duplicate_cache.rs
  • docs/waves/wtp-state-machine.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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).
  1. 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.
  1. Accept:
  • WTP reliability policy is explicit, deterministic, and test-covered for core flows.
  • RQ-TRN-007, RQ-TRN-008, and RQ-TRN-016 map to concrete test artifacts.
  1. 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.
  1. Spec:
  • RQ-TRN-007, RQ-TRN-008, RQ-TRN-016
  1. 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

  1. Status: done
  2. Depends On: T0-14, T0-16
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/network/wdp/transport_trait.rs
  • transport-rust/src/network/wdp/datagram.rs
  • transport-rust/src/network/wdp/udp_adapter.rs
  • transport-rust/src/network/wdp/sar.rs
  • docs/waves/networking-layer-definition.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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.
  1. Tests:
  • Port routing fixtures for 9200..9203 service behavior.
  • Datagram malformed/truncation fixtures with deterministic errors.
  • SAR reassembly fixtures in profile-enabled mode.
  1. 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.
  1. Migration gates:
  • Done-1: datagram trait is the only connectionless-WSP ingress path in wap-net-core and 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 (off by default) and guarded by profile flags.
  1. Spec:
  • RQ-TRN-001, RQ-TRN-002, RQ-TRN-003, RQ-TRN-004
  1. 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 by T0-22.

T0-20 WSP header registry completion and unknown-token policy

  1. Status: done
  2. Depends On: T0-10, T0-11
  3. Owner: transport-rust, docs
  4. Files:
  • transport-rust/src/network/wsp/header_registry.rs
  • transport-rust/src/network/wsp/encoder.rs
  • transport-rust/src/network/wsp/decoder.rs
  • transport-rust/src/network/wsp/header_block.rs
  • transport-rust/src/network/wsp/pdu.rs
  • transport-rust/src/network/wsp/session.rs
  • transport-rust/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.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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.
  1. 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/Reply PDU and session-method classification fixtures.
  • WBXML/token-stream fixture candidates from docs/waves/WILEY_BOOK_CODE_EXAMPLES.md: WBK-FX-009, WBK-FX-010.
  1. 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.
  1. 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.
  1. Spec:
  • RQ-TRN-014, RQ-TRN-018
  1. Notes:
  • Closed on codex/t0-20-wsp-header-registry with registry, encoding-version, header-block, minimal PDU, and session-method fixture evidence; T0-22 now consumes this surface instead of raw byte parsing.

T0-21 WTLS phase boundary and minimal handshake reliability lane

  1. Status: done
  2. Depends On: T0-14
  3. Owner: transport-rust, docs
  4. Files:
  • transport-rust/src/network/wtls/record.rs
  • transport-rust/src/network/wtls/handshake.rs
  • transport-rust/src/network/wtls/alerts.rs
  • docs/waves/wtls-record-structure.md
  • docs/waves/SECURITY_BOUNDARY_TRACEABILITY.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. 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.
  1. 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.
  1. Accept:
  • WTLS scope is explicit, testable, and aligned with profile gates.
  • Security-path behavior cannot activate implicitly.
  1. 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.
  1. Spec:
  • RQ-SEC-004, RQ-SEC-005
  1. Notes:
  • Closed on codex/t0-21-wtls-boundary with 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-21 remains 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-10 in docs/architecture/wtls-modernization-research.md.

T0-22 Networking interop replay harness and golden event corpus

  1. Status: done
  2. Depends On: T0-18, T0-19, T0-20
  3. Owner: transport-rust, docs
  4. Files:
  • transport-rust/tests/network/interop/
  • transport-rust/tests/interop_replay.rs
  • docs/waves/networking-implementation-checklist.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/networking-migration-readiness-checklist.md
  1. Build:
  • Add replay harness for CONNECT/GET/REPLY plus retransmit/duplicate transaction flows.
  • Normalize replay output into deterministic protocol events for assertion.
  • Gate profile promotion on replay-corpus pass status.
  1. Tests:
  • connect_session_replay
  • get_reply_replay
  • retransmit_flow
  • duplicate_tid_flow
  1. Accept:
  • Interop behavior is fixture-backed beyond unit-only coverage.
  • Migration gates can cite replay results as promotion evidence.
  1. 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.
  1. Spec:
  • RQ-TRN-005..019
  1. Notes:
  • Baseline replay harness now exists in transport-rust/tests/interop_replay.rs with schema-versioned seed corpus files under transport-rust/tests/network/interop/ covering deterministic GET/REPLY event ordering over WDP/WSP.
  • T0-24 now formalizes these replay inputs as schema-versioned seed corpus files under transport-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 / ConnectReply replay 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)

  1. Status: done
  2. Depends On: T0-16
  3. Owner: docs, spec-processing, transport-rust
  4. Files:
  • docs/waves/networking-external-response-triage.md
  • docs/waves/NETWORKING_EXTERNAL_SOURCE_INDEX.md
  • docs/waves/NETWORKING_GAP_MASTER.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  • spec-processing/external-source-index.json
  • spec-processing/new-source-material/external-networking/README.md
  • spec-processing/new-source-material/
  • spec-processing/source-material/WAP.pdf
  • spec-processing/source-material/vdoc.pub_the-wireless-application-protocol-wap-a-wiley-tech-brief.pdf
  • spec-processing/external-parsed/wap_emulator_spec_notes.md
  • spec-processing/README.md
  1. Build:
  • Ingest and catalog implementation-reference materials for:
    • Kannel networking sources (wtp, wsp, wdp lanes)
    • Wireshark dissectors (packet-wtp, packet-wsp, packet-wdp, packet-wtls)
  • Classify local supplemental context sources (slides/tech-brief/LLM-parsed notes) as heuristic unless 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.
  1. 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.
  1. Accept:
  • External reference corpus is indexed and traceable without changing normative precedence.
  • Each imported behavior note cites a local requirement and implementation target lane.
  1. Migration gates:
  • Done-1: source index exists and is versioned.
  • Done-2: all imported notes are tagged interop-reference or heuristic unless backed by canonical WAP spec.
  • Done-3: no RQ-TRN-* requirement is redefined by external source text.
  1. Spec:
  • RQ-TRN-001..019
  1. 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

  1. Status: done
  2. Depends On: T0-23
  3. Owner: transport-rust, docs
  4. Files:
  • transport-rust/tests/network/interop/
  • transport-rust/tests/interop_replay.rs
  • transport-rust/tests/network/interop/README.md
  • docs/waves/networking-migration-readiness-checklist.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Build a curated PCAP seed corpus for:
    • CONNECT handshake path
    • GET/REPLY request-response
    • retransmit and duplicate transaction scenarios
  • Define deterministic replay-fixture schema (capture, expected events, expected transaction outcomes).
  • Document capture provenance and legal/reuse constraints.
  1. 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.
  1. Accept:
  • PCAP seed corpus exists and is runnable via replay harness scaffolding.
  • Fixture schema is stable and linked from transport/networking docs.
  1. 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-22 references these fixtures as required baseline inputs.
  1. Spec:
  • RQ-TRN-005..019
  1. 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

  1. Status: done
  2. Depends On: T0-23
  3. Owner: docs, spec-processing
  4. Files:
  • docs/waves/NETWORKING_GAP_MASTER.md
  • docs/waves/NETWORKING_VECTOR_ADOPTION_SWEEP.md
  • docs/waves/networking-vector-adoption.json
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/TRANSPORT_SPEC_TRACEABILITY.md
  1. 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.
  1. Tests:
  • Checklist validation proving each recommended vector maps to at least one active ticket and one fixture target path.
  1. Accept:
  • Conformance/vector candidates are ranked and tied to current execution lanes.
  • No adoption recommendation conflicts with current spec precedence or scope-defer rules.
  1. Migration gates:
  • Done-1: ranked vector adoption list exists.
  • Done-2: each item maps to T0-* and RQ-* references.
  • Done-3: explicit adopt now vs defer decisions are documented.
  1. Spec:
  • RQ-TRN-001..019, RQ-SEC-004..005
  1. 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 stay defer pending explicit provenance/reuse intake.

T0-26 Local Kannel E2E readiness gate

  1. Status: done
  2. Depends On: T0-14, T0-22
  3. Owner: transport-rust, browser, docs
  4. Files:
  • transport-rust/tests/kannel_smoke.rs
  • browser/
  • docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
  • docs/waves/NETWORK_PROFILE_DECISION_RECORD.md
  1. Build:
  • Convert current local Kannel smoke posture into an explicit scored readiness gate.
  • Strengthen transport smoke assertions beyond ok/status/content-type to expected deck/card identity.
  • Add one deterministic browser/host real-gateway smoke path.
  • Normalize failure diagnostics for Kannel + WML server runs.
  1. Tests:
  • transport-only Kannel smoke with deterministic deck assertions
  • browser/host real-gateway smoke with rendered outcome assertions
  • local/CI-compatible one-command runner
  1. Accept:
  • transport-to-kannel readiness is measurable and reviewable over time
  • browser real-gateway E2E posture is explicit rather than inferred
  • scorecard is updated whenever readiness meaningfully changes
  1. 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
  1. Spec:
  • RQ-TRN-001..015, RQ-TRX-010
  1. 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

  1. Status: done
  2. Depends On: T0-19, T0-20, T0-22, T0-26
  3. Owner: transport-rust
  4. Files:
  • transport-rust/src/fetch_runtime.rs
  • transport-rust/src/lib.rs
  • transport-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/*
  1. Build:
  • Add an additive transport-mode selector inside fetch_deck_in_process without changing the host contract.
  • Implement a native executor for wap:// GET requests using connectionless WSP GET/REPLY over WDP/UDP port 9200.
  • Reuse existing WDP adapter and WSP codec/session modules rather than introducing browser-side protocol logic.
  • Normalize native replies back into the existing FetchDeckResponse and engine handoff shape.
  • Keep the legacy gateway bridge as explicit fallback while the native lane is proving out.
  1. 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
  1. Accept:
  • fetch_deck_in_process can load at least wap://localhost/ and wap://localhost/login through the native transport lane
  • browser/engine contracts remain unchanged
  • native path is additive and does not regress gateway-bridged fetches
  1. Migration gates:
  • Done-1: native transport mode exists and is selectable without contract drift
  • Done-2: connectionless GET request encode/send/receive/decode flow is deterministic and test-backed
  • Done-3: native path returns normalized FetchDeckResponse equivalent to existing gateway-bridge success shape for baseline decks
  1. Spec:
  • RQ-TRN-001..004, RQ-TRN-010..015, RQ-TRN-017..019
  1. Notes:
  • Scope is intentionally narrow: GET only, 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

  1. Status: done
  2. Depends On: T0-27
  3. Owner: browser, transport-rust
  4. Files:
  • browser/src-tauri/src/fetch_host.rs
  • browser/src-tauri/src/waves_config.rs
  • browser/frontend/src/app/navigation-state.ts
  • browser/frontend/src/app/browser-controller.ts
  • browser/contracts/transport.ts (only if additive config becomes contract-visible)
  • docs/waves/NETWORK_PROFILE_DECISION_RECORD.md
  1. Build:
  • Introduce explicit desktop host selection between legacy gateway bridge and native protocol fetch, defaulting to the safest posture.
  • Preserve the current fetch_deck host 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.
  1. Tests:
  • host tests for default mode, override mode, and fallback behavior
  • frontend request-policy/state tests proving network mode uses the intended transport path
  1. Accept:
  • desktop browser can deliberately run native mode for wap://localhost/ and wap://localhost/login
  • fallback behavior is explicit and visible rather than accidental
  • no browser-side WSP/WTP logic is introduced
  1. 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
  1. Spec:
  • RQ-TRX-010, RQ-TRN-001..015
  1. 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

  1. Status: done
  2. Depends On: T0-27, T0-28
  3. Owner: transport-rust, browser, docs
  4. Files:
  • transport-rust/tests/kannel_smoke.rs
  • browser/src-tauri/tests/kannel_smoke.rs
  • scripts/transport-wap-smoke.sh
  • docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
  • docs/wap-test-environment/README.md
  1. Build:
  • Add a real native-transport smoke lane for baseline Kannel-served GET deck fetches.
  • Distinguish native-mode evidence from legacy gateway-bridge evidence in tests and docs.
  • Capture diagnostics that make packet-shape/interoperability failures reviewable.
  1. 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
  1. 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
  1. 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
  1. Spec:
  • RQ-TRN-001..015, RQ-TRX-010
  1. 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

  1. Status: done
  2. Depends On: T0-27, T0-28, T0-29
  3. Owner: transport-rust, browser, docs
  4. Files:
  • transport-rust/src/native_fetch.rs
  • transport-rust/src/lib.rs
  • transport-rust/tests/kannel_smoke.rs
  • browser/src-tauri/src/fetch_host.rs
  • browser/src-tauri/tests/kannel_smoke.rs
  • docs/waves/SPRINT_PLAN_2026-03_MASTER_PRIORITIZED.md
  • docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
  1. Build:
  • extend the native fetch executor to support WML form POST submission 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
  1. Tests:
  • native-mode transport smoke for login/register POST submission
  • browser host smoke proving native POST can submit through the host fetch command
  • browser render/navigation smoke proving returned success/error decks load correctly after native POST
  1. Accept:
  • desktop/browser can submit wap://localhost/login and wap://localhost/register forms through the native lane
  • no browser-side protocol logic is introduced
  • native POST evidence is strong enough to guide later session/connection-oriented work
  1. Migration gates:
  • Done-1: native POST transport smoke against Kannel is committed and runnable
  • Done-2: host/browser native POST smokes are committed and runnable
  • Done-3: docs distinguish native GET completion from remaining native POST work
  1. Spec:
  • RQ-TRN-001..015, RQ-TRX-010
  1. Notes:

A5-04 Minimal WML text-input interaction baseline

  1. Status: done
  2. Depends On: T0-30, A5-02
  3. Owner: engine-wasm, browser
  4. Files:
  • engine-wasm/engine/src/parser/wml_parser/*
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/engine/src/layout/*
  • engine-wasm/contracts/wml-engine.ts
  • browser/frontend/src/app/*
  • browser/src-tauri/tests/*
  1. 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
  1. 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
  1. Accept:
  • Waves can focus, edit, and commit text values inside the viewport for wap://localhost/login and wap://localhost/register
  • committed values survive render refreshes and feed the existing native POST submission path
  1. Spec:
  • RQ-RMK-008, RQ-RMK-002, RQ-RMK-003
  1. 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)

A5-05 WML select/option interaction baseline

  1. Status: done
  2. Depends On: A5-04
  3. Owner: engine-wasm, browser
  4. Files:
  • engine-wasm/engine/src/parser/wml_parser/*
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/engine/src/layout/*
  • engine-wasm/contracts/wml-engine.ts
  • browser/frontend/src/app/*
  1. Build:
  • add runtime and viewport interaction for select/option controls with deterministic choice cycling and commit behavior
  • preserve WML option ordering and selection state in runtime-owned form state
  1. Tests:
  • engine fixtures for default selection, cycling, commit, and cancellation
  • browser integration coverage for focus and selection rendering
  1. Accept:
  • viewport users can inspect and change select values without leaving deterministic engine-owned state
  1. Spec:
  • RQ-RMK-008, RQ-RMK-003
  1. 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 in docs/waves/FORM_HANDLING_LOCAL_MODE_TESTING.md.

A5-06 Form-state submit integration hardening

  1. Status: done
  2. Depends On: A5-04, A5-05, T0-30
  3. Owner: engine-wasm, browser, transport-rust
  4. Files:
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/contracts/wml-engine.ts
  • browser/contracts/transport.ts
  • browser/src-tauri/src/*
  • transport-rust/src/*
  1. Build:
  • ensure engine-owned field state is the single source of truth for postfield resolution at submit time
  • harden submit-time substitution, empty/default field handling, and deterministic request generation across local/native/browser paths
  1. 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
  1. Accept:
  • interactive viewport edits are reflected in the exact request payload sent through the native transport
  1. Spec:
  • RQ-RMK-008, RQ-WAE-008
  1. 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

  1. Status: done
  2. Depends On: A5-06
  3. Owner: browser, docs
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/main.ts
  • browser/src-tauri/src/*
  • docs/waves/WORK_ITEMS.md
  • follow-up design note if the spike produces a concrete execution plan
  1. 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
  1. 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
  1. 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
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003
  1. 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 #109 and #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.

A5-08 Native Tauri/Kannel E2E harness and PR-signal promotion

  1. Status: in_progress
  2. Depends On: T0-26, T0-29, A5-07
  3. Owner: browser, transport-rust, WML origin, CI; live ruleset changes require the repository administrator acting as CI owner
  4. Files:
  • .github/workflows/native-tauri-kannel-e2e.yml
  • scripts/native-tauri-kannel-e2e.sh
  • browser/frontend/scripts/native-tauri-kannel-e2e.mjs
  • browser/frontend/e2e/native/**
  • browser/src-tauri/src/fetch_host.rs
  • browser/src-tauri/src/waves_config.rs
  • transport-rust/src/lib.rs
  • wml-server/internal/origin/**
  • docker-compose.yml or a dedicated E2E Compose overlay
  • docs/waves/WAVES_NATIVE_E2E_HARNESS_PLAN.md
  • docs/waves/WAVES_NATIVE_E2E_HARNESS_RESEARCH.md
  • docs/waves/TRANSPORT_E2E_READINESS_SCORECARD.md
  • docs/ci/REQUIRED_CHECKS.md
  • docs/ci/CI_SETUP.md
  1. Build:
  • implement the safe, isolated native E2E foundation and authentication scenarios in the linked plan, including deterministic same-task race proof plus ordinary Enter/Select realism
  • replace trigger-level path filtering during foundation work with an always-present advisory classifier/native/final-gate matrix; scheduled/manual events force native execution
  • add run-scoped Compose, WebDriver, application-state, and host-to-physical-gateway routing with origin-instance mismatch detection while preserving the logical WAP URL
  • publish only an exact-manifest-validated safe bundle; cover PINs, setup bodies, issued session IDs, Kannel admin/status credentials, WebDriver handles, and workflow console output
  • add fresh per-attempt origin correlation and stable exactly-once oracles
  • evaluate both promotion evidence samples against the scorecard’s exact Threshold C
  • keep local/private access explicit at the existing host policy boundary with wap-net-core and fallback disabled
  1. Tests:
  • 20 consecutive no-rerun P0 executions on one unchanged revision
  • four consecutive scheduled successes over at least 21 elapsed days with no reruns
  • deterministic mutation fails and the restored baseline passes the exact race scenario
  • two E2E stacks coexist with the developer stack and detect swapped-origin routing
  • safe-bundle and console canaries prove secrets cannot reach retained evidence
  • relevant and irrelevant pull requests both receive the advisory final-gate result before promotion
  1. Accept:
  • production Tauri frontend changes have a stable, always-present native Kannel gate that runs the expensive suite only for relevant changes
  • no production SSRF, redirect, DNS, payload, or network-profile policy is weakened
  • G9 advances to 1.0 only after both evidence samples pass, the repository administrator adds and reads back the exact live required context, and the promoted workflow succeeds on a relevant PR
  1. Notes:
  • additive follow-up to completed T0-26; do not reopen or rewrite its historical acceptance.
  • governing detail lives in WAVES_NATIVE_E2E_HARNESS_PLAN.md and its retained research artifact; this item must be synchronized if those active decisions change.
  • implementation destination: stacked branch codex/native-waves-e2e-harness-milestone, based on the advisory-gate foundation from PR #578
  • execution index:
    • NE2E-00: foundation baseline and advisory routing — done in PR #578; unchanged-revision runtime observation remains an evidence-collection follow-up
    • NE2E-01: isolated environment and manifest-bound physical gateway routing — implemented; local two-origin coexistence/teardown proof passed, full Kannel/native Linux proof pending CI
    • NE2E-02 through NE2E-04: modular runner, fresh scenario sessions, Waves interaction API, WebDriver status readiness, cancel-aware bounded waits, and configured retry-horizon stability — implemented
    • NE2E-05: fail-closed exact safe-upload evidence, static post-initialization/pre-scenario infrastructure failure bundles, validator-gated uploads, fixed boundary checkpoints/failure classes, and a bounded correlated origin oracle — implemented
    • NE2E-06 and NE2E-07: four independent registration/login race and ordinary-input regressions — implemented; authoritative Linux execution and mutation proof pending
    • Phase 3 navigation/recovery slice: hybrid Back, exactly-once Reload, stale-response exclusion, explicit Stop, and run-owned Kannel outage/restart recovery scenarios — implemented; the authoritative Linux native smoke remains pending CI
    • NE2E-10: bounded slow/cancellable origin fixture and recovery scenarios — partially implemented; malformed and unsupported-response fixtures remain follow-up scope
  • integration verification: native Node tests, browser typecheck/unit tests, host and transport Rust tests, contract generation check when the exported Rust surface changes, shell static checks, and the Linux native smoke through the existing Make target

WAE Selected-Profile Gap Queue

WAE-607 HTTP Basic authentication closure

  1. Status: todo
  2. Depends On: CONF-002, WSP-8
  3. Owner: transport-rust, browser
  4. Files:
  • transport-rust/src/network/wsp/*
  • transport-rust/src/fetch_policy.rs
  • browser/src-tauri/src/*
  • browser/frontend/src/*
  • docs/waves/WAP_1_2_1_WAE_SCR_LEDGER.md
  1. Build:
  • Parse and surface Basic authentication challenges across the active transport profiles.
  • Define host-owned credential acquisition/storage/cancellation policy.
  • Retry with Authorization deterministically without logging credentials.
  • Preserve explicit failure and user-cancel outcomes.
  1. 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.
  1. Accept:
  • WAESpec-C-002 has an end-to-end browser/transport flow; WSP header token registration alone cannot close the item.
  1. Spec:
  • WAESpec-C-002, WAP-190 section 5.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

  1. Status: done
  2. Depends On: A5-06
  3. Owner: engine-wasm, browser, docs
  4. Files:
  • engine-wasm/contracts/wml-engine.ts
  • browser/contracts/engine.ts
  • browser/src-tauri/src/contract_types.rs
  • docs/waves/ENGINE_DEBUG_CONNECTOR_PLAN.md
  • docs/waves/CONTRACT_REQUIREMENTS_MAPPING.md
  1. 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
  1. Tests:
  • contract generation/typecheck passes for host/frontend consumers
  • docs lint/checks pass
  1. Accept:
  • debug connector interfaces are contract-first, additive, and implementation-ready
  • no existing runtime/host contract behavior is broken
  1. Spec:
  • RQ-RMK-002, RQ-RMK-008, RQ-WAE-017
  1. Notes:
  • this ticket establishes interfaces only; no runtime emission implementation in this slice
  • completed with Rust-owned DTO generation into both engine and browser TypeScript surfaces, consumer type tests, deterministic shape guards, and non-value-bearing masked/omitted variants
  • D0-02 completed emission, ring-buffer/polling behavior, snapshot construction, and masking; D0-03 completed enablement, sessions, Tauri commands, and host wiring

D0-02 Engine event stream and snapshot emitter

  1. Status: done
  2. Depends On: D0-01
  3. Owner: engine-wasm
  4. Files:
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/engine/src/engine_runtime_internal/*
  • engine-wasm/engine/src/engine_public_api.rs
  • engine-wasm/engine/src/engine_tests/*
  1. 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
  1. Tests:
  • engine tests for event ordering determinism and drop accounting
  • engine tests for masked sensitive fields in snapshot/event payloads
  1. Accept:
  • engine exposes deterministic, pollable debug events and snapshots without changing runtime behavior
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003, RQ-WAE-016
  1. Notes:
  • keep emitter path allocation-light and side-effect free for non-debug execution
  • implemented in engine-wasm/engine/src/engine_debug_recorder.rs and engine-wasm/engine/src/engine_runtime_internal/debug.rs, with recorder state absent until the D0-03-owned host policy activates it
  • all 17 D0-01 event kinds are emitted through payload-derived kind construction; fixed-capacity polling, retained-window drop accounting, bounded snapshots, sorted variables, and deterministic runtime-logical timestamps have direct native tests
  • password/sensitive-name and derived-variable values, credential-bearing URLs, transport-secret post bodies, script trap details, and oversized values are masked or omitted before DTO insertion; native and WASM canary tests assert the raw values never serialize
  • evidence: engine-wasm/engine/src/engine_tests/debug_recorder.rs and engine-wasm/engine/src/engine_wasm_bindings_tests.rs; cargo fmt --all -- --check, cargo test (410 tests), warning-denied all-target/all-feature Clippy, and wasm-pack test --node (37 tests) pass; make coverage-rust-engine reports 94.88% line and 93.04% function coverage, while Rust-owned contract regeneration produces no DTO drift
  • no executable story was added because D0-04 consumer UI remains explicitly out of scope; D0-02 exposes only the engine-owned source hooks

D0-03 Host bridge integration for attach/poll/close

  1. Status: done
  2. Depends On: D0-01, D0-02
  3. Owner: browser, engine-wasm
  4. Files:
  • browser/src-tauri/src/engine_bridge/*
  • browser/src-tauri/src/lib.rs
  • browser/contracts/generated/*
  • browser/src-tauri/src/tests/*
  1. 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
  1. Tests:
  • tauri command tests for attach/poll/close behavior and error handling
  • contract wrapper generation/typecheck
  1. Accept:
  • running desktop host can attach and retrieve debug events/snapshots through host APIs
  1. Spec:
  • RQ-WAE-017, RQ-RMK-002
  1. Notes:
  • scope excludes UI panel; this is command/API integration only
  • completed by PR #531 with a default-disabled local policy, one opaque process-local session, bounded open/poll/snapshot/close commands, deterministic typed failures, idempotent close, and native lifecycle/contract tests

D0-04 Browser debug panel and capture workflow

  1. Status: done
  2. Depends On: D0-03
  3. Owner: browser
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/components/*
  • browser/frontend/src/styles.css
  • browser/frontend/src/app/*.test.ts
  1. 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)
  1. Tests:
  • frontend unit/integration tests for panel lifecycle and export behavior
  1. Accept:
  • operators can capture deterministic engine debug timelines without console scraping
  1. Spec:
  • RQ-RMK-003, RQ-WAE-017
  1. Notes:
  • implemented as a read-only Inspector in the existing docked/detached Developer Tools workspace; no presenter, host-history, engine input/layout, generated-contract, or runtime-control surface changed
  • frontend retention is capped at 512 projected events, rendered results at 200 rows, snapshot collections at 128 variables/32 timers, filter queries at 80 characters, and exports at 256 KiB
  • export reconstructs a versioned allowlist and excludes session ids, credentials, request bodies, raw WML/source, arbitrary errors, and masked original values
  • lifecycle tests cover disabled policy, open/poll/snapshot/close, session limit, cursor gaps, errors, close/reopen, hidden polling pause, unmount cleanup, capacity pressure, secret canaries, keyboard interaction, and accessibility; operational details are in browser/ENGINE_DEBUG_INSPECTOR.md

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

  1. Status: todo
  2. Depends On: none
  3. Owner: browser, docs
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/components/*
  • browser/frontend/src/styles.css
  • docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.md
  • browser/frontend/src/app/*.test.ts
  1. 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
  1. Tests:
  • frontend tests for first-run visibility, dismissal, and re-entry behavior
  • content rendering checks for primary call-to-action states
  1. Accept:
  • new users are not dropped directly into an unexplained shell state
  • first screen explains product purpose and gives a safe next step
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003
  1. Notes:
  • shell-level orientation only; do not fold tutorial sequencing or hint systems into this ticket

U0-02 Guided tour and replayable concept walkthrough

  1. Status: todo
  2. Depends On: U0-01
  3. Owner: browser, docs
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/components/*
  • browser/frontend/src/styles.css
  • browser/frontend/src/app/*.test.ts
  1. 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
  1. Tests:
  • frontend tests for step progression, skip/replay behavior, and state reset
  1. Accept:
  • users can complete a short product tour without leaving Waves
  • returning users can replay the tour from Help
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003
  1. 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

  1. Status: todo
  2. Depends On: U0-01
  3. Owner: browser, docs
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/components/*
  • docs/waves/USER_ONBOARDING_EXPERIENCE_PLAN.md
  • browser/frontend/src/app/*.test.ts
  1. Build:
  • add an in-app help hub with Start Here, Quickstart, Core Concepts, Troubleshooting, Developer Guide, and Reference
  • make help reachable after onboarding, not just during first launch
  1. Tests:
  • frontend tests for section navigation and stable rendering of core help content
  1. 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
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003, RQ-WAE-017
  1. 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

  1. Status: todo
  2. Depends On: U0-03
  3. Owner: browser, engine-wasm, docs
  4. Files:
  • engine-wasm/examples/source/*
  • engine-wasm/examples/generated/examples.ts
  • browser/frontend/src/app/*
  • docs/waves/FORM_HANDLING_LOCAL_MODE_TESTING.md
  1. 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
  1. Tests:
  • example generation remains green
  • frontend tests verify tutorial discovery and launch paths
  1. Accept:
  • users can learn core Waves interactions through built-in content and examples
  • tutorial content remains within normal engine/browser boundaries
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003, RQ-RMK-008
  1. Notes:
  • prefer product-native tutorial content over external-only prose

U0-05 Contextual hints and onboarding state persistence

  1. Status: todo
  2. Depends On: U0-02, U0-03
  3. Owner: browser
  4. Files:
  • browser/frontend/src/app/*
  • browser/frontend/src/components/*
  • browser/frontend/src/app/*.test.ts
  1. 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
  1. Tests:
  • frontend tests for trigger rules, dismissal, and persistence/reset behavior
  1. Accept:
  • contextual help appears only when relevant and remains dismissible
  • returning users are not forced through repeated onboarding
  1. Spec:
  • RQ-RMK-002, RQ-RMK-003
  1. 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.md
  • docs/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

  1. Status: done
  2. Depends On: W0-04
  3. Files:
  • engine-wasm/engine/src/wavescript/stdlib/dialogs.rs
  • engine-wasm/engine/src/wavescript/stdlib/wmlbrowser.rs
  • engine-wasm/engine/src/runtime/events.rs
  • engine-wasm/engine/src/lib.rs
  • browser/contracts/engine.ts
  • browser/frontend/src/main.ts
  • browser/src-tauri/src/*
  1. Build:
  • Add timer/event plumbing and dialog hostcall path.
  1. 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.wml
  • engine-wasm/examples/source/timer-script-dialog.flow.json
  • pnpm test:story W0-05
  1. Accept:
  • Timer-triggered script flow works with deterministic host/runtime behavior.
  1. Spec:
  • RQ-WMLS-022, RQ-WAE-016, RQ-WAE-017
  1. 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.
  1. Closure Boundary:
  • This closes the project baseline only. Strict WAP Dialogs library/function identifiers, interactive dialog result round-trips, and full WMLS-5 conformance remain in WMLS-504/WMLS-505 and W1-05..W1-07.

W0-06 Bytecode verification gates follow-up

  1. Status: done
  2. Depends On: W0-02
  3. Files:
  • engine-wasm/engine/src/wavescript/decoder.rs
  • engine-wasm/engine/src/wavescript/vm.rs
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  1. Build:
  • Implement structural verification gates (header/pools/index/jump-target validity) before VM execution.
  1. Tests:
  • Verification-failure fixtures for malformed pools, invalid branch targets, and out-of-range references.
  1. Accept:
  • Decoder rejects structurally invalid units before interpreter execution begins.
  1. Spec:
  • RQ-WMLS-008, RQ-WMLS-009, RQ-WMLS-010
  1. 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

  1. Status: done
  2. Depends On: W0-04
  3. Files:
  • engine-wasm/engine/src/wavescript/stdlib/wmlbrowser.rs
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/contracts/wml-engine.ts
  1. Build:
  • Implement WMLBrowser.newContext and WMLBrowser.getCurrentCard behavior per spec.
  • Ensure interaction with pending go/prev requests is deterministic and spec-aligned.
  1. Tests:
  • Invocation fixtures for context reset semantics and current-card URL formatting (relative vs absolute).
  1. Accept:
  • Missing context APIs are present and behaviorally aligned with WMLScript library semantics.
  1. Spec:
  • RQ-WMLS-019, RQ-WMLS-020
  1. Notes:
  • Additive compliance follow-up to completed var/nav subset (W0-04).
  • Completed in R0-03 closure pass with deterministic runtime + stdlib tests and host-visible fixture (wmlbrowser-context-fidelity.wml).

W0-08 External function access-control conformance follow-up

  1. Status: todo
  2. Depends On: W0-01, W0-04
  3. Files:
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/engine/src/wavescript/*
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  1. Build:
  • Enforce external-call constraints (extern visibility, access pragma checks, deterministic call failure categories).
  1. Tests:
  • Resolver fixtures for allowed/denied domain/path calls and non-extern function rejection.
  1. Accept:
  • External script invocation semantics include conformance access checks before execution.
  1. 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

  1. Status: todo
  2. Depends On: W0-01
  3. Files:
  • transport-rust/src/lib.rs
  • browser/contracts/transport.ts
  • browser/src-tauri/src/lib.rs
  • docs/waves/CONTRACT_REQUIREMENTS_MAPPING.md
  1. Build:
  • Add explicit transport/host handling policy for:
    • text/vnd.wap.wmlscript
    • application/vnd.wap.wmlscriptc
  • Keep boundary ownership explicit: transport classification + runtime execution handoff; no host-side script semantic execution.
  1. Tests:
  • Fixture matrix for both content types and deterministic unsupported/error mappings.
  1. Accept:
  • Script media types are routed deterministically and reflected in contract/docs.
  1. Spec:
  • RQ-WMLS-011

W1-02 Bytecode structural verification (header/pools/indexes/jumps)

  1. Status: done
  2. Depends On: W0-06
  3. Files:
  • engine-wasm/engine/src/wavescript/wap_decoder.rs
  • engine-wasm/engine/tests/fixtures/wmlscript/
  • engine-wasm/engine/src/lib.rs
  1. Build:
  • Add a strict decoder for the effective WAP-193 compilation-unit format alongside the unchanged project-specific execution stream.
  • 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.
  1. Tests:
  • Source-derived valid .wmlsc fixtures plus malformed cases covering version/header fields, multi-byte encodings, section sizes, pool references, function boundaries, every mandatory instruction family, and jump targets.
  1. Accept:
  • Invalid bytecode fails before execution, with deterministic trap class.
  1. Spec:
  • RQ-WMLS-008, RQ-WMLS-009, RQ-WMLS-010
  1. Notes:
  • The bounded WMLS-501 tranche directly covers WAP-193 compilation-unit framing, pools, instruction decoding, and local/constant/function/jump structural references with native/WASM fixture parity.
  • Follow-on progress: registered WAP units now verify the complete compilation unit, resolve external names from the function table, execute RETURN_ES, and preserve fatal verification outcomes through invocation and trace boundaries. Manual entry-point PCs explicitly select the non-normative nine-opcode fixture compatibility path.
  • Additive B1 closure (2026-07-28): source-pinned fixtures verify all WAP-194 Appendix A standard-library/function identifier domains and arities plus reachable whole-function stack effects, merge consistency, loops, unreachable regions, implicit/explicit returns, underflow/overflow classification, native/WASM serialization parity, and verifier recovery. script-link-execution.flow.json makes failure and replacement-invocation recovery executable with pnpm test:story WMLS-501. This closes the additive verifier tranche without reopening the previously merged WMLS-501 decoder/runtime-routing history.
  • B2 baton: WMLS-502 may now add bounded operator/conversion execution on the verified CFG and stack model. It must not conflate that execution kernel with WMLS-503 URL/access behavior or WMLS-504 standard-library function behavior. Full chapter 12 closure remains in WMLS-505.

W1-03 Extern/pragma/access-control conformance

  1. Status: todo
  2. Depends On: W0-08
  3. Files:
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/engine/src/wavescript/*
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  1. Build:
  • Enforce extern visibility and pragma-based external access control (use url, use access, use meta) for external invocation paths.
  1. Tests:
  • Allowed/denied call fixtures and non-extern rejection fixtures with deterministic outcomes.
  1. Accept:
  • External invocation behavior is policy-complete and spec-linked.
  1. Spec:
  • RQ-WMLS-001, RQ-WMLS-002, RQ-WMLS-003

W1-04 Function/local/return and conversion semantics parity closure

  1. Status: done
  2. Depends On: W0-03
  3. Files:
  • engine-wasm/engine/src/wavescript/wap_runtime.rs
  • engine-wasm/engine/src/wavescript/value.rs
  • engine-wasm/engine/src/wavescript/wap_decoder.rs
  • engine-wasm/engine/tests/fixtures/wmlscript/
  • engine-wasm/examples/source/script-link-execution.*
  1. Build:
  • Execute the effective local-call, variable, constant, control-flow, arithmetic, bitwise, comparison, logical, stack, type, return, and debug instruction families from the verified CFG.
  • Apply WAP-193 automatic conversion precedence and return deterministic invalid values for illegal conversions, divide/remainder by zero, range overflow, and invalid operands.
  • Preserve step, stack, call-depth, allocation, and recovery bounds across native and WASM targets.
  1. Tests:
  • cargo test --manifest-path engine-wasm/engine/Cargo.toml wap_runtime
  • cargo test --manifest-path engine-wasm/engine/Cargo.toml registered_wap_unit_executes_wmls_502_operator_conversion_fixture
  • wasm-pack test --node engine-wasm/engine --features wasm-bindings
  • pnpm test:story WMLS-502
  1. Accept:
  • Function/call/conversion semantics are deterministic and spec-aligned for mandatory coverage scope.
  1. Spec:
  • RQ-WMLS-004, RQ-WMLS-005, RQ-WMLS-006
  1. Notes:
  • The clause ledger records 47 of the 59 directly mapped WMLS-502 clauses as implemented: 44 by this execution tranche and three by the completed WMLS-501 verifier. The 32 selected parent rows remain conservative (partial or missing); this work does not claim parent-family closure.
  • The compliance-program work item therefore remains in-progress even though the bounded W1-04 implementation tranche is complete.
  • WMLS-503 URL/access execution, WMLS-504 standard-library execution, optional integer-only mode, and unfinished WMLS-505 chapter 12 coverage remain excluded.

W1-05 SCR conformance matrix and CI guardrail for WMLScript lane

  1. Status: in-progress
  2. Depends On: W1-02, W1-03, W1-04
  3. Files:
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  • docs/waves/WAP_1_2_1_WMLSCRIPT_SCR_LEDGER.md
  • docs/waves/WAP_1_2_1_WMLSCRIPT_LIBRARIES_SCR_LEDGER.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  • spec-processing/source-manifests/wap-1.2.1-wmlscript-scr.json
  • spec-processing/source-manifests/wap-1.2.1-wmlscript-libraries-scr.json
  • scripts/check-wap-wmlscript-conformance-ledger.mjs
  • .github/workflows/*
  1. 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:MCF rows and 80 WMLScriptLibs:MCF rows.
  • Fail CI when mandatory SCRs are unmapped or regress to untracked.
  1. Tests:
  • node scripts/check-wap-wmlscript-conformance-ledger.mjs
  • CI dry-run with one intentionally unmapped mandatory SCR.
  1. 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.
  1. Spec:
  • RQ-WMLS-001..022 (mandatory subsets first)
  1. Notes:
  • Current audit is intentionally conservative:
    • WMLScript: 32 partial / 9 missing / 0 implemented;
    • Libraries: 14 partial / 66 missing / 0 implemented;
    • WMLScript direct structural tests: 21.
  • Clause-level evidence is more granular than the parent-row ledger: WMLS-502 now has 47 implemented of 59 directly mapped clauses while its 32 selected parents remain partial/missing.
  • Strict decoder tests directly evidence the structural tranche; custom-VM tests remain provisional for execution semantics and cannot close standard-library identifier rows.

W1-06 Fatal/non-fatal script error taxonomy closure

  1. Status: in-progress
  2. Depends On: W1-02, W1-04
  3. Files:
  • engine-wasm/engine/src/wavescript/vm.rs
  • engine-wasm/engine/src/wavescript/wap_runtime.rs
  • engine-wasm/engine/src/wavescript/value.rs
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/contracts/wml-engine.ts
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  1. Build:
  • Implement explicit fatal vs non-fatal execution error classes and map non-fatal computational failures to invalid semantics.
  • Keep host contract deterministic: invocation-abort vs recoverable-result outcomes must be machine-checkable.
  • Progress (2026-03-02): added structured execution error_class + error_category + invocation_aborted contract fields, non-fatal mapping for computational TypeError and StackUnderflow traps to invalid, preserved deferred side-effects for non-fatal outcomes, added fatal-abort recovery coverage, and enforced explicit VmTrap class/category matrix tests across all current variants.
  • Progress (2026-07-25): corrected a spec-accuracy bug from the prior slice: WAP-193_101 12.3.1.7 classifies Stack Underflow as Fatal (“only generated if compiler generates bad code”), not Non-fatal, and the VM’s TypeError is the same “compiler generated bad code” condition. Both now classify fatal/integrity in classify_vm_trap/classify_vm_trap_category (engine_script_types.rs); scripts hitting either trap now abort invocation instead of yielding invalid. Updated the affected trace/invocation tests in engine_tests/script_runtime.rs and engine_tests/traces_public_api.rs to match, and added non_fatal_execution_outcome_contract_shape to pin the ScriptExecutionOutcome::non_fatal contract shape directly; at that point no VmTrap variant reached it.
  • Progress (2026-08-02): the WMLS-502 WAP executor now handles divide/remainder by zero, arithmetic overflow, illegal/range-failing conversions, invalid operands, and floating underflow with the source-defined invalid or floating-zero values without aborting the invocation. The remaining WMLS-505 matrix includes integer-only constant behavior and broader fatal/error closure.
  1. 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.
  1. Accept:
  • Error handling behavior aligns with chapter 12 taxonomy and no longer relies on generic trap collapsing.
  1. Spec:
  • RQ-WMLS-006, RQ-WMLS-010

W1-07 W1-06 closure split and acceptance finalization

  1. Status: todo
  2. Depends On: W1-06
  3. Files:
  • docs/waves/WORK_ITEMS.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/WMLSCRIPT_SPEC_TRACEABILITY.md
  • engine-wasm/contracts/wml-engine.ts
  1. Build:
  • Split remaining W1-06 open work into explicit closure bullets (missing fixture classes, unresolved trap mappings, and host contract assertions).
  • Define objective close criteria so W1-06 can move from in-progress to done without ambiguity.
  1. Tests:
  • Coverage matrix update proving each remaining W1-06 closure bullet maps to a deterministic fixture/test lane.
  1. Accept:
  • W1-06 has a concrete closure checklist with no implicit scope remaining.
  1. Spec:
  • RQ-WMLS-006, RQ-WMLS-010

Phase R: WAP-191 Full-Stack Conformance Completion

Reference:

  • docs/waves/WML_191_FULL_STACK_COMPLIANCE_AUDIT.md
  • spec-processing/source-material/parsed-markdown/docling-cleaned/WAP-191-WML-20000219-a.cleaned.md
  • spec-processing/source-manifests/wap-1.2.1-effective-spec.json

R0-01 WML-191 conformance matrix and CI gate

  1. Status: in-progress
  2. Depends On: S0-14
  3. Files:
  • docs/waves/WML_191_FULL_STACK_COMPLIANCE_AUDIT.md
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/CONTRACT_REQUIREMENTS_MAPPING.md
  • .github/workflows/*
  1. 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_105 after WAP-191_104; SIN 105 adds optional WML-C-76 (tabindex) and clarifies POST/multipart behavior.
  • Add CI guardrail that fails when mandatory items are unmapped.
  1. Tests:
  • CI dry-run with one intentionally unmapped mandatory ID.
  1. Accept:
  • Mandatory WML IDs cannot silently regress to unmapped/untracked state.
  1. Spec:
  • effective WAP-191 section 15.1 through 15.4 plus WAP-191_105 section 3
  1. Notes:
  • Source/status/disposition/work-item accounting is implemented in spec-processing/source-manifests/wap-1.2.1-wml-scr.json and guarded by node scripts/check-wap-conformance-ledger.mjs.
  • The exact sequence includes WML-S-60..69. The mandatory code audit records 19 implemented, 14 partial, and 14 missing rows, with validated code/test evidence for 33 rows. WML-201 directly projects all 76 rows and maps all 175 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

  1. Status: done
  2. Depends On: A5-02, T0-04
  3. Files:
  • engine-wasm/engine/src/lib.rs
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/engine/src/parser/wml_parser/actions.rs
  • transport-rust/src/lib.rs
  • browser/frontend/src/session-history.ts
  • browser/frontend/src/app/navigation-state.ts
  • browser/frontend/src/app/navigation-state.test.ts
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Implement and verify section 12.5 step-order behavior for go, prev, noop, refresh, including deterministic task-failure handling.
  • Ensure request metadata handoff (method/postfield/headers) stays aligned between runtime and transport.
  1. 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.
  1. Accept:
  • Runtime and host behavior match documented WML process ordering for covered flows.
  1. Spec:
  • WML-18, section 9.5, section 12.5

R0-03 History/context fidelity completion

  1. Status: done
  2. Depends On: A5-01, B2-02
  3. Files:
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/contracts/wml-engine.ts
  • browser/contracts/transport.ts
  • browser/frontend/src/session-history.ts
  1. Build:
  • Expand history entries to include request identity fields needed by WML history semantics.
  • Complete newcontext and context-reset behavior across runtime and browser history integration.
  1. Tests:
  • Deterministic back-stack fixtures with repeated URLs, mixed transitions, and context resets.
  1. Accept:
  • History and context behavior is deterministic and conforms to section 9.2 + 10.2.
  1. Spec:
  • WML-07, WML-10, WML-11, WML-13
  1. Notes:
  • Context reset semantics closed via WMLBrowser.newContext runtime effect handling and WMLBrowser.getCurrentCard API 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

  1. Status: in-progress
  2. Depends On: M1-07
  3. Files:
  • engine-wasm/engine/src/parser/wml_parser/*
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/engine/tests/fixtures/*
  • docs/wml-engine/work-items.md
  1. 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.
  1. Tests:
  • Fixture matrix for element parse/validation and runtime effects.
  1. Accept:
  • Core WML element families in section 11 are represented or explicitly profile-gated.
  1. 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
  1. Notes:
  • head (WML-C-30) and access (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 section 11.3.1. Ordered meta (WML-C-34, optional) records now retain name/http-equiv identity, content, forua, and scheme with deterministic EMPTY/attribute validation. access remains partial: defaults, relative-path resolution, and referring-URI policy enforcement are the cross-boundary R0-07 scope.
  • template (WML-C-47) split out to R0-12: it is spec-inseparable from card/deck task shadowing (WML-C-08, section 9.6) and requires a real named do/onevent binding model this codebase doesn’t have yet, not a small addition alongside head/access.
  • Mandatory input/select/option syntax validation for WML-C-33, WML-C-41, and WML-C-43 now rejects invalid DTD content, undeclared attributes, and invalid NMTOKEN/enum/boolean/number values deterministically. Optional fieldset and nested optgroup wrappers 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, emptyok precedence, and maxlength. 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 value vdata 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/ivalue precedence, option-value evaluation, serialization, onpick dispatch, and no-implicit-refresh behavior have direct runtime evidence.
  • Control vdata and onpick HREF references now share source-derived validation and evaluation semantics, including exact CDATA, literal dollars, undefined variables, conversion defaults/aliases, document-order initialization, empty option values, and atomic invalid-load rejection across native/WASM boundaries.
  • WML-303 closes the do/onevent parser/runtime portion with effective-name identity, optionality/language retention, same-scope conflict validation, illegal-parent ignoring, card/template shadowing, and deterministic activation order. Remaining R0-04 scope is optional fieldset/optgroup capability declaration and grouping presentation, plus language-aware non-Basic-Latin mask repertoires. Those gates are not residual WML-204 acceptance work; the mandatory Unicode Basic Latin input floor is implemented and directly tested.
  • WML-302 closes post-XML variable substitution in text, vdata, and HREF contexts; undefined, escaping/default, literal-dollar, validation, task-snapshot, go/prev/refresh order, and resolved history/navigation-boundary behavior have direct native/WASM/story evidence. Broader history modeling remains WML-301, request/postfield serialization remains WML-304, while native timer lifecycle is completed by WML-305.

R0-05 Renderer semantics completion (11.8/11.9)

  1. Status: todo
  2. Depends On: B5-02, B5-03, C5-01, C5-02
  3. Files:
  • engine-wasm/engine/src/layout/*
  • engine-wasm/engine/src/render/*
  • engine-wasm/engine/tests/fixtures/*
  1. 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.
  1. Tests:
  • Snapshot and semantic fixtures across viewport widths and mixed markup.
  1. Accept:
  • Renderer behavior aligns with section 11.8 and 11.9 requirements for implemented profiles.
  1. 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

  1. Status: in-progress
  2. Depends On: T0-04, R0-02
  3. Files:
  • transport-rust/src/lib.rs
  • browser/contracts/transport.ts
  • engine-wasm/contracts/wml-engine.ts
  • browser/src-tauri/src/lib.rs
  1. 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.
  1. Tests:
  • End-to-end request-shape fixtures for form submit and refresh/no-cache scenarios.
  1. Accept:
  • Request metadata semantics are deterministic and traceable to runtime task state.
  1. Spec:
  • WML-29, WML-37, WML-52, section 9.5.1, section 12.5
  1. Notes:
  • WML-304 now supplies the Rust-owned typed request intent across native, WASM, generated engine, and Tauri serialization contracts. R0-06/WSP-805 now consumes that intent for deterministic GET query and form-urlencoded POST construction, charset-bearing Content-Type, smallest-relative Referer, no-cache headers, direct HTTP and native WSP handoff. Request A2 adds typed POST-history replay. The additive multipart closure provides deterministic collision-checked boundaries, explicit text/plain per-part types, and charset parameters for non-US-ASCII values, bringing WML-304 to 15 of 15 directly assessed clauses without claiming the broader WSP-805 family gaps.

R0-07 Browser policy path: access control, low-memory, unknown-DTD behavior

  1. Status: todo
  2. Depends On: R0-04
  3. Files:
  • browser/frontend/src/*
  • browser/src-tauri/src/*
  • engine-wasm/contracts/wml-engine.ts
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Enforce access and task/context-memory semantics in native Rust while keeping safe presentation and bounded request history in the browser host.
  • Ignore unknown alternate-DTD wrappers/attributes while retaining recognized nested content.
  1. Tests:
  • Source-derived fixtures plus native/WASM/Tauri/browser tests for allow/deny, bounded LRU/context reset, unknown DTD, atomic task failure, and non-leaking host copy.
  1. Accept:
  • Browser host has explicit, test-backed policy behavior for sections 12.1-12.4.
  1. Spec:
  • WML-14, WML-15, WML-16, WML-17
  1. Evidence:
  • engine-wasm/engine/tests/fixtures/wml-306/
  • cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_306
  • pnpm --dir browser/frontend test -- src/app/browser-presenter.test.ts src/app/navigation-state.load.test.ts src/session-history.test.ts
  • pnpm test:story WML-306
  • node scripts/wap-context-pack.mjs WML-306

R0-08 WML encoder/validation tooling and WBXML conformance fixtures

  1. Status: todo
  2. Depends On: T0-07
  3. Files:
  • transport-rust/tests/fixtures/transport/*
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/RUNTIME_MARKUP_SPEC_TRACEABILITY.md
  • spec-processing/source-manifests/wap-1.2.1-wbxml-scr.json
  1. 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, and WBXML-C-011 rows against a pinned decoder implementation rather than permissive subprocess behavior.
  • Keep ownership explicit where behavior is authoring/tooling vs runtime-execution.
  1. 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.
  1. Accept:
  • Section 14 and 15.2/15.3/15.4 obligations are concretely represented in testable artifacts.
  • All three WBXML:MCF client rows have direct normative evidence or a deterministic explicit unsupported result; fake fixed-output decoders and either fixtures cannot satisfy the gate.
  1. Spec:
  • WML-60, WML-61, WML-62, WML-63, WML-64, WML-65, WML-70
  • RQ-RMK-010, WBXML-C-001, WBXML-C-010, WBXML-C-011

R0-09 BACK key hard-availability and do type=prev precedence

  1. Status: done
  2. Depends On: R0-02, R0-03
  3. Files:
  • engine-wasm/engine/src/runtime/*
  • engine-wasm/engine/src/parser/wml_parser/*
  • browser/frontend/src/*
  • browser/contracts/transport.ts
  • docs/waves/WAE_SPEC_TRACEABILITY.md
  1. 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.
  1. Tests:
  • Fixture set for BACK availability, stack-pop behavior, and do type=prev precedence with conflicting bindings.
  1. Accept:
  • BACK semantics are always available and precedence rules are deterministic across runtime + host UI paths.
  1. Spec:
  • RQ-WAE-017, section 9.2, section 9.7
  1. Notes:
  • WML-303 makes the browser BACK control permanently reachable, preserves history availability as non-disabling metadata, resolves the first active do type="prev" in card-before-template/document order, honors noop masking, and reports handled status explicitly across native/WASM/host snapshots so unchanged-card overrides cannot trigger host-history fallback.
  • Evidence: engine-wasm/engine/src/engine_tests/wml_303_actions.rs, browser/src-tauri/src/tests/engine_wrappers.rs, browser navigation/shell tests, and engine-wasm/examples/source/wml-303-actions-softkeys.flow.json via pnpm test:story WML-303.

R0-10 Cross-layer acceptance fixture ledger

  1. Status: in-progress
  2. Depends On: R0-02, R0-03, R0-06, W1-06
  3. Files:
  • docs/waves/SPEC_TEST_COVERAGE.md
  • docs/waves/WORK_ITEMS.md
  • docs/wml-engine/work-items.md
  • transport-rust/tests/fixtures/transport/*
  • engine-wasm/engine/tests/fixtures/*
  • browser/frontend/src/app/*.test.ts
  1. Build:
  • Add a single ledger mapping active R0/T0/W1 tickets to concrete fixture and test assets across engine, transport, and browser.
  • Record explicit “implemented”, “partial”, and “missing” fixture lanes for each ticket acceptance criterion.
  1. Tests:
  • Manual consistency pass confirming every referenced fixture path exists and each mapped ticket has at least one deterministic test lane.
  1. Accept:
  • Ticket closure decisions can be made from one cross-layer fixture map without ad hoc test discovery.
  1. Spec:
  • Aggregated IDs from WML-191, RQ-WAE-*, RQ-TRN-*, and RQ-WMLS-* lanes linked by mapped tickets.
  1. 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 list exposes this first machine-readable host-sample ledger slice.
  • Full R0/T0/W1 cross-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

  1. Status: in-progress
  2. Depends On: R0-10, T0-04, R0-03
  3. Files:
  • transport-rust/tests/fixtures/transport/*
  • engine-wasm/engine/tests/fixtures/*
  • browser/frontend/src/app/navigation-state.test.ts
  • browser/src-tauri/src/lib.rs
  • docs/waves/SPEC_TEST_COVERAGE.md
  1. Build:
  • Add a deterministic replay runner that executes representative transport -> engine -> browser flows from shared fixture inputs and validates timeline/frame/state outputs.
  • Keep this runner behavior-focused (semantic drift guard), not just type/contract shape checks.
  1. Tests:
  • One replay lane for load->fragment nav->back.
  • One replay lane for external intent follow + request-policy metadata.
  1. Accept:
  • Cross-layer behavioral regressions are detectable in one reproducible replay lane with stable fixture outputs.
  1. Spec:
  • WML-07, WML-18, RQ-WAE-008, RQ-WAE-016, RQ-TRN-004
  1. 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)

  1. Status: done
  2. Depends On: R0-02, R0-04
  3. Files:
  • engine-wasm/engine/src/runtime/card.rs
  • engine-wasm/engine/src/runtime/deck.rs
  • engine-wasm/engine/src/parser/wml_parser/mod.rs
  • engine-wasm/engine/src/parser/wml_parser/actions.rs
  • engine-wasm/engine/src/parser/wml_parser/tests.rs
  • docs/waves/WAP_1_2_1_WML_SCR_LEDGER.md
  • spec-processing/source-manifests/wap-1.2.1-wml-scr.json
  • spec-processing/source-manifests/wap-1.2.1-selected-normative-clauses.json
  1. Build:
  • Introduce a named do[name]/onevent[type] binding model (the current Card struct 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/onevent children) per section 11.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 binds noop masks 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 binds noop is also masked.
  1. Tests:
  • Fixture matrix covering: card overrides deck binding; card shadows deck binding with noop (fully masked); deck-level binding stays active when not shadowed; unshadowed noop binding (masked, no shadowing partner) - matching the three-card <do> example in section 9.6.
  1. Accept:
  • WML-C-47 (template) and WML-C-08 (card/deck task shadowing) have direct code/test evidence, and the compliance ledger reflects it: obligation status in wap-1.2.1-wml-scr.json, parent-status mirrors in wap-1.2.1-selected-normative-clauses.json, and the drift-guard snapshots in scripts/check-wap-conformance-ledger.mjs/scripts/check-requirement-status-drift.mjs, following the same update pattern R0-04’s head/access slice used.
  1. Spec:
  • WML-08, WML-47, section 9.6, section 9.7, section 11.4, section 11.5.1
  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 alongside head/access.
  • WML-C-08 (shadowing) is formally covered by R0-02, which is done - per AGENT_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 in R0-02’s original coverage, not a reversal of R0-02’s completion.
  1. Progress:
  • Added ordered, independent card/template do[name] and onevent[type] bindings in the shared Rust deck model, including effective-name matching, cross-syntax intrinsic precedence, and inactive noop masking.
  • 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.json evidence (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-72 behavior remains optional-not-assessed until the capability pass.

Phase S (Archived)

Completed S0 and S1 source-material audit tickets are archived in:

  • docs/waves/WORK_ITEMS_ARCHIVE.md