| Metadata | Value |
|---|---|
| Status | Final |
| Version | 1.2.1 |
| Last Updated | 2026-09-10 |
| Author | Sangita Grantha Architect |
| Document Type | Evidence record |
[!NOTE] Historical evidence: results, counts, commands, and observations below belong to the original work described here. The editorial update date is not a new test or corpus verification. For present behavior, use current feature map.
Following the initial E2E validation of TRACK-063, several critical failures were identified in the multi-source ingestion pipeline. Specifically, the system failed to correctly ingest Sanskrit variants from mdskt.pdf, produced garbled text in English variants, and created duplicate records due to composer identity mismatches.
Through a multi-stage remediation process involving Python extractor patches, Kotlin backend refactoring, and database-level fixes, the pipeline has been hardened to support a clean, unified “System of Record.”
p¯ujite) instead of proper IAST (pūjite).normalize_garbled_diacritics utility was correctly applied to titles, but the body text extractor in the Python worker was skipping this step.tools/krithi-extract-enrich-worker/src/worker.py to normalize the entire segment text block.tools/fix_db_garbled.py.mdskt.pdf)/ToUnicode map.VariantMatchingService correctly identified matches but never wrote the resulting lyrics to the database.extractor.py to automatically trigger OCR fallback when replacement characters exceed 10% of the page text.persistMatch() in VariantMatchingService.kt. Approved matches (including auto-approved ones with >85% confidence) now trigger the creation of krithi_lyric_variant records.ComposerRepository and RagaRepository in the DAL were using simpler normalization than the API’s NameNormalizationService. “Muthuswami” vs “Muttuswami” resulted in separate DB IDs, breaking the metadata-based deduplication.TransliterationCollapse.kt in the shared-domain module to unify transliteration rules.DeduplicationService to use a 75% similarity threshold when metadata (Composer/Raga) matches, and 85% otherwise.anantabālakṛṣṇa verified as stored with correct Unicode diacritics.worker.py (normalization), extractor.py (OCR trigger), diacritic_normalizer.py (new Rules).VariantMatchingService.kt (persistence), ImportService.kt (enrichment-on-match), NameNormalizationService.kt (shared logic).KrithiRepository.kt (idempotency), ComposerRepository.kt (normalization), VariantMatchRepository.kt (findById).TransliterationCollapse.kt (canonical rules).01_reference_data.sql (seed alignment), 30__fix_entity_resolution_cache_schema.sql.The “System of Record” is now significantly more robust. While 3 sets of duplicates remain in the current test database due to the earlier split-identity issues, the underlying logic is now patched to prevent this in all future imports. A final manual cleanup of these 3 records via the Admin UI will bring the system to 100% health.
Report generated by Sangita Grantha Architect.