CI / CI (pull_request) Successful in 4m4s
1. PersistSynthesisActivity - Error propagation (FIXED) - Was: Swallowed errors, returned success on failure - Now: Collects errors, returns them (fail-safe semantics) - Prevents data loss on persistence failures 2. ExtractFactsActivity - Input validation (FIXED) - Was: No validation on subject/object length - Now: Validates non-empty, truncates to 500 chars - Prevents garbage extraction and infinite object sizes 3. DetectContradictionsActivity & PersistSynthesis - Test coverage (FIXED) - Added tests for validation logic - TestExtractFacts_WithValidation: Verifies truncation - TestExtractFacts_SkipsEmpty: Verifies empty skipping - TestPersistSynthesis_EmptyInput: Verifies structure All tests passing (10/10 synthesis tests): ✅ Entity extraction (4 tests) ✅ Fact extraction (3 tests) ✅ Helper functions (3 tests) Fixes: - PersistSynthesisActivity: errors collected + returned - ExtractFactsActivity: subject/object validated + truncated - Tests: Added validation and truncation coverage No breaking changes. Production-ready after deployment.