{% extends 'base.html' %} {% block title %}Task {{ task.question_id }} · Benchmark Tasks{% endblock %} {% block body_class %}bench-task-page{% endblock %} {% block app_main %}
BENCHMARK TASK
{{ task.question_type }}

{{ task.question }}

{{ task.question_id }} {{ task.namespace }}
{{ task.primary_outcome or "NOT SCORED" }} {% if task.graph_available is true and task.historical_score_with_live_graph %}HISTORICAL SCORE + LIVE SOURCE{% elif task.graph_available is true %}LIVE BENCHMARK GRAPH{% elif task.graph_source_run_id and not task.is_active %}LIVE SOURCE CONFIGURED{% elif task.is_active %}ACTIVE CONFIGURED{% else %}ARTIFACT-ONLY{% endif %}
{% set oc = task.primary_outcome or "NOT SCORED" %} {% if task.source_warning %}
{{ task.source_warning }}
{% endif %}
Run{{ task.run_label }}
Variant{{ task.run_variant }}
Arm{{ task.run_arm or '—' }}
Turns{{ task.turns }}
Assertions{{ task.typed_assertions }}
Scalar views{{ task.scalar_views }}
Turn evidence{{ task.turn_evidence }}
LLM calls{{ task.scalar_llm_calls }}
Consolidated{{ 'Yes' if task.scalar_consolidated else 'No' }}
Ready{{ 'Yes' if task.ready else 'No' }}
Failed{{ task.failed_remaining }}
Attempts{{ task.attempts }}
{% if task.live_graph %}

Live Graph Projection

{% if task.live_graph.audit_pass_id %}
Audit pass: {{ task.live_graph.audit_pass_id }}
{% endif %} {% if task.live_graph.audit_warning %}
{{ task.live_graph.audit_warning }}
{% endif %}

TurnEvidence ({{ task.live_graph.evidence | length }})

{% if task.live_graph.evidence %}
{% for turn in task.live_graph.evidence %}
{{ turn.role }} {{ turn.occurred_at[:16] if turn.occurred_at else '—' }} ingested {{ turn.recorded_at[:16] if turn.recorded_at else '—' }}
{{ turn.text }}
{% if turn.founds %}
FOUNDS assertions: {{ turn.founds | join(', ') }}
{% endif %}
{% endfor %}
{% else %}
No turn evidence is available for this task.
{% endif %}

TypedAssertions ({{ task.live_graph.assertions | length }})

{% if task.live_graph.assertions %} {% for a in task.live_graph.assertions %}
{{ a.subject }} → {{ a.attribute }} = {{ a.value }}{{ ' ' + a.unit if a.unit }}
{{ a.operation }} {{ a.value_kind }} {{ a.evidence_tier }} {% if a.binding_pending %}binding pending{% endif %}
“{{ a.stated_span }}”
{% if a.source_quote %}
Source turn
“{{ a.source_quote }}”
{% endif %} {% if a.fold_outcome %}
state {{ a.fold_outcome.state.status }}{% if a.fold_outcome.state.reason %}: {{ a.fold_outcome.state.reason }}{% endif %}
history {{ a.fold_outcome.history.status }}{% if a.fold_outcome.history.reason %}: {{ a.fold_outcome.history.reason }}{% endif %}
{% endif %}
world {{ a.valid_at[:16] if a.valid_at else '—' }} · learned {{ a.learned_at[:16] if a.learned_at else '—' }}
{% endfor %} {% else %}
No typed assertions were extracted for this task.
{% endif %}
SCALAR ROLE MAP

Three different jobs — not interchangeable

Start here when a result looks wrong. Each view answers a different kind of question and has a different authority level.

Absolute sets a value. Delta changes a prior value. Event records an occurrence; it does not claim current ownership or state.
CURRENT SCALAR

ScalarState Views ({{ task.live_graph.views | length }})

Authoritative answer to “What is true now?” It folds absolute values and deltas into one current value per slot.

{% if task.live_graph.views %} {% for v in task.live_graph.views %}
{{ 'CURRENT' if v.current else 'SUPERSEDED' }}
{{ v.display or v.value }}{{ ' ' + v.unit if v.unit }}
{{ v.subject }} · {{ v.attribute }}{{ ' · ' + v.scope if v.scope }}
{% if v.summary %}

{{ v.summary }}

{% endif %}
{{ v.value_kind }}{{ v.derivation }} derivation{{ v.effective_tier or '—' }} tier{{ v.contributor_ids | length }} contributors
valid {{ v.valid_at[:16] if v.valid_at else '—' }}
{% endfor %} {% else %}
No scalar-state view was materialized for this task.
{% endif %}
CHANGE SCALAR

ScalarHistory Views ({{ task.live_graph.history_views | length }})

