WAP LabsProject atlas

docs/knowledge-graph/vault-wml-3/work-items/wml-305.md

Native WML timer lifecycle

Generated from canonical repository manifests. Do not edit this note directly.

Relationships

  • contains ← [[sprints/WML-3|WML-3]]
  • covers-family → [[source-families/wml|wml]]
  • owned-by → [[owner-layers/browser|browser]]
  • owned-by → [[owner-layers/engine-wasm|engine-wasm]]
  • owned-by → [[owner-layers/qa|qa]]
  • planned-by ← [[clauses/WML-CL-GO-TIMER-THEN-DISPLAY|WML-CL-GO-TIMER-THEN-DISPLAY]]
  • planned-by ← [[clauses/WML-CL-REFRESH-TIMER-RESTART|WML-CL-REFRESH-TIMER-RESTART]]
  • planned-by ← [[clauses/WML-CL-TIMER-EVENT-TRANSITION|WML-CL-TIMER-EVENT-TRANSITION]]
  • planned-by ← [[clauses/WML-CL-TIMER-INITIAL-VALUE-PRECEDENCE|WML-CL-TIMER-INITIAL-VALUE-PRECEDENCE]]
  • planned-by ← [[clauses/WML-CL-TIMER-INVALID-VALUE|WML-CL-TIMER-INVALID-VALUE]]
  • planned-by ← [[clauses/WML-CL-TIMER-NAME-PERSISTENCE|WML-CL-TIMER-NAME-PERSISTENCE]]
  • planned-by ← [[clauses/WML-CL-TIMER-REFRESH-RESUME|WML-CL-TIMER-REFRESH-RESUME]]
  • planned-by ← [[clauses/WML-CL-TIMER-SINGLE-PER-CARD|WML-CL-TIMER-SINGLE-PER-CARD]]
  • planned-by ← [[clauses/WML-CL-TIMER-START-STOP|WML-CL-TIMER-START-STOP]]
  • planned-by ← [[clauses/WML-CL-TIMER-UNITS|WML-CL-TIMER-UNITS]]
  • planned-by ← [[scr-rows/WML-C-48|WML-C-48]]
  • relates-to → [[legacy-tickets/A5-03|A5-03]]
  • relates-to → [[legacy-tickets/W0-05|W0-05]]

Data

{
  "status": "done",
  "ownerLayers": [
    "engine-wasm",
    "browser",
    "qa"
  ],
  "sourceFamilies": [
    "wml"
  ],
  "followUpWorkItems": [
    "WML-301",
    "WML-304",
    "WML-306"
  ],
  "notes": [
    "All 10 directly mapped WML-305 clauses have source-derived native fixtures, native/WASM boundary coverage, browser adapter coverage, and four executable host/Waves stories. The focused pack selects five parent SCR rows with zero explicit or declared-family mapping gaps.",
    "The engine owns deterministic tenths-based lifecycle state and publishes only the exact next wakeup delay; browser scheduling remains one-shot boundary glue and does not move timer semantics out of native Rust.",
    "WML-305 preserves completed WML-202/204/205/302/303 behavior. GET/POST construction remains WML-304, broader context navigation remains WML-301, and access/error policy remains WML-306; D0-02 and F0-01 are unchanged."
  ],
  "specReferences": [
    "WAP-191_104-WML sections 11.7, 12.5.1, and 12.5.4"
  ],
  "existingTickets": [
    "A5-03",
    "W0-05"
  ],
  "outputs": [
    "Native WML timer lifecycle"
  ],
  "acceptance": [
    "Timer start, stop, resume, expiry, invalid values, ontimer dispatch, and host wakeups are deterministic and target-parity tested."
  ],
  "evidence": [
    "cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_305",
    "wasm-pack test --node engine-wasm/engine",
    "cargo test --manifest-path browser/src-tauri/Cargo.toml",
    "pnpm --dir browser/frontend test",
    "pnpm test:story WML-305",
    "node scripts/wap-context-pack.mjs WML-305",
    "pnpm wap-compliance:check",
    "pnpm wap-graph:check"
  ],
  "source": "docs/waves/wap-1.2.1-compliance-program.json"
}