WAP LabsProject atlas

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

Variable store and substitution closure

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/engine-wasm|engine-wasm]]
  • owned-by → [[owner-layers/qa|qa]]
  • planned-by ← [[clauses/WML-CL-GO-ASSIGNMENT-ORDER|WML-CL-GO-ASSIGNMENT-ORDER]]
  • planned-by ← [[clauses/WML-CL-GO-SETVAR-SNAPSHOT|WML-CL-GO-SETVAR-SNAPSHOT]]
  • planned-by ← [[clauses/WML-CL-GO-TARGET-RESOLUTION|WML-CL-GO-TARGET-RESOLUTION]]
  • planned-by ← [[clauses/WML-CL-HISTORY-RESOLVES-VARIABLES|WML-CL-HISTORY-RESOLVES-VARIABLES]]
  • planned-by ← [[clauses/WML-CL-PREV-ASSIGNMENT-ORDER|WML-CL-PREV-ASSIGNMENT-ORDER]]
  • planned-by ← [[clauses/WML-CL-REFRESH-ASSIGNMENTS|WML-CL-REFRESH-ASSIGNMENTS]]
  • planned-by ← [[clauses/WML-CL-SETVAR-INVALID-NAME-IGNORED|WML-CL-SETVAR-INVALID-NAME-IGNORED]]
  • planned-by ← [[clauses/WML-CL-SETVAR-STRUCTURE|WML-CL-SETVAR-STRUCTURE]]
  • planned-by ← [[clauses/WML-CL-SETVAR-TASK-SIDE-EFFECT|WML-CL-SETVAR-TASK-SIDE-EFFECT]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-COMMIT-BEFORE-TASK|WML-CL-VARIABLE-COMMIT-BEFORE-TASK]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-CONVERSION-MODES|WML-CL-VARIABLE-CONVERSION-MODES]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-DEFAULT-CONVERSION|WML-CL-VARIABLE-DEFAULT-CONVERSION]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-DOLLAR-ESCAPE|WML-CL-VARIABLE-DOLLAR-ESCAPE]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-NAME-GRAMMAR|WML-CL-VARIABLE-NAME-GRAMMAR]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-PARSE-PRECEDENCE|WML-CL-VARIABLE-PARSE-PRECEDENCE]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-REFERENCE-VALIDATION|WML-CL-VARIABLE-REFERENCE-VALIDATION]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-SET-DEFINITION|WML-CL-VARIABLE-SET-DEFINITION]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-SUBSTITUTION-LOCATIONS|WML-CL-VARIABLE-SUBSTITUTION-LOCATIONS]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-TASK-SNAPSHOT|WML-CL-VARIABLE-TASK-SNAPSHOT]]
  • planned-by ← [[clauses/WML-CL-VARIABLE-UNDEFINED-EMPTY|WML-CL-VARIABLE-UNDEFINED-EMPTY]]
  • relates-to → [[legacy-tickets/C5-04|C5-04]]

Data

{
  "status": "done",
  "ownerLayers": [
    "engine-wasm",
    "qa"
  ],
  "sourceFamilies": [
    "wml"
  ],
  "followUpWorkItems": [
    "WML-301",
    "WML-304",
    "WML-305"
  ],
  "notes": [
    "All 20 directly mapped WML-302 clauses have source-derived native fixtures, WASM parity, and an executable host/Waves story. The focused WML-302 context pack is generated from the effective base -> SIN 102 -> SIN 104 -> SIN 105 source order with no zero-clause or family mapping gaps.",
    "HISTORY-RESOLVES-VARIABLES is explicitly adjudicated across WML-301/WML-302/WML-304: WML-302 resolves WML-authored target and variable data before the engine records same-deck history or publishes an external navigation intent; WML-301 retains ownership of the broader deck/card history model; WML-304 retains request construction and GET/POST/postfield serialization. No unresolved WML variable reference crosses the WML-302 engine history or navigation boundary.",
    "WML-302 preserves WML-202 newcontext reset, WML-204 control/vdata commit, WML-205 atomic failure rollback, and WML-303 task/action/BACK ordering. It makes no wml-engine.ts or browser debug-contract change; D0-01 remains the exclusive contract lane. Native timer lifecycle remains WML-305 and is the next engine baton."
  ],
  "specReferences": [
    "WAP-191_104-WML sections 9.2, 9.4, 10.3 through 10.3.5, and 12.5.1, 12.5.2, and 12.5.4"
  ],
  "existingTickets": [
    "C5-04"
  ],
  "outputs": [
    "Variable store and substitution closure"
  ],
  "acceptance": [
    "Initialization, escaping modes, substitution contexts, setvar ordering, and invalid references match effective WML rules."
  ],
  "evidence": [
    "cargo test --manifest-path engine-wasm/engine/Cargo.toml wml_302",
    "wasm-pack test --node engine-wasm/engine",
    "pnpm test:story WML-302",
    "node scripts/wap-context-pack.mjs WML-302",
    "pnpm wap-compliance:check",
    "pnpm wap-graph:check"
  ],
  "source": "docs/waves/wap-1.2.1-compliance-program.json"
}