Consent binds to the node and its exact resolved arguments
The operator approved one call, not "this node from now on". If the arguments drift, the approval no longer describes what would happen.
The rule
Normative: this is the rule
- A consent binds to a hash over the node identifier and its canonicalized resolved arguments: keys sorted, scalars encoded stably, and internal parameters (those whose names carry the reserved
__prefix) excluded. - Any mismatch between the hash a consent carries and the hash of the call at hand is treated as no consent: the gate asks again and must never reuse the earlier consent.
- Where a question is still pending for arguments that have since drifted, it is withdrawn before the new one is asked; where a question is still pending for the same call, that question is re-raised rather than duplicated.
What it means
A pending question is not safe from being replaced by a later one for the same node. Where the arguments have drifted since the question was raised, the earlier question is withdrawn before the new one is asked — an operator who has not yet answered never sees a question about a call that no longer matches what would actually run. Only a question for the identical call is re-raised as itself rather than duplicated.
Example
A question already waiting in the inbox, for arguments that no longer match the call at hand:
{ "message": "old args" }{ "message": "send it", "level": "info" }Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · RT-GATE-3 · changed in spec 1.0