ID

R298

Status

Backlog

Bucket

bug

Priority

3

Theme

pagination

Created

2026-06-10

Updated

2026-06-10

First-client contract-composition check: do type-level @tag-only synthesised connection types satisfy a real federation contract?

R295 propagates the carrier field’s federation @tag applications onto the synthesised Connection, Edge, and PageInfo type declarations (the minimal shape that satisfies contract composition as the bug was framed). Its "Resolved" section deferred a verification step that could not run at spec time and could not run in the implementation/review sandbox either: building a real Apollo Federation contract that includes the carrier’s tag and confirming composition succeeds against type-level-only tags. The risk this check covers: TagApplier tags fields, input fields, enum values, args, and unions but never type declarations (see its class javadoc), so under <schemaInput tag> the synthesised types carry the only type-level tags in the graph, while legacy contracts were validated against field-level tags. The green federation-SDL round-trip test in ConnectionFederationTagPipelineTest proves the tags are emitted on the types, but a round-trip is not a contract build: a real contract can still reject type-level-only tags. The outstanding work: run the first-client contract build; if (and only if) type-level tags prove insufficient, tag the synthesised types' fields (edges, nodes, pageInfo, totalCount, cursor, node) as well. Landed under R295 (fae7c6f, 1fdcf18); this item carries the residual federation-contract risk R295 explicitly could not close in-session.