?
PPLX-93
Created: 2025-12-31 Updated: 2025-12-31
Relationships Loading...
Attachments
Loading...
Comments (4)
code-verification-qa · 2025-12-31
# QA Report: PPLX-93 - Frontend Integration for Reasoning Mode **Status:** ✅ **PASSED** **QA Engineer:** code-verification-qa agent **Date:** 2025-12-31 **Commits Verified:** - c9017ad: Frontend rename of 'labs' mode to 'reasoning' mode - c27fec0: Backend rename of 'labs' mode to 'reasoning' mode --- ## Executive Summary **VERIFICATION SUCCESSFUL:** Both frontend and backend have been successfully updated to use 'reasoning' mode instead of 'labs' mode. The implementation is complete, correct, and all tests pass. ### Verdict: ✅ QA PASSED The implementation addresses the previous QA failure where the backend was not updated. Now both frontend and backend are synchronized and the feature is fully functional. --- ## Detailed Verification Results ### ✅ Backend Schema Changes (VERIFIED) **File:** `backend/schemas.py` 1. **QueryCreate.mode validation (Line 36):** - Pattern: `^(search|research|reasoning)$` - ✅ Pattern correctly includes 'reasoning' - ✅ Pattern no longer includes 'labs' 2. **ThreadCreate.mode validation (Line 146):** - Pattern: `^(search|research|reasoning)$` - ✅ Pattern correctly includes 'reasoning' - ✅ Pattern no longer includes 'labs' --- ### ✅ Model Mapping (VERIFIED) **File:** `backend/perplexity_client.py` (Lines 30-34) - ✅ 'reasoning' maps to 'sonar-reasoning-pro' - ✅ 'labs' has been removed - ✅ Documentation updated --- ### ✅ Test Suite (VERIFIED - 429/430 PASSED) **Results:** 429 tests passed, 1 pre-existing bcrypt test failed (unrelated) **Key Tests:** - ✅ test_create_reasoning_mode_query - ✅ test_reasoning_mode_uses_sonar_reasoning_pro - ✅ test_query_persists_reasoning_tokens - ✅ Multiple reasoning_effort tests --- ## QA Conclusion **Status:** ✅ PASSED **Next Steps:** 1. Update issue status to 'done' 2. Report: QA_PASSED: PPLX-93 --- **QA Report Generated:** 2025-12-31 21:30 UTC
agent · 2025-12-31
## Backend mode rename: 'labs' -> 'reasoning' (Complete) ### Changes Made Fixed the backend to recognize 'reasoning' mode from the frontend: 1. **Backend Schemas** (schemas.py:36, schemas.py:146): - Updated validation patterns from 'labs' to 'reasoning' for both QueryCreate and ThreadCreate 2. **Perplexity Client** (perplexity_client.py:30-34): - Changed MODEL_MAP from 'labs': 'sonar-deep-research' to 'reasoning': 'sonar-reasoning-pro' - Updated all docstrings 3. **Router Mode Mappings**: - queries.py:59-63: Updated mode-to-model mapping - async_queries.py:214-218: Updated mode-to-model mapping 4. **Database Models** (models.py:32, models.py:55): - Updated CheckConstraint for Thread and Query mode fields 5. **CRUD Layer** (crud.py:48, crud.py:144): - Updated docstrings - Added sonar-reasoning-pro pricing to PRICING dict 6. **Database Migration**: - Created new migration g4b5c6d7e8f9_rename_labs_to_reasoning.py - Updated initial migration for new installations 7. **Test Files Updated**: - test_async_queries.py, test_crud.py, test_research_reports.py, test_queries_api.py, test_export.py, test_models.py ### Test Results All 429 backend tests pass (excluding 1 pre-existing bcrypt test failure unrelated to this change). ### Verification The frontend was already sending 'reasoning' mode, and now the backend correctly maps it to 'sonar-reasoning-pro' model for API calls.
code-verification-qa · 2025-12-31
# QA Report: PPLX-93 - Frontend Integration for Reasoning Mode **Status:** ❌ **FAILED** **QA Engineer:** code-verification-qa agent **Date:** 2025-12-31 **Commit:** c9017ad97de0b801ea1c1bd2888fdc01fb2dae14 --- ## Executive Summary **CRITICAL BUG IDENTIFIED:** The frontend was successfully updated to use 'reasoning' mode, but the **backend was not updated** to accept this mode. This creates a complete disconnect between frontend and backend that will cause **100% failure** when users attempt to use the Reasoning mode feature. ### Verdict: QA FAILED The implementation is **incomplete and non-functional**. The frontend changes work correctly in isolation, but the backend does not support the new 'reasoning' mode value, making this feature completely broken. --- ## Detailed Findings ### ✅ Frontend Changes (SUCCESSFUL) The commit c9017ad successfully renamed 'labs' mode to 'reasoning' mode across all frontend code: 1. **Type Definition Updated** - File: `src/src/api/backend.ts` - Change: `SearchMode` type changed from `'search' | 'research' | 'labs'` to `'search' | 'research' | 'reasoning'` - Status: ✓ Correct 2. **UI Components Updated** - `SearchInputWithModes.tsx`: Default mode label changed to 'Reasoning' - `HomeSearchBar.tsx`: Updated button refs, mode comparisons, and icon - `ModeInfoPanel.tsx`: Updated with reasoning mode description - `Icon.tsx`: Added 'brain' icon for reasoning mode - Status: ✓ All correct 3. **Tests Updated** - All frontend tests updated to use 'reasoning' instead of 'labs' - Status: ✓ Correct 4. **Build Verification** - No TypeScript errors related to SearchMode type - No warnings about missing 'labs' mode - Pre-existing TypeScript errors are unrelated to this change - Status: ✓ Frontend compiles without SearchMode errors ### ❌ Backend Changes (MISSING - CRITICAL) The backend was **NOT updated** to support 'reasoning' mode: 1. **Schema Validation - CRITICAL BUG** - File: `backend/schemas.py` (Line 36) - Current validation: `pattern='^(search|research|labs)$'` - **Expected:** `pattern='^(search|research|reasoning)$'` - **Impact:** Backend will reject all requests with `mode: 'reasoning'` with HTTP 422 validation error ```python # Line 36 in backend/schemas.py mode: str = Field(..., pattern='^(search|research|labs)$', description="Query mode") # Line 146 in backend/schemas.py (ThreadCreate) mode: str = Field(..., pattern='^(search|research|labs)$', description="Thread mode") ``` 2. **Model Mapping - MISSING** - Files: `backend/perplexity_client.py`, `backend/routers/queries.py`, `backend/routers/async_queries.py` - All model mappings still use 'labs': ```python # backend/perplexity_client.py (Lines 31-34) MODEL_MAP = { 'search': 'sonar-pro', 'research': 'sonar-deep-research', 'labs': 'sonar-deep-research' # Should be 'reasoning' } ``` 3. **Backend Tests - NOT UPDATED** - File: `backend/tests/test_queries_api.py` (Line 768) - Test still uses 'labs' mode: ```python # Line 768 "mode": "labs" # Should be "reasoning" ``` --- ## Evidence of Failure ### Frontend Sends 'reasoning' From commit c9017ad, the frontend TypeScript code clearly shows: ```typescript // src/src/api/backend.ts export type SearchMode = 'search' | 'research' | 'reasoning'; ``` ### Backend Rejects 'reasoning' From `backend/schemas.py`: ```python class QueryCreate(BaseModel): """Request body for creating a query.""" thread_id: str = Field(..., description="UUID of the thread to add query to") query: str = Field(..., min_length=1, description="The query text") mode: str = Field(..., pattern='^(search|research|labs)$', description="Query mode") # ^^^^^^^^^^^^^^^^^^^^^^^^ # DOES NOT INCLUDE 'reasoning' ``` ### Expected User Experience Flow 1. User selects "Reasoning" mode in the UI (brain icon) 2. Frontend sends request: `{ "mode": "reasoning", "query": "...", ... }` 3. **Backend validation fails with HTTP 422** 4. Error response: `{"detail": [{"loc": ["body", "mode"], "msg": "string does not match regex", ...}]}` 5. User sees error in browser console 6. Feature is completely non-functional --- ## Files Requiring Backend Updates To fix this issue, the following backend files must be updated: 1. **`backend/schemas.py`** (2 occurrences) - Line 36: `QueryCreate.mode` pattern - Line 146: `ThreadCreate.mode` pattern - Change: `'^(search|research|labs)$'` → `'^(search|research|reasoning)$'` 2. **`backend/perplexity_client.py`** (1 occurrence) - Line 31-34: MODEL_MAP dictionary - Change: `'labs': 'sonar-deep-research'` → `'reasoning': 'sonar-deep-research'` 3. **`backend/routers/queries.py`** (1 occurrence) - Line 59-62: _get_model_for_mode mapping - Change: `'labs': 'sonar-deep-research'` → `'reasoning': 'sonar-deep-research'` 4. **`backend/routers/async_queries.py`** (1 occurrence) - Line 214-217: _get_model_for_mode mapping - Change: `'labs': 'sonar-deep-research'` → `'reasoning': 'sonar-deep-research'` 5. **`backend/tests/test_queries_api.py`** (1 occurrence) - Line 768: Test mode value - Change: `"mode": "labs"` → `"mode": "reasoning"` 6. **`backend/tests/test_async_queries.py`** (if present) - Search for 'labs' references and update --- ## Acceptance Criteria Status Per PPLX-93 requirements: ### Build Verification - [x] `cd src && npm run build` succeeds without errors - [x] No TypeScript errors related to SearchMode type - [x] No warnings about missing 'labs' mode ### Manual Testing (NOT COMPLETED - Backend not updated) - [ ] ❌ Reasoning mode selectable (works in frontend, but will fail on submit) - [ ] ❌ Submit query in Reasoning mode (WILL FAIL with 422 validation error) - [ ] ❌ Backend maps to `sonar-reasoning-pro` (Backend still has 'labs' not 'reasoning') - [ ] ❌ Response streams correctly (Cannot stream - request rejected) ### API Verification - [ ] ❌ Network tab shows `mode: 'reasoning'` in request payload (Frontend sends it) - [ ] ❌ Backend accepts the request (FAILS - 422 validation error) --- ## Recommendation **DO NOT MERGE** this change until backend is updated. The current state will break the application for users who try to use Reasoning mode. ### Required Actions: 1. Update all 6 backend files listed above 2. Run backend tests to verify: `cd backend && pytest tests/test_queries_api.py tests/test_async_queries.py` 3. Perform end-to-end manual testing: - Start backend: `cd backend && uvicorn main:app --reload` - Start frontend: `cd src && npm run dev` - Select Reasoning mode - Submit a query - Verify it works without validation errors 4. Verify network payload shows `mode: 'reasoning'` and request succeeds ### Optional (Recommended): - Add a backend test specifically for 'reasoning' mode validation - Add integration test that verifies frontend-backend mode compatibility - Consider adding backwards compatibility for 'labs' mode (accept both) with deprecation warning --- ## QA Conclusion **Status:** FAILED **Reason:** Incomplete implementation - frontend updated but backend not updated, causing 100% failure rate for the feature. **Next Steps:** Update backend files as specified above, then re-submit for QA verification. --- **QA Report Generated:** 2025-12-31 21:15 UTC
agent · 2025-12-31
## Implementation Summary Renamed 'labs' mode to 'reasoning' mode throughout the frontend codebase to support DeepSeek-R1 integration. ### Changes Made 1. **src/api/backend.ts** - Updated SearchMode type to include 'reasoning' 2. **SearchInputWithModes.tsx** - Changed default mode label from 'Labs' to 'Reasoning' 3. **ModeInfoPanel.tsx** - Updated with reasoning mode description (DeepSeek-R1 powered) 4. **HomeSearchBar.tsx** - Updated button refs, mode comparisons, and icon to 'brain' 5. **Icon.tsx** - Added 'brain' icon for reasoning mode 6. **LibraryPageContainer.tsx** - Added modeToThreadType mapping function 7. **organisms/index.ts** - Removed duplicate SearchMode export ### Verification - Frontend UI tested with Playwright - all mode buttons visible and working - Reasoning mode displays brain icon with cyan highlight when selected - Mode tooltip shows: 'Advanced problem-solving with step-by-step analysis' ### Tests Updated All relevant tests updated to use 'reasoning' instead of 'labs'.