fix(provider): remove FakeListLLM defaults #459

Merged
freemo merged 1 commit from feature/m4-provider-fixes into master 2026-02-27 15:36:08 +00:00
Owner

Summary

  • Remove FakeListLLM as a silent fallback in plan_generation.py, context_analysis.py, and auto_debug.py — all three now raise ValueError when llm=None, making missing-provider errors explicit
  • Add Settings.mock_providers flag with validate_provider_availability() method; update container.get_ai_provider() to check this flag first (with env-var fallback for backward compatibility)
  • Add resolve_provider_by_name() helper and structlog trace logging to ProviderRegistry.get_default_provider_type()
  • Update all existing behave steps, robot tests, and benchmarks that relied on the implicit FakeListLLM default to pass an explicit LLM instance
  • Add 17 new BDD scenarios (features/provider_fixes.feature), Robot Framework integration tests (robot/provider_detection_smoke.robot), and ASV benchmarks (benchmarks/provider_selection_bench.py)

Quality Gates

Gate Status
nox -s lint Pass
nox -s typecheck Pass (0 errors)
nox -s unit_tests Pass (315 features, 6655 scenarios, 0 failures)
nox -s integration_tests Pass (854 tests, 854 passed)
nox -s build Pass
nox -s security_scan Pass
nox -s dead_code Pass
nox -s docs Pass
nox -s coverage_report 70.06% — pre-existing; unchanged from master (noxfile.py and pyproject.toml coverage config not modified)

Files Changed (28)

Source (8 modified):

  • src/cleveragents/agents/graphs/plan_generation.py — Removed FakeListLLM import + default methods
  • src/cleveragents/agents/graphs/context_analysis.py — Removed FakeListLLM fallback
  • src/cleveragents/agents/graphs/auto_debug.py — Removed FakeListLLM fallback
  • src/cleveragents/config/settings.py — Added mock_providers field + validate_provider_availability()
  • src/cleveragents/providers/registry.py — Added structlog logging + resolve_provider_by_name()
  • src/cleveragents/providers/__init__.py — Exported resolve_provider_by_name
  • src/cleveragents/application/container.py — Updated get_ai_provider() for mock_providers
  • src/cleveragents/application/services/plan_service.py — Pass llm=self._llm to AutoDebugAgent

New test/benchmark files (5):

  • features/provider_fixes.feature — 17 BDD scenarios
  • features/steps/provider_fixes_steps.py — Step definitions
  • robot/provider_detection_smoke.robot — 2 Robot tests
  • robot/helper_provider_detection.py — Robot helper
  • benchmarks/provider_selection_bench.py — ASV benchmarks

Updated test files (14): All modified to pass explicit FakeListLLM instead of relying on removed defaults.

ISSUES CLOSED: #323

