Private
Public Access
The actual followup to code_path_audit_phase_2_20260624: migrate the 26 call sites + remove the 12 module-level aliases that Phase 2 left as a 'partial fix'.
TIER-1 READ AGENTS.md + conductor/workflow.md + conductor/edit_workflow.md + conductor/code_styleguides/data_oriented_design.md + conductor/code_styleguides/error_handling.md + conductor/code_styleguides/type_aliases.md + conductor/code_styleguides/code_path_audit.md + src/provider_state.py + src/ai_client.py:113-135 before this commit.
8 VCs:
- VC1: 12 module-level aliases removed (lines 113-135 of src/ai_client.py)
- VC2: 26 call sites migrated from _X_history to provider_state.get_history('X')
- VC3: cleanup() uses provider_state.clear_all() instead of 7 lock-guarded clears
- VC4: Per-provider regression tests pass (36 tests across 8 test files)
- VC5: All 7 audit gates pass --strict (no regression)
- VC6: 10/11 batched test tiers PASS (RAG flake acceptable)
- VC7: Effective codepaths metric documented (4.014e+22 unchanged; explained)
- VC8: End-of-track report written
7 phases, 11 atomic commits:
- Phase 0: pre-flight verification + tests/test_provider_state_migration.py (regression-guard)
- Phase 1: anthropic (10 sites)
- Phase 2: deepseek (6 sites) + deadlock verification
- Phase 3: grok (2 sites)
- Phase 4: minimax (2 sites)
- Phase 5: qwen (2 sites)
- Phase 6: llama (4 sites)
- Phase 7: remove aliases + cleanup() simplification
- Phase 8: verification + end-of-track report
Per-provider pattern: history = provider_state.get_history('X'); with history.lock: ...; history.append(...). The RLock re-entrance (post-cc7993e5) makes the inner dunder calls safe.
VC5 (effective codepaths) is NOT addressed by this track - the metric is dominated by 2^N for the highest-branch-count functions; removing 1 branch from 1 function changes the total by < 0.01%. The actual combinatoric reduction requires type promotion (dict[str, Any] -> typed dataclass), which is the grandparent any_type_componentization_20260621 plan's scope.
Out of scope:
- src/provider_state.py modifications (the migration is consumer-side only)
- The 4 T | None legacy wrappers (technically compliant; documented bypass)
- The 4.01e22 combinatoric explosion (requires type promotion)
- RAG test flake (pre-existing, Windows-specific)
- New src/<thing>.py files (per AGENTS.md hard rule)
blocked_by: code_path_audit_phase_2_20260624 (status: shipped)