From 777b04434cf1eebf246fd32e8e70c1bb6e981106 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 11 Jun 2026 14:26:00 -0400 Subject: [PATCH] conductor(plan): surface Task 1.7 scope gap (4 inline-loop vendors need per-vendor conversion) Task 1.7 (apply run_with_tool_loop to anthropic + gemini + gemini_cli + deepseek) cannot proceed as a single task. The 4 vendors use their own vendored call paths, not send_openai_compatible: - _send_deepseek: requests.post with custom payload + custom streaming parser + custom comms logging + budget enforcement - _send_gemini: google-genai SDK streaming + custom types.Tool handling - _send_gemini_cli: subprocess JSONL parsing via GeminiCliAdapter - _send_anthropic: anthropic SDK + custom cache control + history trimming run_with_tool_loop is hard-coded to send_openai_compatible. Each vendor needs to be refactored to produce OpenAICompatibleRequest first (analogous to how parent Phase 3 converted Grok/Llama). That's a multi-day refactor per vendor. Per the per-task decision protocol in conductor/workflow.md ('plan approach doesn't fit'): STOP and report. Recommendation in the deferred_work section: split Task 1.7 into 4 per-vendor tasks under a new 'Phase 1.5 vendor-conversion-to-OpenAICompatibleRequest' phase. The current Phase 1 milestone ('helper exists + 3 vendors applied') is still meaningful and worth checkpointing as-is. --- .../state.toml | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/conductor/tracks/qwen_llama_grok_followup_20260611/state.toml b/conductor/tracks/qwen_llama_grok_followup_20260611/state.toml index a818d6bb..a4a4ee53 100644 --- a/conductor/tracks/qwen_llama_grok_followup_20260611/state.toml +++ b/conductor/tracks/qwen_llama_grok_followup_20260611/state.toml @@ -27,7 +27,7 @@ t1_2 = { status = "completed", commit_sha = "1c836647", description = "Design ru t1_3 = { status = "completed", commit_sha = "1c836647", description = "Red: 5 tests for run_with_tool_loop in tests/test_tool_loop.py" } t1_4 = { status = "completed", commit_sha = "19a4d43e", description = "Green: implement run_with_tool_loop in src/ai_client.py" } t1_5 = { status = "completed", commit_sha = "19a4d43e", description = "Apply to _send_minimax (replace inline loop)" } -t1_6 = { status = "in_progress", commit_sha = "", description = "Apply to _send_qwen + _send_grok + _send_llama (add missing loop)" } +t1_6 = { status = "completed", commit_sha = "4069d677", description = "Apply to _send_grok + _send_llama (Qwen deferred: uses _dashscope_call, not send_openai_compatible)" } t1_7 = { status = "pending", commit_sha = "", description = "Apply to _send_anthropic + _send_gemini + _send_gemini_cli + _send_deepseek (consolidate inline)" } t1_8 = { status = "pending", commit_sha = "", description = "Add scripts/audit_no_inline_tool_loops.py" } t1_9 = { status = "pending", commit_sha = "", description = "Phase 1 checkpoint + git note" } @@ -77,6 +77,26 @@ no_providers_in_models_py = false # Phase 4 where_should_providers_live = "src/ai_client.py (existing file) or new src/ai_client_providers.py (new file)?" +[deferred_work] +# Task 1.7 surface: the 4 inline-loop vendors (anthropic, gemini, gemini_cli, +# deepseek) cannot share run_with_tool_loop as-is. They use their own +# vendored call paths (deepseek uses requests.post; gemini uses +# google-genai streaming; gemini_cli uses subprocess JSONL; anthropic uses +# the anthropic SDK). run_with_tool_loop is hard-coded to send_openai_compatible. +# +# To apply run_with_tool_loop to these 4 vendors, each must first be +# refactored to produce OpenAICompatibleRequest + use send_openai_compatible +# (analogous to the parent track's Grok+Llama+Qwen work). That conversion +# is its own multi-day refactor; the plan treated it as a one-task line item +# but the gap is significantly larger. +# +# Per the per-task decision protocol in conductor/workflow.md ("Plan +# approach doesn't fit"), Task 1.7 needs a scope re-plan before continuing. +# Recommendation: split into 4 separate tasks (one per vendor) under a new +# Phase 1.5 'vendor-conversion-to-OpenAICompatibleRequest', each with its +# own spike + test + commit. The Phase 1 checkpoint (t1.9) should not +# include the 4 inline-loop vendors; the current state is 'helper exists +# + 3 vendors applied' which is a meaningful milestone on its own. [local_first_priority] # Per user feedback 2026-06-11: emphasize local models as first-class # vs cloud/online vendors. Add UI badge, distinct cost state, native Ollama.