| Metadata | Value |
|---|---|
| Status | Active |
| Version | 1.0.0 |
| Last Updated | 2026-09-10 |
| Author | Sangeetha Grantha Team |
| 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.
Converge on CanonicalExtractionDto as the single payload format for imported_krithis.parsed_payload and deprecate ScrapedKrithiMetadata. Eliminate the format schism that caused TRACK-094’s silent lyric persistence failure.
Two competing payload formats evolved independently:
ScrapedKrithiMetadata (TRACK-001): Produced by Kotlin WebScrapingServiceCanonicalExtractionDto (TRACK-041): Produced by Python extraction worker, defined in shared domain moduleThe gap: LyricVariantPersistenceService was never updated to read CanonicalExtractionDto, causing silent failures.
imported_krithis.parsed_payloadScrapedKrithiMetadata, ScrapedSectionDto, ScrapedLyricVariantDto, ScrapedTempleDetails as @Deprecated with ReplaceWith annotationsIWebScraper parameter from ImportRoutes, ScrapeWorker, and BulkImportWorkerServiceImplwebScrapingService from AppModule DI wiringIWebScraper interfaceImportRoutesTest to remove mock IWebScraper usageIWebScraper, WebScrapingServiceImpl, DeterministicWebScraperStructuralVotingEngine from ScrapedSectionDto to CanonicalSectionDtoDecision: CanonicalExtractionDto is the single canonical format going forward.
Rationale: Lives in shared domain module, cleanly separates structure from text, includes provenance metadata, supports pre-normalized matching keys, and is the output format of the active Python extraction engine.
| File | Change |
|---|---|
modules/backend/api/.../services/WebScrapingService.kt |
@Deprecated annotations |
modules/backend/api/.../routes/ImportRoutes.kt |
Removed IWebScraper parameter |
modules/backend/api/.../bulkimport/workers/ScrapeWorker.kt |
Removed IWebScraper parameter |
modules/backend/api/.../bulkimport/BulkImportWorkerServiceImpl.kt |
Removed webScrapingService from constructor |
modules/backend/api/.../di/AppModule.kt |
Removed DI wiring for IWebScraper in worker |
modules/backend/api/src/test/.../routes/ImportRoutesTest.kt |
Removed mock IWebScraper |
Ref: application_documentation/10-implementations/track-096-payload-format-convergence.md