WEB / WEB-17.03
GraphQL execution model
Which response portion does a field failure erase, and where do validation and permission differ?
1. Core · Mechanism
Read every scenario without motion
Full result
- Read prepared
The client prepared BookTitle for book-A with selection id/title/subtitle. The schema belongs to the server; the query/ID grants no resource permission and the executor has not received the operation.
- GraphQL reader
- book-A; id/title/subtitle ready
- Atlas executor
- Schema ready; no request
- Request arrived
The operation and variables reached the server; parsing, validation and resolver execution remain pending.
- GraphQL reader
- Book operation ready
- Atlas executor
- Operation arrived; parse pending
- Local parse
This fixture declares successful parsing; it uses a selected operation ledger rather than a real language parser.
- GraphQL reader
- Book operation ready
- Atlas executor
- Parsed declared; validation pending
- Validate/coerce
Known fields and declared ID input pass; object policy remains a separate decision in resolver context.
- GraphQL reader
- Book operation ready
- Atlas executor
- Validated/coerced; resolve pending
- Local resolver
Declared policy permits the read; local book/field outcomes await completion before the error boundary is selected.
- GraphQL reader
- Book operation ready
- Atlas executor
- Resolved fixture; completion pending
- Typed completion
Field completion prepares the selected id/title/subtitle values as a complete data.book result.
- GraphQL reader
- Book operation ready
- Atlas executor
- data.book complete; result ready
- Result arrived
The client received the result body; this scene does not produce an HTTP status or evidence of an actual GraphQL engine.
- GraphQL reader
- Result received; UI mapping pending
- Atlas executor
- data.book complete; result ready
- Local UI decision
The reader admits this result’s id/title/subtitle as new book UI data. This local mapping decision is not browser DOM or pixel measurement and occurs only after result arrival.
- GraphQL reader
- title/subtitle displayed
- Atlas executor
- data.book complete; result ready
Validation denied
- Read prepared
The client prepared BookTitle for book-A with selection id/title/caption. The schema belongs to the server; the query/ID grants no resource permission and the executor has not received the operation.
- GraphQL reader
- book-A; id/title/caption ready
- Atlas executor
- Schema ready; no request
- Request arrived
The operation and variables reached the server; parsing, validation and resolver execution remain pending.
- GraphQL reader
- Book operation ready
- Atlas executor
- Operation arrived; parse pending
- Local parse
This fixture declares successful parsing; it uses a selected operation ledger rather than a real language parser.
- GraphQL reader
- Book operation ready
- Atlas executor
- Parsed declared; validation pending
- Validation boundary
The selected caption field is absent from the schema; execution never starts and an error result without data is prepared.
- GraphQL reader
- Book operation ready
- Atlas executor
- Validation denied; calls=0; errors ready
- Request error arrived
The client received a pre-execution error result; absent data is different from data:null.
- GraphQL reader
- errors received; data absent
- Atlas executor
- Validation denied; calls=0; errors ready
Nullable error
- Read prepared
The client prepared BookTitle for book-A with selection id/title/subtitle. The schema belongs to the server; the query/ID grants no resource permission and the executor has not received the operation.
- GraphQL reader
- book-A; id/title/subtitle ready
- Atlas executor
- Schema ready; no request
- Request arrived
The operation and variables reached the server; parsing, validation and resolver execution remain pending.
- GraphQL reader
- Book operation ready
- Atlas executor
- Operation arrived; parse pending
- Local parse
This fixture declares successful parsing; it uses a selected operation ledger rather than a real language parser.
- GraphQL reader
- Book operation ready
- Atlas executor
- Parsed declared; validation pending
- Validate/coerce
Known fields and declared ID input pass; object policy remains a separate decision in resolver context.
- GraphQL reader
- Book operation ready
- Atlas executor
- Validated/coerced; resolve pending
- Local resolver
Declared policy permits the read; local book/field outcomes await completion before the error boundary is selected.
- GraphQL reader
- Book operation ready
- Atlas executor
- Resolved fixture; completion pending
- Typed completion
The nullable subtitle error stops at subtitle:null. id/title remain available and errors are included in the same result.
- GraphQL reader
- Book operation ready
- Atlas executor
- subtitle:null + errors; result ready
- Result arrived
The client received the result body; this scene does not produce an HTTP status or evidence of an actual GraphQL engine.
- GraphQL reader
- Result received; UI mapping pending
- Atlas executor
- subtitle:null + errors; result ready
- Local UI decision
The reader retains usable title=Atlas Notları while selecting an error state for subtitle:null using path book/subtitle. Data and errors are read together; this step measures no actual DOM rendering.
- GraphQL reader
- title visible; subtitle error state
- Atlas executor
- subtitle:null + errors; result ready
Non-null spread
- Read prepared
The client prepared BookTitle for book-A with selection id/title/subtitle. The schema belongs to the server; the query/ID grants no resource permission and the executor has not received the operation.
- GraphQL reader
- book-A; id/title/subtitle ready
- Atlas executor
- Schema ready; no request
- Request arrived
The operation and variables reached the server; parsing, validation and resolver execution remain pending.
- GraphQL reader
- Book operation ready
- Atlas executor
- Operation arrived; parse pending
- Local parse
This fixture declares successful parsing; it uses a selected operation ledger rather than a real language parser.
- GraphQL reader
- Book operation ready
- Atlas executor
- Parsed declared; validation pending
- Validate/coerce
Known fields and declared ID input pass; object policy remains a separate decision in resolver context.
- GraphQL reader
- Book operation ready
- Atlas executor
- Validated/coerced; resolve pending
- Local resolver
Declared policy permits the read; local book/field outcomes await completion before the error boundary is selected.
- GraphQL reader
- Book operation ready
- Atlas executor
- Resolved fixture; completion pending
- Typed completion
The non-null title error propagates to the nearest nullable ancestor Query.book. data.book:null and errors are prepared.
- GraphQL reader
- Book operation ready
- Atlas executor
- data.book:null + errors; result ready
- Result arrived
The client received the result body; this scene does not produce an HTTP status or evidence of an actual GraphQL engine.
- GraphQL reader
- Result received; UI mapping pending
- Atlas executor
- data.book:null + errors; result ready
- Local UI decision
The reader selects a new unavailable Book state because data.book:null. Error path is book/title; a stale title is not reused as new success. The data object exists with a null book; data is not absent.
- GraphQL reader
- No book; stale title not reused
- Atlas executor
- data.book:null + errors; result ready
ACTORS · STATE · DATA FLOW
A selection set is not a business workflow
GraphQL lets a client select response fields from a typed schema. Atlas uses Query.book(id: ID!): Book and selects id/title/subtitle. The schema is an API field/type contract, not necessarily a one-to-one database schema. A query produces a read result, a mutation describes a top-level change operation, and a subscription produces a response stream tied to source events. This lesson follows an ordinary read query only; subscription transport and mutation transactions are outside the animation.
The document is parsed according to the language grammar, then validated for known fields, selections appropriate to their types and valid variable usage. The id variable is coerced to the selected operation’s ID! input. An unknown caption selection is a request error at this boundary; executing a book resolver and hiding the invalid field afterward is different behavior. An unchanged operation validated earlier can be memoized; validation need not be a freshly repeated network step on every request.
From resolver result to typed response
A resolver produces a field value using its parent value, field arguments and server-created context. Atlas uses declared session/tenant permission and reads book-A from a fixed local record. A resolver call is not automatically an HTTP request; this in-memory lookup is a local step in the scene. Field completion follows the schema type, executing selected child fields or coercing a scalar result. Copying every runtime object member into the response is not equivalent to executing a selection set.
If nullable subtitle:String raises a resolver error, subtitle:null can coexist with an errors list while id/title complete successfully. A title:String! failure cannot leave a null title inside Book: it propagates to the nearest nullable ancestor, Query.book, producing data.book:null. Making Book non-null would propagate further; an all-non-null chain can produce data:null. The error path still identifies the original failing response position even when null propagates, using response names when aliases are involved.
Execution results and HTTP results differ
A request that never starts execution because of parsing, validation or input coercion errors returns errors without a data member. Field failures after execution starts can produce data together with errors; data:null is different from an absent data member. Browser network success or an HTTP status alone does not prove that every selected field succeeded. A UI can inspect the book value and error paths together, show title, and choose a local subtitle error state without exposing raw internal exception text.
The released September 2025 GraphQL execution specification prescribes no particular HTTP status; transport is a separate profile. The reviewed current GraphQL-over-HTTP draft addresses body/media types and status separately. Its §5.4 recommends custom 294 for partial data plus errors, while the §5.4.1 execution-error example says 200. This internally inconsistent draft is not the contract of every deployment. The artifact models result bodies and execution ledgers without inventing HTTP statuses. Real clients must verify pinned server/adapter profiles, media types and gateway responses; neither GraphQL always returns 200 nor all partial results use 294 is a reliable generalization.
2. Red · Trust & Impact
Read every scenario without motion
Validation deny
- Selection and context were separated
The BookTitle query selects id, title and subtitle for book. Knowing schema fields does not mean object permission has been established for reader-A.
- Operation and schema
- Query selection
- Validation/completion decision
- Permission separate
- Consumer interpretation
- Execution pending
- The negative-selection record was selected
The validation-denied row selects caption instead of subtitle. Although parseDeclared and variablesDeclaredValid are true, caption is not a Book field in the schema.
- Operation and schema
- Selected: caption
- Validation/completion decision
- Parse declared=true
- Consumer interpretation
- Validation pending
- Validation stopped before execution
This row declares resolverCalls=0 and an Unknown selected field error. Valid syntax does not automatically advance into execution.
- Operation and schema
- Resolver calls=0
- Validation/completion decision
- Request error known
- Consumer interpretation
- No execution data
- The request-error shape was preserved
The result contains only errors and omits data. This shape is not the same as a field returning null during execution.
- Operation and schema
- errors present
- Validation/completion decision
- data absent
- Consumer interpretation
- Execution did not begin
- No leap was made to a permission outcome
The caption mismatch answers a schema question. It establishes neither unauthenticated status, access to another book nor successful service policy.
- Operation and schema
- Validation deny known
- Validation/completion decision
- Permission unestablished
- Consumer interpretation
- No resource body
- Model and engine scope were separated
This ledger declares parsing and field outcomes with actualParser=false and actualEngine=false. The resolver count belongs to the supplied profile, not a production-engine trace.
- Operation and schema
- Declared pipeline
- Validation/completion decision
- No engine execution claim
- Consumer interpretation
- No resource delivery
Non-null effect
- The field-nullability chain was read
In the selected schema title is String! while book is nullable. A title completion error can propagate to the nearest nullable parent, book.
- Operation and schema
- title: non-null
- Validation/completion decision
- book: nullable
- Consumer interpretation
- Completion pending
- The title-failure row was selected
The nonnull-error row declares resolverFault=title and resolverCalls=4. This profile has all field results ready before completion without claiming general executor ordering.
- Operation and schema
- Fault: title
- Validation/completion decision
- Declared calls=4
- Consumer interpretation
- Result not completed
- The error propagated to its parent
The result has data.book=null while the error path remains book/title. Showing an old title or successful subtitle as a new complete Book would violate the contract.
- Operation and schema
- data.book=null
- Validation/completion decision
- Path: book/title
- Consumer interpretation
- Book view unavailable
- A different schema was not assumed
The artifact’s rootBookNonNullVariant describes another unselected schema. Here book is nullable, so the data object remains; the result is not expanded to data=null.
- Operation and schema
- Selected book nullable
- Validation/completion decision
- data object retained
- Consumer interpretation
- No schema substitution
- The nullable-subtitle contrast was established
A subtitle error can retain title with subtitle=null. Losing book on a non-null title error comes from nullability, not network speed.
- Operation and schema
- Subtitle: partial Book
- Validation/completion decision
- Title: Book=null
- Consumer interpretation
- Blast radius schema-bound
- No transport outcome was invented
GraphQL result shape alone does not select an HTTP status. With transportStatusMode=not-modeled, no automatic 200 or 500 is added to this completion result.
- Operation and schema
- Execution error known
- Validation/completion decision
- HTTP status not modeled
- Consumer interpretation
- No stale Book delivery
ASSUMPTION · BOUNDARY · CONTROL
Does a visible schema grant resource access?
The presence of a book field means that the field exists in the API contract. Accepting an ID variable, authenticating a connection or validating a selection does not authorize the subject to read that resource. Enforce object/action decisions from trusted server context in the resolver or its service boundary. A risky assumption is that one general allow at the root automatically covers every nested field. Adding a sensitive author/profile field may require its own field/resource policy; the public schema is not a permission list.
The resolver context begins with permissionAllowed=true; authentication and database tenant isolation are not verified here. A successful query does not imply that every sibling field carries the same permission. Equating parsing with permission, treating client variables as trusted context, or sharing a cache without subject/tenant binding are separate control problems. Response shape alone does not establish their cause; context provenance and the enforcement point for each resource decision also matter.
Mistaking a partial result for complete success
A subtitle error can accompany a successful title. Turning every errors member into a global failure discards useful data unnecessarily; ignoring errors merely because data exists can display incorrect subtitle information. Non-null decisions have a failure radius: making optional information non-null can erase the whole Book view after a small resolver failure. The artifact compares two field-error results for the same normal record; the difference is the schema’s nullability chain rather than network speed.
One telemetry label for request and execution errors hides their different causes. An unknown caption selection should have zero resolver calls; a nullable subtitle error occurs after execution begins. Serial execution of mutation root fields also does not guarantee transactional nested work or ordering of every field. Timeout, cancellation, resource cost and downstream failure policy remain application design decisions. Permission and ordinary capacity limits belong together; a type-safe selection is not permission for unlimited work.
3. Blue · Secure development & defense
Read every scenario without motion
Partial data
- The nullable-field observation was selected
The nullable-error row has resolverFault=subtitle and resolverCalls=4. It is not validation denial; the execution result contains both data and errors.
- Result/context observation
- Fault: subtitle
- Pipeline comparison
- Calls=4
- Review conclusion
- Completion review pending
- Available data fields were read
book.id=book-A and title=Atlas Notları remain with subtitle=null. Data presence does not mean no error; an error does not mean all data is unusable.
- Result/context observation
- id/title present
- Pipeline comparison
- subtitle=null
- Review conclusion
- Partial result known
- The error path was bound to the data field
The error path is book/subtitle. The human-readable Subtitle unavailable message is not used as a stable field identifier; the path describes the response field position.
- Result/context observation
- Path: book/subtitle
- Pipeline comparison
- Error/data linkage
- Review conclusion
- Message ≠ stable ID
- The client-interpretation boundary was recorded
Title may remain usable, but the subtitle error must remain explicit. This documentary review proves neither actual DOM rendering nor correct client state.
- Result/context observation
- Title available in result
- Pipeline comparison
- Subtitle error retained
- Review conclusion
- DOM outcome unobserved
- Call count was bound to the profile
Four calls belong to this ledger’s selected completion profile. A real executor may cancel pending siblings; the same count is not expected of every engine.
- Result/context observation
- Declared calls=4
- Pipeline comparison
- Cancellation not modeled
- Review conclusion
- No universal count claim
- The review tuple was completed
Validation outcome, resolver invocation, data shape and error path are retained together. HTTP adapter status and permission enforcement need separate evidence.
- Result/context observation
- Partial completion known
- Pipeline comparison
- Adapter evidence separate
- Review conclusion
- Permission evidence separate
Resolver context
- The context-provenance record was opened
Context contains reader-A, tenant-A and permissionAllowed=true with provenanceDeclared=owned handler. These are ledger preconditions, not observations of actual login or token validation.
- Result/context observation
- reader-A / tenant-A
- Pipeline comparison
- Permission declared=true
- Review conclusion
- Provenance review pending
- Variables and trusted context were separated
variables.id=book-A selects the requested resource. Matching the variable schema does not turn it into an authenticated subject or server tenant authority.
- Result/context observation
- Variable selects book-A
- Pipeline comparison
- Context selects subject/tenant
- Review conclusion
- Authority roles separate
- The normal result was compared with context
The normal row returns id, title and subtitle. This positive shape shows the declared result under the supplied context without observing every nested resource policy.
- Result/context observation
- Normal result complete
- Pipeline comparison
- Context precondition declared
- Review conclusion
- Nested policies unobserved
- Cache scope remained a review question
Subject/tenant binding must be preserved in loaders and caches. The artifact shows no cache implementation, so a normal Book result cannot prove those bindings were enforced.
- Result/context observation
- Cache binding required
- Pipeline comparison
- Cache evidence missing
- Review conclusion
- No clean cache conclusion
- A connection was not converted into authority
connectionGrantsObjectPermission=false is a separate boundary. Establishing HTTP or another connection cannot replace book-read permission; schema visibility is not a permission list.
- Result/context observation
- Connection ≠ object permission
- Pipeline comparison
- Schema ≠ grant list
- Review conclusion
- Per-resource decision needed
- The conclusion retained its evidence level
Review shows that the normal result depends on the supplied context. Authentication, tenant storage isolation and actual engine behavior remain outside these records.
- Result/context observation
- Declared context/result linked
- Pipeline comparison
- Runtime identity unobserved
- Review conclusion
- No broader acceptance claim
IMPLEMENTATION · SECURITY CONTROL · VERIFICATION
Observe pipeline decisions separately
Pin the schema edition and operation contract, then observe parsing, validation, variable coercion, resolver invocation and completion separately. An operation alias, correlation ID and bounded error path can provide evidence without logging sensitive values or every query text. The unknown-field branch proves no execution through resolver count=0. In the normal branch, invocation evidence matches the response selection. These counts belong to the local fixture ledger, not a production engine, distributed trace or query-planner benchmark. The artifact count belongs to a profile with all selected field outcomes prepared before completion; a real executor may cancel pending sibling work.
The request handler creates trusted context; a user-provided tenant value is not copied into it as a trusted identity. The object-read decision controls which records a local service may return while error shapes remain contractual and avoid sensitive internal details. Request-scoped caches and loaders preserve permission bindings. An in-memory resolver still needs policy; a network resolver does not supply policy automatically. Review first asks where the resource decision occurs, before counting calls.
Tie client rendering to nullability
Keep four ordinary outcomes for the same book: a full result, validation denial before execution, nullable subtitle failure and non-null title propagation. The client distinguishes absent data from data:null and must not present a stale title as the new book result after propagation. In the partial subtitle branch, title remains usable while the subtitle error state stays visible. Test alias-aware UI mapping when error paths change; human-readable messages are not stable identifiers.
Verify the HTTP adapter’s media types and error-status policy separately; a core execution result does not determine gateway behavior by itself. GraphQL-over-HTTP draft recommendations need to be evaluated against implementation support. The scene shows client/server request and result arrivals, while parse, validate, resolve and complete are local server stages. The artifact explains a typed-result ledger; actual engine scheduling, HTTP adapters and storage integration cannot be reduced to that table.
NOW APPLY IT TO THE CASE
Which separate evidence is needed for validation, execution and permission?
The typed ledger separates unknown caption, nullable subtitle and non-null title outcomes. Resolver context is a precondition; data shape proves neither actual authentication nor HTTP status.
Examine the case API contract separately from the representation readable by the browser. Discuss sufficient evidence for envelope, data, errors and resource permission.
Open the related case file ↗READ THE EXAMPLE TOGETHER
Atlas typed execution ledger
Select a field and examine what it supports and where the evidence ends.
Read the raw artifact and field explanations
{
"profile": {
"releasedEdition": "September 2025",
"operationKind": "query",
"transportStatusMode": "not-modeled",
"actualParser": false,
"actualEngine": false,
"permissionDeclared": true,
"localPersistence": true,
"allFieldResultsDeclaredBeforeCompletion": true,
"cancellationNotModeled": true,
"executorMayCancelPendingSiblings": true
},
"schemaSDL": "type Query { book(id: ID!): Book }\ntype Book { id: ID! title: String! subtitle: String }",
"operation": "query BookTitle($id: ID!) { book(id: $id) { id title subtitle } }",
"variables": {
"id": "book-A"
},
"types": {
"book": {
"nullable": true
},
"id": {
"nullable": false
},
"title": {
"nullable": false
},
"subtitle": {
"nullable": true
}
},
"context": {
"subject": "reader-A",
"tenant": "tenant-A",
"permissionAllowed": true,
"provenanceDeclared": "owned handler"
},
"record": {
"id": "book-A",
"title": "Atlas Notları",
"subtitle": "Web rehberi"
},
"rows": [
{
"case": "normal",
"selectedFields": [
"id",
"title",
"subtitle"
],
"parseDeclared": true,
"variablesDeclaredValid": true,
"resolverFault": null,
"resolverCalls": 4,
"result": {
"data": {
"book": {
"id": "book-A",
"title": "Atlas Notları",
"subtitle": "Web rehberi"
}
}
}
},
{
"case": "validation-denied",
"selectedFields": [
"id",
"title",
"caption"
],
"parseDeclared": true,
"variablesDeclaredValid": true,
"resolverFault": null,
"resolverCalls": 0,
"result": {
"errors": [
{
"message": "Unknown selected field"
}
]
}
},
{
"case": "nullable-error",
"selectedFields": [
"id",
"title",
"subtitle"
],
"parseDeclared": true,
"variablesDeclaredValid": true,
"resolverFault": "subtitle",
"resolverCalls": 4,
"result": {
"data": {
"book": {
"id": "book-A",
"title": "Atlas Notları",
"subtitle": null
}
},
"errors": [
{
"message": "Subtitle unavailable",
"path": [
"book",
"subtitle"
]
}
]
}
},
{
"case": "nonnull-error",
"selectedFields": [
"id",
"title",
"subtitle"
],
"parseDeclared": true,
"variablesDeclaredValid": true,
"resolverFault": "title",
"resolverCalls": 4,
"result": {
"data": {
"book": null
},
"errors": [
{
"message": "Title unavailable",
"path": [
"book",
"title"
]
}
]
}
}
],
"pipeline": [
"parse",
"validate",
"coerce variables",
"resolve with trusted context",
"complete typed fields",
"build execution result"
],
"allNonNullQualification": {
"rootBookNonNullVariant": true,
"rootDataOnTitleError": null,
"notSelectedSchema": true
},
"httpScope": {
"corePrescribesStatus": false,
"draftURL": "https://http-spec.graphql.org/draft/",
"draftReviewed": "2026-10-08",
"draftPartialRecommendation": 294,
"finalStandard": false,
"actualHTTP": false,
"draftExampleExecutionErrorStatus": 200,
"draftRecommendationsConflict": true
},
"boundaries": {
"schemaGrantsPermission": false,
"connectionGrantsObjectPermission": false,
"errorPathUsesResponseNames": true,
"requestErrorOmitsData": true
}
}- schemaSDL
- Selected query schema and nullable Book/subtitle chain.
- rows
- Four outcomes for the same record; no claim of an executed GraphQL engine.
- types
- Which nullable ancestor stops field-error propagation.
- context
- Declared permission; client variables differ from trusted context.
- httpScope
- Boundary between released core and changing HTTP draft/profile.
Original inert SDL, ordinary read document and typed result ledger; no actual GraphQL parser, validator, engine, endpoint, HTTP status or database execution.
Two reality checks
Schema validation is authorization.
Validation checks the operation’s type contract; object/action permission is enforced separately from trusted context.
There can be no data when errors exist.
An execution error can coexist with partial data; a pre-execution request error omits data.
YOUR TURN
Work through this story.
Predict the outcome, find the evidence boundary, and explain it in your own words.
Selected fields are id, title, caption, but caption is absent from the schema. Does resolver execution occur?
- No; resolverCalls=0 and request errors without data.
- Yes; an unknown field is handled by having a resolver return null.
Read the explained answer
No; resolverCalls=0 and request errors without data. — The validation-denied branch does not reach execution; parsing operation syntax does not establish field validity.
Why does a title non-null error produce data.book=null?
Selected lesson artifact fields; teaching example
- types.title
- {"nullable":false}
- types.book
- {"nullable":true}
- rows[3].result
- {"data":{"book":null},"errors":[{"message":"Title unavailable","path":["book","title"]}]}
- A non-null error only omits title; book always remains complete.
- title cannot be null; failure propagates to nullable book.
Read the explained answer
title cannot be null; failure propagates to nullable book. — The selected schema makes book nullable. Result errors carry path book/title while parent data becomes null.
A nullable-subtitle fault returns data+errors. Why does errors presence establish neither a data-free operation nor an exact HTTP status?
Read the explained answer
A validated query may execute; a nullable-field fault produces subtitle=null and errors alongside usable id/title. Request-validation errors omit data. GraphQL core alone does not determine HTTP-status mapping; this artifact executes no actual engine/HTTP exchange and declares sibling results without timing guarantees.
□ I distinguished request from execution errors.
□ I inferred no exact HTTP status from the data/errors shape.
Open the application console · request / response / browser
Also open request, URL, cookie and DOM examples
Sources and scope
- GraphQL Specification — September 2025 released edition§2.1 language parsing; §6.1.1 validation; §6.1.2 variable coercion · §6.4.2 resolving fields; §6.4.3 completion; §6.4.4 errors · §7.1.1 execution result; §7.1.3 request error result; §7.1.4 response position · §6.3.3 Non-Null sibling cancellation; §6.3.4 normal and serial execution
- GraphQL over HTTP — current draft§5.1 body/media type; §5.4 status codes · §6.1 Partial success; custom 294 draft qualification · §5.4 custom 294 recommendation versus §5.4.1 execution-error 200 example: reviewed inconsistency