{# src/examen/templates/_heatmap.html #} {# Required context: heatmap = {very_sure: [[topic,...],...], somewhat: [...], unsure: [...]} each row is a 5-element list of topic-lists. Each topic dict: {id, label, score, calibration, abbr} #}

Knowledge × calibration

{% for band_label, band_key in [("very sure", "very_sure"), ("somewhat", "somewhat"), ("unsure", "unsure")] %}
{{ band_label }}
{% for cell in heatmap[band_key] %}
{% for t in cell %} {%- set is_warn = (band_key == 'very_sure') and (t.score < 0.4) -%} {{ t.abbr }} {% endfor %} {% if not cell %}{% endif %}
{% endfor %} {% endfor %}
wrongright

Top-right is good. Bottom-left is calibrated honesty. Top-left is dangerous — confident and wrong.