1name: research_debate 2description: | 3 Multi-stakeholder deliberation on a non-quant question — engineering / 4 legal / business personas in parallel, then a chair synthesises a 5 verdict. Demonstrates that MAF is a general platform: same EventBus, 6 control plane, ReplanAgent, DecisionMemory plumbing as the trading 7 arenas, just a different ``target_key`` and a different outbox. 8 9 Trigger via control plane: 10 XADD maf:control:in '*' data '{ 11 "command": "run_arena", 12 "args": { 13 "arena": "research_debate", 14 "target": { 15 "question_id": "rfc-2026-042", 16 "title": "Migrate session storage to ScyllaDB?", 17 "text": "<the proposal markdown>" 18 }, 19 "emit_action": true 20 } 21 }' 22 23 Decisions published to ``maf:decisions:out`` as ``GenericDecision``. 24 25# Subject is identified by question_id, not ticker. MAFApp routes the 26# arena output to the decisions outbox accordingly. 27target_key: "question_id" 28 29schedule: null 30output_stream: "maf:arena:research_debate:output" 31max_iterations: 2 32 33llm: 34 default_provider: ollama 35 quick_provider: ollama 36 quick_model: "auto" 37 deep_provider: ollama 38 deep_model: "auto" 39 providers: 40 ollama: 41 api_key: "${OLLAMA_API_KEY}" 42 model: "auto" 43 base_url: "https://ollama.com/v1" 44 max_output_tokens: 4096 45 temperature: 0.3 46 47sources: 48 # Knowledge-base lookup for prior decisions on similar questions. 49 - name: knowledge_base 50 adapter: fomo2_knowledge 51 config: 52 max_results: 5 53 days_back: 365 54 55 # MiroFish synthetic-crowd reaction to the proposal. The arena's emit 56 # phase already gracefully handles an empty / stale cache, so this 57 # works whether or not the mirofish-refresher has run for this doc. 58 - name: crowd_sim 59 adapter: mirofish_sim 60 config: 61 stale_after_seconds: 86400 62 63memory: 64 instances: 65 - { name: discussion_bm25, type: bm25 } 66 67phases: 68 - name: analysis 69 pattern: parallel 70 agents: 71 - name: engineering 72 role: specialist 73 system_prompt_file: src/maf/arenas/discussion/prompts/engineering_persona.txt 74 sources: 75 - knowledge_base 76 llm_tier: quick 77 max_react_steps: 3 78 79 - name: legal 80 role: specialist 81 system_prompt_file: src/maf/arenas/discussion/prompts/legal_persona.txt 82 sources: 83 - knowledge_base 84 llm_tier: quick 85 max_react_steps: 3 86 87 - name: business 88 role: specialist 89 system_prompt_file: src/maf/arenas/discussion/prompts/business_persona.txt 90 sources: 91 - knowledge_base 92 - crowd_sim 93 llm_tier: quick 94 max_react_steps: 3 95 transition: synthesis 96 97 - name: synthesis 98 pattern: sequential 99 signal_extract: false 100 agents: 101 - name: chair 102 role: synthesis 103 system_prompt_file: src/maf/arenas/discussion/prompts/synthesis_persona.txt 104 memory: discussion_bm25 105 llm_tier: deep 106 transition: replan_check 107 108 - name: replan_check 109 pattern: sequential 110 agents: 111 - name: replan_controller 112 role: replan 113 llm_tier: deep 114 extra: 115 confidence_floor: 0.55 116 loopback_phase: "analysis" 117 available_sources: 118 - knowledge_base 119 - crowd_sim 120 transition: emit 121 122 - name: emit 123 pattern: sequential 124 agents: [] 125 transition: END 126 127# No stream-triggers by default — research_debate is deliberation-driven, 128# not event-driven. Users dispatch it from the dashboard or the control 129# plane when they have a question to decide. 130triggers: []