OptimisticUpdate not trigering watch update

I’ve set up some initial cache config on out project ( Usingo apollo 3.4.0) After inpsecting the data base I can see the Cache entries are generated correctly with the corresponding Ids.
I have a watch function that looks like:

    fun workOrder(id: String): Flow<Pair<WorkOrderInfo, List<FetchWorkOrderQuery.ValidFieldsetOption>>> {
        return apolloClient.query(FetchWorkOrderQuery(id = id))
            .fetchPolicy(FetchPolicy.CacheFirst)
            .watch()
            .map {
                //TODO check error handling
                val data = it.dataAssertNoErrors
                val workOrderInfo = data.workOrder?.workOrderInfo
                    ?: throw NullPointerException("Job  $id Not found")
                workOrderInfo to (data.validFieldsetOptions ?: emptyList())
            }
    }

and a mutation that updates a component like


        apolloClient.mutation(UpdateTaskComponentsMutation(input = newComponents))
            .optimisticUpdates(
                UpdateTaskComponentsMutation.Data(
                    UpdateTaskComponentsMutation.UpdateTaskComponents(
                        listOf(
                            UpdateTaskComponentsMutation.Component(
                                __typename = newComponent.componentInfo.__typename,
                                componentInfo = newComponent.componentInfo,
                                id = newComponent.componentInfo.id
                            )
                        )
                    )
                )
            )
            .execute()

This code not only does not trigger the watch to refeth but as far as I can see not even writes the catche ( exiting the screen and re enteris still shows the initial cache value).

I also tried the following store operation:

     apolloClient.apolloStore.writeOperation(
                operation = UpdateTaskComponentsMutation(
                    input = newComponents
                ),
                operationData = UpdateTaskComponentsMutation.Data(
                    UpdateTaskComponentsMutation.UpdateTaskComponents(
                        listOf(
                            UpdateTaskComponentsMutation.Component(
                                __typename = newComponent.componentInfo.__typename,
                                componentInfo = newComponent.componentInfo,
                                id = newComponent.componentInfo.id
                            )
                        )
                    )
                )
            )

This seems to be writting into the cache ( If you exit and re enter the screen you see the new value, also there are entries in the cache as well for the update mutation) but it still wont make the watcher to emit the new written value.
Am I missing something?