Problem getting a subschema to produce as federation 2

Hello all,
We are using graphql, and federation and liking the support we get from it to build out a microservice architecture. However, in the act of trying to get some varying services federating nicely, we have encountered some difficulty.

One service developed schema first with spring graphql, using FederationSchemaFactory.createGraphQLSchema() to produce the subgraph for federation

Another service using SPQR for code first schema generation, and apollo federation-graphql-java-support and graphql-java
Federation.transform() used on the GraphQLSchema object that spqr produces to produce the subgraph.

This worked fine both contributing to an entity and referencing an entity for the first subgraph with entities in the second subgraph, where additional entity fetchers and resolvers were added to the transform via fetchEntities and resolveEntityType to fill the gap that things like spring graphql EntityMapping annotation solves. The two subgraphs federate and requests are handled appropriately by the query plan.

However this is for concrete types. Once the reference from the first subschema is for a type that is an interface on the second and I want to use the interfaceObject annotation, I run into problems with the schema from the Federation.transform() method.
Attempts to federate throw an error:
Error: A valid schema couldn’t be composed. The following composition errors were found:
The @interfaceObject directive can only be used if all subgraphs have federation 2 subgraph schema (schema with a @link to “https://specs.apollo.dev/federation” version 2.0 or newer): @interfaceObject is used in subgraph “a” but subgraph “b” is not a federation 2 subgraph schema.
I used the Federation.transform().setFederation2(true) option, which goes a different route for generating the SDL, but it doesn’t add anything like what using a schema extension does with the link annotation (from subgraph a):
extend schema
@link(url: “Apollo Federation Subgraph Specification - Apollo GraphQL Docs”,
import: [“@key”, “@shareable”, “@extends”, “@external”, “@interfaceObject”])

I tried to add the link directive and directive definition to the schema using a builder and additionalDirective and withSchemaAppliedDirectives, with default values for the url and imports to use the same version of federation and import the same annotations.
Attempting to federate the output of that throws:
/@apollo/federation-internals/dist/utils.js:6
throw new Error(typeof message === ‘string’ ? message : message());
^
Error: This method should not have been called on a non-core schema

Looking at the inflight schema transform for subschema a, there are a lot more directives added, like federation__context etc., but the transform method for this is with type registry and runtime wiring rather than a schema which is what subgraph b does.
I don’t understand enough about federation at this low level to know what I need the schema to have beyond what I’ve tried to be able to call the federation transform method on it such that it will produce a subschema of federation version 2 that will federate with subschema a.
Any information or guidance would be greatly appreciated.