Advisory answer to “How did the value change?” It preserves the ordered absolute and delta observations without replacing current-state authority.

{% if task.live_graph.history_views %} {% for hv in task.live_graph.history_views %}
ADVISORY HISTORY
{{ hv.subject }} · {{ hv.attribute }}
{{ hv.entry_count or 0 }} entries{{ hv.derivation }} derivation {% if hv.op_counts %}{% for k, v in hv.op_counts.items() %}{{ v }} {{ k }}{% if not loop.last %}, {% endif %}{% endfor %}{% endif %}
{% if hv.entries %} {% for entry in hv.entries %} {% endfor %}
source timeoperationvaluestated span
{{ entry.valid_at[:16] if entry.valid_at else '—' }}{{ entry.operation }}{{ entry.value }}{{ entry.stated_span }}
{% endif %}
{{ hv.first_valid_at[:16] if hv.first_valid_at else '—' }} to {{ hv.last_valid_at[:16] if hv.last_valid_at else '—' }}
{% endfor %} {% else %}
No scalar-history view was materialized for this task.
{% endif %}

Memory

{% if task.live_graph.facts %}

Relationship Facts ({{ task.live_graph.facts | length }})

{% for fact in task.live_graph.facts %}
{{ fact.subject }} → {{ fact.relation }} → {{ fact.object }} — {{ fact.fact }}
{% endfor %} {% endif %} {% if task.live_graph.memory_inventory %}

Memory Inventory ({{ task.live_graph.memory_inventory | length }})

{% for item in task.live_graph.memory_inventory %}
{% if item.memory_type == 'view' %} VIEW {{ item.view_kind }} {{ item.derivation }} {{ item.subject }} · {{ item.attribute }} = {{ item.value }} {% if item.current %}current{% endif %} {% else %} CONTENT {{ item.subject }} → {{ item.relation }} → {{ item.object }} {% endif %}
{% endfor %} {% endif %} {% if not task.live_graph.facts and not task.live_graph.memory_inventory %}
No relationship facts or memory inventory are available for this task.
{% endif %}
INSPECTION-ONLY PROTOTYPE

Typed Recall Packet

A deterministic presentation of the existing graph. It does not change production recall, ranking, ingestion, or answers.

{% if task.live_graph.recall_packet %}
{{ task.live_graph.recall_packet.version }} production recall changed: no
{% for section in task.live_graph.recall_packet.sections %}
{{ section.label }} {{ section.entries | length }}

{{ section.role }}

{% if section.entries %} {% for entry in section.entries %}
{{ entry.kind }} {{ entry.authority }} {% if entry.derivation %}{{ entry.derivation }}{% endif %}
{{ entry.subject }}{% if entry.attribute %} · {{ entry.attribute }}{% endif %}{% if entry.scope %} · {{ entry.scope }}{% endif %} = {{ entry.value or entry.content }}{% if entry.unit %} {{ entry.unit }}{% endif %}
{% if entry.content and entry.content != entry.value %}
{{ entry.content }}
{% endif %} {% if entry.source_quote %}
“{{ entry.source_quote }}”
{% endif %}
world {{ entry.valid_at or 'unknown' }} · learned {{ entry.learned_at or 'unknown' }}{% if entry.source_ids %} · sources {{ entry.source_ids | join(', ') }}{% endif %}
{% endfor %} {% else %}
none
{% endif %}
{% endfor %}
{% else %}
The typed packet could not be built from this live graph.
{% endif %}
{% else %}

TurnEvidence

Live graph data is unavailable for this run.

TypedAssertions

Live graph data is unavailable for this run.

Scalar Roles

Scalar StateCurrent ScalarWhat is true now?
Scalar HistoryChange ScalarHow did the value change?
Role definitions are available, but live graph counts and contents are unavailable for this run.

ScalarState Views

Live graph data is unavailable for this run.

ScalarHistory Views

Live graph data is unavailable for this run.

Memory

Live graph data is unavailable for this run.

Typed Recall Packet

Live graph data is unavailable, so the inspection packet cannot be built.
{% endif %}

Answer Path

Gold Answer

{{ task.answer }}
{% if task.scores %}

Scores

{% for score in task.scores %} {% endfor %}
ArmCorrectScoreInOut
{{ score.arm }}{{ '✓' if score.correct else '✗' }} {{ score.score }}{{ score.input_tokens }}{{ score.output_tokens }}
{% for score in task.scores %}
{{ score.arm }} response
Model answer
{{ score.response_text }}
Recalled memory
{{ score.recalled or '—' }}
Gold answer
{{ task.answer }}
{% endfor %}
{% else %}
No scored answer path is available for this task.
{% endif %}
{% endblock %} {% block extra_head %} {% endblock %} {% block extra_scripts %} {% endblock %}