intel_velocity.html
html
sha256:c2e5cf2d754ed2fe9a94e879d41ad12ff221d2ac4ac7b45247fcb981c76858bf
docs: Section 8 database/migrations/backups — verified live…
Sonnet 5
24 days ago
| 1 | {% extends "musehub/base.html" %} |
| 2 | |
| 3 | {% block title %}Velocity · {{ owner }}/{{ repo_slug }}{% endblock %} |
| 4 | {% block breadcrumb %} |
| 5 | <a href="/{{ owner }}">{{ owner }}</a> / |
| 6 | <a href="{{ base_url }}">{{ repo_slug }}</a> / |
| 7 | <a href="{{ base_url }}/intel">intel</a> / |
| 8 | velocity |
| 9 | {% endblock %} |
| 10 | {% block repo_nav %}{% include "musehub/partials/repo_nav.html" %}{% endblock %} |
| 11 | |
| 12 | {% block content %} |
| 13 | <div class="vel-wrap"> |
| 14 | |
| 15 | <div class="intel-subhd"> |
| 16 | <a href="{{ base_url }}/intel" class="intel-back">← Intel Hub</a> |
| 17 | <div class="intel-subhd-title intel-subhd-title--spectral"><span style="color:var(--color-rose)">{{ icon("gauge", 16) }}</span> Velocity</div> |
| 18 | <div class="intel-subhd-desc">Module growth rate across the last {{ window_size }} commits (current) vs the preceding {{ window_size }} (prior). Active commits = distinct commits that touched the module.</div> |
| 19 | </div> |
| 20 | |
| 21 | {% if modules %} |
| 22 | |
| 23 | {# ── Stat chips ──────────────────────────────────────────────────────────── #} |
| 24 | <div class="vel-stats"> |
| 25 | <div class="vel-stat"> |
| 26 | <span class="vel-stat__val">{{ total_count | fmtnum }}</span> |
| 27 | <span class="vel-stat__lbl">modules tracked</span> |
| 28 | </div> |
| 29 | <div class="vel-stat"> |
| 30 | <span class="vel-stat__val">{{ window_size | fmtnum }}</span> |
| 31 | <span class="vel-stat__lbl">window (commits)</span> |
| 32 | </div> |
| 33 | <div class="vel-stat"> |
| 34 | <span class="vel-stat__val">{{ commits_analysed | fmtnum }}</span> |
| 35 | <span class="vel-stat__lbl">commits analysed</span> |
| 36 | </div> |
| 37 | <div class="vel-stat"> |
| 38 | <span class="vel-stat__val">{{ max_active | fmtnum }}</span> |
| 39 | <span class="vel-stat__lbl">peak active commits</span> |
| 40 | </div> |
| 41 | </div> |
| 42 | |
| 43 | {# ── Legend + top filter ─────────────────────────────────────────────────── #} |
| 44 | <div class="vel-legend-row"> |
| 45 | <div class="vel-legend-item"> |
| 46 | <span class="vel-legend__dot vel-legend__dot--current"></span> |
| 47 | <span class="vel-legend">current window</span> |
| 48 | </div> |
| 49 | <div class="vel-legend-item"> |
| 50 | <span class="vel-legend__dot vel-legend__dot--prior"></span> |
| 51 | <span class="vel-legend">prior window</span> |
| 52 | </div> |
| 53 | <div style="margin-left:auto; display:flex; align-items:center; gap:0.4rem;"> |
| 54 | <span class="intel-filter-top__label">top</span> |
| 55 | {% for n in valid_tops %} |
| 56 | <a href="{{ base_url }}/intel/velocity?top={{ n }}" |
| 57 | class="intel-filter-pill intel-filter-pill--sm{% if selected_top == n %} intel-filter-pill--active{% endif %}">{{ n }}</a> |
| 58 | {% endfor %} |
| 59 | </div> |
| 60 | </div> |
| 61 | |
| 62 | {# ── Module list ─────────────────────────────────────────────────────────── #} |
| 63 | <div class="vel-list"> |
| 64 | {% for m in modules %} |
| 65 | <div class="vel-row"> |
| 66 | |
| 67 | {# Module path #} |
| 68 | <div class="vel-module-col"> |
| 69 | <a href="{{ base_url }}/intel/velocity/detail?module={{ m.module | urlencode }}" |
| 70 | class="vel-module" title="{{ m.module }}">{{ m.module }}</a> |
| 71 | </div> |
| 72 | |
| 73 | {# Dual bars: current / prior #} |
| 74 | <div class="vel-bar-col"> |
| 75 | <div class="vel-bar-wrap"> |
| 76 | <div class="vel-bar-track" style="flex:1; height:4px; background:var(--bg-overlay); border-radius:2px; overflow:hidden;"> |
| 77 | <div class="vel-bar-fill vel-bar-fill--current" style="width:{{ m.active_pct }}%; height:100%;"></div> |
| 78 | </div> |
| 79 | <span class="vel-bar-label vel-metric" style="width:2.2em; text-align:right;">{{ m.active_commits }}</span> |
| 80 | </div> |
| 81 | <div class="vel-bar-wrap"> |
| 82 | <div class="vel-bar-track vel-bar-track--prior" style="flex:1; height:3px; background:var(--bg-overlay); border-radius:2px; overflow:hidden;"> |
| 83 | <div class="vel-bar-fill vel-bar-fill--prior" style="width:{{ m.prior_pct }}%; height:100%;"></div> |
| 84 | </div> |
| 85 | <span class="vel-bar-label vel-metric" style="width:2.2em; text-align:right; opacity:0.6;">{{ m.prior_active_commits }}</span> |
| 86 | </div> |
| 87 | </div> |
| 88 | |
| 89 | {# Metrics: net + modified #} |
| 90 | <div class="vel-metrics-col"> |
| 91 | <span class="vel-metric">net <span class="vel-metric__val">{{ "%+d" | format(m.net) }}</span></span> |
| 92 | <span class="vel-metric">mod <span class="vel-metric__val">{{ m.modified | fmtnum }}</span></span> |
| 93 | </div> |
| 94 | |
| 95 | {# Acceleration badge #} |
| 96 | <span class="vel-accel vel-accel--{{ m.accel_class }}" title="net acceleration vs prior window">{{ m.accel_fmt }}</span> |
| 97 | |
| 98 | {# Stagnant #} |
| 99 | <span class="vel-stagnant{% if m.stagnant_commits > m.active_commits // 2 %} vel-stagnant--warn{% endif %}" |
| 100 | title="stagnant commits (net=0)">{{ m.stagnant_commits }}s</span> |
| 101 | |
| 102 | </div> |
| 103 | {% endfor %} |
| 104 | </div> |
| 105 | |
| 106 | {% else %} |
| 107 | <div class="vel-empty"> |
| 108 | {{ icon("gauge", 32, "icon--light-stroke") }} |
| 109 | <div>No velocity data yet. Push a commit to trigger an <code>intel.code.velocity</code> job.</div> |
| 110 | </div> |
| 111 | {% endif %} |
| 112 | |
| 113 | </div> |
| 114 | {% endblock %} |
File History
2 commits
sha256:c2e5cf2d754ed2fe9a94e879d41ad12ff221d2ac4ac7b45247fcb981c76858bf
docs: Section 8 database/migrations/backups — verified live…
Sonnet 5
24 days ago
sha256:80e1a60a39562f6e616aaafbb27487f03abbec7d8ffc6164302b7a0c0bfc63ee
docs: check off Section 0 items verified in inventory doc, …
Sonnet 5
24 days ago