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

Instructor Console

Assign missions and role tracks, track cohort progress against due dates, and review submitted work.

Assign Work
Cohort membership is resolved when the board is read, not frozen when you assign — a learner who picks that role later inherits the assignment. Leaving the due date blank means no deadline; an assignment with no deadline never reads as overdue.
Assignments ({{ assignments | length }})
{% if assignments %} {% for a in assignments %} {% endfor %}
WorkTargetDueProgress StatusAssigned by
{{ a.label }} {% if a.target_type == 'cohort' %} Cohort: {{ roles.get(a.target_role, {}).get('label', a.target_role or 'all') }} ({{ a.target_count }}) {% else %} {% for t in a.targets %} {{ t.display_name }} {% else %} learner removed {% endfor %} {% endif %} {{ (a.due_at or '—')[:10] }} {{ a.complete_count }}/{{ a.target_count }} {% if a.status == 'cancelled' %} CANCELLED {% elif a.target_count and a.complete_count >= a.target_count %} COMPLETE {% elif a.overdue %} OVERDUE {% else %} OPEN {% endif %} {{ a.assigned_by }} {% if a.status == 'open' %} {% endif %}
{% else %}
Nothing assigned yet. Use the form above to assign a mission or a role track.
{% endif %}
Roster ({{ learners | length }})
{% if learners %} {% for l in learners %} {% endfor %}
LearnerRoleRankMissions SubmissionsOpenOverdueLast active
{{ l.display_name }} {{ roles.get(l.role, {}).get('label', l.role) }} {{ l.level }} {{ l.missions_completed }}/{{ l.total_missions }} {{ l.submissions }} {{ l.open_assignments }} {% if l.overdue_assignments %} {{ l.overdue_assignments }} {% else %}—{% endif %} {{ (l.last_active or '—')[:10] }}
{% else %}
No learners enrolled in this tenant yet.
{% endif %}
Recent Instructor Actions
{% if audit %} {% for e in audit %} {% endfor %}
WhenActionActorSubjectDetail
{{ (e.created_at or '')[:19] }} {{ e.action }} {{ e.actor }}{% if e.actor_role %} ({{ e.actor_role }}){% endif %} {{ e.subject_type }} {{ e.subject_id }} {{ e.detail_json }}
{% else %}
No instructor actions recorded yet.
{% endif %}
This log is append-only. Correcting an assignment or an override means recording the correction, not editing what is already here.
Org AI Readiness → FORGE Academy →
{% endblock %}