diff --git a/src/operation/builtin/gatekeeper.md b/src/operation/builtin/gatekeeper.md index cfb3eac..20c0ab1 100644 --- a/src/operation/builtin/gatekeeper.md +++ b/src/operation/builtin/gatekeeper.md @@ -36,6 +36,14 @@ If the checks fail, a `rejected` record is asserted to the `observer`. If no `bi particular `Step` exists, the system just waits; this allows it to be relaxed about ordering of events. +However, besides waiting for a `bind`, the gatekeeper asserts a `resolve` of its own into its +associated dataspace, with the same `Step` that it received but a different `observer`. If, +before an appropriate `bind` appears, a `Resolved` assertion is sent to this `resolve`'s +`observer`, the gatekeeper stops waiting for a `bind` and relays the response on to the +ultimate requester directly. This way, entities can keep an eye out for `resolve` requests that +will never complete, and answer `rejected` to them even when no matching `bind` exists. +Entities can also use `resolve` requests to synthesize a `bind` in a "just-in-time" fashion. + ## Sturdyrefs - Relevant schema: [[syndicate-protocol]/schemas/sturdy.prs](https://git.syndicate-lang.org/syndicate-lang/syndicate-protocols/src/branch/main/schemas/sturdy.prs)