{% extends "base.html" %} {% block title %}Evolution{% endblock %} {% block body %}

Evolution

What changed in the knowledge and why, from most recent to oldest. One line per cause: a source item, a judgment, a correction by you, the sweep. Built from the log, with no LLM summary.

{% if args.source or args.entity or args.verdicts %}clear filters{% endif %}
{% if updating.n or open_tensions %}
{% if updating.n %}updating {{ updating.n }} page(s) with a pending regeneration, the oldest since {{ updating.since|dt }}. {% endif %} {% if open_tensions %}under judgment {{ open_tensions }} open tension(s).{% endif %}
{% endif %} {% if ent %}

Trajectory of {{ ent.name }} ({{ ent.type }}) · open in Explore

{% for a in trajectory %}
{{ a.predicate }} · {{ a.claims|length }} claim(s) {% for c in a.claims %}
{{ c.recorded_at|dt }} {{ c.statement }} {{ c.status }} {% if c.origin == 'human' %}your correction{% endif %} {% for h in c.history %}{% if h.verdict %}
{{ h.ts|dt }} → {{ h.status }} ({{ h.kind|replace('_', ' ') }}){% if h.by %} · superseded by: {{ h.by_text or h.by }}{% endif %}
{% endif %}{% endfor %}
{% endfor %}
{% else %}
No attribute with a history (all claims still current and unique).
{% endfor %}

Changes that touched {{ ent.name }}

{% endif %} {% for ln in data.lines %} {% if ln.type == 'events' %}
{{ ln.ts|dt }} {{ ln.kind }} {{ ln.title }} {{ ln.detail|friendly(data.names) }} {% for label, n in ln.counts %}{{ n }} {{ label }}{{ ' · ' if not loop.last }}{% endfor %} {% for it in ln['items'] %}
{{ it.t }} {% if it.t == 'verdict' %} {{ (it.kind or '')|replace('_', ' ') }} {{ it.text|friendly(data.names) }} {% if it.status and it.status != 'applied' %}{{ 'reverted' if it.status == 'reverted' else it.status }}{% endif %} {% for ch in it.changes %}
{% if ch['from'] == ch.to %}kept ({{ ch.to }}):{% else %}{{ ch['from'] }} → {{ ch.to }}:{% endif %} {% if ch.after %}{{ ch.before }} → {{ ch.after }}{% else %}{{ ch.before }}{% endif %} open
{% endfor %} {% if it.revertible %}
{% endif %} {% elif it.t == 'status' or it.t == 'validity' %} {{ it.text }} → {{ it.to }}{% if it.why %} ({{ it.why|friendly(data.names) }}){% endif %} {% elif it.t == 'tension' %} {{ it.text|friendly(data.names) }}{% for c in it.claims %}
· {{ c }}
{% endfor %} {% elif it.entity_id %} {{ it.text }}{% if it.why %} ({{ it.why|friendly(data.names) }}){% endif %} trajectory {% elif it.t == 'new' and it.subject_id %} {{ it.text }} trajectory {% else %} {{ it.text }} {% endif %}
{% endfor %} {% if ln.more %}
… and {{ ln.more }} more.
{% endif %}
{% elif ln.type == 'page' %}
{{ ln.ts|dt }} {{ 'narrative' if ln.page_kind == 'narrative' else 'page' }} {{ ln.title }} version {{ ln.version }}{% if ln.status == 'retired' %} · retired{% endif %} {% if ln.updating_since %}updating since {{ ln.updating_since|dt }}{% endif %} see what changed in the text
loading…
{% elif ln.type == 'pages' %}
{{ ln.ts|dt }}{{ ln.kind }}{{ ln.title }} {{ ln.detail }} {% if ln.updating %}{{ ln.updating }} updating{% endif %} {% for p in ln.pages[:200] %}
{{ 'narrative' if p.page_kind == 'narrative' else 'page' }} · {{ p.title }} version {{ p.version }}{% if p.status == 'retired' %} · retired{% endif %} {% if p.updating_since %}updating since {{ p.updating_since|dt }}{% endif %}
loading…
{% endfor %} {% if ln.pages|length > 200 %}
… and {{ ln.pages|length - 200 }} more.
{% endif %}
{% elif ln.type == 'no_effect' %}
{{ ln.ts|dt }} {{ 'failed' if ln.failed else 'no effect' }} {{ ln.title }} {{ ln.detail }} · {{ ln.why }}
{% endif %} {% else %}
Nothing changed in this window (from {{ data.window_since|dt }} on).
{% endfor %}
Older until {{ data.next_before|dt }}
{% endblock %}