Resolves #14007
Full KB sync now expands recoverable over-budget text chunks inside VectorService.embed() before tenant stamping and diffing, so the orchestrator sync path no longer reaches the final skip for issue-12065.md-class sources. VectorService keeps the final pre-provider refusal guardrail for unsplittable or still-over-budget inputs, and split rows keep deterministic oversizedSplit* metadata plus stable IDs.
Evidence: L2 (unit-level full VectorService.embed() route with mocked Chroma/provider plus ingestion regression suite) -> L2 required (full-sync route ACs). No residuals.
Related: #14000
Related: #13999
Deltas from ticket
- Moved common oversized text-splitting mechanics into
VectorService so the full-sync route and KnowledgeBaseIngestionService share the same splitter.
KnowledgeBaseIngestionService now supplies only its ingestion hash function when delegating split construction; it no longer carries duplicate line/byte splitting helpers.
- The full-sync pre-split size check is silent. Skip/friction diagnostics remain reserved for final refusal after splitting is attempted.
Test Evidence
npm run agent-preflight -- ai/services/knowledge-base/VectorService.mjs ai/services/knowledge-base/KnowledgeBaseIngestionService.mjs test/playwright/unit/ai/services/knowledge-base/VectorService.WorkVolumeBranching.spec.mjs test/playwright/unit/ai/services/knowledge-base/KnowledgeBaseIngestionService.spec.mjs passed.
npm run test-unit -- test/playwright/unit/ai/services/knowledge-base/VectorService.WorkVolumeBranching.spec.mjs test/playwright/unit/ai/services/knowledge-base/KnowledgeBaseIngestionService.spec.mjs passed: 50/50.
git diff --check passed.
- Pre-commit hooks passed, including
check-aiconfig-test-mutation.
- Freshness check passed after rebase:
merge-base HEAD origin/dev == origin/dev; outgoing log contained only be819ff5b2 fix(ai): cover full kb sync oversized splitting (#14007).
Post-Merge Validation
Commits
be819ff5b2 - fix(ai): cover full kb sync oversized splitting (#14007)
Evolution
The live restart validated that PR #14003 closed the tenant-ingestion path but not the orchestrator full-corpus sync path. This PR keeps #14000 closed and implements the fresh #14007 residual without raising provider limits or weakening the final guardrail.
Authored by Euclid (GPT-5, Codex Desktop). Session 9280140f-8b54-4462-9342-49cca7e226f4.
Resolves #14007
Full KB sync now expands recoverable over-budget text chunks inside
VectorService.embed()before tenant stamping and diffing, so the orchestrator sync path no longer reaches the final skip forissue-12065.md-class sources.VectorServicekeeps the final pre-provider refusal guardrail for unsplittable or still-over-budget inputs, and split rows keep deterministicoversizedSplit*metadata plus stable IDs.Evidence: L2 (unit-level full
VectorService.embed()route with mocked Chroma/provider plus ingestion regression suite) -> L2 required (full-sync route ACs). No residuals.Related: #14000 Related: #13999
Deltas from ticket
VectorServiceso the full-sync route andKnowledgeBaseIngestionServiceshare the same splitter.KnowledgeBaseIngestionServicenow supplies only its ingestion hash function when delegating split construction; it no longer carries duplicate line/byte splitting helpers.Test Evidence
npm run agent-preflight -- ai/services/knowledge-base/VectorService.mjs ai/services/knowledge-base/KnowledgeBaseIngestionService.mjs test/playwright/unit/ai/services/knowledge-base/VectorService.WorkVolumeBranching.spec.mjs test/playwright/unit/ai/services/knowledge-base/KnowledgeBaseIngestionService.spec.mjspassed.npm run test-unit -- test/playwright/unit/ai/services/knowledge-base/VectorService.WorkVolumeBranching.spec.mjs test/playwright/unit/ai/services/knowledge-base/KnowledgeBaseIngestionService.spec.mjspassed: 50/50.git diff --checkpassed.check-aiconfig-test-mutation.merge-base HEAD origin/dev == origin/dev; outgoing log contained onlybe819ff5b2 fix(ai): cover full kb sync oversized splitting (#14007).Post-Merge Validation
resources/content/issues/chunk-2/issue-12065.mdand verify the old[VectorService] Skipping over-budget embedding chunk before provider invocationlog is absent for that source.resources/content/issues/chunk-2/issue-12065.mdwithoversizedSplitmetadata inneo-knowledge-base.Commits
be819ff5b2-fix(ai): cover full kb sync oversized splitting (#14007)Evolution
The live restart validated that PR
#14003closed the tenant-ingestion path but not the orchestrator full-corpus sync path. This PR keeps #14000 closed and implements the fresh #14007 residual without raising provider limits or weakening the final guardrail.Authored by Euclid (GPT-5, Codex Desktop). Session 9280140f-8b54-4462-9342-49cca7e226f4.