Private
Public Access
conductor(track): mark rag_test_failures_20260615 as completed
Updated metadata.json: status=completed, completed_at=2026-06-15, verification_criteria filled with actual results. Updated tracks.md: status=shipped, 4-commit summary, test file added. Final result: 1288 pass + 4 skip + 0 fail. All 11 batched test tiers pass in 873.6s. First fully green baseline since 2026-06-12.
This commit is contained in:
+18
-7
@@ -636,19 +636,30 @@ Lightweight chronology; full spec/plan/state per track is in the linked folder.
|
||||
|
||||
*Out of scope (documented in spec §7): 4 RAG test fixes (separate RAG subsystem track), the `_send_<vendor>()` → `_send_<vendor>_result()` rename (not needed; tests work with current names), 23 lower-impact weak-type files (next major track: `data_structure_strengthening_20260606`), `live_gui_mock_injection_20260615` infrastructure (separate infrastructure track).*
|
||||
|
||||
#### Track: RAG Test Failures Fix (small bug-fix track) `[track-created: 2026-06-15]`
|
||||
#### Track: RAG Test Failures Fix (small bug-fix track) `[track-created: 2026-06-15]` `[shipped: 2026-06-15]`
|
||||
*Link: [./tracks/rag_test_failures_20260615/](./tracks/rag_test_failures_20260615/), Spec: [./tracks/rag_test_failures_20260615/spec.md](./tracks/rag_test_failures_20260615/spec.md), Plan: [./tracks/rag_test_failures_20260615/plan.md](./tracks/rag_test_failures_20260615/plan.md), Metadata: [./tracks/rag_test_failures_20260615/metadata.json](./tracks/rag_test_failures_20260615/metadata.json)*
|
||||
|
||||
*Status: 2026-06-15 — Active, ready for Tier 2 implementation. Small bug-fix track; first fully green baseline since `data_oriented_error_handling_20260606` shipped 2026-06-12.*
|
||||
*Status: 2026-06-15 — **Shipped**. 4 atomic commits. First fully green baseline since `data_oriented_error_handling_20260606` shipped 2026-06-12 (1288 pass + 4 skip + 0 fail; was 1282 + 4 + 3 pre-track). All 11 batched test tiers pass.*
|
||||
|
||||
*Goal: Fix the 3 remaining pre-existing test failures (down from 4 as the parent track documented; `test_rag_integration.py` was inadvertently fixed by `public_api_migration_and_ui_polish_20260615` Phase 2 follow-up commit `26e1b652`). All 3 share the same root cause: `'NoneType' object has no attribute 'get'` error from the RAG sync worker at `src/app_controller.py:_do_rag_sync`. The error is captured by the `except` clause at line 1480 and set as `rag_status`.*
|
||||
*Goal: Fix the 3 remaining pre-existing test failures (down from 4 as the parent track documented; `test_rag_integration.py` was inadvertently fixed by `public_api_migration_and_ui_polish_20260615` Phase 2 follow-up commit `26e1b652`). All 3 share the same root cause: `'NoneType' object has no attribute 'get'` error in `src/rag_engine.py`, surfaced via `_rebuild_rag_index` → `get_all_indexed_paths()` (line 331: `m.get('path')` on `None` metadata) and `_validate_collection_dim_result` (line 150: `if not embeddings` raising `ValueError` on non-empty numpy arrays).*
|
||||
|
||||
*3 tests fixed by this track:*
|
||||
- *`tests/test_rag_phase4_final_verify.py::test_phase4_final_verify` (fails at line 65)*
|
||||
- *`tests/test_rag_phase4_stress.py::test_rag_large_codebase_verification_sim` (fails at line 48)*
|
||||
- *`tests/test_rag_visual_sim.py::test_rag_full_lifecycle_sim` (fails at line 32)*
|
||||
- *`tests/test_rag_phase4_final_verify.py::test_phase4_final_verify` (fails at line 65) — **PASSES** as of commit `35581163`*
|
||||
- *`tests/test_rag_phase4_stress.py::test_rag_large_codebase_verification_sim` (fails at line 48) — **PASSES** as of commit `35581163`*
|
||||
- *`tests/test_rag_visual_sim.py::test_rag_full_lifecycle_sim` (was listed as failing in spec §1.1, but actually passed at track execution time; the chromadb init path was already protected by the new tests in `test_rag_sync_none_error.py`)*
|
||||
|
||||
*5 phases: Phase 1 (investigation + reproducing test), Phase 2 (fix), Phase 3 (full + batched test verification), Phase 4 (docs update conditional on `docs/guide_rag.md` existence), Phase 5 (metadata + tracks.md). ~10 tasks, 5-7 atomic commits, 0.5-1 day Tier 2 work.*
|
||||
*Implementation summary (4 atomic commits):*
|
||||
- *`fix(rag): handle None metadata in get_all_indexed_paths and non-empty numpy in dim check` (`35581163`) — the production fix*
|
||||
- *`conductor(checkpoint): Phase 3 complete` (`6a0ac357`) — empty checkpoint*
|
||||
- *`docs(rag): add troubleshooting section for NoneType.get error` (`d89c5810`) — guide_rag.md update*
|
||||
- *`conductor(track): mark rag_test_failures_20260615 as completed` (pending) — metadata + tracks.md*
|
||||
|
||||
*New test file: `tests/test_rag_sync_none_error.py` (3 tests, all pass):*
|
||||
- *`test_dim_check_does_not_raise_on_non_empty_ndarray` — guards against the `if not embeddings` numpy ValueError*
|
||||
- *`test_get_all_indexed_paths_handles_none_metadata` — guards against `m.get('path')` on None*
|
||||
- *`test_get_all_indexed_paths_returns_paths_with_metadata` — positive control that normal flow still works*
|
||||
|
||||
*5 phases: Phase 1 (investigation + reproducing test), Phase 2 (fix), Phase 3 (full + batched test verification), Phase 4 (docs update), Phase 5 (metadata + tracks.md). ~10 tasks, 4 atomic commits, ~30 min Tier 2 work (much faster than the 0.5-1 day estimate).*
|
||||
|
||||
*Critical audit findings (2026-06-15): The `RAGConfig()` default is correct (vector_store is not None; provider is 'mock' by default). The `RAGEngine` with mock vector store constructs successfully (verified by direct instantiation). The error originates in the RAG sync worker at `src/app_controller.py:1480`. Most likely candidates for the `.get(None)` call: `src/rag_engine.py:149` (embeddings = res.get('embeddings') in `_validate_collection_dim_result`) or a subtle config field that becomes None. Diagnostic strategy: add `traceback.format_exc()` to the except clause, capture the full traceback, identify the exact call site, fix surgically, remove the diagnostic.*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user