From fb8b6f1bae322e89cf9d1f7294e3242cc185dc7b Mon Sep 17 00:00:00 2001 From: kl3inIT Date: Sat, 1 Aug 2026 01:51:20 +0700 Subject: [PATCH 1/5] refactor(knowledge): extract graph module --- .../api/OrgMemoryApiApplication.java | 4 +- .../KnowledgeAssetLifecycleController.java | 4 +- .../KnowledgeGraphExplorerController.java | 4 +- .../KnowledgeGraphManagementController.java | 6 +-- ...owledgeGraphManagementControllerTests.java | 6 +-- .../worker/OrgMemoryWorkerApplication.java | 4 +- .../worker/graph/GraphIndexingProcessor.java | 8 ++-- .../graph/GraphPublicationCommitter.java | 6 +-- .../graph/GraphIndexingProcessorTests.java | 8 ++-- .../graph/GraphPublicationCommitterTests.java | 8 ++-- .../core/knowledge/EmbeddingProfile.java | 2 +- .../knowledge/EmbeddingProfileRepository.java | 2 +- .../KnowledgeEvidenceScopeResolver.java | 4 +- ...edgeEvidenceScopeUnavailableException.java | 4 +- .../ResolvedKnowledgeEvidenceScope.java | 10 ++--- .../SecureKnowledgeRetrievalStore.java | 2 +- .../knowledge/SecureRetrievalCandidate.java | 2 +- .../asset/KnowledgeChunkProjectionStore.java | 2 +- .../ConnectorSourceRevisionCoordinator.java | 2 +- .../{ => graph}/ClaimedGraphIndex.java | 3 +- .../{ => graph}/GraphExplorerProperties.java | 2 +- .../{ => graph}/GraphIndexChunk.java | 2 +- .../knowledge/{ => graph}/GraphIndexJob.java | 3 +- .../{ => graph}/GraphIndexJobQueue.java | 2 +- .../{ => graph}/GraphIndexJobRepository.java | 2 +- .../{ => graph}/GraphIndexJobStatus.java | 2 +- .../{ => graph}/GraphIndexJobView.java | 2 +- .../GraphIndexLifecycleService.java | 2 +- .../{ => graph}/GraphIndexingCoordinator.java | 5 ++- .../GraphIndexingStoppedException.java | 2 +- .../GraphProcessingProfileRef.java | 2 +- .../GraphProcessingProfileRegistry.java | 2 +- .../GraphProcessingProfileRepository.java | 2 +- .../GraphProcessingProfileResolver.java | 2 +- .../GraphProcessingProperties.java | 2 +- .../KnowledgeGraphCurationCommand.java | 2 +- .../KnowledgeGraphCurationService.java | 8 +++- .../KnowledgeGraphExplorerConfiguration.java | 3 +- .../KnowledgeGraphExplorerService.java | 6 ++- .../KnowledgeGraphExportService.java | 6 ++- .../{ => graph}/KnowledgeGraphView.java | 2 +- .../PersistedGraphProcessingProfile.java | 2 +- .../core/knowledge/graph/package-info.java | 9 ++++ .../SourceIngestionCoordinator.java | 2 +- .../core/ModulithVerificationTests.java | 42 +++++++++++++++++-- .../CanonicalHybridKnowledgeSearchTests.java | 3 +- ...raphRagKnowledgeRetrievalServiceTests.java | 4 +- .../GraphIndexLifecycleServiceTests.java | 2 +- .../GraphIndexingCoordinatorTests.java | 6 ++- .../KnowledgeGraphCurationServiceTests.java | 7 +++- .../KnowledgeGraphExplorerServiceTests.java | 5 ++- .../KnowledgeGraphExportServiceTests.java | 6 ++- .../design.md | 14 +++++++ .../plan.md | 29 ++++++++++++- 54 files changed, 202 insertions(+), 81 deletions(-) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/ClaimedGraphIndex.java (95%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphExplorerProperties.java (95%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexChunk.java (95%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexJob.java (99%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexJobQueue.java (99%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexJobRepository.java (96%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexJobStatus.java (72%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexJobView.java (92%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexLifecycleService.java (99%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexingCoordinator.java (98%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexingStoppedException.java (92%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphProcessingProfileRef.java (93%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphProcessingProfileRegistry.java (98%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphProcessingProfileRepository.java (88%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphProcessingProfileResolver.java (97%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/GraphProcessingProperties.java (98%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphCurationCommand.java (99%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphCurationService.java (97%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphExplorerConfiguration.java (91%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphExplorerService.java (98%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphExportService.java (94%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphView.java (98%) rename core/src/main/java/com/orgmemory/core/knowledge/{ => graph}/PersistedGraphProcessingProfile.java (95%) create mode 100644 core/src/main/java/com/orgmemory/core/knowledge/graph/package-info.java rename core/src/test/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexLifecycleServiceTests.java (99%) rename core/src/test/java/com/orgmemory/core/knowledge/{ => graph}/GraphIndexingCoordinatorTests.java (98%) rename core/src/test/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphCurationServiceTests.java (95%) rename core/src/test/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphExplorerServiceTests.java (98%) rename core/src/test/java/com/orgmemory/core/knowledge/{ => graph}/KnowledgeGraphExportServiceTests.java (93%) 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 97d656900..7f1fee6e1 100644 --- a/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java +++ b/apps/api/src/main/java/com/orgmemory/api/OrgMemoryApiApplication.java @@ -2,8 +2,8 @@ import com.orgmemory.core.knowledge.sourceledger.SourceIngestionProperties; -import com.orgmemory.core.knowledge.GraphExplorerProperties; -import com.orgmemory.core.knowledge.GraphProcessingProperties; +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.KnowledgeRetrievalProperties; import com.orgmemory.core.shared.secret.SecretCipherProperties; diff --git a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.java b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.java index 6fb821002..5e15f74a7 100644 --- a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.java +++ b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.java @@ -1,8 +1,8 @@ package com.orgmemory.api.knowledge; import com.orgmemory.api.security.CurrentActorProvider; -import com.orgmemory.core.knowledge.GraphIndexJobView; -import com.orgmemory.core.knowledge.GraphIndexLifecycleService; +import com.orgmemory.core.knowledge.graph.GraphIndexJobView; +import com.orgmemory.core.knowledge.graph.GraphIndexLifecycleService; import com.orgmemory.core.knowledge.asset.KnowledgeAssetLifecycleService; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import io.swagger.v3.oas.annotations.Operation; diff --git a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphExplorerController.java b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphExplorerController.java index 555c1b5ab..cc374c4b1 100644 --- a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphExplorerController.java +++ b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphExplorerController.java @@ -1,8 +1,8 @@ package com.orgmemory.api.knowledge; import com.orgmemory.api.security.CurrentActorProvider; -import com.orgmemory.core.knowledge.KnowledgeGraphExplorerService; -import com.orgmemory.core.knowledge.KnowledgeGraphView; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphExplorerService; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphView; import io.swagger.v3.oas.annotations.Operation; import jakarta.servlet.http.HttpServletResponse; import java.util.UUID; diff --git a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementController.java b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementController.java index 2052cab1b..48ed55b9f 100644 --- a/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementController.java +++ b/apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementController.java @@ -2,9 +2,9 @@ import com.orgmemory.api.ApiRequestException; import com.orgmemory.api.security.CurrentActorProvider; -import com.orgmemory.core.knowledge.KnowledgeGraphCurationCommand; -import com.orgmemory.core.knowledge.KnowledgeGraphCurationService; -import com.orgmemory.core.knowledge.KnowledgeGraphExportService; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationCommand; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationService; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphExportService; import com.orgmemory.core.organization.CurrentActor; import com.orgmemory.graphrag.curation.GraphCurationRecord; import com.orgmemory.graphrag.curation.GraphIdentityKind; diff --git a/apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementControllerTests.java b/apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementControllerTests.java index 971335c2d..82ae5ee17 100644 --- a/apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementControllerTests.java +++ b/apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeGraphManagementControllerTests.java @@ -7,9 +7,9 @@ import static org.mockito.Mockito.when; import com.orgmemory.api.security.CurrentActorProvider; -import com.orgmemory.core.knowledge.KnowledgeGraphCurationCommand; -import com.orgmemory.core.knowledge.KnowledgeGraphCurationService; -import com.orgmemory.core.knowledge.KnowledgeGraphExportService; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationCommand; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationService; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphExportService; import com.orgmemory.core.organization.CurrentActor; import java.util.UUID; import org.junit.jupiter.api.Test; diff --git a/apps/worker/src/main/java/com/orgmemory/worker/OrgMemoryWorkerApplication.java b/apps/worker/src/main/java/com/orgmemory/worker/OrgMemoryWorkerApplication.java index 008ac295f..6214790b4 100644 --- a/apps/worker/src/main/java/com/orgmemory/worker/OrgMemoryWorkerApplication.java +++ b/apps/worker/src/main/java/com/orgmemory/worker/OrgMemoryWorkerApplication.java @@ -3,8 +3,8 @@ import com.orgmemory.core.knowledge.sourceledger.SourceIngestionProperties; import com.orgmemory.core.knowledge.CanonicalHybridKnowledgeSearch; -import com.orgmemory.core.knowledge.GraphProcessingProperties; -import com.orgmemory.core.knowledge.KnowledgeGraphExplorerConfiguration; +import com.orgmemory.core.knowledge.graph.GraphProcessingProperties; +import com.orgmemory.core.knowledge.graph.KnowledgeGraphExplorerConfiguration; import com.orgmemory.core.knowledge.KnowledgeRetrievalProperties; import com.orgmemory.core.shared.secret.SecretCipherProperties; import com.orgmemory.worker.authorization.AssetAuthorizationConvergenceProperties; diff --git a/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphIndexingProcessor.java b/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphIndexingProcessor.java index 791600f59..92c45fddd 100644 --- a/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphIndexingProcessor.java +++ b/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphIndexingProcessor.java @@ -3,10 +3,10 @@ import com.orgmemory.core.ai.AiRoute; import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; -import com.orgmemory.core.knowledge.ClaimedGraphIndex; -import com.orgmemory.core.knowledge.GraphIndexChunk; -import com.orgmemory.core.knowledge.GraphIndexingCoordinator; -import com.orgmemory.core.knowledge.GraphIndexingStoppedException; +import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; +import com.orgmemory.core.knowledge.graph.GraphIndexChunk; +import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; +import com.orgmemory.core.knowledge.graph.GraphIndexingStoppedException; import com.orgmemory.graphrag.indexing.ExtractedChunk; import com.orgmemory.graphrag.indexing.GraphContributionAssembler; import com.orgmemory.graphrag.indexing.LightRagEmbeddingPayloads; diff --git a/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphPublicationCommitter.java b/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphPublicationCommitter.java index 5d2baeca9..ce0d6eeaf 100644 --- a/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphPublicationCommitter.java +++ b/apps/worker/src/main/java/com/orgmemory/worker/graph/GraphPublicationCommitter.java @@ -1,8 +1,8 @@ package com.orgmemory.worker.graph; -import com.orgmemory.core.knowledge.ClaimedGraphIndex; -import com.orgmemory.core.knowledge.GraphIndexChunk; -import com.orgmemory.core.knowledge.GraphIndexingCoordinator; +import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; +import com.orgmemory.core.knowledge.graph.GraphIndexChunk; +import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; import com.orgmemory.graphrag.cache.CanonicalCacheKeyHasher; import com.orgmemory.graphrag.cache.ModelInvocationCache; import com.orgmemory.graphrag.cache.RetrievalResultCache; 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 240dd82fc..afd245a41 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 @@ -19,12 +19,12 @@ import com.orgmemory.core.ai.AiRoute; import com.orgmemory.core.ai.AiRouteResolver; import com.orgmemory.core.ai.AiWorkload; -import com.orgmemory.core.knowledge.ClaimedGraphIndex; +import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.GraphIndexChunk; -import com.orgmemory.core.knowledge.GraphIndexingCoordinator; -import com.orgmemory.core.knowledge.GraphProcessingProfileRef; +import com.orgmemory.core.knowledge.graph.GraphIndexChunk; +import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; +import com.orgmemory.core.knowledge.graph.GraphProcessingProfileRef; import com.orgmemory.graphrag.extraction.LightRagExtractionPrompt; import com.orgmemory.graphrag.model.ExtractedEntity; import com.orgmemory.graphrag.model.ExtractedRelation; 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 0205fded5..3ab7fe69c 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 @@ -9,12 +9,12 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; -import com.orgmemory.core.knowledge.ClaimedGraphIndex; +import com.orgmemory.core.knowledge.graph.ClaimedGraphIndex; import com.orgmemory.core.knowledge.EmbeddingDistanceMetric; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.GraphIndexChunk; -import com.orgmemory.core.knowledge.GraphIndexingCoordinator; -import com.orgmemory.core.knowledge.GraphProcessingProfileRef; +import com.orgmemory.core.knowledge.graph.GraphIndexChunk; +import com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator; +import com.orgmemory.core.knowledge.graph.GraphProcessingProfileRef; import com.orgmemory.graphrag.cache.ModelInvocationCache; import com.orgmemory.graphrag.cache.RetrievalResultCache; import com.orgmemory.graphrag.model.FloatVector; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java b/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java index 123cd7662..bf5acb9c0 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfile.java @@ -41,7 +41,7 @@ public class EmbeddingProfile { protected EmbeddingProfile() { } - EmbeddingProfileRef toRef() { + public EmbeddingProfileRef toRef() { return new EmbeddingProfileRef( id, organizationId, diff --git a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java b/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java index ca9c97ce4..41cc79c47 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/EmbeddingProfileRepository.java @@ -4,7 +4,7 @@ import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; -interface EmbeddingProfileRepository extends JpaRepository { +public interface EmbeddingProfileRepository extends JpaRepository { Optional findByOrganizationIdAndProfileKey(UUID organizationId, String profileKey); diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.java b/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.java index 71f19fe05..fa07f89f1 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.java @@ -34,7 +34,7 @@ * permission-aware retrieval, graph and citation use cases. */ @Service -class KnowledgeEvidenceScopeResolver { +public class KnowledgeEvidenceScopeResolver { private static final PermissionKey CAN_VIEW = PermissionKey.of("can_view"); private static final String RESOURCE_TYPE = "knowledge_asset"; @@ -65,7 +65,7 @@ class KnowledgeEvidenceScopeResolver { } @Transactional(readOnly = true) - ResolvedKnowledgeEvidenceScope resolve( + public ResolvedKnowledgeEvidenceScope resolve( CurrentActor actor, String expectedAuthorizationModelId) { Objects.requireNonNull(actor, "actor"); diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeUnavailableException.java b/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeUnavailableException.java index 4a14ac397..734b5ca55 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeUnavailableException.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeUnavailableException.java @@ -1,11 +1,11 @@ package com.orgmemory.core.knowledge; -final class KnowledgeEvidenceScopeUnavailableException extends RuntimeException { +public final class KnowledgeEvidenceScopeUnavailableException extends RuntimeException { private final String reasonCode; private final String policyVersion; - KnowledgeEvidenceScopeUnavailableException( + public KnowledgeEvidenceScopeUnavailableException( String reasonCode, String policyVersion) { super("Knowledge evidence authorization scope is unavailable"); diff --git a/core/src/main/java/com/orgmemory/core/knowledge/ResolvedKnowledgeEvidenceScope.java b/core/src/main/java/com/orgmemory/core/knowledge/ResolvedKnowledgeEvidenceScope.java index e10dc9d51..81abc1198 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/ResolvedKnowledgeEvidenceScope.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/ResolvedKnowledgeEvidenceScope.java @@ -9,7 +9,7 @@ import java.util.Set; import java.util.UUID; -record ResolvedKnowledgeEvidenceScope( +public record ResolvedKnowledgeEvidenceScope( UUID organizationId, UUID actorUserId, UUID actorDepartmentId, @@ -19,7 +19,7 @@ record ResolvedKnowledgeEvidenceScope( Map> assetIdsByKnowledgeSpace, Map aclGenerationByKnowledgeSpace) { - ResolvedKnowledgeEvidenceScope { + public ResolvedKnowledgeEvidenceScope { Objects.requireNonNull(organizationId, "organizationId"); Objects.requireNonNull(actorUserId, "actorUserId"); authorizationModelId = required( @@ -42,17 +42,17 @@ record ResolvedKnowledgeEvidenceScope( } } - Set allAssetIds() { + public Set allAssetIds() { LinkedHashSet all = new LinkedHashSet<>(); assetIdsByKnowledgeSpace.values().forEach(all::addAll); return Set.copyOf(all); } - Set knowledgeSpaceIds() { + public Set knowledgeSpaceIds() { return assetIdsByKnowledgeSpace.keySet(); } - AuthorizedEvidenceScope forKnowledgeSpace(UUID knowledgeSpaceId) { + public AuthorizedEvidenceScope forKnowledgeSpace(UUID knowledgeSpaceId) { Objects.requireNonNull(knowledgeSpaceId, "knowledgeSpaceId"); return new AuthorizedEvidenceScope( organizationId, 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 f4c8d2587..df8422e75 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/SecureKnowledgeRetrievalStore.java @@ -273,7 +273,7 @@ List semantic( return jdbc.query(sql, parameters, SecureKnowledgeRetrievalStore::mapCandidate); } - List recheck( + public List recheck( RetrievalScope scope, Collection chunkIds) { if (chunkIds.isEmpty()) { diff --git a/core/src/main/java/com/orgmemory/core/knowledge/SecureRetrievalCandidate.java b/core/src/main/java/com/orgmemory/core/knowledge/SecureRetrievalCandidate.java index 4b5565026..54a2c3080 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/SecureRetrievalCandidate.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/SecureRetrievalCandidate.java @@ -2,7 +2,7 @@ import java.util.UUID; -record SecureRetrievalCandidate( +public record SecureRetrievalCandidate( UUID organizationId, UUID chunkId, UUID knowledgeAssetId, 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 296f3bd1a..ab06522af 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,7 +1,7 @@ package com.orgmemory.core.knowledge.asset; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.GraphIndexChunk; +import com.orgmemory.core.knowledge.graph.GraphIndexChunk; import com.orgmemory.core.knowledge.PgVectorLiteral; import java.sql.Types; 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 02a0227f7..0ccddea4f 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,7 +1,7 @@ package com.orgmemory.core.knowledge.connector; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.GraphIndexJobQueue; +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/ClaimedGraphIndex.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java similarity index 95% rename from core/src/main/java/com/orgmemory/core/knowledge/ClaimedGraphIndex.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java index 5d8e9c857..b3cc7070a 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/ClaimedGraphIndex.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/ClaimedGraphIndex.java @@ -1,5 +1,6 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.EmbeddingProfileRef; import java.util.List; import java.util.Objects; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphExplorerProperties.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphExplorerProperties.java similarity index 95% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphExplorerProperties.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphExplorerProperties.java index 65acaa75a..f396b75d1 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphExplorerProperties.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphExplorerProperties.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexChunk.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexChunk.java similarity index 95% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexChunk.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexChunk.java index c4b9ea8d4..368839a63 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexChunk.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexChunk.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.graphrag.model.FloatVector; import java.util.Objects; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJob.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJob.java similarity index 99% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJob.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJob.java index 2716a42e7..329467dd6 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJob.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJob.java @@ -1,5 +1,6 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.SourceFailureMessage; import com.orgmemory.core.shared.BaseEntity; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobQueue.java similarity index 99% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobQueue.java index f4227b651..defa64538 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobQueue.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersion; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobRepository.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobRepository.java similarity index 96% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobRepository.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobRepository.java index dc484494c..bff72b4c1 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobRepository.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobRepository.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import java.time.Instant; import java.util.Optional; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobStatus.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobStatus.java similarity index 72% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobStatus.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobStatus.java index 0462bb2cf..1a1d758d9 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobStatus.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobStatus.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; enum GraphIndexJobStatus { PENDING, diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobView.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobView.java similarity index 92% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobView.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobView.java index d0bd6d291..af19a07eb 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobView.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexJobView.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import java.time.Instant; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleService.java similarity index 99% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleService.java index ce7bf76f5..27da63c4a 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleService.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java index 379f3f110..5e59d3df4 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinator.java @@ -1,5 +1,8 @@ -package com.orgmemory.core.knowledge; +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.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/GraphIndexingStoppedException.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingStoppedException.java similarity index 92% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingStoppedException.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingStoppedException.java index c8ccb44b8..0c4910aa4 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingStoppedException.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphIndexingStoppedException.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import java.util.Objects; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRef.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRef.java similarity index 93% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRef.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRef.java index 7034f2f25..ef8d54907 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRef.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRef.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.graphrag.processing.GraphProcessingProfile; import java.util.Objects; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRegistry.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRegistry.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRegistry.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRegistry.java index d68b28c50..880b53155 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRegistry.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRegistry.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.graphrag.processing.GraphProcessingProfile; import java.nio.charset.StandardCharsets; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRepository.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRepository.java similarity index 88% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRepository.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRepository.java index 122af068d..82bb4b448 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileRepository.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileRepository.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import java.util.Optional; import java.util.UUID; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileResolver.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileResolver.java similarity index 97% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileResolver.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileResolver.java index 6ce3f4559..e5d430d62 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProfileResolver.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProfileResolver.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.core.ai.AiRoute; import com.orgmemory.core.ai.AiRouteResolver; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProperties.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProperties.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProperties.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProperties.java index 188196bc4..bba059ed1 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/GraphProcessingProperties.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/GraphProcessingProperties.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import java.util.List; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationCommand.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationCommand.java similarity index 99% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationCommand.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationCommand.java index 6ae4f4544..9ba34a809 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationCommand.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationCommand.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.core.shared.error.BusinessValidationException; import com.orgmemory.graphrag.curation.GraphIdentityKind; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java similarity index 97% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java index ab1a27f53..03b8bf199 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationService.java @@ -1,5 +1,11 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; +import com.orgmemory.core.knowledge.KnowledgeResourceNotFoundException; +import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; +import com.orgmemory.core.knowledge.SecureKnowledgeRetrievalStore; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetNotFoundException; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRepository; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerConfiguration.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerConfiguration.java similarity index 91% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerConfiguration.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerConfiguration.java index 615d3afd6..b0ca02d10 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerConfiguration.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerConfiguration.java @@ -1,5 +1,6 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; import com.orgmemory.core.authorization.RelationshipAuthorizationPort; import com.orgmemory.core.knowledge.space.KnowledgeSpaceRepository; import com.orgmemory.core.permission.PermissionAuditService; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerService.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java index 61af78ce1..fabc647f4 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerService.java @@ -1,5 +1,9 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; +import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.authorization.AuthorizationDecision; import com.orgmemory.core.authorization.PermissionKey; import com.orgmemory.core.authorization.RelationshipAuthorizationPort; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExportService.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java similarity index 94% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExportService.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java index 9918845d8..aa3f829c1 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphExportService.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportService.java @@ -1,5 +1,9 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; +import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.authorization.PermissionKey; import com.orgmemory.core.authorization.RelationshipAuthorizationPort; import com.orgmemory.core.authorization.RelationshipAuthorizationQuery; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphView.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphView.java similarity index 98% rename from core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphView.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphView.java index 1bfaf7922..fbdf3d81e 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphView.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphView.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.graphrag.model.EvidenceReference; import java.util.List; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/PersistedGraphProcessingProfile.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/PersistedGraphProcessingProfile.java similarity index 95% rename from core/src/main/java/com/orgmemory/core/knowledge/PersistedGraphProcessingProfile.java rename to core/src/main/java/com/orgmemory/core/knowledge/graph/PersistedGraphProcessingProfile.java index d03e7430b..645e08827 100644 --- a/core/src/main/java/com/orgmemory/core/knowledge/PersistedGraphProcessingProfile.java +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/PersistedGraphProcessingProfile.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.graphrag.processing.GraphProcessingProfile; import jakarta.persistence.Column; diff --git a/core/src/main/java/com/orgmemory/core/knowledge/graph/package-info.java b/core/src/main/java/com/orgmemory/core/knowledge/graph/package-info.java new file mode 100644 index 000000000..5f054434c --- /dev/null +++ b/core/src/main/java/com/orgmemory/core/knowledge/graph/package-info.java @@ -0,0 +1,9 @@ +/** + * Knowledge graph indexing, processing profiles, exploration, curation, and export. + * + *

This nested module remains open while direct Knowledge Asset and source-ledger dependencies + * are replaced with intentional APIs. + */ +@org.springframework.modulith.ApplicationModule( + type = org.springframework.modulith.ApplicationModule.Type.OPEN) +package com.orgmemory.core.knowledge.graph; 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 601c01db1..88257d18d 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 @@ -2,7 +2,7 @@ import com.orgmemory.core.knowledge.EmbeddingProfile; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.GraphIndexJobQueue; +import com.orgmemory.core.knowledge.graph.GraphIndexJobQueue; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; import java.time.Duration; diff --git a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java index ad230e679..5d71e7395 100644 --- a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java +++ b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java @@ -53,6 +53,40 @@ void knowledgeAssetIsAnOpenNestedModuleDuringTheRefactor() { assertTrue(asset.isOpen()); } + @Test + void knowledgeGraphIsAnOpenNestedModuleDuringTheRefactor() { + var graph = modules.getModuleByName("knowledge.graph").orElseThrow(); + + assertTrue(graph.isOpen()); + } + + @Test + void knowledgeGraphTemporaryOpenBoundaryDoesNotGainNewConsumers() { + var graph = modules.getModuleByName("knowledge.graph").orElseThrow(); + var dependencies = modules.stream() + .flatMap(module -> module.getDirectDependencies(modules).stream()) + .filter(dependency -> dependency.getTargetModule().equals(graph)) + .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.asset.KnowledgeChunkProjectionStore", + "com.orgmemory.core.knowledge.connector.ConnectorSourceRevisionCoordinator", + "com.orgmemory.core.knowledge.sourceledger.SourceIngestionCoordinator"), + consumerTypes); + assertEquals( + Set.of( + "com.orgmemory.core.knowledge.graph.GraphIndexChunk", + "com.orgmemory.core.knowledge.graph.GraphIndexJobQueue"), + consumedInternalTypes); + } + @Test void knowledgeAssetTemporaryOpenBoundaryDoesNotGainNewConsumers() { var asset = modules.getModuleByName("knowledge.asset").orElseThrow(); @@ -70,12 +104,12 @@ void knowledgeAssetTemporaryOpenBoundaryDoesNotGainNewConsumers() { assertEquals( Set.of( "com.orgmemory.core.knowledge.AuthorizationResourceDirectory", - "com.orgmemory.core.knowledge.GraphIndexingCoordinator", - "com.orgmemory.core.knowledge.GraphIndexJobQueue", - "com.orgmemory.core.knowledge.GraphIndexLifecycleService", + "com.orgmemory.core.knowledge.graph.GraphIndexingCoordinator", + "com.orgmemory.core.knowledge.graph.GraphIndexJobQueue", + "com.orgmemory.core.knowledge.graph.GraphIndexLifecycleService", "com.orgmemory.core.knowledge.KnowledgeCatalogService", "com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver", - "com.orgmemory.core.knowledge.KnowledgeGraphCurationService", + "com.orgmemory.core.knowledge.graph.KnowledgeGraphCurationService", "com.orgmemory.core.knowledge.connector.ConnectorReconciler", "com.orgmemory.core.knowledge.connector.ConnectorSourceRevisionCoordinator", "com.orgmemory.core.knowledge.sourceledger.KnowledgeIngestionService", 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 a932e3af5..4a5f75993 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/CanonicalHybridKnowledgeSearchTests.java @@ -202,7 +202,8 @@ List semantic( } @Override - List recheck(RetrievalScope scope, Collection chunkIds) { + public List recheck( + RetrievalScope scope, Collection chunkIds) { return rechecked; } } 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 824a910c2..f09ba0977 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/GraphRagKnowledgeRetrievalServiceTests.java @@ -890,7 +890,7 @@ private NeverRecheckedStore() { } @Override - List recheck( + public List recheck( RetrievalScope scope, java.util.Collection chunkIds) { recheckCount++; @@ -911,7 +911,7 @@ private RecordingRecheckedStore( } @Override - List recheck( + public List recheck( RetrievalScope scope, java.util.Collection chunkIds) { recheckedChunkIds = List.copyOf(chunkIds); diff --git a/core/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleServiceTests.java similarity index 99% rename from core/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleServiceTests.java index 647c720f4..42f7d904c 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexLifecycleServiceTests.java @@ -1,4 +1,4 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRef; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java similarity index 98% rename from core/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java index 298131224..0e890e4a6 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/GraphIndexingCoordinatorTests.java @@ -1,5 +1,9 @@ -package com.orgmemory.core.knowledge; +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.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/KnowledgeGraphCurationServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationServiceTests.java similarity index 95% rename from core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationServiceTests.java index 92007cb33..65077c10b 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphCurationServiceTests.java @@ -1,5 +1,10 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeResourceNotFoundException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; +import com.orgmemory.core.knowledge.SecureKnowledgeRetrievalStore; +import com.orgmemory.core.knowledge.SecureRetrievalCandidate; import com.orgmemory.core.knowledge.asset.KnowledgeAsset; import com.orgmemory.core.knowledge.asset.KnowledgeAssetRepository; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerServiceTests.java similarity index 98% rename from core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerServiceTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerServiceTests.java index a3d5c8119..8288b29a2 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExplorerServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExplorerServiceTests.java @@ -1,5 +1,8 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.knowledge.space.KnowledgeSpaceRepository; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; diff --git a/core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExportServiceTests.java b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportServiceTests.java similarity index 93% rename from core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExportServiceTests.java rename to core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportServiceTests.java index a1aa819be..ae6605eb2 100644 --- a/core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphExportServiceTests.java +++ b/core/src/test/java/com/orgmemory/core/knowledge/graph/KnowledgeGraphExportServiceTests.java @@ -1,5 +1,9 @@ -package com.orgmemory.core.knowledge; +package com.orgmemory.core.knowledge.graph; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeResolver; +import com.orgmemory.core.knowledge.KnowledgeEvidenceScopeUnavailableException; +import com.orgmemory.core.knowledge.KnowledgeRetrievalUnavailableException; +import com.orgmemory.core.knowledge.ResolvedKnowledgeEvidenceScope; import com.orgmemory.core.knowledge.space.KnowledgeSpaceRepository; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertThrows; 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 d2b40f45d..f8cac709d 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 @@ -118,6 +118,20 @@ indexing, and the PostgreSQL vector literal utility shared by chunk projection and retrieval. These dependencies must be replaced or declared intentionally before `knowledge.asset`, `knowledge.graph`, and `knowledge.retrieval` close. +## Seventh Delivery Slice + +The Knowledge Graph pull request moves graph-index jobs and claiming, +processing-profile persistence and resolution, lifecycle orchestration, +curation, exploration, and export into `knowledge.graph`. GraphRAG query +retrieval remains in the future retrieval slice because it owns authorized +evidence resolution and result assembly rather than graph lifecycle. + +The compiler exposes temporary graph edges to the embedding-profile registry, +retrieval evidence scope and canonical recheck, Knowledge Asset chunk +projection, connector reconciliation, and source ingestion. The nested module +starts open, and structural tests pin both its current consumer types and the +internal graph types they consume so this migration debt cannot grow silently. + ## 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 5b1539893..a2c2c1332 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 @@ -116,7 +116,7 @@ tests passed; `:core:test` passed; and the terminating repository-wide operating-model and mechanical source checks passed. The pull request contains 44 changed files. -## Current Pull Request Gates +## Sixth Pull Request Evidence - Knowledge Asset aggregate/version/evidence, lifecycle and publication orchestration, authorization convergence, and chunk projection form the open @@ -128,3 +128,30 @@ operating-model and mechanical source checks passed. The pull request contains - `: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 next Knowledge slice starts. + +Local verification on 2026-08-01: focused asset, publication/convergence, +graph-edge, ingestion, retrieval, catalog, vector-literal, and Modulith tests +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 + +- Graph-index jobs and claiming, processing profiles, lifecycle orchestration, + curation, exploration, and export form the open `knowledge.graph` nested + module. +- GraphRAG query retrieval remains with the future retrieval slice. +- Compiler-forced embedding-profile and retrieval-scope visibility is tracked + as temporary edge debt, while a structural allowlist prevents the graph + module's open boundary from gaining consumers or deeper internal coupling. +- Focused graph, retrieval-regression, worker, API, 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 slice starts. + +Local verification on 2026-08-01: production and test sources compiled; +focused graph, retrieval-regression, API, worker, and Modulith tests passed; +`:core:test` passed; and the terminating repository-wide `clean test` +completed successfully in 5m13s across 108 tasks. The docs operating-model +and mechanical source checks passed. The pull request contains 54 changed +files. From c9a03a889168a104a5cdbeabfa2523375936bd4c Mon Sep 17 00:00:00 2001 From: kl3inIT Date: Sat, 1 Aug 2026 01:58:14 +0700 Subject: [PATCH 2/5] docs(knowledge): record graph verification --- .../2026-07-31-spring-modulith-package-refactor/plan.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 a2c2c1332..7af7a8163 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 @@ -154,4 +154,6 @@ focused graph, retrieval-regression, API, worker, and Modulith tests passed; `:core:test` passed; and the terminating repository-wide `clean test` completed successfully in 5m13s across 108 tasks. The docs operating-model and mechanical source checks passed. The pull request contains 54 changed -files. +files. After merging current `origin/main` at `e088e9c9`, a second `clean test` +completed successfully in 6m18s across 99 tasks and the docs check passed +against 378 Markdown files. From 0a1c5a72b3760defcf2d01aabc38aaf779ac7f27 Mon Sep 17 00:00:00 2001 From: kl3inIT Date: Sat, 1 Aug 2026 02:08:09 +0700 Subject: [PATCH 3/5] docs(knowledge): record latest graph gate --- .../2026-07-31-spring-modulith-package-refactor/plan.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 7af7a8163..734109bea 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 @@ -156,4 +156,6 @@ completed successfully in 5m13s across 108 tasks. The docs operating-model and mechanical source checks passed. The pull request contains 54 changed files. After merging current `origin/main` at `e088e9c9`, a second `clean test` completed successfully in 6m18s across 99 tasks and the docs check passed -against 378 Markdown files. +against 378 Markdown files. After merging current `origin/main` again at +`f99afb9f`, resolving the retrieval-scope helper seam, and rerunning focused +tests, a third `clean test` completed successfully in 6m46s across 108 tasks. From a14d6440f942ffcb1ba2f6e9ac27fa6349d71fd9 Mon Sep 17 00:00:00 2001 From: kl3inIT Date: Sat, 1 Aug 2026 02:19:32 +0700 Subject: [PATCH 4/5] chore(release): note knowledge graph boundary --- .tegami/knowledge-graph-module.md | 11 +++++++++++ .../plan.md | 3 ++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 .tegami/knowledge-graph-module.md diff --git a/.tegami/knowledge-graph-module.md b/.tegami/knowledge-graph-module.md new file mode 100644 index 000000000..6d39c7066 --- /dev/null +++ b/.tegami/knowledge-graph-module.md @@ -0,0 +1,11 @@ +--- +packages: + orgmemory: patch +subject: Isolate Knowledge Graph lifecycle and processing boundaries +--- + +## Improvements + +Knowledge Graph indexing, processing profiles, lifecycle operations, curation, +exploration, and export now share an explicit module boundary, reducing coupling +and making future graph changes safer to verify and release. 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 734109bea..ff06c6087 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 @@ -153,9 +153,10 @@ Local verification on 2026-08-01: production and test sources compiled; focused graph, retrieval-regression, API, worker, and Modulith tests passed; `:core:test` passed; and the terminating repository-wide `clean test` completed successfully in 5m13s across 108 tasks. The docs operating-model -and mechanical source checks passed. The pull request contains 54 changed +and mechanical source checks passed. The pull request contains 55 changed files. After merging current `origin/main` at `e088e9c9`, a second `clean test` completed successfully in 6m18s across 99 tasks and the docs check passed against 378 Markdown files. After merging current `origin/main` again at `f99afb9f`, resolving the retrieval-scope helper seam, and rerunning focused tests, a third `clean test` completed successfully in 6m46s across 108 tasks. +The product release contract check passed with the required Tegami entry. From 4a367010584b6e2758e6b6a75895ff565f4f5d25 Mon Sep 17 00:00:00 2001 From: kl3inIT Date: Sat, 1 Aug 2026 02:37:24 +0700 Subject: [PATCH 5/5] refactor(knowledge): neutralize graph chunk contract --- .../asset/KnowledgeChunkProjection.java | 30 +++++++++++++++++++ .../asset/KnowledgeChunkProjectionStore.java | 5 ++-- .../graph/GraphIndexingCoordinator.java | 19 ++++++++---- .../core/ModulithVerificationTests.java | 6 ++-- .../graph/GraphIndexingCoordinatorTests.java | 6 +++- .../design.md | 3 ++ .../plan.md | 6 +++- 7 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjection.java diff --git a/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjection.java b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjection.java new file mode 100644 index 000000000..7a3582bc4 --- /dev/null +++ b/core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjection.java @@ -0,0 +1,30 @@ +package com.orgmemory.core.knowledge.asset; + +import com.orgmemory.graphrag.model.FloatVector; +import java.util.Objects; +import java.util.UUID; + +public record KnowledgeChunkProjection( + UUID id, + int index, + String content, + String heading, + int tokenCount, + FloatVector embedding) { + + public KnowledgeChunkProjection { + Objects.requireNonNull(id, "id"); + if (index < 0) { + throw new IllegalArgumentException("index must be non-negative"); + } + content = Objects.requireNonNull(content, "content").strip(); + if (content.isEmpty()) { + throw new IllegalArgumentException("content must not be blank"); + } + heading = heading == null || heading.isBlank() ? null : heading.strip(); + if (tokenCount < 0) { + throw new IllegalArgumentException("tokenCount must be non-negative"); + } + Objects.requireNonNull(embedding, "embedding"); + } +} 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 ab06522af..d9152be10 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,7 +1,6 @@ package com.orgmemory.core.knowledge.asset; import com.orgmemory.core.knowledge.EmbeddingProfileRef; -import com.orgmemory.core.knowledge.graph.GraphIndexChunk; import com.orgmemory.core.knowledge.PgVectorLiteral; import java.sql.Types; @@ -149,7 +148,7 @@ public int activate( } @Transactional(readOnly = true) - public List loadActive( + public List loadActive( UUID organizationId, UUID sourceRevisionId, UUID knowledgeAssetId, @@ -173,7 +172,7 @@ public List loadActive( .addValue("knowledgeAssetId", knowledgeAssetId) .addValue("knowledgeAssetVersionId", knowledgeAssetVersionId) .addValue("projectionGeneration", projectionGeneration), - (resultSet, rowNumber) -> new GraphIndexChunk( + (resultSet, rowNumber) -> new KnowledgeChunkProjection( resultSet.getObject("id", UUID.class), resultSet.getInt("chunk_index"), resultSet.getString("content"), 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 3c75d9e1e..800b14856 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 @@ -182,11 +182,20 @@ private Optional currentClaim(GraphIndexJob job) { GraphProcessingProfileRef graphProcessingProfile = graphProcessingProfiles.get(job.getGraphProcessingProfileId()); var activeChunks = chunks.loadActive( - job.getOrganizationId(), - job.getSourceRevisionId(), - job.getKnowledgeAssetId(), - job.getKnowledgeAssetVersionId(), - job.getProjectionGeneration()); + job.getOrganizationId(), + job.getSourceRevisionId(), + job.getKnowledgeAssetId(), + job.getKnowledgeAssetVersionId(), + job.getProjectionGeneration()) + .stream() + .map(chunk -> new GraphIndexChunk( + chunk.id(), + chunk.index(), + chunk.content(), + chunk.heading(), + chunk.tokenCount(), + chunk.embedding())) + .toList(); if (activeChunks.isEmpty()) { throw new IllegalStateException( "Graph index source has no active chunks for the pinned generation"); diff --git a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java index 5d71e7395..955afda3d 100644 --- a/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java +++ b/core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java @@ -76,14 +76,11 @@ void knowledgeGraphTemporaryOpenBoundaryDoesNotGainNewConsumers() { assertEquals( Set.of( - "com.orgmemory.core.knowledge.asset.KnowledgeChunkProjectionStore", "com.orgmemory.core.knowledge.connector.ConnectorSourceRevisionCoordinator", "com.orgmemory.core.knowledge.sourceledger.SourceIngestionCoordinator"), consumerTypes); assertEquals( - Set.of( - "com.orgmemory.core.knowledge.graph.GraphIndexChunk", - "com.orgmemory.core.knowledge.graph.GraphIndexJobQueue"), + Set.of("com.orgmemory.core.knowledge.graph.GraphIndexJobQueue"), consumedInternalTypes); } @@ -131,6 +128,7 @@ void knowledgeAssetTemporaryOpenBoundaryDoesNotGainNewConsumers() { "com.orgmemory.core.knowledge.asset.KnowledgeAssetVersionRepository", "com.orgmemory.core.knowledge.asset.KnowledgeAssetVersionStatus", "com.orgmemory.core.knowledge.asset.KnowledgeChunkDraft", + "com.orgmemory.core.knowledge.asset.KnowledgeChunkProjection", "com.orgmemory.core.knowledge.asset.KnowledgeChunkProjectionStore", "com.orgmemory.core.knowledge.asset.KnowledgeContentType", "com.orgmemory.core.knowledge.asset.PublishKnowledgeAssetCommand"), 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 da4aef195..99ee251c7 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 @@ -9,6 +9,7 @@ import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersion; import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersionRepository; import com.orgmemory.core.knowledge.asset.KnowledgeAssetVersionStatus; +import com.orgmemory.core.knowledge.asset.KnowledgeChunkProjection; import com.orgmemory.core.knowledge.asset.KnowledgeChunkProjectionStore; import com.orgmemory.core.knowledge.acl.SourceAclSnapshot; @@ -137,7 +138,7 @@ void setUpCurrentTarget() { ASSET_ID, VERSION_ID, 1)) - .thenReturn(List.of(new GraphIndexChunk( + .thenReturn(List.of(new KnowledgeChunkProjection( CHUNK_ID, 0, "Current chunk", @@ -156,6 +157,9 @@ void claimsOnlyPinnedCurrentInputsAndRetriesTheSameDurableJob() { assertEquals(REVISION_ID, claim.sourceRevisionId()); assertEquals(ACL_SNAPSHOT_ID, claim.aclSnapshotId()); assertEquals(9L, claim.aclGeneration()); + assertEquals(CHUNK_ID, claim.chunks().getFirst().id()); + assertEquals("Current chunk", claim.chunks().getFirst().content()); + assertEquals(1536, claim.chunks().getFirst().embedding().dimensions()); assertEquals(GraphIndexJobStatus.PROCESSING, job.getStatus()); coordinator.fail( 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 f8cac709d..f513a2134 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 @@ -131,6 +131,9 @@ retrieval evidence scope and canonical recheck, Knowledge Asset chunk projection, connector reconciliation, and source ingestion. The nested module starts open, and structural tests pin both its current consumer types and the internal graph types they consume so this migration debt cannot grow silently. +The asset-owned projection store returns a graph-neutral +`KnowledgeChunkProjection`; `knowledge.graph` maps that value into +`GraphIndexChunk`, preventing a reciprocal Asset-to-Graph dependency. ## Strongest Counterargument 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 ff06c6087..e32db5b7e 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 @@ -153,10 +153,14 @@ Local verification on 2026-08-01: production and test sources compiled; focused graph, retrieval-regression, API, worker, and Modulith tests passed; `:core:test` passed; and the terminating repository-wide `clean test` completed successfully in 5m13s across 108 tasks. The docs operating-model -and mechanical source checks passed. The pull request contains 55 changed +and mechanical source checks passed. The pull request contains 56 changed files. After merging current `origin/main` at `e088e9c9`, a second `clean test` completed successfully in 6m18s across 99 tasks and the docs check passed against 378 Markdown files. After merging current `origin/main` again at `f99afb9f`, resolving the retrieval-scope helper seam, and rerunning focused tests, a third `clean test` completed successfully in 6m46s across 108 tasks. The product release contract check passed with the required Tegami entry. +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.