At a glance
- Identifier: #1034
- Stage: RFC X / Superseded
- Champion: @yaacovCR
- Latest activity: Marked as Superseded on 2025-06-12
- Spec PR: https://github.com/graphql/graphql-spec/pull/1034
Spec PR description
supersedes #1026
This version sets up an Incremental Publisher Record that includes: (a) an Execution Event Queue input stream on the and (b) a Subsequent Result output stream.
No mutations happen outside the algorithms that define any records.
With the following caveats:
- The event queue is not considered to be "mutated" when different sub-algorithms push events into it.
- The
CreateIncrementalPublisher()algorithm is where the magic happens, a long algorithm where the Execution Event Handler and lazily executed Subsequent Result stream are managed concurrently. To increase readability, several subprocedures/macros/inner functions are defined that have access to the variables defined within the entire algorithm.
Timeline
June 2025
- Marked as Superseded on 2025-06-12 by benjie
November 2023
- Advanced to RFC 0 on 2023-11-27 by benjie
- Spec PR closed on 2023-11-07
September 2023
- @yaacovCR committed "use identifiers instead of records when possible" on 2023-09-28
- @yaacovCR committed "scattered fixes, streamlining" on 2023-09-26
July 2023
- Top comment edited on 2023-07-16 by yaacovCR
- Spec PR created on 2023-07-12 by yaacovCR
- Top comment edited on 2023-07-12 by yaacovCR
May 2023
- @yaacovCR committed "incremental delivery with deduplication, concurrent delivery, and ear…" on 2023-05-21
January 2023
- @yaacovCR committed "CollectFields does not require path or asyncRecord (#11)" on 2023-01-16
- @robrichard committed "replace server with service" on 2023-01-15
December 2022
- @robrichard committed "fix typo" on 2022-12-05
November 2022
- @yaacovCR committed "fix parentRecord argument in ExecuteStreamField (#7)" on 2022-11-29
- @robrichard committed "clarify label is not required" on 2022-11-23
- 2 commits pushed on 2022-11-22
- @robrichard committed "Raise a field error if defer/stream encountered during subscription e…"
- @robrichard committed "Add validation rule for defer/stream on subscriptions"
- @yaacovCR committed "Add error handling for stream iterators (#5)" on 2022-11-21
- @yaacovCR committed "fix typos (#6)" on 2022-11-18
- @yaacovCR committed "remove ResolveFIeldGenerator (#4)" on 2022-11-16
- @yaacovCR committed "small fixes (#3)" on 2022-11-07
- @robrichard committed "update on hasNext" on 2022-11-01
October 2022
- @robrichard committed "link to note on should" on 2022-10-12
September 2022
- 3 commits pushed on 2022-09-09
- @robrichard committed "typo"
- @robrichard committed "improve non-null example"
- @robrichard committed "Add FilterSubsequentPayloads algorithm"
- 11 commits pushed on 2022-09-08
- @robrichard committed "Add error boundary behavior"
- @robrichard committed "defer/stream response => payload"
- @robrichard committed "event stream => response stream"
- @robrichard committed "link to path section"
- @robrichard committed "use case no dash"
- @robrichard committed "remove "or null""
- @robrichard committed "add detailed incremental example"
- @robrichard committed "update label validation rule"
- @robrichard committed "clarify hasNext on incremental example"
- @robrichard committed "clarify canceling of subsequent payloads"
- @robrichard committed "Add examples for non-null cases"
August 2022
- @robrichard committed "clarify null behavior of if" on 2022-08-24
- 2 commits pushed on 2022-08-23
- @robrichard committed "if: Boolean! = true"
- @robrichard committed "address pr feedback"
- 7 commits pushed on 2022-08-18
- @robrichard committed "Introduce @defer and @stream."
- @robrichard committed "Raise a field error if initialCount is less than zero"
- @robrichard committed "wait for parent async record to ensure correct order of payloads"
- @robrichard committed "spec updates to reflect latest discussions"
- @robrichard committed "Note about mutation execution order"
- @robrichard committed "minor change for uniqueness"
- @robrichard committed "fix typos"
- @robrichard committed "Align deferred fragment field collection with reference implementation" on 2022-08-03
June 2022
- 3 commits pushed on 2022-06-09
- @robrichard committed "add missing line"
- @robrichard committed "fix ExecuteRequest"
- @robrichard committed "fix response"
March 2022
- 2 commits pushed on 2022-03-23
- @robrichard committed "fix wrong quotes"
- @robrichard committed "remove label/path requirement"
- @robrichard committed "Clarification on labels" on 2022-03-08
- @robrichard committed "add validation “Defer And Stream Directive Labels Are Unique”" on 2022-03-07
February 2022
- 2 commits pushed on 2022-02-07
- @robrichard committed "stream if argument, indexPath -> itemPath"
- @robrichard committed "Clarify stream only applies to outermost list of multi-dimensional ar…"
- @robrichard committed "deferDirective and visitedFragments" on 2022-02-02
January 2022
- @robrichard committed "fix typo" on 2022-01-21
December 2021
- @robrichard committed "add isCompletedIterator to AsyncPayloadRecord to track completed iter…" on 2021-12-30
- 2 commits pushed on 2021-12-20
- @robrichard committed "Simplify execution, payloads should begin execution immediately"
- @robrichard committed "Clarify error handling"
- 2 commits pushed on 2021-12-06
- @robrichard committed "data is not necessarily an object in subsequent payloads"
- @robrichard committed "add Defer And Stream Directives Are Used On Valid Root Field rule"
November 2021
- @robrichard committed "fix typo" on 2021-11-26
- @robrichard committed "allow extensions only subsequent payloads" on 2021-11-25
- @robrichard committed "clarify negative values of initialCount" on 2021-11-20
- @robrichard committed "clarification on defer/stream requirement" on 2021-11-19
May 2021
- @robrichard committed "Update Section 3 -- Type System.md" on 2021-05-15
February 2021
- 3 commits pushed on 2021-02-17
- @robrichard committed "fix typos"
- @robrichard committed "clear up that it is legal to support either defer or stream individually"
- @robrichard committed "Add sumary of arguments to Type System"