Repository navigation
[Fusion] Add InterfaceObject support - #10079
Merged
Merged
Conversation
# Conflicts: # src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/Selection.cs
Contributor
There was a problem hiding this comment.
Pull request overview
Adds end-to-end Composite Schemas Spec @interfaceObject support to Fusion (composition, planning, execution, and plan caching), including Apollo Federation compatibility for non-resolvable interface-object keys and extensive validation + integration tests.
Changes:
- Introduces
@interfaceObject/@implementdirective surface area (names, directive types) and composition rules to validate & merge stand-ins/defaults. - Updates planning/execution to treat stand-in-produced interface values as opaque, recovering identity via covering lookups, and preserving this behavior through operation-plan JSON round-trips.
- Adds Apollo Federation compatibility option (
AllowNonResolvableInterfaceObjects) and wires it through settings, Aspire, and in-memory connector composition.
Reviewed changes
Copilot reviewed 139 out of 141 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/HotChocolate/Primitives/src/Primitives/Types/DirectiveNames.cs | Adds directive name constants |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Execution/Types/FusionSchemaDefinitionConnectorKindTests.cs | Tests SourceSchemaInfo compatibility |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Execution/Serialization/JsonOperationPlanSerializationTests.cs | Tests plan round-trip opacity |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/ApolloEntityInterfaceLookupPlanningTests.cs | Tests Apollo entity lookup routing |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Skip_Covering_Lookup_When_Only_InterfaceFields_Selected.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Route_TypeName_To_Covering_Lookup.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Route_Fragment_Narrowing_To_Covering_Lookup.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Route_ConcreteFragment_TypeNameOnly_To_Covering_Lookup.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Route_ConcreteFragment_StandInField_Through_StandIn.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Route_ConcreteFragment_StandInField_From_NonOpaque_Root.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Execution.Tests/snapshots/InterfaceObjectPlanningTests.Plan_Should_Prefer_CoveringAbstractLookup_Over_ConcreteFanOut.yaml | New planning snapshot |
| src/HotChocolate/Fusion/test/Fusion.Connectors.InMemory.Tests/InMemoryConnectorTests.cs | Tests in-memory composition options |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/NonResolvableInterfaceObject/NonResolvableInterfaceObjectTests.cs | Compliance: non-resolvable stand-ins |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/NonResolvableInterfaceObject/B/ProductInterfaceType.cs | Adds reference resolver for interface |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/NonResolvableInterfaceObject/B/Bread.cs | Introduces shared interface type |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/NonResolvableInterfaceObject/A/QueryType.cs | Adjusts resolver payload shape |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/InterfaceObjectWithRequires/A/User.cs | Implements shared interface contract |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/InterfaceObjectWithRequires/A/NodeWithNameType.cs | Adds interface reference resolver |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/InterfaceObjectWithRequires/A/INodeWithName.cs | New interface for test types |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/InterfaceObjectIndirectExtension/A/MediaInterfaceType.cs | Adds interface reference resolver |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/CorruptedSupergraphNodeId/CorruptedSupergraphNodeIdTests.cs | Fixes expectedData for errors |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/CorruptedSupergraphNodeId/B/AccountType.cs | Marks key field external |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Suites/CorruptedSupergraphNodeId/A/ChatType.cs | Marks key field external |
| src/HotChocolate/Fusion/test/Fusion.Connectors.ApolloFederation.Compliance.Tests/Infrastructure/FusionGatewayBuilder.cs | Wires allowNonResolvable option |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/SourceSchemaValidationRules/InterfaceObjectKeyMissingRuleTests.cs | Tests stand-in key requirement |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/SourceSchemaMerger.InterfaceObjectProjection.Tests.cs | Tests projection/override behavior |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/SourceSchemaMerger.InterfaceImplementations.Tests.cs | Tests interface implementation union |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/SatisfiabilityValidatorInterfaceObjectTests.cs | Tests satisfiability w/ stand-ins |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PreMergeValidationRules/TypeKindMismatchRuleTests.cs | Tests kind mismatch exceptions |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PreMergeValidationRules/InterfaceObjectNoInterfaceRuleTests.cs | Tests missing interface detection |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PreMergeValidationRules/InterfaceObjectKeyMismatchRuleTests.cs | Tests key mismatch validation |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PreMergeValidationRules/FieldWithMissingRequiredArgumentRuleTests.cs | Extends arg rule for stand-ins |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PostMergeValidationRules/InvalidProjectedFieldSharingRuleTests.cs | Tests projected sharing validation |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/PostMergeValidationRules/ImplementWithoutDefaultRuleTests.cs | Tests @implement without default |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/CompositionSettingsTests.cs | Tests settings round-trip/merge |
| src/HotChocolate/Fusion/test/Fusion.Composition.Tests/snapshots/SourceSchemaMergerTests.Merge_FourNamedSchemas_AddsFusionDefinitions.graphql | Updates fusion definitions snapshot |
| src/HotChocolate/Fusion/test/Fusion.Composition.ApolloFederation.Tests/InterfaceObjectImplementSynthesisTests.cs | Tests Apollo implement synthesis |
| src/HotChocolate/Fusion/test/Fusion.Composition.ApolloFederation.Tests/FederationSchemaTransformerTests.cs | Preserves interfaceObject transform |
| src/HotChocolate/Fusion/test/Fusion.Composition.ApolloFederation.Tests/EntityInterfaceKeyShareableTests.cs | Fixes shareable stamping behavior |
| src/HotChocolate/Fusion/test/Fusion.Composition.ApolloFederation.Tests/ApolloFederationCompatibilityTests.cs | Tests compatibility gating |
| src/HotChocolate/Fusion/test/Fusion.Composition.ApolloFederation.Tests/snapshots/FederationSchemaTransformerTests.Transform_InterfaceObject_Should_Preserve.md | New transformer snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/InterfaceObjectRequiresTests.cs | Native integration: requires + stand-in |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/InterfaceObjectNestedTests.cs | Native integration: nested stand-in |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/FusionTestBase.MatchSnapshot.cs | Adds assert+snapshot helper |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/FusionTestBase.CreateSourceSchema.cs | Registers composite directive types |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectTests.Opaque_TypeName_Is_Recovered_Through_Covering_Lookup.yaml | New integration snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectTests.Id_Only_Selection_Is_A_Single_Fetch.yaml | New integration snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectTests.Fragment_Narrowing_Resolves_ConcreteOwned_Field_From_Opaque_Root.yaml | New integration snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectTests.Default_Field_Inheritance_Resolves_From_StandIn_Only.yaml | New integration snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectRequiresTests.AnotherUsers_SelectsUserAge.yaml | New integration snapshot |
| src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/snapshots/InterfaceObjectNestedTests.Playlist_Media_ResolvesConcreteFieldThroughInterfaceObject.yaml | New integration snapshot |
| src/HotChocolate/Fusion/src/Fusion.Execution/Text/Json/CompositeResultDocument.cs | Adds opaque-to-concrete upgrade |
| src/HotChocolate/Fusion/src/Fusion.Execution/Properties/FusionExecutionResources.resx | Adds execution error resource |
| src/HotChocolate/Fusion/src/Fusion.Execution/Properties/FusionExecutionResources.Designer.cs | Adds resource accessor |
| src/HotChocolate/Fusion/src/Fusion.Execution/Planning/PlanQueue.cs | Adjusts lookup planning logic |
| src/HotChocolate/Fusion/src/Fusion.Execution/Planning/Partitioners/SelectionSetPartitioner.cs | Spills typename/conditions for opacity |
| src/HotChocolate/Fusion/src/Fusion.Execution/Planning/OperationPlanner.cs | Candidate schemas for identity recovery |
| src/HotChocolate/Fusion/src/Fusion.Execution/Planning/OperationDefinitionBuilder.cs | Avoids sending concrete conditions to stand-ins |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/ThrowHelper.cs | Adds structured invalid-kind exception |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Results/ValueCompletion.cs | Completes opaque interface values safely |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Results/FetchResultStore.cs | Improves errors; exposes result paths |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/OperationPlanContext.cs | Exposes result-path helper |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/Serialization/JsonOperationPlanParser.cs | Restores opacity on plan parse |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/SelectionSet.cs | Tracks declaring selection for upgrades |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/Selection.cs | Selection-set lookup via complex context |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/ResultSelectionSet.cs | Marks “ProducesOpaqueElements” |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/OperationCompiler.cs | Propagates declaring selection metadata |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/Nodes/Operation.cs | Supports selection sets for complex contexts |
| src/HotChocolate/Fusion/src/Fusion.Execution/Execution/ApolloFederation/LookupEntityQueryRewriter.cs | Flattens conditions for stand-in schemas |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/PlannerTopologyCache.cs | Allows transitions into stand-in schemas |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Metadata/SourceSchemaInfo.cs | Adds compatibility flag metadata |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Metadata/SourceInterfaceType.cs | Tracks isInterfaceObject per schema |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/FusionBuiltIns.cs | Adds fusion__interfaceObject constant |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Directives/InterfaceObjectDirectiveParser.cs | Parses fusion__interfaceObject directives |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Directives/FieldDirectiveParser.cs | Minor formatting refactor |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Completion/CompositeSchemaBuilder.cs | Reads compatibility from schema metadata |
| src/HotChocolate/Fusion/src/Fusion.Execution.Types/Completion/CompletionTools.cs | Plumbs interfaceObject metadata into sources |
| src/HotChocolate/Fusion/src/Fusion.Connectors.InMemory/InMemoryConfigurationProvider.cs | Allows composition options injection |
| src/HotChocolate/Fusion/src/Fusion.Connectors.InMemory/DependencyInjection/InMemoryFusionGatewayBuilderExtensions.cs | Adds in-memory composition option hook |
| src/HotChocolate/Fusion/src/Fusion.Composition/WellKnownDirectiveNames.cs | Adds interfaceObject/implement names |
| src/HotChocolate/Fusion/src/Fusion.Composition/WellKnownArgumentNames.cs | Adds compatibility argument name |
| src/HotChocolate/Fusion/src/Fusion.Composition/SourceSchemaValidationRules/InterfaceObjectKeyMissingRule.cs | Validates stand-ins declare @key |
| src/HotChocolate/Fusion/src/Fusion.Composition/SourceSchemaPreprocessor.cs | Adds Apollo implement synthesis pass |
| src/HotChocolate/Fusion/src/Fusion.Composition/SourceSchemaEnricher.cs | Tracks interfaceObject/implement presence |
| src/HotChocolate/Fusion/src/Fusion.Composition/Settings/SettingsJsonSerializerContext.cs | Adds JSON metadata for settings |
| src/HotChocolate/Fusion/src/Fusion.Composition/Settings/SettingsExtensions.cs | Merges + maps compatibility settings |
| src/HotChocolate/Fusion/src/Fusion.Composition/Settings/CompositionSettings.cs | Adds compatibility settings section |
| src/HotChocolate/Fusion/src/Fusion.Composition/SchemaComposer.cs | Wires rules + satisfiability options |
| src/HotChocolate/Fusion/src/Fusion.Composition/SatisfiabilityValidator.cs | Adds interfaceObject satisfiability logic |
| src/HotChocolate/Fusion/src/Fusion.Composition/Satisfiability/FusionLookupDirectiveCache.cs | Allows stand-in lookup reachability |
| src/HotChocolate/Fusion/src/Fusion.Composition/Properties/CompositionResources.resx | Adds new rule/error messages |
| src/HotChocolate/Fusion/src/Fusion.Composition/PreMergeValidationRules/TypeKindMismatchRule.cs | Exempts stand-ins from kind mismatch |
| src/HotChocolate/Fusion/src/Fusion.Composition/PreMergeValidationRules/InterfaceObjectNoInterfaceRule.cs | Validates stand-in binding target |
| src/HotChocolate/Fusion/src/Fusion.Composition/PreMergeValidationRules/InterfaceObjectKeyMismatchRule.cs | Validates key alignment with interface |
| src/HotChocolate/Fusion/src/Fusion.Composition/PostMergeValidationRules/InvalidProjectedFieldSharingRule.cs | Validates default-sharing collisions |
| src/HotChocolate/Fusion/src/Fusion.Composition/PostMergeValidationRules/InterfaceObjectFieldRequiresImplementRule.cs | Enforces @implement on replacements |
| src/HotChocolate/Fusion/src/Fusion.Composition/PostMergeValidationRules/ImplementWithoutDefaultRule.cs | Rejects stray @implement markers |
| src/HotChocolate/Fusion/src/Fusion.Composition/Options/SchemaComposerOptions.cs | Adds Apollo compatibility options |
| src/HotChocolate/Fusion/src/Fusion.Composition/Options/ApolloFederationCompatibilityOptions.cs | New compatibility options type |
| src/HotChocolate/Fusion/src/Fusion.Composition/Logging/LogEntryHelper.cs | Adds new log entries |
| src/HotChocolate/Fusion/src/Fusion.Composition/Logging/LogEntryCodes.cs | Adds new error codes |
| src/HotChocolate/Fusion/src/Fusion.Composition/InterfaceObjectMetadata.cs | Shared stand-in/default helpers |
| src/HotChocolate/Fusion/src/Fusion.Composition/FusionBuiltIns.cs | Registers new directive definitions |
| src/HotChocolate/Fusion/src/Fusion.Composition/Features/SourceOutputFieldMetadata.cs | Adds implement flag |
| src/HotChocolate/Fusion/src/Fusion.Composition/Features/SourceObjectTypeMetadata.cs | Adds interfaceObject flag |
| src/HotChocolate/Fusion/src/Fusion.Composition/Extensions/OutputFieldDefinitionExtensions.cs | Exposes implement metadata |
| src/HotChocolate/Fusion/src/Fusion.Composition/Extensions/ObjectTypeDefinitionExtensions.cs | Exposes interfaceObject metadata |
| src/HotChocolate/Fusion/src/Fusion.Composition/Extensions/MutableSchemaDefinitionExtensions.cs | Adds stand-in lookup reachability |
| src/HotChocolate/Fusion/src/Fusion.Composition/Extensions/MutableOutputFieldDefinitionExtensions.cs | Adds ApplyImplementDirective helper |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/InterfaceObjectMutableDirectiveDefinition.cs | Defines @interfaceObject directive |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/ImplementMutableDirectiveDefinition.cs | Defines @implement directive |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/FusionTypeMutableDirectiveDefinition.cs | Minor formatting adjustment |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/FusionSchemaMutableEnumTypeDefinition.cs | Adds compatibility metadata arg |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/FusionSchemaMetadataMutableDirectiveDefinition.cs | Adds allowNonResolvable argument |
| src/HotChocolate/Fusion/src/Fusion.Composition/Definitions/FusionInterfaceObjectMutableDirectiveDefinition.cs | Defines @fusion__interfaceObject |
| src/HotChocolate/Fusion/src/Fusion.Composition/CompositionHelper.cs | Wires compatibility settings into composer |
| src/HotChocolate/Fusion/src/Fusion.Composition/ApolloFederation/SynthesizeImplementDirectives.cs | Synthesizes @implement for Apollo |
| src/HotChocolate/Fusion/src/Fusion.Composition/ApolloFederation/RemoveFederationInfrastructure.cs | Keeps interfaceObject directive |
| src/HotChocolate/Fusion/src/Fusion.Composition/ApolloFederation/MarkKeyFieldsShareable.cs | Avoids shareable on interfaces |
| src/HotChocolate/Fusion/src/Fusion.Composition/ApolloFederation/FederationSchemaAnalyzer.cs | No longer flags interfaceObject as unsupported |
| src/HotChocolate/Fusion/src/Fusion.Composition/ApolloFederation/ApolloFederationCompatibilityMetadata.cs | Tracks compat during composition |
| src/HotChocolate/Fusion/src/Fusion.Aspire/GraphQLCompositionSettings.cs | Adds compat setting surface |
| src/HotChocolate/Fusion/src/Fusion.Aspire/AspireCompositionHelper.cs | Wires compat setting into composition |
| src/HotChocolate/Core/src/Types/Types/Composite/Directives/InterfaceObject.cs | Adds composite @interfaceObject directive type |
| src/HotChocolate/Core/src/Types/Types/Composite/Directives/Implement.cs | Adds composite @implement directive type |
| src/HotChocolate/Core/src/Types/Types/Composite/Directives/External.cs | Adds composite @external directive type |
Files not reviewed (2)
- src/HotChocolate/Fusion/src/Fusion.Composition/Properties/CompositionResources.Designer.cs: Generated file
- src/HotChocolate/Fusion/src/Fusion.Execution/Properties/FusionExecutionResources.Designer.cs: Generated file
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 197 out of 199 changed files in this pull request and generated 2 comments.
Files not reviewed (2)
- src/HotChocolate/Fusion/src/Fusion.Composition/Properties/CompositionResources.Designer.cs: Generated file
- src/HotChocolate/Fusion/src/Fusion.Execution/Properties/FusionExecutionResources.Designer.cs: Generated file
Comment on lines
+60
to
+66
| /// This is an object type for a fully resolved (concrete) selection set. It can be an | ||
| /// interface type while an element produced by an <c>@interfaceObject</c> stand-in still | ||
| /// awaits identity recovery through its covering lookup. | ||
| /// </remarks> | ||
| public IComplexTypeDefinition Type { get; } | ||
|
|
||
| IObjectTypeDefinition ISelectionSet.Type => (IObjectTypeDefinition)Type; |
Comment on lines
+70
to
+74
| var nodeResolutionOption = Opt<NodeResolutionOption>.Instance; | ||
| var nodeResolution = parseResult.Tokens.Any( | ||
| static token => token.Value == NodeResolutionOption.OptionName) | ||
| ? parseResult.GetValue(nodeResolutionOption) | ||
| : null; |
This was referenced Sep 1, 2026
[nuget][SUI_Matcher]- Bump the sui-package-updates group with 18 updates
DFE-Digital/SUI_Matcher#397
Closed
Closed
This was referenced Sep 15, 2026
Closed
[nuget][SUI_Matcher]- Bump the sui-package-updates group with 20 updates
DFE-Digital/SUI_Matcher#405
Closed
This was referenced Sep 22, 2026
Closed
Closed
[nuget][SUI_Matcher]- Bump the sui-package-updates group with 20 updates
DFE-Digital/SUI_Matcher#410
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
https://github.com/graphql/composite-schemas-spec/