## Summary - Remove FakeListLLM as a silent fallback in `plan_generation.py`, `context_analysis.py`, and `auto_debug.py` — all three now raise `ValueError` when `llm=None`, making missing-provider errors explicit - Add `Settings.mock_providers` flag with `validate_provider_availability()` method; update `container.get_ai_provider()` to check this flag first (with env-var fallback for backward compatibility) - Add `resolve_provider_by_name()` helper and structlog trace logging to `ProviderRegistry.get_default_provider_type()` - Update all existing behave steps, robot tests, and benchmarks that relied on the implicit FakeListLLM default to pass an explicit LLM instance - Add 17 new BDD scenarios (`features/provider_fixes.feature`), Robot Framework integration tests (`robot/provider_detection_smoke.robot`), and ASV benchmarks (`benchmarks/provider_selection_bench.py`) ## Quality Gates | Gate | Status | |------|--------| | `nox -s lint` | Pass | | `nox -s typecheck` | Pass (0 errors) | | `nox -s unit_tests` | Pass (315 features, 6655 scenarios, 0 failures) | | `nox -s integration_tests` | Pass (854 tests, 854 passed) | | `nox -s build` | Pass | | `nox -s security_scan` | Pass | | `nox -s dead_code` | Pass | | `nox -s docs` | Pass | | `nox -s coverage_report` | 70.06% — pre-existing; unchanged from master (noxfile.py and pyproject.toml coverage config not modified) | ## Files Changed (28) **Source (8 modified):** - `src/cleveragents/agents/graphs/plan_generation.py` — Removed FakeListLLM import + default methods - `src/cleveragents/agents/graphs/context_analysis.py` — Removed FakeListLLM fallback - `src/cleveragents/agents/graphs/auto_debug.py` — Removed FakeListLLM fallback - `src/cleveragents/config/settings.py` — Added `mock_providers` field + `validate_provider_availability()` - `src/cleveragents/providers/registry.py` — Added structlog logging + `resolve_provider_by_name()` - `src/cleveragents/providers/__init__.py` — Exported `resolve_provider_by_name` - `src/cleveragents/application/container.py` — Updated `get_ai_provider()` for mock_providers - `src/cleveragents/application/services/plan_service.py` — Pass `llm=self._llm` to AutoDebugAgent **New test/benchmark files (5):** - `features/provider_fixes.feature` — 17 BDD scenarios - `features/steps/provider_fixes_steps.py` — Step definitions - `robot/provider_detection_smoke.robot` — 2 Robot tests - `robot/helper_provider_detection.py` — Robot helper - `benchmarks/provider_selection_bench.py` — ASV benchmarks **Updated test files (14):** All modified to pass explicit `FakeListLLM` instead of relying on removed defaults. ISSUES CLOSED: #323
freemo force-pushed feature/m4-provider-fixes from 577031d219
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 15s
CI / quality (pull_request) Successful in 18s
CI / build (pull_request) Successful in 24s
CI / security (pull_request) Successful in 31s
CI / typecheck (pull_request) Successful in 58s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 3m25s
CI / unit_tests (pull_request) Successful in 30m2s
CI / docker (pull_request) Has been skipped
to feeb8a06c1
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 18s
CI / lint (pull_request) Successful in 21s
CI / build (pull_request) Successful in 25s
CI / security (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 57s
CI / integration_tests (pull_request) Successful in 2m51s
CI / unit_tests (pull_request) Successful in 18m57s
CI / docker (pull_request) Successful in 38s
CI / benchmark-regression (pull_request) Successful in 26m21s
CI / coverage (pull_request) Successful in 50m30s
2026-02-27 02:38:53 +00:00
Compare
freemo scheduled this pull request to auto merge when all checks succeed 2026-02-27 02:39:10 +00:00
freemo force-pushed feature/m4-provider-fixes from feeb8a06c1
All checks were successful
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 18s
CI / lint (pull_request) Successful in 21s
CI / build (pull_request) Successful in 25s
CI / security (pull_request) Successful in 43s
CI / typecheck (pull_request) Successful in 57s
CI / integration_tests (pull_request) Successful in 2m51s
CI / unit_tests (pull_request) Successful in 18m57s
CI / docker (pull_request) Successful in 38s
CI / benchmark-regression (pull_request) Successful in 26m21s
CI / coverage (pull_request) Successful in 50m30s
to 9c108fa2a5
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 16s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 20s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 33s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 2m51s
CI / unit_tests (pull_request) Successful in 10m12s
CI / docker (pull_request) Has been skipped
2026-02-27 14:14:36 +00:00
Compare
freemo force-pushed feature/m4-provider-fixes from 9c108fa2a5
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 16s
CI / build (pull_request) Successful in 16s
CI / quality (pull_request) Successful in 20s
CI / security (pull_request) Successful in 30s
CI / typecheck (pull_request) Successful in 33s
CI / coverage (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Has been skipped
CI / integration_tests (pull_request) Successful in 2m51s
CI / unit_tests (pull_request) Successful in 10m12s
CI / docker (pull_request) Has been skipped
to a074b4846f
Some checks failed
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Successful in 15s
CI / build (pull_request) Successful in 19s
CI / quality (pull_request) Successful in 28s
CI / security (pull_request) Successful in 50s
CI / typecheck (pull_request) Successful in 56s
CI / integration_tests (pull_request) Successful in 4m51s
CI / unit_tests (pull_request) Successful in 19m29s
CI / docker (pull_request) Successful in 39s
CI / benchmark-regression (pull_request) Successful in 26m10s
CI / coverage (pull_request) Successful in 47m42s
CI / lint (push) Successful in 13s
CI / quality (push) Successful in 17s
CI / build (push) Successful in 23s
CI / typecheck (push) Successful in 30s
CI / security (push) Successful in 30s
CI / benchmark-regression (push) Has been skipped
CI / integration_tests (push) Successful in 2m52s
CI / unit_tests (push) Successful in 10m8s
CI / docker (push) Successful in 1m19s
CI / benchmark-publish (push) Successful in 11m54s
CI / coverage (push) Failing after 39m51s
2026-02-27 14:47:26 +00:00
Compare
freemo merged commit a074b4846f into master 2026-02-27 15:36:08 +00:00
freemo deleted branch feature/m4-provider-fixes 2026-02-27 15:36:08 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
cleveragents/cleveragents-core!459
No description provided.