In Suppose's D question, rate comes from the supplied environment. Consider a different hidden input in a runtime rule. Suppose eligible(item) reads the host clock and whichever catalog revision is current.
I would pass a chosen now and the relevant catalog snapshot with the request. The record would also identify the rule version, evaluator configuration and returned decision. A replay of this rule should use that recorded snapshot, rather than fetch today's catalog.
D's CTFE restriction on mutable globals and statics does not define this runtime host's capabilities. In Lispex, default source evaluation runs trusted code in-process. Native embed and embed full are distinct bounded evaluators, so claims about resource limits must identify the evaluator and profile.
With those ambient reads removed, a deterministic decision has a defined input set. Applying it is a separate host choice. A changed catalog or expired decision needs a current action policy, and replay should not itself repeat external effects.