Architecture health
Whether the structure is decaying, measured across index runs.
{% if arch.unavailable %}
Architecture unavailable
{{ arch.unavailable }}
{% else %}
{% for c in arch.cards %}
{{ c.label }}
{{ c.value }}
{{ c.note }}
{% endfor %}
Design structure matrix
{{ arch.dsm_caption }}
{% for r in arch.dsm_rows %}
{{ r.label }}
{% endfor %}
{% for r in arch.dsm_rows %}
{% for c in r.cells %}
{% endfor %}
{% endfor %}
dependency, below the diagonal
above the diagonal — closes a cycle
Cycle inventory
{{ arch.cycles_caption }}
{% for c in arch.cycles %}
{{ c.members }}
Cut either edge: {{ c.closing }}
{{ c.closing2 }}
{{ c.note }}
{{ m.chip(c.ev) }}
{% else %}
No dependency cycles among the modules shown.
{% endfor %}
Across index runs
direction is reported as unclear when the index itself changed size
{% if arch.trend_rows %}
| Indexed | Commit | Coverage | Propagation | Largest cycle | Direction |
{% for t in arch.trend_rows %}
| {{ t.date }} |
{{ t.commit }} |
{{ t.modules }} |
{{ t.propagation }} |
{{ t.largest_cycle }} |
{{ t.direction }} |
{% endfor %}
{% else %}
One recorded run is not a trend. The table appears after the next index run.
{% endif %}
A metric that moved because extraction improved is not a codebase that decayed. Where coverage shifted by more than a tenth between runs, the direction is left unclear rather than reported as better or worse.
{% endif %}