Commit Graph
2 Commits
Author SHA1 Message Date
ed c5a119d63f refactor(ai_client): obliterate 5 legacy model-list wrappers (Phase 4)
Phase 4 (5 of 9 cruft sites obliterated):

OBLITERATED wrappers:
1. _reread_file_items (4 callers in _send_gemini + _send_gemini_cli + 2 others)
2. _list_anthropic_models (1 caller in list_models)
3. _list_gemini_models (1 caller in list_models)
4. _extract_gemini_thoughts (1 caller in _send_gemini)
5. _list_minimax_models (2 callers in _set_minimax_provider_result + set_provider)

Migration: each caller now uses the _result sibling directly with .ok check
+ .data extraction. The Result[T] error context (structured ErrorInfo) is now
propagated instead of dropped. _send_gemini gets .data with explicit .ok check.

Updated tests to assert OBLITERATED state (5 sub-track 5 tests inverted from
'_legacy_preserved' to '_legacy_obliterated'):
- tests/test_baseline_result.py: test_phase9_redo_modules_import_cleanly
- tests/tier2/phase10_invariant_test.py: _list_gemini_models removed from list
- tests/tier2/phase10_site1_test.py: _legacy_unchanged -> _legacy_obliterated
- tests/tier2/phase11_invariant_test.py: _extract/_list_minimax moved to obliterated
- tests/tier2/phase11_sites78_test.py: _legacy_preserved -> _legacy_obliterated
- tests/tier2/phase12_invariant_test.py: _list_anthropic moved to obliterated
- tests/tier2/phase12_site4_test.py: _legacy_preserved -> _legacy_obliterated
- tests/test_gemini_thinking_format.py: helper uses _result directly
- tests/test_cruft_removal.py: 5 new obliterated-wrappers invariant tests

Test result: 122/122 pass (31 baseline + 16 heuristic + 9 cruft + 5 thinking + 61 tier2).
Audit gate: src/ai_client.py --strict exits 0 (no new violations introduced).
Wrapper count: 9 -> 3 (Phase 5-6 remaining: rag_engine 1, gui_2 2).
2026-06-20 20:01:25 -04:00
ed a9969563dc conductor(plan): mark Phase 12 complete (ai_client rethrow; 6 sites addressed)
Phase 12: ai_client rethrow classification (6 sites).

Site 1 (L276 _load_credentials): added 'from e' (Pattern 1)
Sites 2+3 (L878+L879 _default_send nested): added 'from None' (Pattern 1)
Site 4 (L1336 _list_anthropic_models): migrated to Result (the broken
  'raise ErrorInfo from exc' runtime bug — same pattern as Phase 10 site 1)
Site 5 (L2078 _send inside _send_gemini_cli): added 'from None' (Pattern 1)
Site 6 (L2759 _dashscope_call): added 'from None' (Pattern 1)

KNOWN LIMITATION: the audit script does not have a heuristic for
'raise X from e' or 'from None' (Pattern 1 compliant). The 5 Pattern 1
sites remain classified as INTERNAL_RETHROW ('suspicious but not
violation') in the audit. Strict mode (Phase 14 gate) accepts this.

Adding a Pattern 1 heuristic requires Tier 1 approval per the
conventions ('Never modify audit heuristics without explicit Tier 1
approval'). Documented in the end-of-track report.

Audit state (after Phase 12):
  mcp_client: 0 migration-target (Phase 3-8 complete)
  ai_client:  7 -> 6 migration-target (5 RETHROW + 0 SS + 0 BC + 0 UNCLEAR)
              BC: 0 (Phase 10)
              SS: 0 (Phase 11)
              RETHROW: 7 -> 6 (one site migrated to Result in Phase 12)
              UNCLEAR: 0
              COMPLIANT: 33 -> 34 (+1)
  rag_engine: 9 migration-target (Phase 13)

Tests: 109 pass (was 97; +12 Phase 12 site/invariant tests).
2026-06-20 15:49:51 -04:00