checking system…
Docs / back / config/arenas/research_debate.yaml · line 1
YAML · 131 lines
  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: []