License Comparison
{{ left_label }} vs {{ right_label }}
{% if empty_side == 'both' %}
{% else %}
{# Lede stat-line — fixed string + summary slots (README §03) #}
Both scopes had no component data.
{% elif empty_side == 'left' %}{{ left_label }} scope had no data — nothing to compare.
{% elif empty_side == 'right' %}{{ right_label }} scope had no data — nothing to compare.
{% endif %}{{ license_changes_count }} license-set changes · {{ copyleft_additions_count }} copyleft added · {{ copyleft_removals_count }} removed · {{ copyleft_changes_count }} tier shifts across shared components.
● {{ left_label }} vs {{ right_label }} ●No action needed. Every shared component carries the same license set across {{ left_label }} and {{ right_label }} — no copyleft added, removed, or shifted tier.
{{ license_changes_count }} changes · {{ copyleft_additions_count + copyleft_removals_count }} copyleft · {{ copyleft_changes_count }} tier shifts
{{ fs.panel_head("License changes", meta=(license_changes | length | string) ~ " component" ~ ("s" if license_changes | length != 1 else "")) }}
{% endif %}
{# Copyleft deltas table #}
{% if copyleft_deltas and copyleft_deltas | length > 0 %}
Shared components whose license set changed between {{ left_label }} and {{ right_label }}.
| Component | {{ left_label }} Licenses | {{ right_label }} Licenses | Project |
|---|---|---|---|
| {{ row.name or '—' }} | {{ row.left_licenses or '(none)' }} | {{ row.right_licenses or '(none)' }} | {{ row.project_name or '—' }} |
{{ fs.panel_head("Copyleft deltas", meta=(copyleft_deltas | length | string) ~ " component" ~ ("s" if copyleft_deltas | length != 1 else "")) }}
{% endif %}
{% if not license_changes and not copyleft_deltas %}
Components whose copyleft classification changed: added, removed, or tier-shifted (e.g. Strong ↔ Weak Copyleft).
| Component | Family | Direction | Project |
|---|---|---|---|
| {{ row.name or '—' }} | {{ row.family or '—' }} | {{ row.direction or '—' }} | {{ row.project_name or '—' }} |
No license differences found between {{ left_label }} and {{ right_label }}.