{% extends "ui/base_ui.html" %} {% block title %}ATP · El Farol · Match {{ match_id }}{% endblock %} {% block extra_scripts %} {% endblock %} {% block content %} {% if pending_banner_show is defined %} {% include "ui/partials/pending_banner_wrapper.html" %} {% endif %}
← {{ back_link_label }}
{% if not_found %}

Match {{ match_id }} not found

The match id was not present in the dashboard database. It may have been deleted, or the URL may be stale.

{% elif predates_schema %}

Match {{ match_id }} is from a pre-Phase-7 run

This match was recorded before PR #63 introduced per-day typed data. The dashboard can only render matches whose actions_json and day_aggregates_json columns are populated.

Re-run the match against a current build of ATP to see it here.

{% elif in_progress %}

Match {{ match_id }} is still running…

This page auto-refreshes every 15 seconds until the match completes.

Current status: {{ status }}

{% else %}
ATP · El Farol {% if live_stream_url %} Live {% if current_round_deadline_ms %} R{{ current_round_number }} --:-- {% endif %} {% endif %} Match {{ match_id }} · {{ num_agents }} agents · {{ num_days }} days · {{ num_slots }} slots/day
Day 1 / {{ num_days }} · w1
Leader
Spread (1st ↔ last)
payoff gap
Over-cap slots today
of {{ num_slots }} slots
Attendances
total agent-slots
Best day

Attendance heatmap

slot × day · darker red = over capacity

Compare

hover a card · click + to pin

The El Farol Bar Problem

Agents decide which slots of a {{ num_slots }}-slot day to visit.

If fewer than cap = {{ capacity }} agents picked the same slot → everyone there earns +1. Otherwise → −1.

example · day
green = under cap (+1), red = over cap (−1)

Agents don't communicate. They learn from prior attendance patterns.

Tweaks

Density
Identity colors
Show rules info

{% if live_stream_url %} {% endif %} {% endif %} {% endblock %}