ClusterState contains Enrich Policy metadata information, that can be useful to other plugins.
As of now, ClusterState metadata contains [EnrichMetadata](https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/enrich/src/main/java/org/elasticsearch/xpack/enrich/EnrichMetadata.java) objects, that contain [EnrichPolicy](https://github.com/elastic/elasticsearch/blob/main/x-pack/plugin/core/src/main/java/org/elasticsearch/xpack/core/enrich/EnrichPolicy.java) objects.
While `EnrichPolicy` class is in `core`, `EnrichMetadata` is in `enrich` plugin, so it's practically impossible to access EnrichPolicy information without creating a dependency from `enrich` plugin.
It would be good to have an interface in core to avoid this dependency.
x-pack/plugin/enrich/src/test/java/org/elasticsearch/xpack/enrich/EnrichPolicyExecutorTests.java
CountDownLatch clientBlockingLatch = new CountDownLatch(1);
        
        CountDownLatch secondGetTaskWasCalled = new CountDownLatch(1);
        
        CyclicBarrier getTaskActionBlockingBarrier = new CyclicBarrier(2);
        
        AtomicBoolean shouldGetTaskApiReturnTimeout = new AtomicBoolean(true);
        
        Client client = new NoOpClient(testThreadPool) {
            @Override
            protected <Request extends ActionRequest, Response extends ActionResponse> void doExecute(
                ActionType<Response> action,
                Request request,
                ActionListener<Response> listener
            ) {
                
                if (request instanceof InternalExecutePolicyAction.Request) {
                    assertFalse(((InternalExecutePolicyAction.Request) request).isWaitForCompletion());
                }
                
                testThreadPool.generic().execute(() -> {
                    try {
                        
                        clientBlockingLatch.await();
                    } catch (InterruptedException e) {
                        Thread.currentThread().interrupt();
                    }
                    if (GetTaskAction.INSTANCE.equals(action)) {
                        if (shouldGetTaskApiReturnTimeout.get() == false) {