{% extends "base.html" %} {% set active = "strategos" %} {% block title %}Wargame Dashboard — Strategos{% endblock %} {% block content %}
Scenarios
{% if wargames %} {% for g in wargames %} {% set is_active = active_game and active_game.id == g.id %}
{{ g.name }}
{{ (g.state or 'pending')|title }} · {{ (g.created_at or '')[:10] }}
{% endfor %} {% else %}

No scenarios yet.

{% endif %}
{% if ooda %}
OODA Advantage
{% for domain in domains %} {% set adv = ooda.advantage.get(domain, 'parity') %}
{{ domain|upper }} {{ adv|upper }}
{% endfor %}
{% endif %}
{% if active_game %}

{{ active_game.name }}

{% if active_game.scenario %}

{{ active_game.scenario }}

{% endif %}
{{ (active_game.state or 'pending')|title }}
Blue Force: {{ active_game.blue_force or '—' }}
Red Force: {{ active_game.red_force or '—' }}
{% if active_game.outcome %}
Outcome: {{ active_game.outcome }}
{% endif %}
{% else %}
No scenario selected. Create one or click a scenario on the left.
{% endif %} {% if active_game %}
AI Assessment
{% endif %}
{% if ooda %}
{% for domain in domains %} {% set bd = ooda.blue.get(domain, {}) %} {% set rd = ooda.red.get(domain, {}) %} {% set adv = ooda.advantage.get(domain, 'parity') %} {% for phase in ['observe','orient','decide','act'] %} {% if loop.first %} {% endif %} {% if loop.first %} {% endif %} {% endfor %} {% endfor %}
Domain Phase Blue (s) Red (s) Advantage
{{ domain|upper }}{{ phase|title }} {{ bd.get(phase ~ '_latency_s', '—') }} {{ rd.get(phase ~ '_latency_s', '—') }} {{ adv|upper }}
B {{ (bd.get('tempo_score',0)*100)|round(0)|int }}% / R {{ (rd.get('tempo_score',0)*100)|round(0)|int }}%
Cycle: {{ bd.get('cycle_time_s','—') }}s / {{ rd.get('cycle_time_s','—') }}s
Tempo Advantage by Domain
Blue Force Red Force
{% else %}

No OODA data available.

{% endif %}
Mode:

Enter a 2×2 payoff matrix. Each cell shows (Blue payoff, Red payoff). Nash equilibria are highlighted in amber.

Red: A
Red: B
Blue: X
Blue: Y
{% for c in coa_criteria %} {% endfor %}
{% if coa_rows %} {% for c in coa_criteria %}{% endfor %} {% for row in coa_rows %} {% for c in coa_criteria %} {% endfor %} {% endfor %}
SideName{{ c|replace('_',' ')|title }}ScoreRank
{{ (row.side or 'blue')|upper }} {{ row.name }}
{{ row.get(c, 0.5) }}
{{ row.get('composite_score', 0)|round(3) }} #{{ loop.index }}
{% else %}

No COA entries yet. Add one above.

{% endif %}
{% if coa_rows %}
COA Criteria Comparison
{% endif %}
{% if active_game %}
Turn Controls
Turn Log
Turn Blue Strength Red Losses Red Strength Blue Losses Tempo Δ
Loading…
{% endif %}
{% endblock %}