conductor(gui_ux): Add Phase 6 — live streaming, per-tier model config, parallel DAG, auto-retry
Addresses three gaps where Claude Code and Gemini CLI outperform Manual Slop's MMA during actual execution: 1. Live worker streaming: Wire comms_log_callback to per-ticket streams so users see real-time output instead of waiting for worker completion. 2. Per-tier model config: Replace hardcoded get_model_for_role with GUI dropdowns persisted to project TOML. 3. Parallel DAG execution: asyncio.gather for independent tickets (exploratory — _send_lock may block, needs investigation). 4. Auto-retry with escalation: flash-lite -> flash -> pro on BLOCKED, up to 2 retries (wires existing --failure-count mechanism into ConductorEngine). 7 new tasks across Phase 6, bringing total to 30 tasks across 6 phases. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -92,8 +92,21 @@ This track enhances the existing MMA orchestration GUI from its current function
|
||||
- Hook API for testing: [docs/guide_tools.md](../../docs/guide_tools.md)
|
||||
- Simulation patterns: [docs/guide_simulations.md](../../docs/guide_simulations.md)
|
||||
|
||||
## Functional Requirements (Engine Enhancements)
|
||||
|
||||
### Live Worker Streaming
|
||||
- During `run_worker_lifecycle`, set `ai_client.comms_log_callback` to push intermediate text chunks to the per-ticket stream via the event queue. Currently workers are black boxes until completion — both Claude Code and Gemini CLI stream in real-time. The callback should push `{"text": chunk, "stream_id": "Tier 3 (Worker): {ticket.id}", "status": "streaming..."}` events.
|
||||
|
||||
### Per-Tier Model Configuration
|
||||
- `mma_exec.py:get_model_for_role` is hardcoded. Add a GUI section with `imgui.combo` dropdowns for each tier's model. Persist to `project["mma"]["tier_models"]`. Wire into `ConductorEngine` and `run_worker_lifecycle`.
|
||||
|
||||
### Parallel DAG Execution
|
||||
- `ConductorEngine.run()` executes ready tickets sequentially. DAG-independent tickets should run in parallel via `asyncio.gather`. Constraint: `ai_client._send_lock` serializes all API calls — parallel workers may need separate provider instances or the lock needs to be per-session rather than global. Mark as exploratory.
|
||||
|
||||
### Automatic Retry with Model Escalation
|
||||
- `mma_exec.py` has `--failure-count` for escalation but `ConductorEngine` doesn't use it. When a worker produces BLOCKED, auto-retry with a more capable model (up to 2 retries).
|
||||
|
||||
## Out of Scope
|
||||
- Automated "Auto-Fix" loops without user intervention.
|
||||
- Remote management via web browser.
|
||||
- Visual diagram generation (Dear PyGui node editor for DAG — future track).
|
||||
- Docking/floating multi-viewport layout (requires imgui docking branch investigation — future track).
|
||||
|
||||
Reference in New Issue
Block a user