refactor(knowledge): extract asset module - #187
Conversation
|
Warning Review limit reached
Next review available in: 40 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
📝 WalkthroughWalkthroughThe refactor moves knowledge asset types into ChangesKnowledge asset module refactor
Estimated code review effort: 2 (Simple) | ~15 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches 💡 1📝 Generate docstrings 💡
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
TegamiThis repository uses Tegami to manage releases. When your changes affect published packages, add a changelog file under Create a changelog → · Changelog format Release preview
This PR does not add changelog files. Pending changelogs from other branches are included in the preview above. Run Managed by Tegami. |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@core/src/main/java/com/orgmemory/core/knowledge/asset/package-info.java`:
- Around line 1-9: Add an architecture verification check for the
knowledge.asset module that tracks its temporary OPEN boundary and rejects newly
introduced consumers or deeper dependencies on its internals, while preserving
the existing ApplicationModule declaration until the planned APIs replace those
dependencies. Use the Spring Modulith verification mechanism and anchor the
check to the knowledge.asset module definition.
In `@core/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.java`:
- Line 20: Update PgVectorLiteral.parse to validate each component is non-blank
before calling Float.parseFloat, rejecting trailing commas and any empty vector
components instead of silently skipping them. Add a test covering malformed
inputs such as "[1,]" and other empty components, while preserving valid vector
parsing.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: b47c6b3e-0a3f-4973-8ae6-744526aa5943
⛔ Files ignored due to path filters (2)
docs/increments/active/2026-07-31-spring-modulith-package-refactor/design.mdis excluded by!docs/**docs/increments/active/2026-07-31-spring-modulith-package-refactor/plan.mdis excluded by!docs/**
📒 Files selected for processing (57)
apps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.javaapps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javaapps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeIngestionIntegrationTests.javaapps/worker/src/main/java/com/orgmemory/worker/authorization/KnowledgeAuthorizationConvergenceScheduler.javaapps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.javacore/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.javacore/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.javacore/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.javacore/src/main/java/com/orgmemory/core/knowledge/asset/package-info.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.javacore/src/test/java/com/orgmemory/core/ModulithVerificationTests.javacore/src/test/java/com/orgmemory/core/knowledge/ExternalPrincipalRetrievalIntegrationTests.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeCatalogServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolverTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssemblerTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeContentTypeTests.java
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
- GitHub Check: Backend · Java 25
🧰 Additional context used
📓 Path-based instructions (5)
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: Read the repository guidance map and relevant sections ofARCHITECTURE.mdbefore making changes; read applicable subproject guidance after the root guidance.
Readdocs/guidelines/agent-safety.mdbefore retrieval, AI, MCP, permission, upload, graph, or export work.
Never commit secrets or customer data.
Pair persisted-model changes with a Flyway migration.
Use the testing harness; a terminating clean test is the JVM context gate, andbootRunis not verification.
Files:
apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeIngestionIntegrationTests.javaapps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javacore/src/main/java/com/orgmemory/core/knowledge/asset/package-info.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.javacore/src/test/java/com/orgmemory/core/ModulithVerificationTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.javacore/src/test/java/com/orgmemory/core/knowledge/ExternalPrincipalRetrievalIntegrationTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeCatalogServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeContentTypeTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.javaapps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.javacore/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.javaapps/worker/src/main/java/com/orgmemory/worker/authorization/KnowledgeAuthorizationConvergenceScheduler.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssemblerTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolverTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.javacore/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.java
**/*.{java,gradle,gradle.kts,ts,tsx,js,jsx}
📄 CodeRabbit inference engine (CLAUDE.md)
Before using unfamiliar Spring Boot 4, Spring Modulith 2, Spring AI 2, Gradle, React, Vite, Tailwind, TypeScript, Next.js, or Fumadocs APIs, consult Context7 or current official documentation and the relevant project verification skill.
Files:
apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeIngestionIntegrationTests.javaapps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javacore/src/main/java/com/orgmemory/core/knowledge/asset/package-info.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.javacore/src/test/java/com/orgmemory/core/ModulithVerificationTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.javacore/src/test/java/com/orgmemory/core/knowledge/ExternalPrincipalRetrievalIntegrationTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeCatalogServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeContentTypeTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.javaapps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.javacore/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.javaapps/worker/src/main/java/com/orgmemory/worker/authorization/KnowledgeAuthorizationConvergenceScheduler.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssemblerTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolverTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.javacore/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.java
**/*.java
📄 CodeRabbit inference engine (CLAUDE.md)
Apply IDE inspection only to edited backend Java files.
Files:
apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeIngestionIntegrationTests.javaapps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javacore/src/main/java/com/orgmemory/core/knowledge/asset/package-info.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.javacore/src/test/java/com/orgmemory/core/ModulithVerificationTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.javacore/src/test/java/com/orgmemory/core/knowledge/ExternalPrincipalRetrievalIntegrationTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeCatalogServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeContentTypeTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.javaapps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.javacore/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.javaapps/worker/src/main/java/com/orgmemory/worker/authorization/KnowledgeAuthorizationConvergenceScheduler.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceServiceTests.javacore/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssemblerTests.javacore/src/test/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolverTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.javacore/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.javacore/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.javacore/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.java
apps/api/src/main/java/**/*.java
⚙️ CodeRabbit configuration file
apps/api/src/main/java/**/*.java: Enforce the browser-BFF and resource-server boundaries. Authentication
must resolve an active internal actor through the explicit issuer and
subject binding. Reject identity, tenant, roles, or permissions supplied
by request payloads, JWT email, or untrusted JWT role claims.
Files:
apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.java
core/src/main/java/com/orgmemory/core/{authorization,knowledge,permission}/**/*.java
⚙️ CodeRabbit configuration file
core/src/main/java/com/orgmemory/core/{authorization,knowledge,permission}/**/*.java: Treat PostgreSQL ACL evidence as canonical and OpenFGA as the relationship
authorization decision point. Authorization must fail closed. Filtering
must happen before ranking, LIMIT, graph traversal, answer generation,
export, and citation rendering. Flag metadata or timing leak paths.
Files:
core/src/main/java/com/orgmemory/core/knowledge/asset/package-info.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.javacore/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.javacore/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.javacore/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.javacore/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.javacore/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.javacore/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.javacore/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.java
🧠 Learnings (2)
📚 Learning: 2026-07-24T22:53:12.988Z
Learnt from: kl3inIT
Repo: kl3inIT/OrgMemory PR: 40
File: apps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.java:0-0
Timestamp: 2026-07-24T22:53:12.988Z
Learning: For OrgMemory knowledge content handling in the API, treat `KnowledgeContentType` as the single closed policy (source of truth) for: canonical storage media type, browser-safe response media type, upload eligibility rules, and inline disposition behavior. Do not duplicate or bypass these decisions in controllers/services; route media-type and disposition logic through `KnowledgeContentType`. Specifically, Markdown should be stored with the canonical media type `text/markdown`, but served as `text/plain` when returning browser-safe citation preview content.
Applied to files:
apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.java
📚 Learning: 2026-07-26T05:46:47.443Z
Learnt from: kl3inIT
Repo: kl3inIT/OrgMemory PR: 61
File: apps/mcp/src/main/java/com/orgmemory/mcp/McpSecurityConfiguration.java:50-52
Timestamp: 2026-07-26T05:46:47.443Z
Learning: In OrgMemory, treat the `apps/mcp` and `apps/api` as independent protocol adapter modules. When adjusting OAuth/wire-level scopes, do not introduce a shared Java constant or create a code dependency from `apps/mcp` to `apps/api` solely to deduplicate scope values. Instead, keep OAuth/scope constants adapter-local (e.g., in the relevant adapter/security configuration classes) and ensure cross-adapter consistency via automated realm/OAuth/authorization tests, rather than via shared wiring-level constants or cross-module references.
Applied to files:
apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.javaapps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.java
🔇 Additional comments (57)
core/src/main/java/com/orgmemory/core/knowledge/AuthorizationResourceDirectory.java (1)
3-4: LGTM!core/src/main/java/com/orgmemory/core/knowledge/GraphIndexJobQueue.java (1)
3-7: LGTM!core/src/main/java/com/orgmemory/core/knowledge/GraphIndexLifecycleService.java (1)
3-9: LGTM!core/src/main/java/com/orgmemory/core/knowledge/GraphIndexingCoordinator.java (1)
3-9: LGTM!core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceIngestionCoordinator.java (1)
6-6: LGTM!core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceRevision.java (1)
5-5: LGTM!core/src/main/java/com/orgmemory/core/knowledge/sourceledger/SourceUploadService.java (1)
3-3: LGTM!core/src/main/java/com/orgmemory/core/knowledge/KnowledgeCatalogService.java (1)
3-3: LGTM!core/src/main/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolver.java (1)
3-5: LGTM!core/src/main/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationService.java (1)
3-6: LGTM!core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorReconciler.java (1)
4-7: LGTM!core/src/main/java/com/orgmemory/core/knowledge/connector/ConnectorSourceRevisionCoordinator.java (1)
5-5: LGTM!core/src/main/java/com/orgmemory/core/knowledge/sourceledger/KnowledgeIngestionService.java (1)
18-25: LGTM!apps/api/src/main/java/com/orgmemory/api/knowledge/CitationContentController.java (1)
5-5: LGTM!apps/api/src/main/java/com/orgmemory/api/knowledge/KnowledgeAssetLifecycleController.java (1)
6-7: LGTM!apps/api/src/test/java/com/orgmemory/api/knowledge/KnowledgeIngestionIntegrationTests.java (1)
24-25: LGTM!apps/worker/src/main/java/com/orgmemory/worker/authorization/KnowledgeAuthorizationConvergenceScheduler.java (1)
3-3: LGTM!core/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleServiceTests.java (1)
1-1: LGTM!core/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceServiceTests.java (1)
1-2: LGTM!core/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssemblerTests.java (1)
1-3: LGTM!core/src/test/java/com/orgmemory/core/knowledge/asset/KnowledgeContentTypeTests.java (1)
1-1: LGTM!apps/worker/src/main/java/com/orgmemory/worker/ingestion/SourceIngestionProcessor.java (1)
23-27: LGTM!core/src/test/java/com/orgmemory/core/ModulithVerificationTests.java (1)
46-52: LGTM!core/src/test/java/com/orgmemory/core/knowledge/ExternalPrincipalRetrievalIntegrationTests.java (1)
3-5: LGTM!core/src/test/java/com/orgmemory/core/knowledge/GraphIndexLifecycleServiceTests.java (1)
3-9: LGTM!core/src/test/java/com/orgmemory/core/knowledge/GraphIndexingCoordinatorTests.java (1)
3-9: LGTM!core/src/test/java/com/orgmemory/core/knowledge/KnowledgeCatalogServiceTests.java (1)
9-9: LGTM!core/src/test/java/com/orgmemory/core/knowledge/KnowledgeEvidenceScopeResolverTests.java (1)
3-5: LGTM!core/src/test/java/com/orgmemory/core/knowledge/KnowledgeGraphCurationServiceTests.java (1)
3-5: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAsset.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetAuthorizationScope.java (1)
1-8: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLink.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceLinkRepository.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceReport.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAuthorizationConvergenceService.java (1)
1-2: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraft.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkDraftAssembler.java (1)
1-3: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeChunkProjectionStore.java (2)
1-4: LGTM!
5-5: 🗄️ Data Integrity & IntegrationNo change needed.
PgVectorLiteralis public, and accessing it fromknowledge.assetis allowed becauseknowledge.assetis declared as an open nested module.core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeContentType.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetEvidenceRole.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetLifecycleService.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetNotFoundException.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationCoordinator.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutbox.java (1)
1-3: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/PublishKnowledgeAssetCommand.java (1)
1-3: LGTM!core/src/main/java/com/orgmemory/core/knowledge/PgVectorLiteral.java (1)
5-9: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationService.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationOutboxRepository.java (1)
1-1: LGTM!Also applies to: 27-27
core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationState.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationStatus.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetPublicationUnavailableException.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRef.java (1)
1-1: LGTM!core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetRepository.java (1)
1-1: LGTM!Also applies to: 34-34
core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersion.java (1)
1-1: LGTM!Also applies to: 143-153, 167-169
core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionRepository.java (1)
1-3: LGTM!Also applies to: 40-40, 68-68
core/src/main/java/com/orgmemory/core/knowledge/asset/KnowledgeAssetVersionStatus.java (1)
1-1: LGTM!
Summary
knowledge.assetnested Spring Modulith boundaryknowledgeroot package from 89 to 63 Java filesVerification
gradlew.bat --no-daemon compileJavagradlew.bat --no-daemon compileTestJavagradlew.bat --no-daemon :core:testgradlew.bat --no-daemon clean test(108 tasks, 5m26s)python scripts/check_docs.pygit diff --checkgatesMigration debt
Scope
skip-release: internal package refactor with no published behavior change
Summary by CodeRabbit
Refactor
Tests