References and templates

Exact references preserve JSON type:

WOML
<when test="{{context.steps.isEligible}}">

Mixed templates always produce strings and are accepted only by attributes whose contract permits templates:

WOML
message="Order {{context.payload.orderId}} failed"

Reference grammar:

Text
{{context.payload}}
{{context.payload.property.nested}}
{{context.steps.stepId}}
{{context.steps.stepId.property.nested}}
{{secrets.UPPERCASE_NAME}}

No whitespace, bracket access, optional chaining, operators, calls, or fallbacks are allowed inside declarative references. A referenced output must exist and dominate the consumer in the compiled DAG. Missing properties fail with WOML_REFERENCE_NOT_AVAILABLE; they do not become undefined or an empty string. Context references validate data access but do not create hidden graph edges.