Skip to content

New test case: provides-only-requested-fields#335

Open
ardatan wants to merge 2 commits into
mainfrom
provides-only-requested-fields
Open

New test case: provides-only-requested-fields#335
ardatan wants to merge 2 commits into
mainfrom
provides-only-requested-fields

Conversation

@ardatan
Copy link
Copy Markdown
Member

@ardatan ardatan commented May 8, 2026

New test case: provides-only-requested-fields

Summary

Adds a new audit suite that locks down two closely-related @provides invariants that today are not covered anywhere in this repository:

  1. Request-side: when a subgraph declares @provides(fields: "X Y"), the gateway must forward only the subset of {X, Y, …} the client actually selected — not the full @provides set.
  2. Plan-side / owner re-delegation: when @provides already covered a field on the providing subgraph, the gateway must not make an extra hop to the owner subgraph (via __resolveReference) to re-fetch the same field.

This is the missing audit-side counterpart to the Hive Gateway fix from the PR 2351 (request-side trimming + plan-side flattenSelectionsForType change). The bug was caught against a real user query but the existing nested-provides / provides-on-interface / provides-on-union suites do not exercise the "client asked for a strict subset of @provides" shape, nor the "owner has the field but @provides already resolved it" shape.

Topology

Two subgraphs, one entity:

  • a (owner) — defines Entity { id, name, description, extra }. name and description are @shareable so they can also be resolved via b's @provides. extra is owner-only and forces a fallback hop when selected.
  • b (provider) — exposes Query.entity / Query.entities with @provides(fields: "name description"). name and description are @external. None of the test queries select description.

How the bug is detected (black-box)

The two failure modes manifest as subgraph-level errors, so the suite plugs into the existing shouldPunishForPoorPlans() mechanism (already used by nested-provides, provides-on-union, provides-on-interface) and gates the strict resolvers behind PUNISH_FOR_POOR_PLANS=1:

  • b.Entity.description throws → catches the over-forward bug (gateway injected an unrequested @provides field).
  • b.Entity.__resolveReference throws → catches the wrong entry path into b (provided fields must be served by the @provides plan, not by an entity lookup).
  • a.Entity.name / a.Entity.description throw → catches the owner re-delegation bug (gateway asked a for fields b already provided).

In default mode (no env flag) the suite runs as a pure data-correctness check, same convention as the existing @provides suites, so it doesn't change the baseline pass-rate of well-behaved gateways and doesn't false-positive on gateways that are still being onboarded. Setting PUNISH_FOR_POOR_PLANS=1 lights up the strict assertions.

Test cases (11)

Designed to exercise every code path the Hive Gateway fix touched:

# Query shape What it verifies
1 { entity { id } } Baseline: routing through b, no over-forward.
2 { entity { id name } } The exact user-reported scenario.
3 displayName: name Alias preserved when restricting the provided selection.
4 ... on Entity { name } Inline fragment over the concrete type.
5 ...EntityName named fragment Same, via fragment spread.
6 { id name extra } Mixed plan: name from b, extra forces owner hop, no re-delegation of name.
7 { entities { id name } } List variant — invariant per element.
8 { entities { id name extra } } List + owner-fallback hop.
9 ... on Entity @skip(if: true) { description } @skip on the wrapping fragment must reach the providing subgraph intact.
10 ... on Entity @include(if: false) { description } Same invariant via @include.
11 Two sibling untyped inline fragments Walker must visit every sibling under the same path, not just the first.

Cases 9–11 mirror the recent additions in packages/federation/tests/provides-scope.test.ts on the gateway side and would have caught both the directive-stripping and the shallow-fragment-walk regressions.

Files

src/index.ts                                                    (suite registration)
src/test-suites/provides-only-requested-fields/index.ts
src/test-suites/provides-only-requested-fields/data.ts
src/test-suites/provides-only-requested-fields/a.subgraph.ts
src/test-suites/provides-only-requested-fields/b.subgraph.ts
src/test-suites/provides-only-requested-fields/test.ts

No changes outside the new suite directory other than registering it in src/index.ts.

Verification

  • Supergraph composition for [a, b] succeeds with @apollo/composition (the @shareable markers on a are required so the duplicate name/description ownership is composition-legal).
  • All 11 test queries validate against the composed schema.
  • Default-mode run is a pure data-correctness check; PUNISH_FOR_POOR_PLANS=1 activates the strict assertions and reproduces the original bug against a gateway that over-forwards @provides fields or re-delegates to the owner.

Related

Copilot AI review requested due to automatic review settings May 8, 2026 13:47
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a new federation audit suite (provides-only-requested-fields) to validate two @provides-related invariants that weren’t previously covered: (1) gateways must not over-forward unrequested fields from the @provides set, and (2) gateways must not re-fetch already-provided fields from the owner subgraph.

Changes:

  • Register the new provides-only-requested-fields suite in the main test-suite loader.
  • Add a new two-subgraph topology (a owner, b provider) with punish-mode resolvers that surface over-fetching / poor planning as subgraph errors.
  • Add 11 queries covering subset-selection shapes (aliases, fragments, list variants, @skip/@include, and sibling inline fragments).

Reviewed changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated no comments.

Show a summary per file
File Description
src/index.ts Registers the new suite so it’s served and included in the audit run.
src/test-suites/provides-only-requested-fields/index.ts Wires the suite’s subgraphs + tests into serve(...).
src/test-suites/provides-only-requested-fields/data.ts Adds deterministic entity fixtures used by both subgraphs.
src/test-suites/provides-only-requested-fields/a.subgraph.ts Owner subgraph (a) with punish-mode field resolvers to detect re-delegation.
src/test-suites/provides-only-requested-fields/b.subgraph.ts Provider subgraph (b) exposing @provides root fields and punish-mode traps for over-forwarding / wrong entry path.
src/test-suites/provides-only-requested-fields/test.ts Adds 11 black-box queries that exercise @provides request trimming and planning behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 8, 2026

