Optional ReadonlyevidenceOptional ReadonlyidempotencyThe key every attempt of the call is made under — only with touches. When the stage can interrupt(), derive it
from state or from scope.$attempt().idempotencyKey, never from $getArgs(): the input does not cross a resume,
so an args-derived key would differ on the re-run.
Optional ReadonlytouchesThe outside system the call changes — a name like target.
What
scope.$call(target, fn, policy, options)declares beyond its policy (P3): the outside system the call touches, and the key it is made under. A call that touches a system and may retry must carry a key; the key is a VALUE the stage computed from its input or its state — never from model output — and is checked like a stage's.