diff --git a/.tegami/knowledge-retrieval-contracts.md b/.tegami/knowledge-retrieval-contracts.md new file mode 100644 index 000000000..60bee79fd --- /dev/null +++ b/.tegami/knowledge-retrieval-contracts.md @@ -0,0 +1,13 @@ +--- +packages: + orgmemory: patch +subject: Isolate retrieval and embedding contracts +--- + +# Knowledge retrieval contracts + +## Improvements + +Query embedding contracts, embedding profiles, and projection namespaces now +share an explicit retrieval module boundary, making provider integration and +future retrieval changes easier to verify safely. diff --git a/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java b/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java index 7f1fee6e1..115af18c0 100644 --- a/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java +++ b/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java @@ -4,7 +4,7 @@ import com.orgmemory.core.knowledge.graph.GraphExplorerProperties; import com.orgmemory.core.knowledge.graph.GraphProcessingProperties; -import com.orgmemory.core.knowledge.KnowledgeEmbeddingProperties; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.shared.secret.SecretCipherProperties; import org.springframework.boot.SpringApplication; diff --git a/apps/api/src/main/java/com/orgmemory/api/admin/AdminAiModelController.java b/apps/api/src/main/java/com/orgmemory/api/admin/AdminAiModelController.java index d5e24246e..f16badd9f 100644 --- a/apps/api/src/main/java/com/orgmemory/api/admin/AdminAiModelController.java +++ b/apps/api/src/main/java/com/orgmemory/api/admin/AdminAiModelController.java @@ -8,7 +8,7 @@ import com.orgmemory.core.ai.AiGatewayProtocol; import com.orgmemory.core.ai.AiRouteOverrideView; import com.orgmemory.core.ai.AiWorkload; -import com.orgmemory.core.knowledge.KnowledgeEmbeddingProperties; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; import com.orgmemory.core.organization.CurrentActor; import com.orgmemory.core.shared.secret.SecretValue; import com.orgmemory.integrations.ai.gateway.AiGatewayProperties; diff --git a/apps/api/src/main/java/com/orgmemory/api/assistant/GraphRagRuntimeConfiguration.java b/apps/api/src/main/java/com/orgmemory/api/assistant/GraphRagRuntimeConfiguration.java index 3d393d72d..3b6bd4162 100644 --- a/apps/api/src/main/java/com/orgmemory/api/assistant/GraphRagRuntimeConfiguration.java +++ b/apps/api/src/main/java/com/orgmemory/api/assistant/GraphRagRuntimeConfiguration.java @@ -3,7 +3,7 @@ import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; import com.orgmemory.core.knowledge.GraphRagRetrievalPolicy; -import com.orgmemory.core.knowledge.KnowledgeEmbeddingProperties; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; import com.orgmemory.graphrag.cache.CanonicalCacheKeyHasher; import com.orgmemory.graphrag.cache.ModelInvocationCache; import com.orgmemory.graphrag.chunking.TextEmbeddingPort; diff --git a/apps/api/src/main/java/com/orgmemory/api/knowledge/SpringAiQueryEmbeddingAdapter.java b/apps/api/src/main/java/com/orgmemory/api/knowledge/SpringAiQueryEmbeddingAdapter.java index fc6950fc2..6ea926109 100644 --- a/apps/api/src/main/java/com/orgmemory/api/knowledge/SpringAiQueryEmbeddingAdapter.java +++ b/apps/api/src/main/java/com/orgmemory/api/knowledge/SpringAiQueryEmbeddingAdapter.java @@ -3,12 +3,12 @@ import com.orgmemory.core.ai.AiGatewayUnavailableException; import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; -import com.orgmemory.core.knowledge.EmbeddingProfileSpec; -import com.orgmemory.core.knowledge.KnowledgeEmbeddingProperties; -import com.orgmemory.core.knowledge.QueryEmbedding; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; +import com.orgmemory.core.knowledge.retrieval.QueryEmbedding; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import java.util.Optional; import java.util.UUID; import org.slf4j.Logger; diff --git a/apps/api/src/test/java/com/orgmemory/api/admin/KnowledgeSpaceAdminIntegrationTests.java b/apps/api/src/test/java/com/orgmemory/api/admin/KnowledgeSpaceAdminIntegrationTests.java index c995d4ba1..6e92638ad 100644 --- a/apps/api/src/test/java/com/orgmemory/api/admin/KnowledgeSpaceAdminIntegrationTests.java +++ b/apps/api/src/test/java/com/orgmemory/api/admin/KnowledgeSpaceAdminIntegrationTests.java @@ -21,7 +21,7 @@ import com.orgmemory.core.authorization.RelationshipTupleWritePort; import com.orgmemory.core.authorization.RelationshipTupleWriteRequest; import com.orgmemory.core.authorization.RelationshipTupleWriteResult; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; diff --git a/apps/api/src/test/java/com/orgmemory/api/admin/PermissionsAdminIntegrationTests.java b/apps/api/src/test/java/com/orgmemory/api/admin/PermissionsAdminIntegrationTests.java index 7f9e7a9fb..08f405c24 100644 --- a/apps/api/src/test/java/com/orgmemory/api/admin/PermissionsAdminIntegrationTests.java +++ b/apps/api/src/test/java/com/orgmemory/api/admin/PermissionsAdminIntegrationTests.java @@ -22,7 +22,7 @@ import com.orgmemory.core.authorization.RelationshipAuthorizationQuery; import com.orgmemory.core.authorization.RelationshipAuthorizationSetPort; import com.orgmemory.core.authorization.ResourceRef; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; import com.orgmemory.core.organization.CurrentActor; import java.util.List; diff --git a/apps/api/src/test/java/com/orgmemory/api/assetregistry/AssetRegistryIntegrationTests.java b/apps/api/src/test/java/com/orgmemory/api/assetregistry/AssetRegistryIntegrationTests.java index b8d919d2f..71e2bac70 100644 --- a/apps/api/src/test/java/com/orgmemory/api/assetregistry/AssetRegistryIntegrationTests.java +++ b/apps/api/src/test/java/com/orgmemory/api/assetregistry/AssetRegistryIntegrationTests.java @@ -57,7 +57,7 @@ import com.orgmemory.core.shared.error.BusinessValidationException; import com.orgmemory.core.knowledge.KnowledgeCatalogItem; import com.orgmemory.core.knowledge.KnowledgeCatalogService; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.PermissionAwareKnowledgeSearch; import com.orgmemory.core.knowledge.RetrievedKnowledgeEvidence; import com.orgmemory.core.knowledge.SecureKnowledgeSearchResult; diff --git a/apps/worker/src/main/java/com/orgmemory/worker/connector/ModelConnectorTextEmbedder.java b/apps/worker/src/main/java/com/orgmemory/worker/connector/ModelConnectorTextEmbedder.java index 047cad5d6..36c314cd8 100644 --- a/apps/worker/src/main/java/com/orgmemory/worker/connector/ModelConnectorTextEmbedder.java +++ b/apps/worker/src/main/java/com/orgmemory/worker/connector/ModelConnectorTextEmbedder.java @@ -2,10 +2,10 @@ import com.orgmemory.core.knowledge.connector.ConnectorEmbeddingResult; import com.orgmemory.core.knowledge.connector.ConnectorTextEmbedder; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; -import com.orgmemory.core.knowledge.EmbeddingProfileSpec; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec; import com.orgmemory.worker.ingestion.SourceProcessingProperties; import java.util.List; import java.util.UUID; diff --git a/apps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.java b/apps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.java index 73104ff0d..2d6b8d1a8 100644 --- a/apps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.java +++ b/apps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.java @@ -16,10 +16,10 @@ import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; -import com.orgmemory.core.knowledge.EmbeddingProfileSpec; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import com.orgmemory.core.knowledge.asset.KnowledgeChunkDraftAssembler; import com.orgmemory.core.knowledge.KnowledgeTextChunk; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorContentEditIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorContentEditIntegrationTests.java index 3fa55d03d..30229e55d 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorContentEditIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorContentEditIntegrationTests.java @@ -36,7 +36,7 @@ import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.connector.ConnectorCaptureStatus; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.connector.ConnectorTombstone; import com.orgmemory.core.knowledge.storage.ObjectStoragePort; import com.orgmemory.core.knowledge.storage.ObjectWriteRequest; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorCrawlCheckpointIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorCrawlCheckpointIntegrationTests.java index 3aa2c2731..faadea491 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorCrawlCheckpointIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorCrawlCheckpointIntegrationTests.java @@ -26,7 +26,7 @@ import com.orgmemory.core.knowledge.connector.ConnectorItemFailure; import com.orgmemory.core.knowledge.connector.ConnectorPoll; import com.orgmemory.core.knowledge.connector.ConnectorSyncComponent; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.connector.UnsupportedConnectorPayloadException; import com.orgmemory.core.knowledge.storage.ObjectStoragePort; import java.util.ArrayList; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorIdentityTrustIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorIdentityTrustIntegrationTests.java index a6398e651..cd64fcf83 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorIdentityTrustIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorIdentityTrustIntegrationTests.java @@ -33,7 +33,7 @@ import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.connector.ConnectorCaptureStatus; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.storage.ObjectStoragePort; import com.orgmemory.core.knowledge.storage.ObjectWriteRequest; import com.orgmemory.core.knowledge.storage.StoredObject; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorPruningIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorPruningIntegrationTests.java index 2a0df939b..9b4d5f714 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorPruningIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorPruningIntegrationTests.java @@ -33,7 +33,7 @@ import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.connector.ConnectorCaptureStatus; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.storage.ObjectStoragePort; import com.orgmemory.core.knowledge.storage.ObjectWriteRequest; import com.orgmemory.core.knowledge.storage.StoredObject; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorStagingIngestionIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorStagingIngestionIntegrationTests.java index 9bdf9f5e6..6777bc842 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorStagingIngestionIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/connector/ConnectorStagingIngestionIntegrationTests.java @@ -28,7 +28,7 @@ import com.orgmemory.core.knowledge.connector.ConnectorMembershipItem; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.connector.ConnectorCaptureStatus; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.storage.ObjectStoragePort; import com.orgmemory.core.knowledge.storage.ObjectWriteRequest; import com.orgmemory.core.knowledge.storage.StoredObject; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphIndexingProcessorTests.java b/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphIndexingProcessorTests.java index afd245a41..35e86faa2 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphIndexingProcessorTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphIndexingProcessorTests.java @@ -20,8 +20,8 @@ import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.graph.GraphIndexChunk; import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; import com.orgmemory.core.knowledge.graph.GraphProcessingProfileRef; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphPublicationCommitterTests.java b/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphPublicationCommitterTests.java index 3ab7fe69c..6f1e83af9 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphPublicationCommitterTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/graph/GraphPublicationCommitterTests.java @@ -10,8 +10,8 @@ import static org.mockito.Mockito.when; import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.graph.GraphIndexChunk; import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; import com.orgmemory.core.knowledge.graph.GraphProcessingProfileRef; diff --git a/apps/worker/src/test/java/com/orgmemory/worker/ingestion/SourceIngestionPipelineIntegrationTests.java b/apps/worker/src/test/java/com/orgmemory/worker/ingestion/SourceIngestionPipelineIntegrationTests.java index 91ac1c941..134ecaef2 100644 --- a/apps/worker/src/test/java/com/orgmemory/worker/ingestion/SourceIngestionPipelineIntegrationTests.java +++ b/apps/worker/src/test/java/com/orgmemory/worker/ingestion/SourceIngestionPipelineIntegrationTests.java @@ -26,11 +26,11 @@ import com.orgmemory.core.authorization.RelationshipTupleWriteRequest; import com.orgmemory.core.authorization.RelationshipTupleWriteResult; import com.orgmemory.core.authorization.ResourceRef; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; -import com.orgmemory.core.knowledge.EmbeddingProfileSpec; -import com.orgmemory.core.knowledge.QueryEmbeddingPort; -import com.orgmemory.core.knowledge.QueryEmbedding; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; +import com.orgmemory.core.knowledge.retrieval.QueryEmbedding; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; import com.orgmemory.core.knowledge.storage.ObjectContent; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearch.java b/core/src/main/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearch.java index e0b67e24d..192da6d38 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearch.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearch.java @@ -1,5 +1,7 @@ package com.orgmemory.core.knowledge; +import com.orgmemory.core.knowledge.retrieval.QueryEmbedding; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.knowledge.sourceledger.SourceCitationUri; import com.orgmemory.core.authorization.BatchAuthorizationQuery; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalConfiguration.java b/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalConfiguration.java index 993de5884..b37c3a1bc 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalConfiguration.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalConfiguration.java @@ -1,5 +1,7 @@ package com.orgmemory.core.knowledge; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; import com.orgmemory.core.authorization.RelationshipAuthorizationSetPort; import com.orgmemory.core.permission.PermissionAuditService; import com.orgmemory.graphrag.observability.GraphRagEventSink; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalService.java b/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalService.java index 04ecd3fd4..195d9213b 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalService.java @@ -1,12 +1,17 @@ package com.orgmemory.core.knowledge; -import com.orgmemory.core.knowledge.sourceledger.SourceCitationUri; - import com.orgmemory.core.ai.ChatGenerationRequest; import com.orgmemory.core.authorization.BatchAuthorizationQuery; import com.orgmemory.core.authorization.PermissionKey; import com.orgmemory.core.authorization.RelationshipAuthorizationSetPort; import com.orgmemory.core.authorization.ResourceRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; +import com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces; +import com.orgmemory.core.knowledge.sourceledger.SourceCitationUri; import com.orgmemory.core.organization.CurrentActor; import com.orgmemory.core.permission.PermissionAuditCommand; import com.orgmemory.core.permission.PermissionAuditDecision; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java b/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java index 8d295ca7c..afde22007 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java @@ -1,5 +1,6 @@ package com.orgmemory.core.knowledge; +import com.orgmemory.core.knowledge.retrieval.QueryEmbedding; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.java b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.java index 4fc96d5e9..861e08cc5 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.java @@ -3,7 +3,7 @@ import com.orgmemory.core.knowledge.sourceledger.KnowledgeIngestionService; import com.orgmemory.core.authorization.PermissionKey; -import com.orgmemory.core.knowledge.KnowledgeProjectionNamespaces; +import com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces; import com.orgmemory.core.authorization.RelationshipAuthorizationPort; import com.orgmemory.core.authorization.RelationshipAuthorizationQuery; import com.orgmemory.core.authorization.ResourceRef; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.java b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.java index d9152be10..277ff26f4 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.asset; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.PgVectorLiteral; import java.sql.Types; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.java b/core/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.java index 858978d78..c316f1c8c 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.asset; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import java.util.List; import java.util.Objects; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorEmbeddingResult.java b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorEmbeddingResult.java index a78ed9312..307174f74 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorEmbeddingResult.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorEmbeddingResult.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.connector; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import java.util.List; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.java b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.java index a401c0f69..80c052597 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.connector; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.asset.KnowledgeAssetPublicationService; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import com.orgmemory.core.knowledge.asset.KnowledgeChunkDraft; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.java b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.java index 7b77b1d99..f167bcfba 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.connector; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.graph.GraphIndexJobQueue; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java index b3cc7070a..4634c1640 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.graph; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import java.util.List; import java.util.Objects; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java index 800b14856..198057668 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java @@ -1,8 +1,8 @@ package com.orgmemory.core.knowledge.graph; -import com.orgmemory.core.knowledge.EmbeddingProfile; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.EmbeddingProfileRepository; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfile; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRepository; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRepository; import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersion; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java index 9903a941f..204de038c 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java @@ -2,7 +2,7 @@ import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; -import com.orgmemory.core.knowledge.KnowledgeProjectionNamespaces; +import com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces; import com.orgmemory.core.knowledge.KnowledgeResourceNotFoundException; import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java index aa57a03a7..d054dcf75 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java @@ -2,7 +2,7 @@ import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; -import com.orgmemory.core.knowledge.KnowledgeProjectionNamespaces; +import com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces; import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.authorization.AuthorizationDecision; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java index 48fca4184..4273ab7b6 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java @@ -2,7 +2,7 @@ import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; -import com.orgmemory.core.knowledge.KnowledgeProjectionNamespaces; +import com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces; import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.authorization.PermissionKey; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingDistanceMetric.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingDistanceMetric.java similarity index 52% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingDistanceMetric.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingDistanceMetric.java index 22845382a..0ac952f77 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingDistanceMetric.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingDistanceMetric.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; public enum EmbeddingDistanceMetric { COSINE diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfile.java similarity index 96% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfile.java index bf5acb9c0..4c6eb64fb 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfile.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRef.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRef.java similarity index 84% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRef.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRef.java index e52962546..847c4a434 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRef.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRef.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRegistry.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRegistry.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRegistry.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRegistry.java index 50df4c6d8..b5d7efc8a 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRegistry.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRegistry.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.nio.charset.StandardCharsets; import java.time.OffsetDateTime; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRepository.java similarity index 89% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRepository.java index 41cc79c47..d49b9d981 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileRepository.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.util.Optional; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileSpec.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpec.java similarity index 96% rename from core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileSpec.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpec.java index 7b70cf5a2..1ad6e881b 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileSpec.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpec.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEmbeddingProperties.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeEmbeddingProperties.java similarity index 94% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEmbeddingProperties.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeEmbeddingProperties.java index d95fbbb30..36de85f57 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEmbeddingProperties.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeEmbeddingProperties.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.util.Assert; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeProjectionNamespaces.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeProjectionNamespaces.java similarity index 88% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeProjectionNamespaces.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeProjectionNamespaces.java index c48b42b4b..eda0200bd 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeProjectionNamespaces.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/KnowledgeProjectionNamespaces.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import com.orgmemory.graphrag.storage.ProjectionNamespace; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/QueryEmbedding.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbedding.java similarity index 93% rename from core/src/main/java/com/orgmemory/core/knowledge/QueryEmbedding.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbedding.java index 45d7bacaa..9473ddea6 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/QueryEmbedding.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbedding.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.util.Arrays; import java.util.Objects; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/QueryEmbeddingPort.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbeddingPort.java similarity index 77% rename from core/src/main/java/com/orgmemory/core/knowledge/QueryEmbeddingPort.java rename to core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbeddingPort.java index ec4eedeaa..aaf3329ff 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/QueryEmbeddingPort.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/QueryEmbeddingPort.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import java.util.UUID; import java.util.Optional; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/retrieval/package-info.java b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/package-info.java new file mode 100644 index 000000000..808187159 --- /dev/null +++ b/core/src/main/java/com/orgmemory/core/knowledge/retrieval/package-info.java @@ -0,0 +1,9 @@ +/** + * Authorized retrieval contracts, embedding profiles, query embeddings, and projection identity. + * + *
This nested module remains open while search, evidence-scope, citation, and retrieval runtime + * implementations move behind the same boundary. + */ +@org.springframework.modulith.ApplicationModule( + type = org.springframework.modulith.ApplicationModule.Type.OPEN) +package com.orgmemory.core.knowledge.retrieval; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.java b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.java index b174f8fad..f037ea1b7 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.sourceledger; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.graph.GraphIndexJobQueue; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryService.java b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryService.java index f185ffc32..11d02945c 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryService.java @@ -1,8 +1,8 @@ package com.orgmemory.core.knowledge.sourceledger; -import com.orgmemory.core.knowledge.EmbeddingProfile; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfile; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; import com.orgmemory.core.knowledge.SecureKnowledgeRetrievalStore; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.java b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.java index 92a9edb26..0422c5361 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.java @@ -1,6 +1,6 @@ package com.orgmemory.core.knowledge.sourceledger; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import com.orgmemory.core.knowledge.SourceFailureMessage; diff --git a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java index 955afda3d..73fb25c70 100644 --- a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java +++ b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java @@ -60,6 +60,64 @@ void knowledgeGraphIsAnOpenNestedModuleDuringTheRefactor() { assertTrue(graph.isOpen()); } + @Test + void knowledgeRetrievalIsAnOpenNestedModuleDuringTheRefactor() { + var retrieval = modules.getModuleByName("knowledge.retrieval").orElseThrow(); + + assertTrue(retrieval.isOpen()); + } + + @Test + void knowledgeRetrievalTemporaryOpenBoundaryDoesNotGainNewConsumers() { + var retrieval = modules.getModuleByName("knowledge.retrieval").orElseThrow(); + var dependencies = modules.stream() + .flatMap(module -> module.getDirectDependencies(modules).stream()) + .filter(dependency -> dependency.getTargetModule().equals(retrieval)) + .toList(); + var consumerTypes = dependencies.stream() + .map(dependency -> dependency.getSourceType().getName()) + .collect(TreeSet::new, Set::add, Set::addAll); + var consumedInternalTypes = dependencies.stream() + .map(dependency -> dependency.getTargetType().getName()) + .collect(TreeSet::new, Set::add, Set::addAll); + + assertEquals( + Set.of( + "com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch", + "com.orgmemory.core.knowledge.GraphRagKnowledgeRetrievalConfiguration", + "com.orgmemory.core.knowledge.GraphRagKnowledgeRetrievalService", + "com.orgmemory.core.knowledge.SecureKnowledgeRetrievalStore", + "com.orgmemory.core.knowledge.asset.KnowledgeAssetLifecycleService", + "com.orgmemory.core.knowledge.asset.KnowledgeAssetPublicationOutbox", + "com.orgmemory.core.knowledge.asset.KnowledgeChunkProjectionStore", + "com.orgmemory.core.knowledge.asset.PublishKnowledgeAssetCommand", + "com.orgmemory.core.knowledge.connector.ConnectorEmbeddingResult", + "com.orgmemory.core.knowledge.connector.ConnectorReconciler", + "com.orgmemory.core.knowledge.connector.ConnectorSourceRevisionCoordinator", + "com.orgmemory.core.knowledge.graph.ClaimedGraphIndex", + "com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator", + "com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationService", + "com.orgmemory.core.knowledge.graph.KnowledgeGraphExplorerService", + "com.orgmemory.core.knowledge.graph.KnowledgeGraphExportService", + "com.orgmemory.core.knowledge.sourceledger.SourceIngestionCoordinator", + "com.orgmemory.core.knowledge.sourceledger.SourceQueryService", + "com.orgmemory.core.knowledge.sourceledger.SourceRevision"), + consumerTypes); + assertEquals( + Set.of( + "com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric", + "com.orgmemory.core.knowledge.retrieval.EmbeddingProfile", + "com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef", + "com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry", + "com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRepository", + "com.orgmemory.core.knowledge.retrieval.EmbeddingProfileSpec", + "com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties", + "com.orgmemory.core.knowledge.retrieval.KnowledgeProjectionNamespaces", + "com.orgmemory.core.knowledge.retrieval.QueryEmbedding", + "com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort"), + consumedInternalTypes); + } + @Test void knowledgeGraphTemporaryOpenBoundaryDoesNotGainNewConsumers() { var graph = modules.getModuleByName("knowledge.graph").orElseThrow(); diff --git a/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java b/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java index 4a5f75993..3b182f838 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java @@ -12,6 +12,8 @@ import com.orgmemory.core.authorization.RelationshipAuthorizationPort; import com.orgmemory.core.authorization.RelationshipAuthorizationSetPort; import com.orgmemory.core.authorization.ResourceRef; +import com.orgmemory.core.knowledge.retrieval.QueryEmbedding; +import com.orgmemory.core.knowledge.retrieval.QueryEmbeddingPort; import com.orgmemory.core.organization.CurrentActor; import com.orgmemory.core.organization.OrgMemoryAccessDeniedException; import com.orgmemory.core.permission.PermissionAuditService; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java index f09ba0977..1a12f70fe 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java @@ -18,6 +18,10 @@ import com.orgmemory.core.authorization.RelationshipAuthorizationPort; import com.orgmemory.core.authorization.RelationshipAuthorizationSetPort; import com.orgmemory.core.authorization.ResourceRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.KnowledgeEmbeddingProperties; import com.orgmemory.core.organization.CurrentActor; import com.orgmemory.core.permission.PermissionAuditService; import com.orgmemory.graphrag.model.EvidenceReference; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java index 99ee251c7..b15eb7faa 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java @@ -1,9 +1,9 @@ package com.orgmemory.core.knowledge.graph; -import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; -import com.orgmemory.core.knowledge.EmbeddingProfile; -import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.EmbeddingProfileRepository; +import com.orgmemory.core.knowledge.retrieval.EmbeddingDistanceMetric; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfile; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRef; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRepository; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRepository; import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersion; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/EmbeddingProfileSpecTests.java b/core/src/test/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpecTests.java similarity index 94% rename from core/src/test/java/com/orgmemory/core/knowledge/EmbeddingProfileSpecTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpecTests.java index 73ea127cc..b4dbc0308 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/EmbeddingProfileSpecTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/retrieval/EmbeddingProfileSpecTests.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.retrieval; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotEquals; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryServiceTests.java index fe5b49314..9e2646310 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/sourceledger/SourceQueryServiceTests.java @@ -2,7 +2,7 @@ import com.orgmemory.core.knowledge.acl.AclAuthority; -import com.orgmemory.core.knowledge.EmbeddingProfileRegistry; +import com.orgmemory.core.knowledge.retrieval.EmbeddingProfileRegistry; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; import com.orgmemory.core.knowledge.SecureKnowledgeRetrievalStore; diff --git a/docs/increments/active/2026-07-31-spring-modulith-package-refactor/design.md b/docs/increments/active/2026-07-31-spring-modulith-package-refactor/design.md index f513a2134..a64c08835 100644 --- a/docs/increments/active/2026-07-31-spring-modulith-package-refactor/design.md +++ b/docs/increments/active/2026-07-31-spring-modulith-package-refactor/design.md @@ -135,6 +135,21 @@ The asset-owned projection store returns a graph-neutral `KnowledgeChunkProjection`; `knowledge.graph` maps that value into `GraphIndexChunk`, preventing a reciprocal Asset-to-Graph dependency. +## Eighth Delivery Slice + +Retrieval is split across two code pull requests to keep each delivery below +the 100-file ceiling. The first pull request moves the provider-neutral query +embedding port, embedding profile model and registry, projection namespaces, +and embedding configuration into `knowledge.retrieval`. Runtime search, +authorization rechecks, evidence assembly, citation policy, and persistence +remain in the root Knowledge package for the second retrieval pull request. + +The first half starts open because Asset, Connector, Graph, Source Ledger, API, +and Worker code already consume these contracts. A structural test pins both +the exact consumers and exact internal retrieval types they use, making that +temporary migration surface explicit until retrieval owns its runtime half and +can expose a smaller intentional interface. + ## Strongest Counterargument Ordinary internal subpackages would reduce directory size immediately and diff --git a/docs/increments/active/2026-07-31-spring-modulith-package-refactor/plan.md b/docs/increments/active/2026-07-31-spring-modulith-package-refactor/plan.md index e32db5b7e..465db59cd 100644 --- a/docs/increments/active/2026-07-31-spring-modulith-package-refactor/plan.md +++ b/docs/increments/active/2026-07-31-spring-modulith-package-refactor/plan.md @@ -135,7 +135,7 @@ passed; the terminating repository-wide `clean test` completed successfully; the docs operating-model and mechanical source checks passed; and both CodeRabbit findings were resolved. The pull request contains 60 changed files. -## Current Pull Request Gates +## Seventh Pull Request Evidence - Graph-index jobs and claiming, processing profiles, lifecycle orchestration, curation, exploration, and export form the open `knowledge.graph` nested @@ -164,3 +164,29 @@ Review identified and removed the reciprocal Asset-to-Graph projection type dependency; Asset now returns a graph-neutral projection that Graph maps at its own boundary. Focused and core tests passed after that repair, and the final repository-wide `clean test` completed successfully in 6m26s across 99 tasks. +PR #190 merged as `7a970969ff51e25f5db75a9619fddad64198f4bb` after all +required CI checks and the CodeRabbit review passed. + +## Current Pull Request Gates + +- Query embedding contracts, embedding profiles and registry, projection + namespaces, and embedding configuration form the first half of the open + `knowledge.retrieval` nested module. +- Runtime search, authorization rechecks, evidence/citation assembly, and + retrieval persistence remain for the next retrieval code pull request. +- A structural allowlist pins the exact consumers and internal contract types + exposed while the retrieval module is temporarily open. +- Focused retrieval, graph, source-ledger, API, worker, and Modulith tests pass. +- `:core:test` and the repository terminating `clean test` gate pass. +- The pull request changes fewer than 100 files and completes the normal + CI/review/merge loop before the retrieval runtime slice starts. + +Local verification on 2026-08-01: production and test sources compiled; +focused retrieval, graph, source-ledger, API, worker, and Modulith tests +passed; `:core:test` passed; and the terminating repository-wide `clean test` +completed successfully in 5m15s across 108 tasks. The docs operating-model, +release contract, and mechanical source checks passed. The pre-stage worktree +contains 55 changed paths. +After merging current `origin/main` at `95b71730`, a second repository-wide +`clean test` completed successfully in 6m22s across 99 tasks; the PR diff +remained 55 changed files.