{% extends "base.html" %} {% block title %}Persona Evolution - Memorizz{% endblock %} {% block head %}{% endblock %} {% block content %}

Use the account lookup in Observability to resolve an email to its verified account ID.

{% if error %}{% endif %} {% if not connected %}

Connect your application's persona adapter

Memorizz must ask the host for the account's canonical profile. A shared agent's persona is not a per-user profile.

{% elif not profile %}

Start with an account

Inspect a user's approved approach, pending reflection, and change history.

{% else %}
01 · User conversations02 · Reflect & review03 · Next-turn adaptation
CURRENT APPROACHVersion {{ profile.persona.version }}

{{ profile.persona.name }} · {{ profile.persona.role }}

{{ profile.persona.goals }}

Stable foundation
Source grounding · Application rules · Explicit user preferences

{{ 'Daily + manual review' if profile.daily_enabled else 'Manual review' }} · Approval required · {{ 'Paused' if profile.paused else 'Awaiting your decision' if profile.pending else 'Ready to reflect' }}
Last review: {{ profile.last_review_at or 'Not yet reviewed' }}

Reflect now reviews recent user-authored memory. It does not force a change.

{% if profile.daily_enabled is defined %}
Daily reflection

Check every 24 hours, only after new conversations. Suggestions always wait for approval. This is not a midnight job; busy workers may check later.

{% if profile.daily_enabled %}

{{ 'Checks paused' if profile.paused else 'Awaiting your decision' if profile.pending else 'Next check no earlier than ' ~ (profile.next_daily_check_at or 'the next worker check') }}

{% endif %} {% if profile.last_daily_check_at %}

Last daily check: {{ profile.last_daily_check_at }} · {{ profile.last_daily_outcome|replace('_', ' ') }}

{% endif %}
{% endif %} {% if not writable %}

Inspection only. Persona actions must be explicitly enabled by the host.

{% elif trace_read_only %}

Trace editing stays disabled. Host persona actions may append their own audit traces.

{% endif %}
{% if profile.pending %} SUGGESTED ADAPTATION · NOT APPLIED

A better way to learn together

{{ profile.pending.reason }}

Before

{{ profile.pending.changes.goals.old }}

Proposed

{{ profile.pending.changes.goals.new }}

Why this suggestion? {{ profile.pending.evidence|length }} supporting memories {% for item in profile.pending.evidence %}

{{ item.text }}

Inspect conversation traces ↗Memory {{ item.id }} · {{ item.timestamp }}
{% endfor %}
{% else %} REFLECTION

{{ 'No change needed' if profile.review_state == 'no_change' else 'Changes you can understand.' }}

{{ 'The reviewed conversations did not support a durable change. Your current approach stays in place.' if profile.review_state == 'no_change' else 'When a conversation supports a better teaching approach, a reflection will explain the suggestion here before anything changes.' }}

{% if profile.review_state == 'failed' %}{% endif %} {% if profile.review_state == 'reviewing' %}

Reflection is running. Refresh this page to check its result.

{% endif %} {% endif %}
EVOLUTION TRAIL

What changed over time

{% set history = profile.persona.evolution_history or [] %} {% if history and history[-1].action != 'undo' %}{% endif %}
{% for entry in history|reverse %}
v{{ entry.version }} · {{ 'Change undone' if entry.action == 'undo' else 'Learning approach updated' }}{{ entry.timestamp }}

{{ entry.change_trigger.reason }}

Before

{{ entry.changes.goals.old }}

After

{{ entry.changes.goals.new }}

{{ entry.actor_id }} · Review {{ entry.review_id }}

{% if entry.trace %}Inspect version decision trace ↗{% endif %} {% for item in entry.evidence or [] %}

{{ item.text }}

Conversation traces ↗Memory {{ item.id }}
{% endfor %}
{% else %}

No approved changes yet. Reflection suggestions do not count as an evolved persona until approved.

{% endfor %}
Reflection attempts — including no change and dismissed suggestions {% for review in profile.reviews|reverse %}

{{ review.status|replace('_', ' ') }} · {{ review.timestamp }}
{{ review.reason }}{{ review.evidence_count }} memories reviewed · {{ review.selected_count }} selected · {{ review.trigger }} {% if review.trace %}Inspect reflection trace, usage & outcome ↗{% else %}Reflection trace not captured · Enable host observability for future reviews.{% endif %}

{% else %}

No reflections yet.

{% endfor %}

The latest {{ profile.history_limit }} changes and reflection attempts are retained. This is an adaptation history, not model training.

{% endif %} {% endblock %} {% block scripts %}{{ super() }}{% endblock %}