{% extends "base.html" %} {% block title %}Profile Setup — FORGE Academy{% endblock %} {% block extra_css %} {% include "forge_academy/partials/_chrome_clearance.html" %} {% endblock %} {% block content %}

Operator Profile

Configure your role, training track, and AI maturity level. This shapes your entire mission path.

{% if fa_user %}

Current Status

{# aca-ux-07: this said "Total Earned". Since aca-int-07 "earned" means is_attendance=0 — the 250 that buys rank — while this figure is the running total that includes 1565 XP of daily logins. Naming the total "earned" is the exact confusion that made the rank change look like a bug. #}
{{ fa_user.xp|default(0) }} XP
Total XP
{{ level_ctx.earned_xp|default(0) }} XP
Earned — sets rank
{% if level_ctx and level_ctx.level %}
{{ level_ctx.level.icon }} {{ level_ctx.level.label }}
Current Rank
{% endif %}
{% if fa_user.role %}{{ roles.get(fa_user.role, {}).get('label', fa_user.role) }}{% else %}Not Set{% endif %}
Role Track
← Back to Hub
{# aca-trn-02: the training record. XP says how much a learner did; this says what that work is evidence OF, and names the missions it rests on. Every claim is shown with its evidence attached — a competency with nothing under it is an assertion, which is what this chain exists to stop producing. #}

Competency Record

{% if competency_profile and competency_profile.competencies %}

{{ competency_profile.total_classes }} competenc{{ 'y' if competency_profile.total_classes == 1 else 'ies' }} demonstrated across {{ competency_profile.total_records }} verified mission completion{{ '' if competency_profile.total_records == 1 else 's' }}.

{% for c in competency_profile.competencies %}
{{ c.label }} {{ c.namespace }}
{{ c.mission_count }} of {{ c.catalog_missions or c.mission_count }} mission{{ '' if c.catalog_missions == 1 else 's' }} in the catalog
    {% for e in c.evidence[:5] %}
  • {% if e.mission_slug %} {{ e.mission_title or e.mission_slug }} {% else %}{{ e.mission_title or 'Mission' }}{% endif %} {% if e.tier %}T{{ e.tier }}{% endif %} {% if e.verified_step_ids %} {{ e.verified_step_ids|length }} verified step{{ '' if e.verified_step_ids|length == 1 else 's' }} {% endif %}
  • {% endfor %} {% if c.evidence|length > 5 %}
  • +{{ c.evidence|length - 5 }} more
  • {% endif %}
{% endfor %}
{% elif competency_profile and competency_profile.error %} {# Never render an empty record when the query failed — "you have earned nothing" and "we could not read it" must not look the same. #}

Competency record unavailable right now.

{% else %}

No competencies recorded yet. Complete a mission — every verified completion adds what it demonstrates here, and certificates cite it. Browse missions →

{% endif %}
{% endif %}
✓ Profile configured. Redirecting to your mission hub...

Identity

Mission Track — Choose Your Role

Technical roles get CodeMirror coding labs. Guided roles get form-based AI configuration missions. Both paths deploy real AI.

{% for role_id, role in roles.items() %}
{{ role.icon }}
{{ role.label }}
{{ role.type }}
{% endfor %}

AI Maturity Assessment

{% endblock %}