{% extends "base.html" %} {% block title %}PolyglotMiner — Evolution & Migration Dashboard{% endblock %} {% block extra_head %} {% endblock %} {% block content %}
Timeline & Migration Intelligence

Evolution & Migration Dashboard

Explore codebase trajectories, migration milestones, and historical commit sampling across all analyzed projects.

Analyzed Projects
{{ (total_projects_count|default(evol_summaries|length))|number_format }}
Tracked repositories
Migration Yield Rate
{% set proj_total = total_projects_count|default(evol_summaries|length) %} {% if proj_total > 0 %} {{ ((migration_count / proj_total) * 100)|round(1) }}% {% else %} 0% {% endif %}
{% set proj_total = total_projects_count|default(evol_summaries|length) %}{{ migration_count }} of {{ proj_total|number_format }} repositories transitioned
File Transitions
{{ (total_file_transitions_sum|default(migration_count))|number_format }} Files
Across {{ migration_count }} transitioned projects
Total Commits Analyzed
{{ total_commits_sum|number_format }}
Across evolutionary milestones
{% if (total_projects_count|default(evol_summaries|length)) == 0 %}

No Evolution Data Available Yet

Run polyglotminer history <target> --samples 10 in your terminal.

{% else %}
Showing {{ migration_count }} repositories
{% for summary in evol_summaries[:15] %} {% set latest = summary.latest or {} %} {% set prim_pair = latest.primary_migration_pair %} {% set repo_name = summary.repo_name or 'Repository' %} {% set repo_slug = summary.slug or repo_name|replace('/', '_') %} {% set repo_path = latest.repo_path or repo_name %} {% set repo_url = repo_path if (repo_path.startswith('http://') or repo_path.startswith('https://')) else ('https://github.com/' ~ repo_name if '/' in repo_name else repo_path) %} {% set cand_num = prim_pair.candidate_count if prim_pair else (latest.candidates_count or 0) %} {% set file_count = prim_pair.file_replacements_count if (prim_pair and prim_pair.file_replacements_count is defined) else (latest.file_replacements_count or cand_num or 0) %} {% set commit_count = prim_pair.candidate_commits_count if (prim_pair and prim_pair.candidate_commits_count is defined) else (latest.candidate_commits_count or (latest.migration_candidates|length if latest.migration_candidates else 1)) %} {% set strangler_count = prim_pair.strangler_replacements_count if (prim_pair and prim_pair.strangler_replacements_count is defined) else (latest.strangler_replacements_count or 0) %} {% else %} {% for i in range(5) %} {% endfor %} {% endfor %}
Repository ↕ Primary Migration ↕ Commits ↕ File Transitions ↓ Action
{% if repo_url.startswith('http') %} {{ repo_name }} {% else %} {{ repo_name }} {% endif %}
{% if prim_pair and prim_pair.source_language and prim_pair.target_language %} {{ prim_pair.source_language }} → {{ prim_pair.target_language }} {% else %} Polyglot / None {% endif %} {% set ai_count = prim_pair.ai_semantic_count if (prim_pair and prim_pair.ai_semantic_count is defined) else (latest.ai_semantic_count or 0) %} {% set consol_count = prim_pair.consolidation_count if (prim_pair and prim_pair.consolidation_count is defined) else (latest.consolidation_count or 0) %} {% set decomp_count = prim_pair.decomposition_count if (prim_pair and prim_pair.decomposition_count is defined) else (latest.decomposition_count or 0) %} {% set strangler_mech_count = prim_pair.strangler_count if (prim_pair and prim_pair.strangler_count is defined) else (latest.strangler_count or prim_pair.strangler_replacements_count if prim_pair else latest.strangler_replacements_count or 0) %} {% set contract_count = prim_pair.contract_count if (prim_pair and prim_pair.contract_count is defined) else (latest.contract_count or 0) %} {% if ai_count > 0 or consol_count > 0 or decomp_count > 0 or strangler_mech_count > 0 or contract_count > 0 %}
{% if ai_count > 0 %}{{ ai_count }} AI{% endif %} {% if consol_count > 0 %}{{ consol_count }} N:1{% endif %} {% if decomp_count > 0 %}{{ decomp_count }} 1:N{% endif %} {% if strangler_mech_count > 0 %}{{ strangler_mech_count }} Phased{% endif %} {% if contract_count > 0 %}{{ contract_count }} Invariants{% endif %}
{% endif %}
{{ (latest.total_commits_in_range or 0)|number_format }}
{{ file_count }} {% if file_count == 1 %}file{% else %}files{% endif %} {{ commit_count }} {% if commit_count == 1 %}commit{% else %}commits{% endif %}{% if strangler_count > 0 %} · {{ strangler_count }} phased{% endif %}
{% if summary.has_report_file is defined and not summary.has_report_file %} No Report File {% else %} Details → {% endif %}
{% endif %} {% endblock %} {% block scripts %} {% endblock %}