Compatibility Results

Summary

Gateway Compatibility Test Cases Test Suites
Hive Gateway (Rust QP) 100.00% 🟢 203 🟢 45
Hive Router 100.00% 🟢 203 🟢 45
Hive Gateway 99.51% 🟢 202 ❌ 1 🟢 44 ❌ 1
Apollo Router 97.54% 🟢 198 ❌ 5 🟢 42 ❌ 3
Apollo Gateway 97.04% 🟢 197 ❌ 6 🟢 41 ❌ 4
Cosmo Router 94.58% 🟢 192 ❌ 11 🟢 38 ❌ 7
Grafbase Gateway 92.12% 🟢 187 ❌ 16 🟢 39 ❌ 6
Inigo Gateway 50.25% 🟢 102 ❌ 101 🟢 12 ❌ 33

Detailed Results

Take a closer look at the results for each gateway.

You can look at the full list of tests here. Every test id corresponds to a directory in the src/test-suites folder.

Hive Gateway (Rust QP)

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
🟢
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
🟢
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢🟢🟢🟢
requires-with-argument-conflict
🟢
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Hive Router

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
🟢
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
🟢
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢🟢🟢🟢
requires-with-argument-conflict
🟢
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Hive Gateway

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
🟢
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
🟢
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢❌🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢🟢🟢🟢
requires-with-argument-conflict
🟢
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Apollo Router

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
🟢
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢❌❌❌
requires-with-argument-conflict
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Apollo Gateway

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
🟢
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢❌🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢❌❌❌
requires-with-argument-conflict
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Cosmo Router

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
❌❌❌🟢
circular-reference-interface
🟢🟢
complex-entity-call
corrupted-supergraph-node-id
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
🟢
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
🟢🟢🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
provides-on-interface
❌❌
provides-on-union
❌❌
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢🟢🟢🟢
requires-with-argument-conflict
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢

Grafbase Gateway

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
child-type-mismatch
🟢🟢🟢🟢
circular-reference-interface
🟢🟢
complex-entity-call
🟢
corrupted-supergraph-node-id
❌🟢❌🟢🟢❌🟢🟢🟢🟢
enum-intersection
🟢🟢🟢🟢🟢
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
🟢
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢🟢🟢
interface-object-indirect-extension
interface-object-with-requires
🟢🟢🟢🟢🟢🟢🟢
keys-mashup
🟢
mutations
🟢🟢🟢🟢
mysterious-external
🟢🟢
nested-provides
🟢🟢
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢🟢🟢
null-keys
🟢
override-type-interface
❌❌❌❌
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
🟢
provides-on-interface
🟢🟢
provides-on-union
🟢🟢
provides-only-requested-fields
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
requires-circular
🟢🟢
requires-interface
🟢🟢🟢🟢🟢
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
🟢🟢🟢🟢🟢
requires-with-argument-conflict
requires-with-fragments
🟢🟢🟢🟢🟢🟢
shared-root
🟢🟢
simple-entity-call
🟢
simple-inaccessible
🟢🟢🟢🟢
simple-interface-object
🟢🟢🟢🟢🟢🟢🟢🟢❌❌❌❌❌
simple-override
🟢🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
🟢🟢🟢🟢🟢🟢
unavailable-override
🟢🟢
union-interface-distributed
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
union-intersection
🟢🟢🟢🟢🟢🟢🟢🟢❌🟢🟢❌

Inigo Gateway

Results abstract-types
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢❌❌❌
child-type-mismatch
❌❌❌🟢
circular-reference-interface
🟢🟢
complex-entity-call
corrupted-supergraph-node-id
🟢❌❌❌❌🟢🟢🟢🟢🟢
enum-intersection
❌❌❌❌❌
fed1-external-extends
🟢🟢🟢🟢
fed1-external-extends-resolvable
fed1-external-extension
🟢🟢🟢🟢
fed2-external-extends
🟢🟢🟢🟢
fed2-external-extension
🟢🟢🟢🟢
include-skip
🟢🟢🟢🟢
input-object-intersection
🟢❌❌
interface-object-indirect-extension
interface-object-with-requires
❌❌❌❌❌❌❌
keys-mashup
mutations
🟢🟢❌🟢
mysterious-external
🟢🟢
nested-provides
❌❌
node
🟢
non-resolvable-interface-object
🟢🟢🟢🟢🟢❌❌
null-keys
override-type-interface
❌❌🟢🟢
override-with-requires
🟢🟢🟢🟢
parent-entity-call
🟢
parent-entity-call-complex
provides-on-interface
❌❌
provides-on-union
❌❌
provides-only-requested-fields
🟢🟢🟢🟢❌🟢🟢🟢🟢🟢🟢
requires-circular
❌❌
requires-interface
❌❌❌❌❌
requires-requires
🟢🟢🟢🟢🟢
requires-with-argument
❌❌❌❌❌
requires-with-argument-conflict
requires-with-fragments
❌❌❌❌❌❌
shared-root
❌❌
simple-entity-call
simple-inaccessible
🟢🟢❌🟢
simple-interface-object
❌❌❌❌❌❌❌❌❌❌❌❌❌
simple-override
❌🟢
simple-requires-provides
🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢🟢
typename
❌❌❌❌❌❌
unavailable-override
❌🟢
union-interface-distributed
❌❌🟢🟢❌❌🟢🟢🟢🟢
union-intersection
❌❌❌❌❌❌❌❌❌🟢❌❌

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants