40 lines
2.7 KiB
JSON
40 lines
2.7 KiB
JSON
{
|
|
"task": "checkbox 9 from .omo/plans/multi-provider-openrouter.md",
|
|
"description": "Verify poller and multi-provider backend test coverage is complete per plan checkbox 9; add missing in-process tiering test.",
|
|
"files_read": [
|
|
".omo/plans/multi-provider-openrouter.md",
|
|
"tests/test_openrouter_poller.py",
|
|
"tests/test_multi_provider_poller.py",
|
|
"src/poller.py"
|
|
],
|
|
"files_modified": ["tests/test_multi_provider_poller.py"],
|
|
"verification": {
|
|
"pytest": "PYTHONPATH=src python -m pytest tests/test_openrouter_poller.py tests/test_multi_provider_poller.py tests/test_poller_freshness.py -x --tb=short",
|
|
"results": "30 passed in 0.35s",
|
|
"coverage": "src/poller.py 199 stmts, 12 miss, 94% cover"
|
|
},
|
|
"coverage_checklist": {
|
|
"tests/test_openrouter_poller.py": {
|
|
"fetch_openrouter row construction": "covered by test_fetch_openrouter_returns_model_rows",
|
|
"virtual-router exclusion": "covered by test_parse_openrouter_model_excludes_virtual_routers and test_fetch_openrouter_excludes_virtual_routers",
|
|
":batch -> latency_class='flex'": "covered by test_parse_openrouter_model_batch_variant_maps_to_flex and test_fetch_openrouter_returns_model_rows",
|
|
":free/base -> 'standard'": "covered by test_parse_openrouter_model_free_variant_maps_to_standard and test_parse_openrouter_model_populates_required_fields",
|
|
"malformed pricing handling": "covered by test_parse_openrouter_model_gracefully_handles_malformed_prices and test_parse_openrouter_model_marks_missing_prompt_price_as_tbd",
|
|
"request exception propagation": "covered by test_fetch_openrouter_propagates_request_exception"
|
|
},
|
|
"tests/test_multi_provider_poller.py": {
|
|
"two mocked providers both upsert": "covered by test_two_providers_both_upsert",
|
|
"one provider RequestException doesn't abort the other": "covered by test_one_provider_fails_other_succeeds",
|
|
"disabled provider skip": "covered by test_disabled_provider_skipped",
|
|
"zero-row provider skip": "covered by test_zero_row_provider_logged_as_skip",
|
|
"per-provider mark_stale scoping": "covered by test_per_provider_mark_stale_scoped and test_per_provider_mark_stale_scopes_to_provider",
|
|
"unknown provider key skip": "covered by test_unknown_provider_key_skipped",
|
|
"in-process tiering": "covered by test_in_process_tiering_runs_after_upsert (added)"
|
|
}
|
|
},
|
|
"findings": [
|
|
"All required scenarios for test_openrouter_poller.py were already present.",
|
|
"All required scenarios for test_multi_provider_poller.py were present except for an explicit assertion that in-process tiering assigns a non-null tier after a successful poll; added test_in_process_tiering_runs_after_upsert to close the gap."
|
|
]
|
|
}
|