add note regarding the normative force of directives
This is to better anticipate the nature of defer/stream directives as client side recommendations rather than mandates.
βοΈ Deploy Preview for graphql-spec-draft ready!
π¨ Explore the source changes: cab72fda9be1b493cded257aaec9a501e880b1f3
π Inspect the deploy log: https://app.netlify.com/sites/graphql-spec-draft/deploys/61d84c50111d880008a53e4d
π Browse the preview: https://deploy-preview-908--graphql-spec-draft.netlify.app/draft
Exact language requires some changes, this is just a temporary placeholder so I donβt forget about it, other thoughts also welcome of course!
Directives "direct" behavior only indirectly, by providing information. Directive "direct" behavior, but do not mandate it.
The existing specified directives that change execution behavior have "must" language attached (skip, include), but custom directives, and potentially future specified directives (defer/stream), may have only "should" language.
https://github.com/robrichard/defer-stream-wg/discussions/7
Is there an existing paragraph we should be rewording such that new readers of the spec come to the understanding that we're trying to get to?
Basically: what existing text is likely to cause confusion, and is the reason we feel like we need this additional paragraph?
Is there an existing paragraph we should be rewording such that new readers of the spec come to the understanding that we're trying to get to?
Basically: what existing text is likely to cause confusion, and is the reason we feel like we need this additional paragraph?
I don't think there is existing test that causes confusion -- I think it's more like the basic confusion raised in the working group. Tools (such as validators, executors) MUST respect all directives, but only at the normative level at which they are defined, which can vary. Spec directives (skip, include) describe MUST behavior, future planned directives are at SHOULD (defer/stream, to allow for advanced performance enhancing behavior by custom servers) and future directives could (but probably won't?) be at some other normative level.
Spec and custom directives themselves describe metadata, and so as "specified" within the spec or by a potential "specifiedByURL", they have variable normative force.