Local only fields and schema interfaces

Hi,

In our schema we have defined a recording interface which a number of types eg. NetworkRecording implement.

interface Recording {
  # these are the planned start & end times:
  start: Date!
  end: Date!

  # see enum below
  status: RecordingStatus!
}

type NetworkRecording implements Recording & Cacheable {
  ## Cacheable interface:
  id: ID!
  expiry: Date!

  ## Recording interface:
  start: Date!
  end: Date!
  status: RecordingStatus!
}

type Event implements Cacheable {
  ## Cacheable interface:
  id: ID!
  expiry: Date!

  # multilingual title of the Event, as it will be shown in the UI
  title: String!

  start: Date!
  end: Date!

  personalInfo: PersonalEventInfo
}

type PersonalEventInfo implements Cacheable {
  ## Cacheable interface:
  id: ID!
  expiry: Date!

  recordings(kindFilter: RecordingKind): [Recording]
}

Using local only fields and field policies, I want to return the personalInfo field of an event from local storage/cache.

Part of the query is:

event(id: $eventId) {
      id
      expiry
      title
      personalEventInfo: personalInfo @client {
          id
          recordings(kindFilter: NETWORK) {
            ... on NetworkRecording {
              id
              expiry
            }
          }
      }
  }

Field policies (with for now some mocked data):

const cache = new InMemoryCache({
  typePolicies: {
    Event: {
      fields: {
        personalInfo: {
          read(_, { readField }) {
            const eventId = readField('id')
            
            let result = { id: 'personalEventInfo-' + eventId, expiry: new Date() }
            result.recordings = [ { id: 'recording-' + eventId, expiry: new Date(), start: new Date(), end: new Date() } ]
            return result
          }
        }
      }
    }
  }
})

So returning the personalInfo using the field policy works if only the id is requested in the query. If the recordings are included in the query, the entire personalInfo is omitted from the response.

Any ideas anyone? I have a feeling that it has something to do with the interface.