Add language guards for Python-only endpoints#1997
Add language guards for Python-only endpoints#1997mohammedahmed18 wants to merge 1 commit intomainfrom
Conversation
Issue #9: process_review() called get_new_explanation() and get_optimization_review() without checking language. These are Python-only endpoints that would fail or return incorrect results for JavaScript/TypeScript. Root Cause: - process_review() (line 2459) calls two Python-only endpoints: - get_new_explanation() (line 2575) - no language check - get_optimization_review() (line 2638) - no language check - Same pattern as Issue #8 (adaptive_optimize) which was already fixed - Latent bug - only manifests when JS/TS optimization succeeds Fix: - Added language guard before get_new_explanation: if language == "python" - Added language guard before get_optimization_review: if language == "python" - For non-Python languages, use original explanation from AI service - For non-Python languages, skip optimization review (sets empty review) Impact: - Latent bug (not yet triggered because all JS/TS optimizations fail at baseline) - Would block JS/TS optimization success once baseline issues are resolved - Severity: MEDIUM (latent, not blocking current work) Testing: - Existing function_optimizer tests pass - No linting/type errors Category: Latent bug (will reproduce when JS/TS optimizations succeed) Type: Missing language guard in CLI Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
Claude finished @mohammedahmed18's task in 3m 22s —— View job PR Review Summary
Prek Checks✅ All ruff/format checks pass. No issues. Code ReviewCorrectness: The guards are logically correct. The change at Per
These new CLAUDE.md: "Everything that can be tested should have tests." PR #1995 added 195 lines of tests for the Duplicate DetectionNo duplicates detected. The guards follow the same pattern already used in this file. Last updated: 2026-04-04 |
**Problem:** The `maybe_repair_optimization()` method called `/ai/code_repair` (a Python-only endpoint) without checking if the language is Python first. This would cause errors when JavaScript/TypeScript optimizations reach the repair stage. **Root Cause:** File: codeflash/languages/function_optimizer.py (line 2957) - `repair_optimization()` calls `/ai/code_repair` endpoint - `/ai/code_repair` uses Python-specific tools (libcst for AST manipulation) - No language check before calling repair **Impact:** - Latent bug (not yet triggered in production) - Would block JS/TS optimization success once candidates reach repair stage - Severity: MEDIUM **Fix:** Added language guard at line 2948: - Check `self.function_to_optimize.language != "python"` - Skip repair for JavaScript/TypeScript/Java - Log debug message explaining why repair was skipped **Testing:** - Added tests/test_languages/test_code_repair_language_guard.py - Documents expected behavior for language checks - All existing tests pass - No linting/type errors **Trace IDs:** N/A (latent bug, not yet triggered) **Related Issues:** - Similar pattern to Issue #8 (adaptive_optimize) - PR #1995 - Similar pattern to Issue #9 (get_new_explanation, get_optimization_review) - PR #1997 Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Issue #9: Python-Only Endpoints Called Without Language Guards
Problem
The
process_review()method callsget_new_explanation()andget_optimization_review()without checking the language. These are Python-only endpoints that would fail or return incorrect results for JavaScript/TypeScript.Root Cause
File:
/opt/codeflash/codeflash/languages/function_optimizer.pyLine 2575:
get_new_explanation()called without language checkLine 2638:
get_optimization_review()called without language checkThis is the same pattern as Issue #8 (
adaptive_optimize) which was already fixed in PR #1995.Impact
Fix
Line 2575 - get_new_explanation:
Line 2638 - get_optimization_review:
For non-Python languages:
get_new_explanationreturnsNone→ uses original explanation from AI serviceget_optimization_reviewreturns empty review → PR proceeds without review ratingTesting
✅ Existing function_optimizer tests pass (5 tests)
✅ No linting/type errors (
uv run prek)✅ No regressions in optimization flow
Related Issues
adaptive_optimizecalled without language guardCategory
Latent bug (will reproduce when JS/TS optimizations succeed)
Files Changed
codeflash/languages/function_optimizer.py- Added language guards