Last active
May 19, 2026 10:07
-
-
Save potiuk/d593b7773847e5d2f8638ad59d355842 to your computer and use it in GitHub Desktop.
apache/airflow PR backlog dashboard — 2026-05-19
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!DOCTYPE html> | |
| <html><head><meta charset="utf-8"><title>apache/airflow — PR backlog dashboard</title> | |
| <style> | |
| body { background:#0d1117; color:#c9d1d9; font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; | |
| margin:0; padding:24px; max-width:1400px; margin:0 auto; } | |
| h1 { color:#f0f6fc; margin:0 0 8px; } | |
| h2 { color:#f0f6fc; margin:28px 0 12px; border-bottom:1px solid #30363d; padding-bottom:6px; } | |
| .context { color:#8b949e; font-size:13px; margin-bottom:20px; } | |
| .hero-row { display:flex; gap:12px; margin-bottom:12px; flex-wrap:wrap; } | |
| table { border-collapse:collapse; width:100%; font-size:13px; margin-top:8px; } | |
| th, td { padding:6px 10px; text-align:right; border-bottom:1px solid #21262d; } | |
| th { text-align:right; color:#8b949e; font-weight:600; background:#161b22; } | |
| th:first-child, td:first-child { text-align:left; } | |
| .total-row td { background:#21262d; font-weight:600; color:#f0f6fc; } | |
| .area-name { color:#56d4dd; } | |
| .triager-login { color:#58a6ff; font-weight:600; } | |
| .bar-cell { width:200px; } | |
| .legend { background:#161b22; border:1px solid #30363d; border-radius:6px; padding:14px; font-size:12px; color:#8b949e; } | |
| details { background:#161b22; border:1px solid #30363d; border-radius:6px; padding:8px 14px; margin-bottom:12px; } | |
| summary { cursor:pointer; color:#58a6ff; font-weight:600; padding:6px 0; } | |
| .muted { color:#6e7681; } | |
| .fail { color:#f85149; } | |
| .warn { color:#d29922; } | |
| .ok { color:#56d364; } | |
| .ai-tag { color:#a371f7; } | |
| .manual-tag { color:#58a6ff; } | |
| .sparkbar { display:inline-block; width:6px; background:#58a6ff; margin-right:1px; vertical-align:bottom; border-radius:1px; } | |
| .sparkbar.ai { background:#a371f7; } | |
| </style></head> | |
| <body> | |
| <h1>apache/airflow — PR backlog dashboard</h1> | |
| <div class="context">458 open PRs (non-bot) · closed/merged since 2026-04-07 (1084 PRs in window) · viewer @potiuk · 2026-05-19 00:00 UTC</div> | |
| <h2>Backlog state</h2><div class="hero-row"> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Health</div> | |
| <div style="font-size:24px;font-weight:600;color:#d29922;margin-top:4px;">⚠️ Needs attention</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">1 issue point(s)</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Total open</div> | |
| <div style="font-size:24px;font-weight:600;color:#76e3ea;margin-top:4px;">458</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">344 contributors · 114 maintainers</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #56d364;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Ready for review</div> | |
| <div style="font-size:24px;font-weight:600;color:#56d364;margin-top:4px;">154 <span style='font-size:14px;color:#8b949e;'>(<span style='color:#d29922;'>84</span> not engaged)</span></div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">contributor: 69 engaged + 84 not engaged</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Untriaged non-drafts</div> | |
| <div style="font-size:24px;font-weight:600;color:#d29922;margin-top:4px;">20</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">>4w: 0 · 1-4w: 3</div> | |
| </div> | |
| </div> | |
| <h2>Triage coverage — non-draft contributor PRs</h2> | |
| <div class="muted" style="margin-bottom:8px;">AI / QC / Non-AI / Untriaged cards are computed over the <b>non-ready</b> subset only (88 PRs). Ready-labelled PRs are accounted for separately in the Ready card.</div> | |
| <div class="hero-row"> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Total</div> | |
| <div style="font-size:24px;font-weight:600;color:#76e3ea;margin-top:4px;">241</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">actionable scope</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #56d364;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Ready for maintainer review</div> | |
| <div style="font-size:24px;font-weight:600;color:#56d364;margin-top:4px;">153 <span style="font-size:14px;color:#8b949e;">(<span style="color:#d29922;">84</span> not engaged)</span></div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">label-stamped queue · 84 of 153 had no maintainer touch</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #a371f7;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">AI / Quality-Criteria triaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#a371f7;margin-top:4px;"><span style="color:#a371f7;">55</span> <span style="color:#6e7681;">/</span> <span style="color:#58a6ff;">37</span></div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">AI footer / QC marker (non-ready only)</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Non-AI triaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#d29922;margin-top:4px;">13</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">engaged but no AI footer · ready-excluded</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #f85149;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Untriaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#f85149;margin-top:4px;">20</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">no maintainer engagement · ready-excluded</div> | |
| </div> | |
| </div> | |
| <h2>Triage coverage — draft contributor PRs</h2> | |
| <div class="hero-row"> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Total</div> | |
| <div style="font-size:24px;font-weight:600;color:#76e3ea;margin-top:4px;">103</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">author's court; surface only</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #56d364;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Ready for maintainer review</div> | |
| <div style="font-size:24px;font-weight:600;color:#56d364;margin-top:4px;">0 <span style="font-size:14px;color:#8b949e;">(<span style="color:#d29922;">0</span> not engaged)</span></div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">label-stamped queue · 0 of 0 had no maintainer touch</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #a371f7;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">AI / Quality-Criteria triaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#a371f7;margin-top:4px;"><span style="color:#a371f7;">71</span> <span style="color:#6e7681;">/</span> <span style="color:#58a6ff;">42</span></div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">AI footer / QC marker (overlap)</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Non-AI triaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#d29922;margin-top:4px;">7</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">engaged but no AI footer</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #f85149;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Untriaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#f85149;margin-top:4px;">25</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">no maintainer engagement</div> | |
| </div> | |
| </div> | |
| <h2>What needs attention</h2> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #f85149;border-radius:6px;padding:12px 14px;margin-bottom:8px;"> | |
| <div style="font-size:14px;font-weight:600;color:#f0f6fc;">📥 154 PRs labeled "ready for maintainer review"</div> | |
| <div style="font-size:13px;color:#8b949e;margin-top:4px;">The `ready for maintainer review` queue is past the triage stage; it needs maintainer review attention, not triage.</div> | |
| <div style="margin-top:8px;"><code style="background:#0d1117;border:1px solid #30363d;padding:4px 8px;border-radius:4px;color:#58a6ff;">/pr-management-code-review ready</code></div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:12px 14px;margin-bottom:8px;"> | |
| <div style="font-size:14px;font-weight:600;color:#f0f6fc;">👀 Triage 3 non-draft PRs aged 1-4 weeks</div> | |
| <div style="font-size:13px;color:#8b949e;margin-top:4px;">The 1–4w bucket is the queue's leading edge; staying on top of it stops PRs from rolling into >4w.</div> | |
| <div style="margin-top:8px;"><code style="background:#0d1117;border:1px solid #30363d;padding:4px 8px;border-radius:4px;color:#58a6ff;">/pr-management-triage all PR issues</code></div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:6px;padding:12px 14px;margin-bottom:8px;"> | |
| <div style="font-size:14px;font-weight:600;color:#f0f6fc;">🔄 51 triaged PRs have author responses awaiting re-triage</div> | |
| <div style="font-size:13px;color:#8b949e;margin-top:4px;">These will surface as request-author-confirmation (first leg of the two-sweep mark-ready gate) inside the regular triage sweep.</div> | |
| <div style="margin-top:8px;"><code style="background:#0d1117;border:1px solid #30363d;padding:4px 8px;border-radius:4px;color:#58a6ff;">/pr-management-triage all PR issues</code></div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #6e7681;border-radius:6px;padding:12px 14px;margin-bottom:8px;"> | |
| <div style="font-size:14px;font-weight:600;color:#f0f6fc;">📈 Ready-for-review queue in "providers" grew by 17 this week</div> | |
| <div style="font-size:13px;color:#8b949e;margin-top:4px;">Growth concentrated in one area suggests it'd benefit from a focused review pass.</div> | |
| <div style="margin-top:8px;"><code style="background:#0d1117;border:1px solid #30363d;padding:4px 8px;border-radius:4px;color:#58a6ff;">/pr-management-code-review label:area:providers</code></div> | |
| </div> | |
| <h2>Contributor PR funnel</h2> | |
| <div class="muted" style="margin-bottom:12px;">Where contributor non-bot PRs sit in the triage funnel. AI vs Non-AI is a clean partition of <i>Engaged</i>; QC-marker is reported separately (it overlaps both — AI templates include the link text, manual maintainers may also paste it).</div> | |
| <div style="max-width:900px;"> | |
| <div style="display:flex;align-items:center;margin-left:0px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">Contributor non-bot PRs (open)</span> | |
| </div> | |
| <div style="color:#76e3ea;font-weight:600;font-size:18px;min-width:50px;text-align:right;">344</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:28px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #6e7681;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">Drafts — author's court</span> <span style="color:#6e7681;font-size:11px;">(30%)</span> <span style="color:#8b949e;font-size:11px;">— wait; author hasn't marked ready</span> | |
| </div> | |
| <div style="color:#6e7681;font-weight:600;font-size:18px;min-width:50px;text-align:right;">103</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:28px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">Non-drafts</span> <span style="color:#6e7681;font-size:11px;">(70%)</span> <span style="color:#8b949e;font-size:11px;">— the actionable triage funnel</span> | |
| </div> | |
| <div style="color:#76e3ea;font-weight:600;font-size:18px;min-width:50px;text-align:right;">241</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:56px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #56d364;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">✓ Engaged (any maintainer signal — comment, review, OR ready label)</span> <span style="color:#6e7681;font-size:11px;">(92%)</span> | |
| </div> | |
| <div style="color:#56d364;font-weight:600;font-size:18px;min-width:50px;text-align:right;">221</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #a371f7;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">AI-triaged</span> <span style="color:#6e7681;font-size:11px;">(43%)</span> <span style="color:#8b949e;font-size:11px;">— AI footer present in any maintainer comment</span> | |
| </div> | |
| <div style="color:#a371f7;font-weight:600;font-size:18px;min-width:50px;text-align:right;">94</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">Non-AI triaged</span> <span style="color:#6e7681;font-size:11px;">(19%)</span> <span style="color:#8b949e;font-size:11px;">— engaged via comment but no AI footer</span> | |
| </div> | |
| <div style="color:#d29922;font-weight:600;font-size:18px;min-width:50px;text-align:right;">43</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #58a6ff;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">Ready-only (label-add only)</span> <span style="color:#6e7681;font-size:11px;">(38%)</span> <span style="color:#8b949e;font-size:11px;">— label = engagement, but no comment trail</span> | |
| </div> | |
| <div style="color:#58a6ff;font-weight:600;font-size:18px;min-width:50px;text-align:right;">84</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:56px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #f85149;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">✗ Untriaged (no engagement, no ready label)</span> <span style="color:#6e7681;font-size:11px;">(8%)</span> | |
| </div> | |
| <div style="color:#f85149;font-weight:600;font-size:18px;min-width:50px;text-align:right;">20</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #6e7681;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">< 1 day</span> <span style="color:#6e7681;font-size:11px;">(35%)</span> <span style="color:#8b949e;font-size:11px;">— fresh; give triage time</span> | |
| </div> | |
| <div style="color:#6e7681;font-weight:600;font-size:18px;min-width:50px;text-align:right;">7</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">1-7 days</span> <span style="color:#6e7681;font-size:11px;">(50%)</span> <span style="color:#8b949e;font-size:11px;">— current week</span> | |
| </div> | |
| <div style="color:#d29922;font-weight:600;font-size:18px;min-width:50px;text-align:right;">10</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #d29922;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">1-4 weeks</span> <span style="color:#6e7681;font-size:11px;">(15%)</span> <span style="color:#8b949e;font-size:11px;">— leading edge</span> | |
| </div> | |
| <div style="color:#d29922;font-weight:600;font-size:18px;min-width:50px;text-align:right;">3</div> | |
| </div> | |
| <div style="display:flex;align-items:center;margin-left:84px;padding:6px 10px;background:#161b22;border:1px solid #30363d;border-left:4px solid #6e7681;border-radius:4px;margin-bottom:4px;"> | |
| <div style="flex:1;"> | |
| <span style="color:#f0f6fc;font-weight:600;">> 4 weeks</span> <span style="color:#8b949e;font-size:11px;">— stale; high-priority triage target</span> | |
| </div> | |
| <div style="color:#6e7681;font-weight:600;font-size:18px;min-width:50px;text-align:right;">0</div> | |
| </div> | |
| </div> | |
| <h2>Trends over time</h2> | |
| <div class="muted" style="margin-bottom:12px;">Per-week snapshots over the last 6 weeks. Older weeks may slightly under-count PRs that closed before the cutoff (we don't have data for those).</div> | |
| <h3 style="color:#f0f6fc;margin-top:20px;">Open backlog over time</h3> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">475</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">356</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">238</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">119</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,34.58947368421053 152.0,24.92631578947369 254.0,24.736842105263165 356.0,20.0 458.0,30.23157894736842 560.0,23.978947368421046" fill="none" stroke="#58a6ff" stroke-width="2.5"/><circle cx="50.0" cy="34.58947368421053" r="3" fill="#58a6ff"/><text x="50.0" y="26.58947368421053" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">398</text><circle cx="152.0" cy="24.92631578947369" r="3" fill="#58a6ff"/><text x="152.0" y="16.92631578947369" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">449</text><circle cx="254.0" cy="24.736842105263165" r="3" fill="#58a6ff"/><text x="254.0" y="16.736842105263165" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">450</text><circle cx="356.0" cy="20.0" r="3" fill="#58a6ff"/><text x="356.0" y="12.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">475</text><circle cx="458.0" cy="30.23157894736842" r="3" fill="#58a6ff"/><text x="458.0" y="22.23157894736842" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">421</text><circle cx="560.0" cy="23.978947368421046" r="3" fill="#58a6ff"/><text x="560.0" y="15.978947368421046" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">454</text><line x1="568" y1="30" x2="584" y2="30" stroke="#58a6ff" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#58a6ff"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Open PRs</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">open count</text></svg> | |
| <table><tr><th>Week ending</th><th>Open count</th><th class="bar-cell">Bar</th></tr> | |
| <tr><td>04-14</td><td>398</td><td><div style="background:#58a6ff;width:84%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>04-21</td><td>449 <span class="muted" style="font-size:11px;">(+51)</span></td><td><div style="background:#58a6ff;width:95%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>04-28</td><td>450 <span class="muted" style="font-size:11px;">(+1)</span></td><td><div style="background:#58a6ff;width:95%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-05</td><td>475 <span class="muted" style="font-size:11px;">(+25)</span></td><td><div style="background:#58a6ff;width:100%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-12</td><td>421 <span class="muted" style="font-size:11px;">(-54)</span></td><td><div style="background:#58a6ff;width:89%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-19</td><td>454 <span class="muted" style="font-size:11px;">(+33)</span></td><td><div style="background:#58a6ff;width:96%;height:12px;border-radius:2px;"></div></td></tr> | |
| </table> | |
| <div class="muted" style="margin-top:6px;">6-week trend: <span class="fail">+56</span> open PRs (start: 398, end: 454)</div> | |
| <h3 style="color:#f0f6fc;margin-top:24px;">PRs opened by author class</h3> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">256</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">192</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">128</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">64</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,108.59375 152.0,108.59375 254.0,106.1328125 356.0,104.375 458.0,106.484375 560.0,99.453125" fill="none" stroke="#d29922" stroke-width="2.5"/><circle cx="50.0" cy="108.59375" r="3" fill="#d29922"/><text x="50.0" y="100.59375" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="152.0" cy="108.59375" r="3" fill="#d29922"/><text x="152.0" y="100.59375" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="254.0" cy="106.1328125" r="3" fill="#d29922"/><text x="254.0" y="98.1328125" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">11</text><circle cx="356.0" cy="104.375" r="3" fill="#d29922"/><text x="356.0" y="96.375" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">16</text><circle cx="458.0" cy="106.484375" r="3" fill="#d29922"/><text x="458.0" y="98.484375" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">10</text><circle cx="560.0" cy="99.453125" r="3" fill="#d29922"/><text x="560.0" y="91.453125" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">30</text><polyline points="50.0,93.828125 152.0,87.1484375 254.0,26.6796875 356.0,20.0 458.0,32.65625 560.0,37.2265625" fill="none" stroke="#76e3ea" stroke-width="2.5"/><circle cx="50.0" cy="93.828125" r="3" fill="#76e3ea"/><text x="50.0" y="85.828125" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">46</text><circle cx="152.0" cy="87.1484375" r="3" fill="#76e3ea"/><text x="152.0" y="79.1484375" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">65</text><circle cx="254.0" cy="26.6796875" r="3" fill="#76e3ea"/><text x="254.0" y="18.6796875" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">237</text><circle cx="356.0" cy="20.0" r="3" fill="#76e3ea"/><text x="356.0" y="12.0" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">256</text><circle cx="458.0" cy="32.65625" r="3" fill="#76e3ea"/><text x="458.0" y="24.65625" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">220</text><circle cx="560.0" cy="37.2265625" r="3" fill="#76e3ea"/><text x="560.0" y="29.2265625" fill="#76e3ea" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">207</text><polyline points="50.0,107.890625 152.0,107.890625 254.0,106.1328125 356.0,108.9453125 458.0,103.671875 560.0,101.9140625" fill="none" stroke="#6e7681" stroke-width="2.5"/><circle cx="50.0" cy="107.890625" r="3" fill="#6e7681"/><text x="50.0" y="99.890625" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="152.0" cy="107.890625" r="3" fill="#6e7681"/><text x="152.0" y="99.890625" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="254.0" cy="106.1328125" r="3" fill="#6e7681"/><text x="254.0" y="98.1328125" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">11</text><circle cx="356.0" cy="108.9453125" r="3" fill="#6e7681"/><text x="356.0" y="100.9453125" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">3</text><circle cx="458.0" cy="103.671875" r="3" fill="#6e7681"/><text x="458.0" y="95.671875" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">18</text><circle cx="560.0" cy="101.9140625" r="3" fill="#6e7681"/><text x="560.0" y="93.9140625" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">23</text><line x1="568" y1="30" x2="584" y2="30" stroke="#d29922" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#d29922"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">First-time</text><line x1="568" y1="46" x2="584" y2="46" stroke="#76e3ea" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#76e3ea"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Contributor</text><line x1="568" y1="62" x2="584" y2="62" stroke="#6e7681" stroke-width="2.5"/><circle cx="576" cy="62" r="3" fill="#6e7681"/><text x="588" y="66" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Maintainer</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">PRs opened</text></svg> | |
| <table><tr><th>Week ending</th><th>FIRST_TIME</th><th>CONTRIBUTOR</th><th>Maintainer</th><th>Total</th><th class="bar-cell">Stacked</th></tr> | |
| <tr> | |
| <td>04-14</td> | |
| <td class="warn">4</td> | |
| <td style="color:#76e3ea;">46</td> | |
| <td class="muted">6</td> | |
| <td><b>56</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:1%;"></div> | |
| <div style="background:#76e3ea;width:17%;"></div> | |
| <div style="background:#6e7681;width:2%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-21</td> | |
| <td class="warn">4</td> | |
| <td style="color:#76e3ea;">65</td> | |
| <td class="muted">6</td> | |
| <td><b>75</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:1%;"></div> | |
| <div style="background:#76e3ea;width:24%;"></div> | |
| <div style="background:#6e7681;width:2%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-28</td> | |
| <td class="warn">11</td> | |
| <td style="color:#76e3ea;">237</td> | |
| <td class="muted">11</td> | |
| <td><b>259</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:4%;"></div> | |
| <div style="background:#76e3ea;width:86%;"></div> | |
| <div style="background:#6e7681;width:4%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-05</td> | |
| <td class="warn">16</td> | |
| <td style="color:#76e3ea;">256</td> | |
| <td class="muted">3</td> | |
| <td><b>275</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:6%;"></div> | |
| <div style="background:#76e3ea;width:93%;"></div> | |
| <div style="background:#6e7681;width:1%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-12</td> | |
| <td class="warn">10</td> | |
| <td style="color:#76e3ea;">220</td> | |
| <td class="muted">18</td> | |
| <td><b>248</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:4%;"></div> | |
| <div style="background:#76e3ea;width:80%;"></div> | |
| <div style="background:#6e7681;width:7%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-19</td> | |
| <td class="warn">30</td> | |
| <td style="color:#76e3ea;">207</td> | |
| <td class="muted">23</td> | |
| <td><b>260</b></td> | |
| <td><div style="display:flex;width:100%;height:14px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#d29922;width:11%;"></div> | |
| <div style="background:#76e3ea;width:75%;"></div> | |
| <div style="background:#6e7681;width:8%;"></div> | |
| </div></td> | |
| </tr> | |
| </table> | |
| <div class="muted" style="margin-top:6px;">6-week totals: <span class="warn">75</span> first-time · <span style="color:#76e3ea;">1031</span> contributor · <span class="muted">67</span> maintainer · <b>1173</b> total (6% first-time, 88% contributor, 6% maintainer)</div> | |
| <h3 style="color:#f0f6fc;margin-top:24px;">Ready-for-review queue size over time</h3> | |
| <div class="muted" style="margin-bottom:8px;">Cumulative count of currently-`ready for maintainer review` PRs that had been labelled by end-of-week.</div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">143</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">107</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">72</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">36</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,91.74825174825175 152.0,91.74825174825175 254.0,72.86713286713287 356.0,72.23776223776224 458.0,51.468531468531474 560.0,20.0" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="91.74825174825175" r="3" fill="#56d364"/><text x="50.0" y="83.74825174825175" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">29</text><circle cx="152.0" cy="91.74825174825175" r="3" fill="#56d364"/><text x="152.0" y="83.74825174825175" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">29</text><circle cx="254.0" cy="72.86713286713287" r="3" fill="#56d364"/><text x="254.0" y="64.86713286713287" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">59</text><circle cx="356.0" cy="72.23776223776224" r="3" fill="#56d364"/><text x="356.0" y="64.23776223776224" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">60</text><circle cx="458.0" cy="51.468531468531474" r="3" fill="#56d364"/><text x="458.0" y="43.468531468531474" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">93</text><circle cx="560.0" cy="20.0" r="3" fill="#56d364"/><text x="560.0" y="12.0" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">143</text><line x1="568" y1="30" x2="584" y2="30" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#56d364"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Ready PRs (cumulative)</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">ready count</text></svg> | |
| <table><tr><th>Week ending</th><th>Ready count</th><th>Weekly +Δ</th><th class="bar-cell">Bar</th></tr> | |
| <tr><td>04-14</td><td class="ok">29</td><td class="muted">—</td><td><div style="background:#56d364;width:20%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>04-21</td><td class="ok">29</td><td class="muted">+0</td><td><div style="background:#56d364;width:20%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>04-28</td><td class="ok">59</td><td class="warn">+30</td><td><div style="background:#56d364;width:41%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-05</td><td class="ok">60</td><td class="warn">+1</td><td><div style="background:#56d364;width:42%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-12</td><td class="ok">93</td><td class="warn">+33</td><td><div style="background:#56d364;width:65%;height:12px;border-radius:2px;"></div></td></tr> | |
| <tr><td>05-19</td><td class="ok">143</td><td class="warn">+50</td><td><div style="background:#56d364;width:100%;height:12px;border-radius:2px;"></div></td></tr> | |
| </table> | |
| <div class="muted" style="margin-top:6px;">6-week trend: <span class="warn">+114</span> labelled-ready (start: 29, end: 143). Reflects net growth — PRs that lost the label are not in this dataset (currently-ready only).</div> | |
| <h3 style="color:#f0f6fc;margin-top:24px;">Triage velocity (caveat: under-counts older weeks)</h3> | |
| <div class="muted" style="margin-bottom:8px;">Count of PRs whose first <code>Pull Request quality criteria</code> marker comment fell in each week. ⚠ The closed-PR fetch caps comments at <code>last:25</code> — long-lived PRs whose triage marker is further back are systematically missed in early weeks.</div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">72</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">54</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">36</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">18</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,110.0 152.0,110.0 254.0,20.0 356.0,110.0 458.0,85.0 560.0,71.25" fill="none" stroke="#a371f7" stroke-width="2.5"/><circle cx="50.0" cy="110.0" r="3" fill="#a371f7"/><text x="50.0" y="102.0" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="152.0" cy="110.0" r="3" fill="#a371f7"/><text x="152.0" y="102.0" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="254.0" cy="20.0" r="3" fill="#a371f7"/><text x="254.0" y="12.0" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">72</text><circle cx="356.0" cy="110.0" r="3" fill="#a371f7"/><text x="356.0" y="102.0" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="458.0" cy="85.0" r="3" fill="#a371f7"/><text x="458.0" y="77.0" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">20</text><circle cx="560.0" cy="71.25" r="3" fill="#a371f7"/><text x="560.0" y="63.25" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">31</text><polyline points="50.0,110.0 152.0,110.0 254.0,106.25 356.0,110.0 458.0,110.0 560.0,110.0" fill="none" stroke="#58a6ff" stroke-width="2.5"/><circle cx="50.0" cy="110.0" r="3" fill="#58a6ff"/><text x="50.0" y="102.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="152.0" cy="110.0" r="3" fill="#58a6ff"/><text x="152.0" y="102.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="254.0" cy="106.25" r="3" fill="#58a6ff"/><text x="254.0" y="98.25" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">3</text><circle cx="356.0" cy="110.0" r="3" fill="#58a6ff"/><text x="356.0" y="102.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="458.0" cy="110.0" r="3" fill="#58a6ff"/><text x="458.0" y="102.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="560.0" cy="110.0" r="3" fill="#58a6ff"/><text x="560.0" y="102.0" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><line x1="568" y1="30" x2="584" y2="30" stroke="#a371f7" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#a371f7"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">AI-drafted</text><line x1="568" y1="46" x2="584" y2="46" stroke="#58a6ff" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#58a6ff"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Manual QC</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">markers / wk</text></svg> | |
| <table><tr><th>Week ending</th><th>AI-drafted</th><th>Manual QC</th><th>Total</th><th class="bar-cell">Stacked</th></tr> | |
| <tr> | |
| <td>04-14</td> | |
| <td class="ai-tag">0</td> | |
| <td>0</td> | |
| <td><b>0</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:0%;"></div> | |
| <div style="background:#58a6ff;width:0%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-21</td> | |
| <td class="ai-tag">0</td> | |
| <td>0</td> | |
| <td><b>0</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:0%;"></div> | |
| <div style="background:#58a6ff;width:0%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-28</td> | |
| <td class="ai-tag">72</td> | |
| <td>3</td> | |
| <td><b>75</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:96%;"></div> | |
| <div style="background:#58a6ff;width:4%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-05</td> | |
| <td class="ai-tag">0</td> | |
| <td>0</td> | |
| <td><b>0</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:0%;"></div> | |
| <div style="background:#58a6ff;width:0%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-12</td> | |
| <td class="ai-tag">20</td> | |
| <td>0</td> | |
| <td><b>20</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:27%;"></div> | |
| <div style="background:#58a6ff;width:0%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-19</td> | |
| <td class="ai-tag">31</td> | |
| <td>0</td> | |
| <td><b>31</b></td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#a371f7;width:41%;"></div> | |
| <div style="background:#58a6ff;width:0%;"></div> | |
| </div></td> | |
| </tr> | |
| </table> | |
| <h3 style="color:#f0f6fc;margin-top:24px;">Triage coverage rate by week opened</h3> | |
| <div class="muted" style="margin-bottom:8px;">For PRs opened in each week, % that ever received maintainer engagement (comment, review, label, or QC marker). ⚠ Subject to the same comment-cap caveat as the triage-velocity panel for older weeks.</div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">100</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">75</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">50</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">25</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,36.2 152.0,53.3 254.0,71.3 356.0,77.6 458.0,73.1 560.0,81.2" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="36.2" r="3" fill="#56d364"/><text x="50.0" y="28.200000000000003" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">82</text><circle cx="152.0" cy="53.3" r="3" fill="#56d364"/><text x="152.0" y="45.3" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">63</text><circle cx="254.0" cy="71.3" r="3" fill="#56d364"/><text x="254.0" y="63.3" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">43</text><circle cx="356.0" cy="77.6" r="3" fill="#56d364"/><text x="356.0" y="69.6" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">36</text><circle cx="458.0" cy="73.1" r="3" fill="#56d364"/><text x="458.0" y="65.1" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">41</text><circle cx="560.0" cy="81.2" r="3" fill="#56d364"/><text x="560.0" y="73.2" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">32</text><line x1="568" y1="30" x2="584" y2="30" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#56d364"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Coverage %</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">% engaged</text></svg> | |
| <table><tr><th>Week opened</th><th>Opened</th><th>Engaged</th><th>%</th><th class="bar-cell">Coverage</th></tr> | |
| <tr> | |
| <td>04-14</td> | |
| <td>56</td> | |
| <td class="ok">46</td> | |
| <td style="color:#56d364; font-weight:600;">82%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:82%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-21</td> | |
| <td>75</td> | |
| <td class="ok">47</td> | |
| <td style="color:#56d364; font-weight:600;">63%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:63%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>04-28</td> | |
| <td>259</td> | |
| <td class="ok">111</td> | |
| <td style="color:#d29922; font-weight:600;">43%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:43%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-05</td> | |
| <td>275</td> | |
| <td class="ok">100</td> | |
| <td style="color:#d29922; font-weight:600;">36%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:36%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-12</td> | |
| <td>248</td> | |
| <td class="ok">101</td> | |
| <td style="color:#d29922; font-weight:600;">41%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:41%;"></div> | |
| </div></td> | |
| </tr> | |
| <tr> | |
| <td>05-19</td> | |
| <td>260</td> | |
| <td class="ok">82</td> | |
| <td style="color:#d29922; font-weight:600;">32%</td> | |
| <td><div style="display:flex;width:100%;height:12px;background:#0d1117;border-radius:2px;"> | |
| <div style="background:#56d364;width:32%;"></div> | |
| </div></td> | |
| </tr> | |
| </table> | |
| <h2>Closure velocity (last 6 weeks)</h2> | |
| <div class="muted" style="margin-bottom:8px;">6-week total: <b>1077</b> · avg/wk: <b>180</b> · peak: <b>302</b></div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">212</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">159</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">106</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">53</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,106.17924528301887 152.0,103.20754716981132 254.0,34.009433962264154 356.0,20.0 458.0,20.424528301886795 560.0,27.641509433962256" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="106.17924528301887" r="3" fill="#56d364"/><text x="50.0" y="98.17924528301887" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="152.0" cy="103.20754716981132" r="3" fill="#56d364"/><text x="152.0" y="95.20754716981132" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">16</text><circle cx="254.0" cy="34.009433962264154" r="3" fill="#56d364"/><text x="254.0" y="26.009433962264154" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">179</text><circle cx="356.0" cy="20.0" r="3" fill="#56d364"/><text x="356.0" y="12.0" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">212</text><circle cx="458.0" cy="20.424528301886795" r="3" fill="#56d364"/><text x="458.0" y="12.424528301886795" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">211</text><circle cx="560.0" cy="27.641509433962256" r="3" fill="#56d364"/><text x="560.0" y="19.641509433962256" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">194</text><polyline points="50.0,107.02830188679245 152.0,106.60377358490567 254.0,76.4622641509434 356.0,93.86792452830188 458.0,71.36792452830188 560.0,95.99056603773585" fill="none" stroke="#6e7681" stroke-width="2.5"/><circle cx="50.0" cy="107.02830188679245" r="3" fill="#6e7681"/><text x="50.0" y="99.02830188679245" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">7</text><circle cx="152.0" cy="106.60377358490567" r="3" fill="#6e7681"/><text x="152.0" y="98.60377358490567" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">8</text><circle cx="254.0" cy="76.4622641509434" r="3" fill="#6e7681"/><text x="254.0" y="68.4622641509434" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">79</text><circle cx="356.0" cy="93.86792452830188" r="3" fill="#6e7681"/><text x="356.0" y="85.86792452830188" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">38</text><circle cx="458.0" cy="71.36792452830188" r="3" fill="#6e7681"/><text x="458.0" y="63.367924528301884" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">91</text><circle cx="560.0" cy="95.99056603773585" r="3" fill="#6e7681"/><text x="560.0" y="87.99056603773585" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">33</text><line x1="568" y1="30" x2="584" y2="30" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#56d364"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Merged</text><line x1="568" y1="46" x2="584" y2="46" stroke="#6e7681" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#6e7681"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Closed (not merged)</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">PRs / wk</text></svg> | |
| <table><tr><th>Week ending</th><th>Merged</th><th>Closed</th><th class="bar-cell">Bar (stacked)</th></tr> | |
| <tr><td>04-14</td><td class="ok">9</td><td class="muted">7</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:3%;"></div><div style="background:#6e7681;width:2%;"></div></div></td></tr> | |
| <tr><td>04-21</td><td class="ok">16</td><td class="muted">8</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:5%;"></div><div style="background:#6e7681;width:3%;"></div></div></td></tr> | |
| <tr><td>04-28</td><td class="ok">179</td><td class="muted">79</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:59%;"></div><div style="background:#6e7681;width:26%;"></div></div></td></tr> | |
| <tr><td>05-05</td><td class="ok">212</td><td class="muted">38</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:70%;"></div><div style="background:#6e7681;width:13%;"></div></div></td></tr> | |
| <tr><td>05-12</td><td class="ok">211</td><td class="muted">91</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:70%;"></div><div style="background:#6e7681;width:30%;"></div></div></td></tr> | |
| <tr><td>05-19</td><td class="ok">194</td><td class="muted">33</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:64%;"></div><div style="background:#6e7681;width:11%;"></div></div></td></tr> | |
| </table> | |
| <h2>Opened vs closed momentum (last 6 weeks)</h2> | |
| <div class="muted" style="margin-bottom:8px;">6-week: <b>1173</b> opened − <b>1077</b> closed = <b>+96</b> (growing)</div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">302</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">226</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">151</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">76</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,93.31125827814569 152.0,87.64900662251655 254.0,32.81456953642383 356.0,28.04635761589404 458.0,36.09271523178808 560.0,32.51655629139073" fill="none" stroke="#58a6ff" stroke-width="2.5"/><circle cx="50.0" cy="93.31125827814569" r="3" fill="#58a6ff"/><text x="50.0" y="85.31125827814569" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">56</text><circle cx="152.0" cy="87.64900662251655" r="3" fill="#58a6ff"/><text x="152.0" y="79.64900662251655" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">75</text><circle cx="254.0" cy="32.81456953642383" r="3" fill="#58a6ff"/><text x="254.0" y="24.814569536423832" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">259</text><circle cx="356.0" cy="28.04635761589404" r="3" fill="#58a6ff"/><text x="356.0" y="20.04635761589404" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">275</text><circle cx="458.0" cy="36.09271523178808" r="3" fill="#58a6ff"/><text x="458.0" y="28.092715231788077" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">248</text><circle cx="560.0" cy="32.51655629139073" r="3" fill="#58a6ff"/><text x="560.0" y="24.516556291390728" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">260</text><polyline points="50.0,105.23178807947019 152.0,102.8476821192053 254.0,33.11258278145695 356.0,35.496688741721854 458.0,20.0 560.0,42.35099337748345" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="105.23178807947019" r="3" fill="#56d364"/><text x="50.0" y="97.23178807947019" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">16</text><circle cx="152.0" cy="102.8476821192053" r="3" fill="#56d364"/><text x="152.0" y="94.8476821192053" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">24</text><circle cx="254.0" cy="33.11258278145695" r="3" fill="#56d364"/><text x="254.0" y="25.11258278145695" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">258</text><circle cx="356.0" cy="35.496688741721854" r="3" fill="#56d364"/><text x="356.0" y="27.496688741721854" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">250</text><circle cx="458.0" cy="20.0" r="3" fill="#56d364"/><text x="458.0" y="12.0" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">302</text><circle cx="560.0" cy="42.35099337748345" r="3" fill="#56d364"/><text x="560.0" y="34.35099337748345" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">227</text><line x1="568" y1="30" x2="584" y2="30" stroke="#58a6ff" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#58a6ff"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Opened</text><line x1="568" y1="46" x2="584" y2="46" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#56d364"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Closed</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">PRs / wk</text></svg> | |
| <table><tr><th>Week ending</th><th>Opened</th><th>Closed</th><th>Net Δ</th><th class="bar-cell">Bars</th></tr> | |
| <tr> | |
| <td>04-14</td> | |
| <td style="color:#58a6ff;">56</td> | |
| <td class="ok">16</td> | |
| <td class="fail">+40</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:19%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:5%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>04-21</td> | |
| <td style="color:#58a6ff;">75</td> | |
| <td class="ok">24</td> | |
| <td class="fail">+51</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:25%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:8%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>04-28</td> | |
| <td style="color:#58a6ff;">259</td> | |
| <td class="ok">258</td> | |
| <td class="fail">+1</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:86%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:85%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>05-05</td> | |
| <td style="color:#58a6ff;">275</td> | |
| <td class="ok">250</td> | |
| <td class="fail">+25</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:91%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:83%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>05-12</td> | |
| <td style="color:#58a6ff;">248</td> | |
| <td class="ok">302</td> | |
| <td class="ok">-54</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:82%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:100%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td>05-19</td> | |
| <td style="color:#58a6ff;">260</td> | |
| <td class="ok">227</td> | |
| <td class="fail">+33</td> | |
| <td> | |
| <div style="display:flex;align-items:center;gap:4px;"> | |
| <span style="font-size:10px;color:#58a6ff;width:32px;">open</span> | |
| <div style="background:#58a6ff;width:86%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| <div style="display:flex;align-items:center;gap:4px;margin-top:2px;"> | |
| <span style="font-size:10px;color:#56d364;width:32px;">closed</span> | |
| <div style="background:#56d364;width:75%;height:8px;border-radius:1px;"></div> | |
| </div> | |
| </td> | |
| </tr> | |
| </table> | |
| <h2>Closed by triage reason (per week)</h2> | |
| <div class="muted" style="margin-bottom:8px;">6-week breakdown: <span class="ok">821 merged</span> · <span class="warn">20 engaged-then-closed</span> · <span class="fail">113 sweep-closed</span> · <span class="muted">123 no-triage</span></div> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">212</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">159</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">106</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">53</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,106.17924528301887 152.0,103.20754716981132 254.0,34.009433962264154 356.0,20.0 458.0,20.424528301886795 560.0,27.641509433962256" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="106.17924528301887" r="3" fill="#56d364"/><text x="50.0" y="98.17924528301887" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="152.0" cy="103.20754716981132" r="3" fill="#56d364"/><text x="152.0" y="95.20754716981132" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">16</text><circle cx="254.0" cy="34.009433962264154" r="3" fill="#56d364"/><text x="254.0" y="26.009433962264154" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">179</text><circle cx="356.0" cy="20.0" r="3" fill="#56d364"/><text x="356.0" y="12.0" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">212</text><circle cx="458.0" cy="20.424528301886795" r="3" fill="#56d364"/><text x="458.0" y="12.424528301886795" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">211</text><circle cx="560.0" cy="27.641509433962256" r="3" fill="#56d364"/><text x="560.0" y="19.641509433962256" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">194</text><polyline points="50.0,108.72641509433963 152.0,109.15094339622641 254.0,108.30188679245283 356.0,109.15094339622641 458.0,107.02830188679245 560.0,109.15094339622641" fill="none" stroke="#d29922" stroke-width="2.5"/><circle cx="50.0" cy="108.72641509433963" r="3" fill="#d29922"/><text x="50.0" y="100.72641509433963" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">3</text><circle cx="152.0" cy="109.15094339622641" r="3" fill="#d29922"/><text x="152.0" y="101.15094339622641" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">2</text><circle cx="254.0" cy="108.30188679245283" r="3" fill="#d29922"/><text x="254.0" y="100.30188679245283" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="356.0" cy="109.15094339622641" r="3" fill="#d29922"/><text x="356.0" y="101.15094339622641" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">2</text><circle cx="458.0" cy="107.02830188679245" r="3" fill="#d29922"/><text x="458.0" y="99.02830188679245" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">7</text><circle cx="560.0" cy="109.15094339622641" r="3" fill="#d29922"/><text x="560.0" y="101.15094339622641" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">2</text><polyline points="50.0,108.30188679245283 152.0,107.45283018867924 254.0,93.86792452830188 356.0,106.17924528301887 458.0,89.19811320754717 560.0,107.02830188679245" fill="none" stroke="#f85149" stroke-width="2.5"/><circle cx="50.0" cy="108.30188679245283" r="3" fill="#f85149"/><text x="50.0" y="100.30188679245283" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="152.0" cy="107.45283018867924" r="3" fill="#f85149"/><text x="152.0" y="99.45283018867924" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="254.0" cy="93.86792452830188" r="3" fill="#f85149"/><text x="254.0" y="85.86792452830188" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">38</text><circle cx="356.0" cy="106.17924528301887" r="3" fill="#f85149"/><text x="356.0" y="98.17924528301887" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="458.0" cy="89.19811320754717" r="3" fill="#f85149"/><text x="458.0" y="81.19811320754717" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">49</text><circle cx="560.0" cy="107.02830188679245" r="3" fill="#f85149"/><text x="560.0" y="99.02830188679245" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">7</text><polyline points="50.0,110.0 152.0,110.0 254.0,94.29245283018868 356.0,98.5377358490566 458.0,95.14150943396227 560.0,99.81132075471697" fill="none" stroke="#6e7681" stroke-width="2.5"/><circle cx="50.0" cy="110.0" r="3" fill="#6e7681"/><text x="50.0" y="102.0" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="152.0" cy="110.0" r="3" fill="#6e7681"/><text x="152.0" y="102.0" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">0</text><circle cx="254.0" cy="94.29245283018868" r="3" fill="#6e7681"/><text x="254.0" y="86.29245283018868" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">37</text><circle cx="356.0" cy="98.5377358490566" r="3" fill="#6e7681"/><text x="356.0" y="90.5377358490566" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">27</text><circle cx="458.0" cy="95.14150943396227" r="3" fill="#6e7681"/><text x="458.0" y="87.14150943396227" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">35</text><circle cx="560.0" cy="99.81132075471697" r="3" fill="#6e7681"/><text x="560.0" y="91.81132075471697" fill="#6e7681" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">24</text><line x1="568" y1="30" x2="584" y2="30" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#56d364"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Merged</text><line x1="568" y1="46" x2="584" y2="46" stroke="#d29922" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#d29922"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">After resp.</text><line x1="568" y1="62" x2="584" y2="62" stroke="#f85149" stroke-width="2.5"/><circle cx="576" cy="62" r="3" fill="#f85149"/><text x="588" y="66" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">Sweep-closed</text><line x1="568" y1="78" x2="584" y2="78" stroke="#6e7681" stroke-width="2.5"/><circle cx="576" cy="78" r="3" fill="#6e7681"/><text x="588" y="82" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">No triage</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">closed / wk</text></svg> | |
| <table><tr><th>Week ending</th><th>Merged</th><th>After resp.</th><th>After triage (no resp.)</th><th>No triage</th><th class="bar-cell">Stacked</th></tr> | |
| <tr><td>04-14</td><td class="ok">9</td><td class="warn">3</td><td class="fail">4</td><td class="muted">0</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:3%;"></div><div style="background:#d29922;width:1%;"></div><div style="background:#f85149;width:1%;"></div><div style="background:#6e7681;width:0%;"></div></div></td></tr> | |
| <tr><td>04-21</td><td class="ok">16</td><td class="warn">2</td><td class="fail">6</td><td class="muted">0</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:5%;"></div><div style="background:#d29922;width:1%;"></div><div style="background:#f85149;width:2%;"></div><div style="background:#6e7681;width:0%;"></div></div></td></tr> | |
| <tr><td>04-28</td><td class="ok">179</td><td class="warn">4</td><td class="fail">38</td><td class="muted">37</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:59%;"></div><div style="background:#d29922;width:1%;"></div><div style="background:#f85149;width:13%;"></div><div style="background:#6e7681;width:12%;"></div></div></td></tr> | |
| <tr><td>05-05</td><td class="ok">212</td><td class="warn">2</td><td class="fail">9</td><td class="muted">27</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:70%;"></div><div style="background:#d29922;width:1%;"></div><div style="background:#f85149;width:3%;"></div><div style="background:#6e7681;width:9%;"></div></div></td></tr> | |
| <tr><td>05-12</td><td class="ok">211</td><td class="warn">7</td><td class="fail">49</td><td class="muted">35</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:70%;"></div><div style="background:#d29922;width:2%;"></div><div style="background:#f85149;width:16%;"></div><div style="background:#6e7681;width:12%;"></div></div></td></tr> | |
| <tr><td>05-19</td><td class="ok">194</td><td class="warn">2</td><td class="fail">7</td><td class="muted">24</td><td><div style="display:flex;width:100%;height:18px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:64%;"></div><div style="background:#d29922;width:1%;"></div><div style="background:#f85149;width:2%;"></div><div style="background:#6e7681;width:8%;"></div></div></td></tr> | |
| </table> | |
| <h2>Ready-for-review trend (top areas by ready count)</h2> | |
| <svg viewBox="0 0 640 140" style="width:100%;max-width:640px;background:#0d1117;border:1px solid #30363d;border-radius:4px;margin-top:8px;"><line x1="50" y1="20.0" x2="560" y2="20.0" stroke="#21262d" stroke-width="1"/><text x="42" y="24.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">38</text><line x1="50" y1="42.5" x2="560" y2="42.5" stroke="#21262d" stroke-width="1"/><text x="42" y="46.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">28</text><line x1="50" y1="65.0" x2="560" y2="65.0" stroke="#21262d" stroke-width="1"/><text x="42" y="69.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">19</text><line x1="50" y1="87.5" x2="560" y2="87.5" stroke="#21262d" stroke-width="1"/><text x="42" y="91.5" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">10</text><line x1="50" y1="110.0" x2="560" y2="110.0" stroke="#21262d" stroke-width="1"/><text x="42" y="114.0" fill="#6e7681" font-size="10" text-anchor="end" font-family="monospace">0</text><text x="50.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-14</text><text x="152.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-21</text><text x="254.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">04-28</text><text x="356.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-05</text><text x="458.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-12</text><text x="560.0" y="126" fill="#8b949e" font-size="10" text-anchor="middle" font-family="monospace">05-19</text><polyline points="50.0,98.15789473684211 152.0,98.15789473684211 254.0,76.84210526315789 356.0,76.84210526315789 458.0,53.15789473684211 560.0,20.0" fill="none" stroke="#f85149" stroke-width="2.5"/><circle cx="50.0" cy="98.15789473684211" r="3" fill="#f85149"/><text x="50.0" y="90.15789473684211" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">5</text><circle cx="152.0" cy="98.15789473684211" r="3" fill="#f85149"/><text x="152.0" y="90.15789473684211" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">5</text><circle cx="254.0" cy="76.84210526315789" r="3" fill="#f85149"/><text x="254.0" y="68.84210526315789" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">14</text><circle cx="356.0" cy="76.84210526315789" r="3" fill="#f85149"/><text x="356.0" y="68.84210526315789" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">14</text><circle cx="458.0" cy="53.15789473684211" r="3" fill="#f85149"/><text x="458.0" y="45.15789473684211" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">24</text><circle cx="560.0" cy="20.0" r="3" fill="#f85149"/><text x="560.0" y="12.0" fill="#f85149" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">38</text><polyline points="50.0,88.6842105263158 152.0,88.6842105263158 254.0,67.36842105263159 356.0,65.0 458.0,48.421052631578945 560.0,22.368421052631575" fill="none" stroke="#d29922" stroke-width="2.5"/><circle cx="50.0" cy="88.6842105263158" r="3" fill="#d29922"/><text x="50.0" y="80.6842105263158" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="152.0" cy="88.6842105263158" r="3" fill="#d29922"/><text x="152.0" y="80.6842105263158" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="254.0" cy="67.36842105263159" r="3" fill="#d29922"/><text x="254.0" y="59.36842105263159" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">18</text><circle cx="356.0" cy="65.0" r="3" fill="#d29922"/><text x="356.0" y="57.0" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">19</text><circle cx="458.0" cy="48.421052631578945" r="3" fill="#d29922"/><text x="458.0" y="40.421052631578945" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">26</text><circle cx="560.0" cy="22.368421052631575" r="3" fill="#d29922"/><text x="560.0" y="14.368421052631575" fill="#d29922" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">37</text><polyline points="50.0,95.78947368421052 152.0,95.78947368421052 254.0,86.31578947368422 356.0,86.31578947368422 458.0,76.84210526315789 560.0,57.89473684210526" fill="none" stroke="#58a6ff" stroke-width="2.5"/><circle cx="50.0" cy="95.78947368421052" r="3" fill="#58a6ff"/><text x="50.0" y="87.78947368421052" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="152.0" cy="95.78947368421052" r="3" fill="#58a6ff"/><text x="152.0" y="87.78947368421052" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="254.0" cy="86.31578947368422" r="3" fill="#58a6ff"/><text x="254.0" y="78.31578947368422" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">10</text><circle cx="356.0" cy="86.31578947368422" r="3" fill="#58a6ff"/><text x="356.0" y="78.31578947368422" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">10</text><circle cx="458.0" cy="76.84210526315789" r="3" fill="#58a6ff"/><text x="458.0" y="68.84210526315789" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">14</text><circle cx="560.0" cy="57.89473684210526" r="3" fill="#58a6ff"/><text x="560.0" y="49.89473684210526" fill="#58a6ff" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">22</text><polyline points="50.0,105.26315789473685 152.0,105.26315789473685 254.0,98.15789473684211 356.0,98.15789473684211 458.0,86.31578947368422 560.0,67.36842105263159" fill="none" stroke="#a371f7" stroke-width="2.5"/><circle cx="50.0" cy="105.26315789473685" r="3" fill="#a371f7"/><text x="50.0" y="97.26315789473685" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">2</text><circle cx="152.0" cy="105.26315789473685" r="3" fill="#a371f7"/><text x="152.0" y="97.26315789473685" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">2</text><circle cx="254.0" cy="98.15789473684211" r="3" fill="#a371f7"/><text x="254.0" y="90.15789473684211" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">5</text><circle cx="356.0" cy="98.15789473684211" r="3" fill="#a371f7"/><text x="356.0" y="90.15789473684211" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">5</text><circle cx="458.0" cy="86.31578947368422" r="3" fill="#a371f7"/><text x="458.0" y="78.31578947368422" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">10</text><circle cx="560.0" cy="67.36842105263159" r="3" fill="#a371f7"/><text x="560.0" y="59.36842105263159" fill="#a371f7" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">18</text><polyline points="50.0,100.52631578947368 152.0,100.52631578947368 254.0,95.78947368421052 356.0,95.78947368421052 458.0,88.6842105263158 560.0,79.21052631578948" fill="none" stroke="#56d364" stroke-width="2.5"/><circle cx="50.0" cy="100.52631578947368" r="3" fill="#56d364"/><text x="50.0" y="92.52631578947368" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="152.0" cy="100.52631578947368" r="3" fill="#56d364"/><text x="152.0" y="92.52631578947368" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">4</text><circle cx="254.0" cy="95.78947368421052" r="3" fill="#56d364"/><text x="254.0" y="87.78947368421052" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="356.0" cy="95.78947368421052" r="3" fill="#56d364"/><text x="356.0" y="87.78947368421052" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">6</text><circle cx="458.0" cy="88.6842105263158" r="3" fill="#56d364"/><text x="458.0" y="80.6842105263158" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">9</text><circle cx="560.0" cy="79.21052631578948" r="3" fill="#56d364"/><text x="560.0" y="71.21052631578948" fill="#56d364" font-size="10" text-anchor="middle" font-weight="600" font-family="monospace">13</text><line x1="568" y1="30" x2="584" y2="30" stroke="#f85149" stroke-width="2.5"/><circle cx="576" cy="30" r="3" fill="#f85149"/><text x="588" y="34" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">providers</text><line x1="568" y1="46" x2="584" y2="46" stroke="#d29922" stroke-width="2.5"/><circle cx="576" cy="46" r="3" fill="#d29922"/><text x="588" y="50" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">task-sdk</text><line x1="568" y1="62" x2="584" y2="62" stroke="#58a6ff" stroke-width="2.5"/><circle cx="576" cy="62" r="3" fill="#58a6ff"/><text x="588" y="66" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">(no area)</text><line x1="568" y1="78" x2="584" y2="78" stroke="#a371f7" stroke-width="2.5"/><circle cx="576" cy="78" r="3" fill="#a371f7"/><text x="588" y="82" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">API</text><line x1="568" y1="94" x2="584" y2="94" stroke="#56d364" stroke-width="2.5"/><circle cx="576" cy="94" r="3" fill="#56d364"/><text x="588" y="98" fill="#c9d1d9" font-size="11" font-family="-apple-system,sans-serif">DAG-processing</text><text x="12" y="65.0" fill="#6e7681" font-size="10" text-anchor="middle" transform="rotate(-90 12 65.0)">cumulative ready</text></svg> | |
| <table><tr><th>Area</th> | |
| <th>04-14</th> | |
| <th>04-21</th> | |
| <th>04-28</th> | |
| <th>05-05</th> | |
| <th>05-12</th> | |
| <th>05-19</th> | |
| <th>+last 7d</th></tr> | |
| <tr><td class="area-name">providers</td> | |
| <td>5</td> | |
| <td>5</td> | |
| <td>14</td> | |
| <td>14</td> | |
| <td>24</td> | |
| <td>38</td> | |
| <td class="warn" style="font-weight:600;">+17</td></tr> | |
| <tr><td class="area-name">task-sdk</td> | |
| <td>9</td> | |
| <td>9</td> | |
| <td>18</td> | |
| <td>19</td> | |
| <td>26</td> | |
| <td>37</td> | |
| <td class="warn" style="font-weight:600;">+14</td></tr> | |
| <tr><td class="area-name">(no area)</td> | |
| <td>6</td> | |
| <td>6</td> | |
| <td>10</td> | |
| <td>10</td> | |
| <td>14</td> | |
| <td>22</td> | |
| <td class="warn" style="font-weight:600;">+9</td></tr> | |
| <tr><td class="area-name">API</td> | |
| <td>2</td> | |
| <td>2</td> | |
| <td>5</td> | |
| <td>5</td> | |
| <td>10</td> | |
| <td>18</td> | |
| <td class="warn" style="font-weight:600;">+8</td></tr> | |
| <tr><td class="area-name">DAG-processing</td> | |
| <td>4</td> | |
| <td>4</td> | |
| <td>6</td> | |
| <td>6</td> | |
| <td>9</td> | |
| <td>13</td> | |
| <td class="warn" style="font-weight:600;">+5</td></tr> | |
| </table> | |
| <h2>Ready-for-review queue by CODEOWNER</h2> | |
| <div class="muted" style="margin-bottom:8px;">For each owner in <code>.github/CODEOWNERS</code>, count of currently-ready PRs that touch at least one file they own. A PR with multiple owners counts once per owner (rows can sum to more than 154). The <b style="color:#f85149;">Waiting for author response</b> column counts the subset where THAT owner has personally left a comment that the PR author hasn't replied or pushed past — i.e. the codeowner is currently expecting a response. Caveat: comment fetch capped at <code>last:10</code> per PR; older outstanding comments on chatty PRs may be missed.</div> | |
| <table><tr><th>CODEOWNER</th><th>Ready PRs</th><th>Waiting for author response</th><th class="bar-cell">Bar (Ready / Waiting overlay)</th></tr> | |
| <tr><td class="triager-login">@ashb</td><td><span style="color:#f85149;font-weight:600;">79</span> <span class="muted" style="font-size:11px;">(51% of queue)</span></td><td><span class="fail" style="font-weight:600;">1</span> <span class="muted" style="font-size:11px;">(1% of theirs)</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#f85149;width:100%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:1%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@amoghrajesh</td><td><span style="color:#f85149;font-weight:600;">61</span> <span class="muted" style="font-size:11px;">(40% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#f85149;width:77%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@kaxil</td><td><span style="color:#d29922;font-weight:600;">46</span> <span class="muted" style="font-size:11px;">(30% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:58%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@potiuk</td><td><span style="color:#d29922;font-weight:600;">32</span> <span class="muted" style="font-size:11px;">(21% of queue)</span></td><td><span class="fail" style="font-weight:600;">1</span> <span class="muted" style="font-size:11px;">(3% of theirs)</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:41%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:1%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@bugraoz93</td><td><span style="color:#d29922;font-weight:600;">30</span> <span class="muted" style="font-size:11px;">(19% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:38%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@XD-DENG</td><td><span style="color:#d29922;font-weight:600;">29</span> <span class="muted" style="font-size:11px;">(19% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:37%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@ephraimbuddy</td><td><span style="color:#d29922;font-weight:600;">24</span> <span class="muted" style="font-size:11px;">(16% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:30%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@choo121600</td><td><span style="color:#d29922;font-weight:600;">22</span> <span class="muted" style="font-size:11px;">(14% of queue)</span></td><td><span class="fail" style="font-weight:600;">1</span> <span class="muted" style="font-size:11px;">(5% of theirs)</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:28%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:1%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@jason810496</td><td><span style="color:#d29922;font-weight:600;">21</span> <span class="muted" style="font-size:11px;">(14% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#d29922;width:27%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@dheerajturaga</td><td><span style="color:#56d364;font-weight:600;">18</span> <span class="muted" style="font-size:11px;">(12% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:23%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@vatsrahul1001</td><td><span style="color:#56d364;font-weight:600;">17</span> <span class="muted" style="font-size:11px;">(11% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:22%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@pierrejeambrun</td><td><span style="color:#56d364;font-weight:600;">15</span> <span class="muted" style="font-size:11px;">(10% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:19%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@shubhamraj-git</td><td><span style="color:#56d364;font-weight:600;">14</span> <span class="muted" style="font-size:11px;">(9% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:18%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@jscheffl</td><td><span style="color:#56d364;font-weight:600;">13</span> <span class="muted" style="font-size:11px;">(8% of queue)</span></td><td><span class="fail" style="font-weight:600;">1</span> <span class="muted" style="font-size:11px;">(8% of theirs)</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:16%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:1%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@hussein-awala</td><td><span style="color:#56d364;font-weight:600;">12</span> <span class="muted" style="font-size:11px;">(8% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:15%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@gopidesupavan</td><td><span style="color:#56d364;font-weight:600;">12</span> <span class="muted" style="font-size:11px;">(8% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:15%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@rawwar</td><td><span style="color:#56d364;font-weight:600;">10</span> <span class="muted" style="font-size:11px;">(6% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:13%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@o-nikolas</td><td><span style="color:#56d364;font-weight:600;">10</span> <span class="muted" style="font-size:11px;">(6% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#56d364;width:13%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@bbovenzi</td><td><span style="color:#6e7681;font-weight:600;">9</span> <span class="muted" style="font-size:11px;">(6% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:11%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@ryanahamilton</td><td><span style="color:#6e7681;font-weight:600;">9</span> <span class="muted" style="font-size:11px;">(6% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:11%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@guan404ming</td><td><span style="color:#6e7681;font-weight:600;">9</span> <span class="muted" style="font-size:11px;">(6% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:11%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@jedcunningham</td><td><span style="color:#6e7681;font-weight:600;">8</span> <span class="muted" style="font-size:11px;">(5% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:10%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@bolkedebruin</td><td><span style="color:#6e7681;font-weight:600;">7</span> <span class="muted" style="font-size:11px;">(5% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:9%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@dstandish</td><td><span style="color:#6e7681;font-weight:600;">7</span> <span class="muted" style="font-size:11px;">(5% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:9%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@shahar1</td><td><span style="color:#6e7681;font-weight:600;">7</span> <span class="muted" style="font-size:11px;">(5% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:9%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@uranusjr</td><td><span style="color:#6e7681;font-weight:600;">4</span> <span class="muted" style="font-size:11px;">(3% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:5%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@Lee-W</td><td><span style="color:#6e7681;font-weight:600;">4</span> <span class="muted" style="font-size:11px;">(3% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:5%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@vincbeck</td><td><span style="color:#6e7681;font-weight:600;">3</span> <span class="muted" style="font-size:11px;">(2% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:4%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@mobuchowski</td><td><span style="color:#6e7681;font-weight:600;">2</span> <span class="muted" style="font-size:11px;">(1% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:3%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr><td class="triager-login">@RNHTTR</td><td><span style="color:#6e7681;font-weight:600;">1</span> <span class="muted" style="font-size:11px;">(1% of queue)</span></td><td><span class="muted">0</span></td><td><div style="position:relative;width:100%;height:14px;background:#0d1117;border-radius:2px;"><div style="background:#6e7681;width:1%;height:14px;border-radius:2px;position:absolute;left:0;top:0;"></div><div style="background:#f85149;width:0%;height:14px;border-radius:2px;position:absolute;left:0;top:0;opacity:0.85;"></div></div></td></tr> | |
| <tr class="total-row"> | |
| <td><span class="fail">⚠ (no CODEOWNERS match)</span></td> | |
| <td><span style="color:#f85149;font-weight:600;">36</span> <span class="muted" style="font-size:11px;">(23% of queue)</span></td> | |
| <td class="muted">—</td> | |
| <td><div style="background:#f85149;width:46%;height:14px;border-radius:2px;"></div></td> | |
| </tr> | |
| </table> | |
| <details style="margin-top:8px;"><summary class="fail">36 ready PRs with no CODEOWNERS match — paths not covered by any pattern (click to expand)</summary><div class="muted" style="margin-top:6px;font-size:12px;"><a href="https://github.com/apache/airflow/pull/60507" style="color:#58a6ff;">#60507</a> <a href="https://github.com/apache/airflow/pull/61036" style="color:#58a6ff;">#61036</a> <a href="https://github.com/apache/airflow/pull/61866" style="color:#58a6ff;">#61866</a> <a href="https://github.com/apache/airflow/pull/62034" style="color:#58a6ff;">#62034</a> <a href="https://github.com/apache/airflow/pull/63471" style="color:#58a6ff;">#63471</a> <a href="https://github.com/apache/airflow/pull/63663" style="color:#58a6ff;">#63663</a> <a href="https://github.com/apache/airflow/pull/63737" style="color:#58a6ff;">#63737</a> <a href="https://github.com/apache/airflow/pull/64051" style="color:#58a6ff;">#64051</a> <a href="https://github.com/apache/airflow/pull/64665" style="color:#58a6ff;">#64665</a> <a href="https://github.com/apache/airflow/pull/64724" style="color:#58a6ff;">#64724</a> <a href="https://github.com/apache/airflow/pull/64815" style="color:#58a6ff;">#64815</a> <a href="https://github.com/apache/airflow/pull/65323" style="color:#58a6ff;">#65323</a> <a href="https://github.com/apache/airflow/pull/65442" style="color:#58a6ff;">#65442</a> <a href="https://github.com/apache/airflow/pull/65449" style="color:#58a6ff;">#65449</a> <a href="https://github.com/apache/airflow/pull/65613" style="color:#58a6ff;">#65613</a> <a href="https://github.com/apache/airflow/pull/65845" style="color:#58a6ff;">#65845</a> <a href="https://github.com/apache/airflow/pull/65878" style="color:#58a6ff;">#65878</a> <a href="https://github.com/apache/airflow/pull/65879" style="color:#58a6ff;">#65879</a> <a href="https://github.com/apache/airflow/pull/65991" style="color:#58a6ff;">#65991</a> <a href="https://github.com/apache/airflow/pull/66065" style="color:#58a6ff;">#66065</a> (+16 more)</div></details> | |
| <details style="margin-top:8px;"><summary>9 CODEOWNERS with 0 ready PRs in the queue</summary><div class="muted" style="margin-top:6px;font-family:monospace;font-size:11px;">@BasPH, @Dev-iL, @Fokko, @dabla, @eladkal, @josh-fell, @romsharon98, @sekikn, @sjyangkevin</div></details> | |
| <h2>Pressure by area (top 8)</h2> | |
| <table><tr><th>Area</th><th>Pressure</th><th>Total</th><th>Contrib.</th><th>Untriaged >4w</th><th>Untriaged 1-4w</th><th>Ready</th><th>Triaged waiting</th></tr> | |
| <tr><td class="area-name">providers</td><td style="color:#f85149;font-weight:600;">94</td><td>136</td><td>98</td><td class="fail">0</td><td class="warn">1</td><td class="ok">41</td><td class="warn">6</td></tr> | |
| <tr><td class="area-name">task-sdk</td><td style="color:#f85149;font-weight:600;">71</td><td>114</td><td>82</td><td class="fail">0</td><td class="warn">1</td><td class="ok">39</td><td class="warn">3</td></tr> | |
| <tr><td class="area-name">(no area)</td><td style="color:#f85149;font-weight:600;">36</td><td>56</td><td>48</td><td class="fail">0</td><td class="warn">1</td><td class="ok">23</td><td class="warn">3</td></tr> | |
| <tr><td class="area-name">API</td><td style="color:#f85149;font-weight:600;">30</td><td>57</td><td>42</td><td class="fail">0</td><td class="warn">0</td><td class="ok">18</td><td class="warn">3</td></tr> | |
| <tr><td class="area-name">airflow-ctl</td><td style="color:#d29922;font-weight:600;">23</td><td>26</td><td>22</td><td class="fail">0</td><td class="warn">0</td><td class="ok">10</td><td class="warn">6</td></tr> | |
| <tr><td class="area-name">DAG-processing</td><td style="color:#d29922;font-weight:600;">21</td><td>43</td><td>27</td><td class="fail">0</td><td class="warn">0</td><td class="ok">14</td><td class="warn">1</td></tr> | |
| <tr><td class="area-name">Scheduler</td><td style="color:#d29922;font-weight:600;">20</td><td>34</td><td>24</td><td class="fail">0</td><td class="warn">1</td><td class="ok">9</td><td class="warn">3</td></tr> | |
| <tr><td class="area-name">UI</td><td style="color:#d29922;font-weight:600;">15</td><td>27</td><td>18</td><td class="fail">0</td><td class="warn">0</td><td class="ok">8</td><td class="warn">2</td></tr> | |
| </table> | |
| <h2>Triage funnel (contributor non-drafts)</h2> | |
| <div class="hero-row"> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #56d364;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Ready for review</div> | |
| <div style="font-size:24px;font-weight:600;color:#56d364;margin-top:4px;">153</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">63% of non-draft contributors</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #76e3ea;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Responded (post-QC)</div> | |
| <div style="font-size:24px;font-weight:600;color:#76e3ea;margin-top:4px;">52</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">22% · post-marker author activity</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #a371f7;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Waiting: AI-triage comment only</div> | |
| <div style="font-size:24px;font-weight:600;color:#a371f7;margin-top:4px;">34</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">14% · only an AI-drafted comment pending</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #f85149;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Waiting: author response to maintainer</div> | |
| <div style="font-size:24px;font-weight:600;color:#f85149;margin-top:4px;">21</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">9% · manual maintainer comment unresponded</div> | |
| </div> | |
| <div style="background:#161b22;border:1px solid #30363d;border-left:4px solid #58a6ff;border-radius:6px;padding:14px;flex:1;min-width:160px;"> | |
| <div style="font-size:11px;color:#8b949e;text-transform:uppercase;letter-spacing:0.05em;">Not yet triaged</div> | |
| <div style="font-size:24px;font-weight:600;color:#58a6ff;margin-top:4px;">20</div> | |
| <div style="font-size:11px;color:#8b949e;margin-top:4px;">8%</div> | |
| </div> | |
| </div> | |
| <div class="muted" style="margin-top:6px;font-size:12px;">The two waiting cards are mutually exclusive — a PR with both an unresponded AI-drafted and an unresponded manual maintainer comment counts only in the "author response to maintainer" bucket (higher priority).</div> | |
| <h2>Triager activity (top 15 by PRs engaged, last 6 weeks)</h2> | |
| <div class="muted" style="margin-bottom:8px;"><span class="ai-tag">●</span> AI-drafted (footer present) · <span class="manual-tag">●</span> Manually typed</div> | |
| <table><tr><th>Triager</th> | |
| <th>04-14</th> | |
| <th>04-21</th> | |
| <th>04-28</th> | |
| <th>05-05</th> | |
| <th>05-12</th> | |
| <th>05-19</th> | |
| <th>Total</th><th>AI / Manual</th><th class="bar-cell">Last 6w</th></tr> | |
| <tr><td class="triager-login">@potiuk</td> | |
| <td>8 <span class="muted" style="font-size:10px;">(<span class="manual-tag">8</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td>203 <span class="muted" style="font-size:10px;">(<span class="ai-tag">148</span>/<span class="manual-tag">55</span>)</span></td> | |
| <td>26 <span class="muted" style="font-size:10px;">(<span class="ai-tag">6</span>/<span class="manual-tag">20</span>)</span></td> | |
| <td>154 <span class="muted" style="font-size:10px;">(<span class="ai-tag">117</span>/<span class="manual-tag">37</span>)</span></td> | |
| <td>143 <span class="muted" style="font-size:10px;">(<span class="ai-tag">113</span>/<span class="manual-tag">30</span>)</span></td> | |
| <td><b>540</b></td> | |
| <td><span class="ai-tag">384</span> / <span class="manual-tag">156</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:5px;display:block;"></span><span class="sparkbar ai" style="background:#a371f7;width:6px;height:15px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span><span class="sparkbar ai" style="background:#a371f7;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:4px;display:block;"></span><span class="sparkbar ai" style="background:#a371f7;width:6px;height:12px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:3px;display:block;"></span><span class="sparkbar ai" style="background:#a371f7;width:6px;height:11px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@jscheffl</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>20 <span class="muted" style="font-size:10px;">(<span class="manual-tag">20</span>)</span></td> | |
| <td>25 <span class="muted" style="font-size:10px;">(<span class="manual-tag">25</span>)</span></td> | |
| <td>21 <span class="muted" style="font-size:10px;">(<span class="manual-tag">21</span>)</span></td> | |
| <td>23 <span class="muted" style="font-size:10px;">(<span class="manual-tag">23</span>)</span></td> | |
| <td><b>95</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">95</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@eladkal</td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>13 <span class="muted" style="font-size:10px;">(<span class="manual-tag">13</span>)</span></td> | |
| <td>14 <span class="muted" style="font-size:10px;">(<span class="manual-tag">14</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td><b>49</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">49</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@vatsrahul1001</td> | |
| <td class="muted">·</td> | |
| <td class="muted">·</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td class="muted">·</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>45 <span class="muted" style="font-size:10px;">(<span class="manual-tag">45</span>)</span></td> | |
| <td><b>47</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">47</span></td> | |
| <td><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:4px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@shahar1</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td>14 <span class="muted" style="font-size:10px;">(<span class="manual-tag">14</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td><b>37</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">37</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@bugraoz93</td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>10 <span class="muted" style="font-size:10px;">(<span class="manual-tag">10</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td><b>37</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">37</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@bbovenzi</td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>4 <span class="muted" style="font-size:10px;">(<span class="manual-tag">4</span>)</span></td> | |
| <td>11 <span class="muted" style="font-size:10px;">(<span class="manual-tag">11</span>)</span></td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>15 <span class="muted" style="font-size:10px;">(<span class="manual-tag">15</span>)</span></td> | |
| <td><b>37</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">37</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@vincbeck</td> | |
| <td class="muted">·</td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>13 <span class="muted" style="font-size:10px;">(<span class="manual-tag">13</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>4 <span class="muted" style="font-size:10px;">(<span class="manual-tag">4</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td><b>31</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">31</span></td> | |
| <td><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@pierrejeambrun</td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td class="muted">·</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td><b>28</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">28</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@choo121600</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td>4 <span class="muted" style="font-size:10px;">(<span class="manual-tag">4</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>10 <span class="muted" style="font-size:10px;">(<span class="ai-tag">5</span>/<span class="manual-tag">5</span>)</span></td> | |
| <td><b>28</b></td> | |
| <td><span class="ai-tag">5</span> / <span class="manual-tag">23</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span><span class="sparkbar ai" style="background:#a371f7;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@ashb</td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td class="muted">·</td> | |
| <td>8 <span class="muted" style="font-size:10px;">(<span class="manual-tag">8</span>)</span></td> | |
| <td>4 <span class="muted" style="font-size:10px;">(<span class="manual-tag">4</span>)</span></td> | |
| <td>8 <span class="muted" style="font-size:10px;">(<span class="manual-tag">8</span>)</span></td> | |
| <td>4 <span class="muted" style="font-size:10px;">(<span class="manual-tag">4</span>)</span></td> | |
| <td><b>27</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">27</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@amoghrajesh</td> | |
| <td class="muted">·</td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>8 <span class="muted" style="font-size:10px;">(<span class="manual-tag">8</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>6 <span class="muted" style="font-size:10px;">(<span class="manual-tag">6</span>)</span></td> | |
| <td><b>23</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">23</span></td> | |
| <td><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@jroachgolf84</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>5 <span class="muted" style="font-size:10px;">(<span class="manual-tag">5</span>)</span></td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td><b>19</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">19</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@Lee-W</td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>7 <span class="muted" style="font-size:10px;">(<span class="manual-tag">7</span>)</span></td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td>3 <span class="muted" style="font-size:10px;">(<span class="manual-tag">3</span>)</span></td> | |
| <td><b>18</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">18</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| <tr><td class="triager-login">@ferruzzi</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td>2 <span class="muted" style="font-size:10px;">(<span class="manual-tag">2</span>)</span></td> | |
| <td class="muted">·</td> | |
| <td>1 <span class="muted" style="font-size:10px;">(<span class="manual-tag">1</span>)</span></td> | |
| <td>8 <span class="muted" style="font-size:10px;">(<span class="manual-tag">8</span>)</span></td> | |
| <td><b>14</b></td> | |
| <td><span class="ai-tag">0</span> / <span class="manual-tag">14</span></td> | |
| <td><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;"></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span><span style="display:inline-block;width:8px;vertical-align:bottom;"><span class="sparkbar manual-tag" style="background:#58a6ff;width:6px;height:2px;display:block;"></span></span></td> | |
| </tr> | |
| </table> | |
| <details><summary>Detailed table 1: Triaged PRs — final state since 2026-04-07</summary> | |
| <table><tr><th>Area</th><th>Triaged total</th><th>Merged</th><th>Closed</th><th>Responded</th><th>%Merged</th><th>%Closed</th><th>%Resp</th></tr> | |
| <tr><td class="area-name">providers</td><td>62</td><td class="ok">22</td><td class="fail">40</td><td class="warn">21</td><td>35%</td><td>65%</td><td>34%</td></tr> | |
| <tr><td class="area-name">(no area)</td><td>27</td><td class="ok">7</td><td class="fail">20</td><td class="warn">6</td><td>26%</td><td>74%</td><td>22%</td></tr> | |
| <tr><td class="area-name">UI</td><td>22</td><td class="ok">5</td><td class="fail">17</td><td class="warn">8</td><td>23%</td><td>77%</td><td>36%</td></tr> | |
| <tr><td class="area-name">task-sdk</td><td>20</td><td class="ok">4</td><td class="fail">16</td><td class="warn">2</td><td>20%</td><td>80%</td><td>10%</td></tr> | |
| <tr><td class="area-name">API</td><td>17</td><td class="ok">4</td><td class="fail">13</td><td class="warn">8</td><td>24%</td><td>76%</td><td>47%</td></tr> | |
| <tr><td class="area-name">dev-tools</td><td>13</td><td class="ok">1</td><td class="fail">12</td><td class="warn">3</td><td>8%</td><td>92%</td><td>23%</td></tr> | |
| <tr><td class="area-name">helm-chart</td><td>10</td><td class="ok">1</td><td class="fail">9</td><td class="warn">0</td><td>10%</td><td>90%</td><td>0%</td></tr> | |
| <tr><td class="area-name">airflow-ctl</td><td>8</td><td class="ok">2</td><td class="fail">6</td><td class="warn">4</td><td>25%</td><td>75%</td><td>50%</td></tr> | |
| <tr><td class="area-name">DAG-processing</td><td>6</td><td class="ok">1</td><td class="fail">5</td><td class="warn">2</td><td>17%</td><td>83%</td><td>33%</td></tr> | |
| <tr><td class="area-name">translations</td><td>6</td><td class="ok">3</td><td class="fail">3</td><td class="warn">2</td><td>50%</td><td>50%</td><td>33%</td></tr> | |
| <tr><td class="area-name">CLI</td><td>6</td><td class="ok">3</td><td class="fail">3</td><td class="warn">5</td><td>50%</td><td>50%</td><td>83%</td></tr> | |
| <tr><td class="area-name">ConfigTemplates</td><td>5</td><td class="ok">1</td><td class="fail">4</td><td class="warn">2</td><td>20%</td><td>80%</td><td>40%</td></tr> | |
| <tr><td class="area-name">Scheduler</td><td>5</td><td class="ok">1</td><td class="fail">4</td><td class="warn">2</td><td>20%</td><td>80%</td><td>40%</td></tr> | |
| <tr><td class="area-name">db-migrations</td><td>5</td><td class="ok">0</td><td class="fail">5</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr><td class="area-name">logging</td><td>3</td><td class="ok">1</td><td class="fail">2</td><td class="warn">1</td><td>33%</td><td>67%</td><td>33%</td></tr> | |
| <tr><td class="area-name">secrets</td><td>1</td><td class="ok">1</td><td class="fail">0</td><td class="warn">1</td><td>100%</td><td>0%</td><td>100%</td></tr> | |
| <tr><td class="area-name">deadline-alerts</td><td>1</td><td class="ok">0</td><td class="fail">1</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr><td class="area-name">Triggerer</td><td>1</td><td class="ok">0</td><td class="fail">1</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr><td class="area-name">plugins</td><td>1</td><td class="ok">0</td><td class="fail">1</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr><td class="area-name">Executors-core</td><td>1</td><td class="ok">0</td><td class="fail">1</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr><td class="area-name">serialization</td><td>1</td><td class="ok">0</td><td class="fail">1</td><td class="warn">0</td><td>0%</td><td>100%</td><td>0%</td></tr> | |
| <tr class="total-row"><td>TOTAL (each PR once)</td><td>182</td><td class="ok">42</td><td class="fail">140</td><td class="warn">49</td><td>23%</td><td>77%</td><td>27%</td></tr> | |
| </table></details> | |
| <details><summary>Detailed table 2: Triaged PRs — still open</summary> | |
| <table><tr><th>Area</th><th>Total</th><th>Contrib.</th><th>Drafts</th><th>Triaged waiting</th><th>Responded</th><th>Ready</th><th>Untriaged >4w</th><th>Untriaged 1-4w</th><th>Pressure</th></tr> | |
| <tr><td class="area-name">providers</td><td>136</td><td>98</td><td class="muted">23</td><td class="warn">6</td><td>28</td><td class="ok">41</td><td class="fail">0</td><td class="warn">1</td><td>94</td></tr> | |
| <tr><td class="area-name">task-sdk</td><td>114</td><td>82</td><td class="muted">25</td><td class="warn">3</td><td>15</td><td class="ok">39</td><td class="fail">0</td><td class="warn">1</td><td>71</td></tr> | |
| <tr><td class="area-name">API</td><td>57</td><td>42</td><td class="muted">14</td><td class="warn">3</td><td>11</td><td class="ok">18</td><td class="fail">0</td><td class="warn">0</td><td>30</td></tr> | |
| <tr><td class="area-name">DAG-processing</td><td>43</td><td>27</td><td class="muted">8</td><td class="warn">1</td><td>7</td><td class="ok">14</td><td class="fail">0</td><td class="warn">0</td><td>21</td></tr> | |
| <tr><td class="area-name">dev-tools</td><td>37</td><td>17</td><td class="muted">7</td><td class="warn">1</td><td>4</td><td class="ok">5</td><td class="fail">0</td><td class="warn">0</td><td>12</td></tr> | |
| <tr><td class="area-name">Scheduler</td><td>34</td><td>24</td><td class="muted">7</td><td class="warn">3</td><td>4</td><td class="ok">9</td><td class="fail">0</td><td class="warn">1</td><td>20</td></tr> | |
| <tr><td class="area-name">UI</td><td>27</td><td>18</td><td class="muted">3</td><td class="warn">2</td><td>4</td><td class="ok">8</td><td class="fail">0</td><td class="warn">0</td><td>15</td></tr> | |
| <tr><td class="area-name">airflow-ctl</td><td>26</td><td>22</td><td class="muted">4</td><td class="warn">6</td><td>4</td><td class="ok">10</td><td class="fail">0</td><td class="warn">0</td><td>23</td></tr> | |
| <tr><td class="area-name">ConfigTemplates</td><td>25</td><td>15</td><td class="muted">7</td><td class="warn">3</td><td>1</td><td class="ok">5</td><td class="fail">0</td><td class="warn">0</td><td>10</td></tr> | |
| <tr><td class="area-name">Triggerer</td><td>22</td><td>16</td><td class="muted">7</td><td class="warn">3</td><td>1</td><td class="ok">8</td><td class="fail">0</td><td class="warn">1</td><td>11</td></tr> | |
| <tr><td class="area-name">logging</td><td>17</td><td>13</td><td class="muted">2</td><td class="warn">1</td><td>1</td><td class="ok">6</td><td class="fail">0</td><td class="warn">0</td><td>15</td></tr> | |
| <tr><td class="area-name">CLI</td><td>15</td><td>10</td><td class="muted">0</td><td class="warn">0</td><td>1</td><td class="ok">8</td><td class="fail">0</td><td class="warn">0</td><td>10</td></tr> | |
| <tr><td class="area-name">Executors-core</td><td>12</td><td>4</td><td class="muted">1</td><td class="warn">0</td><td>1</td><td class="ok">2</td><td class="fail">0</td><td class="warn">0</td><td>3</td></tr> | |
| <tr><td class="area-name">db-migrations</td><td>10</td><td>7</td><td class="muted">1</td><td class="warn">0</td><td>4</td><td class="ok">4</td><td class="fail">0</td><td class="warn">0</td><td>6</td></tr> | |
| <tr><td class="area-name">translations</td><td>8</td><td>8</td><td class="muted">5</td><td class="warn">2</td><td>1</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>3</td></tr> | |
| <tr><td class="area-name">go-sdk</td><td>8</td><td>2</td><td class="muted">1</td><td class="warn">0</td><td>0</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>1</td></tr> | |
| <tr><td class="area-name">deadline-alerts</td><td>7</td><td>6</td><td class="muted">0</td><td class="warn">0</td><td>2</td><td class="ok">6</td><td class="fail">0</td><td class="warn">0</td><td>6</td></tr> | |
| <tr><td class="area-name">helm-chart</td><td>7</td><td>6</td><td class="muted">2</td><td class="warn">1</td><td>2</td><td class="ok">0</td><td class="fail">0</td><td class="warn">0</td><td>10</td></tr> | |
| <tr><td class="area-name">secrets</td><td>3</td><td>2</td><td class="muted">1</td><td class="warn">0</td><td>1</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>1</td></tr> | |
| <tr><td class="area-name">core</td><td>3</td><td>3</td><td class="muted">1</td><td class="warn">0</td><td>0</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>2</td></tr> | |
| <tr><td class="area-name">plugins</td><td>3</td><td>3</td><td class="muted">1</td><td class="warn">0</td><td>0</td><td class="ok">2</td><td class="fail">0</td><td class="warn">0</td><td>2</td></tr> | |
| <tr><td class="area-name">serialization</td><td>2</td><td>1</td><td class="muted">0</td><td class="warn">0</td><td>0</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>1</td></tr> | |
| <tr><td class="area-name">production-image</td><td>2</td><td>2</td><td class="muted">0</td><td class="warn">0</td><td>0</td><td class="ok">1</td><td class="fail">0</td><td class="warn">0</td><td>2</td></tr> | |
| <tr><td class="area-name">registry</td><td>2</td><td>1</td><td class="muted">1</td><td class="warn">0</td><td>0</td><td class="ok">0</td><td class="fail">0</td><td class="warn">0</td><td>0</td></tr> | |
| <tr><td class="area-name">dynamic-task-mapping</td><td>1</td><td>1</td><td class="muted">0</td><td class="warn">0</td><td>0</td><td class="ok">0</td><td class="fail">0</td><td class="warn">0</td><td>1</td></tr> | |
| <tr><td class="area-name">kubernetes-tests</td><td>1</td><td>0</td><td class="muted">0</td><td class="warn">0</td><td>0</td><td class="ok">0</td><td class="fail">0</td><td class="warn">0</td><td>0</td></tr> | |
| <tr><td class="area-name muted">(no area)</td><td>56</td><td>48</td><td class="muted">19</td><td class="warn">3</td><td>13</td><td class="ok">23</td><td class="fail">0</td><td class="warn">1</td><td>36</td></tr> | |
| <tr class="total-row"><td>TOTAL (each PR once)</td><td>458</td><td>344</td><td class="muted">103</td><td class="warn">28</td><td>79</td><td class="ok">153</td><td class="fail">0</td><td class="warn">3</td><td>293</td></tr> | |
| </table></details> | |
| <h2>Legend</h2> | |
| <div class="legend"> | |
| <p><b>Contributor</b> = PR author whose <code>authorAssociation</code> is NOT one of OWNER/MEMBER/COLLABORATOR (and not a bot). | |
| <b>Maintainer</b> = OWNER/MEMBER/COLLABORATOR. | |
| <b>Triaged</b> = a maintainer comment contains the literal substring <code>Pull Request quality criteria</code> (the link text in <code>pr-management-triage</code>'s violations comments). | |
| <b>Non-AI triaged</b> = engaged but no AI-attribution footer in any maintainer comment (i.e. maintainer engaged through a non-AI path: hand-typed reviews, label-add without comment, etc.). | |
| <b>AI-triaged</b> = a maintainer comment contains the <code>AI-assisted triage tool</code> attribution footer. | |
| <b>Untriaged</b> = contributor non-bot PR with NO maintainer engagement AND NOT carrying the <code>ready for maintainer review</code> label. | |
| <b>Responded</b> = author commented or pushed a commit after the triage marker. | |
| <b>Pressure score</b> = weighted urgency per area; weights from <code>aggregate.md#pressure-score</code>: untriaged-old=5, untriaged-1-4w=3, untriaged-<1w=1, triaged-waiting-stale=2, ready=1.</p> | |
| <p><b>Opened vs closed momentum</b>: per week, count of PRs created in the window vs count of PRs closed/merged in the window. Net Δ > 0 = backlog growing.</p> | |
| <p><b>Triager activity</b>: distinct PRs each maintainer engaged with (commented on, reviewed, or labeled-ready). De-duped per maintainer per week per kind — so a maintainer posting 5 comments on the same PR in the same week counts as 1. <span class="ai-tag">●</span> AI = comment contained the `AI-assisted triage tool` footer; <span class="manual-tag">●</span> Manual = no footer (hand-typed).</p> | |
| <p><b>Health rating</b> = points: untriaged>4w (2pts) + untriaged 1-4w > 30 (1pt) + ready > 100 (1pt) + stale-triaged drafts > 20 (1pt). 0 = ✅ Healthy, 1-2 = ⚠️ Needs attention, ≥3 = 🔥 Action needed.</p> | |
| </div> | |
| </body></html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment