Skip to content

Instantly share code, notes, and snippets.

@potiuk
Created May 18, 2026 16:14
Show Gist options
  • Select an option

  • Save potiuk/ea0af46ab2e83a2db5ef3375c6bcef89 to your computer and use it in GitHub Desktop.

Select an option

Save potiuk/ea0af46ab2e83a2db5ef3375c6bcef89 to your computer and use it in GitHub Desktop.
apache/airflow PR stats v3 — 2026-05-18 — 'Quality Criteria triaged' label (final naming)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>📊 apache/airflow PR stats v3 — 2026-05-18</title>
<style>
* { box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; margin: 0; padding: 24px; background: #f6f8fa; color: #1f2328; line-height: 1.5; max-width: 1280px; margin: 0 auto; }
h1 { font-size: 28px; margin: 0 0 4px; }
h2 { font-size: 18px; margin: 32px 0 12px; padding-bottom: 6px; border-bottom: 1px solid #d0d7de; }
.context { color: #656d76; font-size: 14px; margin-bottom: 8px; }
.v3-note { background: #fbefff; border: 1px solid #c297ff; padding: 10px 14px; border-radius: 6px; font-size: 13px; margin: 12px 0 24px; }
.hero-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 16px; }
@media (max-width: 900px) { .hero-grid { grid-template-columns: repeat(2, 1fr); } }
.hero { background: white; border: 1px solid #d0d7de; border-left: 5px solid #0969da; border-radius: 6px; padding: 14px; }
.hero-num { font-size: 28px; font-weight: 600; line-height: 1.1; }
.hero-sub { font-size: 12px; color: #656d76; margin-top: 4px; }
.hero-reasons { font-size: 11px; color: #656d76; margin-top: 6px; line-height: 1.5; }
.hero-reasons div { margin-bottom: 2px; }
.badge { display: inline-block; background: #6e7781; color: white; font-size: 9px; font-weight: 700; padding: 2px 5px; border-radius: 3px; margin-left: 4px; vertical-align: 2px; }
.badge.new { background: #2da44e; }
.rec-card { display: flex; gap: 12px; background: white; border: 1px solid #d0d7de; border-radius: 6px; padding: 12px 16px; margin-bottom: 8px; }
.rec-card.high { border-left: 4px solid #cf222e; }
.rec-card.medium { border-left: 4px solid #bf8700; }
.rec-card.low { border-left: 4px solid #6e7781; }
.rec-icon { font-size: 24px; }
.rec-body { flex: 1; }
.rec-title { font-weight: 600; font-size: 14px; }
.rec-prio { font-size: 10px; padding: 2px 6px; border-radius: 3px; margin-left: 6px; font-weight: 700; color: white; vertical-align: middle; }
.rec-prio.high { background: #cf222e; }
.rec-prio.medium { background: #bf8700; }
.rec-prio.low { background: #6e7781; }
.rec-detail { font-size: 13px; color: #656d76; margin-top: 2px; }
.rec-action { margin-top: 6px; }
.rec-action code { background: #f0f2f5; padding: 2px 6px; border-radius: 3px; font-size: 12px; }
.velocity-chart, .chart-box { background: white; border: 1px solid #d0d7de; border-radius: 6px; padding: 16px; }
.vrow { display: flex; align-items: center; gap: 12px; margin-bottom: 4px; }
.vlabel { font-size: 12px; color: #656d76; width: 50px; font-family: monospace; }
.vbar { flex: 1; display: flex; height: 22px; background: #f0f2f5; border-radius: 4px; overflow: hidden; position: relative; }
.vseg { display: flex; align-items: center; padding: 0 6px; font-size: 11px; color: white; font-weight: 600; }
.vseg.merged { background: #1a7f37; }
.vseg.closed { background: #8c959f; }
.vsum { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-size: 11px; color: #1f2328; font-weight: 600; }
table { width: 100%; border-collapse: collapse; background: white; border: 1px solid #d0d7de; border-radius: 6px; overflow: hidden; }
th, td { padding: 6px 10px; text-align: left; border-bottom: 1px solid #d0d7de; font-size: 12px; }
th { background: #f6f8fa; font-weight: 600; color: #1f2328; font-size: 11px; }
td code { background: #f0f2f5; padding: 1px 4px; border-radius: 3px; font-size: 11px; }
.num { text-align: right; font-variant-numeric: tabular-nums; }
.dim { color: #afb6bd; }
.ai { color: #8250df; }
.manual { color: #1f2328; }
.pbar-wrap { position: relative; height: 16px; background: #f0f2f5; border-radius: 3px; }
.pbar { height: 100%; background: linear-gradient(90deg, #cf222e, #d4a72c); border-radius: 3px; }
.pval { position: absolute; right: 6px; top: 50%; transform: translateY(-50%); font-size: 11px; font-weight: 600; }
.trend-bar { display: inline-block; height: 12px; background: #f0f2f5; border-radius: 2px; vertical-align: middle; min-width: 30px; }
.trend-bar > div { display: inline-block; height: 100%; vertical-align: top; }
.trend-ai { background: #8250df; }
.trend-manual { background: #6e7781; }
details { margin-top: 16px; background: white; border: 1px solid #d0d7de; border-radius: 6px; }
summary { padding: 12px 16px; cursor: pointer; font-weight: 600; }
summary:hover { background: #f6f8fa; }
footer { margin-top: 32px; padding-top: 16px; border-top: 1px solid #d0d7de; color: #656d76; font-size: 12px; text-align: center; }
</style>
</head>
<body>
<h1>📊 apache/airflow — Maintainer dashboard v3</h1>
<div class="context">Monday, May 18, 2026 · 16:14 UTC · viewer @potiuk · 6-week window since 2026-04-06</div>
<div class="v3-note">🧪 <strong>v3 features applied</strong> from <a href="https://github.com/apache/airflow-steward/pulls?q=fix-stats-untriaged-scope">apache/airflow-steward PR fix-stats-untriaged-scope</a> (now 4 commits): broad <code>is_untriaged</code> (NOT is_engaged), <code>is_engaged</code> predicate (any-maintainer touched), separate <code>is_ai_triaged</code> + <code>bot_authored</code> categories, two-row hero grid with "Quality Criteria triaged" as the marker-based card, per-triager weekly stats with AI/manual split. Definitions block in <a href="https://github.com/apache/airflow-steward/blob/fix-stats-untriaged-scope/.claude/skills/pr-management-stats/classify.md">classify.md</a>.</div>
<div style="background:#ddf4ff;border:1px solid #54aeff;padding:10px 14px;border-radius:6px;font-size:13px;margin:0 0 24px;">
📖 <strong>Triage tiers — quick reference:</strong><br>
• <strong>Quality Criteria triaged</strong> = maintainer comment includes the literal substring <code>Pull Request quality criteria</code> (the link text in the canonical triage template).<br>
• <strong>De-facto triaged</strong> = a maintainer engaged with the PR (any comment/review) but didn't leave the Quality-Criteria marker.<br>
• <strong>AI-triaged</strong> = a maintainer comment includes the AI-attribution footer substring <code>AI-assisted triage tool</code> — meaning the comment was drafted by the <code>pr-management-triage</code> skill.<br>
• <strong>Untriaged</strong> (new broad definition) = <code>NOT is_engaged</code> — no maintainer has touched the PR at all. Earlier iterations used <code>NOT is_triaged</code> which over-counted (counted PRs maintainers had engaged with but didn't leave the marker on).
</div>
<h2>🎯 Backlog state</h2>
<div class="hero-grid"><div class="hero" style="border-left-color:#bf8700"><div class="hero-num" style="color:#bf8700">Needs attention</div><div class="hero-sub">based on triage backlog + queue size</div><div class="hero-reasons">ready queue > 100 (149)</div></div><div class="hero" style="border-left-color:#0969da"><div class="hero-num">457</div><div class="hero-sub">Open PRs (non-bot)</div><div class="hero-reasons"><div><strong>324</strong> non-draft · <strong>151</strong> draft</div><div>343 contributor · 114 collaborator</div></div></div><div class="hero" style="border-left-color:#bf8700"><div class="hero-num" style="color:#bf8700">149</div><div class="hero-sub">Ready for maintainer review</div><div class="hero-reasons">43% of contributor queue</div></div><div class="hero" style="border-left-color:#bf8700"><div class="hero-num" style="color:#bf8700">47</div><div class="hero-sub">Untriaged non-drafts</div><div class="hero-reasons">0 are &gt;4w · 13 in 1-4w bucket</div></div></div>
<h2>🔍 Triage coverage breakdown</h2>
<div class="hero-grid"><div class="hero" style="border-left-color:#0969da"><div class="hero-num">98</div><div class="hero-sub">Quality Criteria triaged <span class="badge" title="Maintainer comment contains the literal `Pull Request quality criteria` link">marker</span></div><div class="hero-reasons">40% of contributor non-drafts</div></div><div class="hero" style="border-left-color:#bf8700"><div class="hero-num" style="color:#bf8700">105</div><div class="hero-sub">De-facto triaged <span class="badge new" title="Engaged by a maintainer but no Quality-Criteria marker — broader is_engaged predicate">v3</span></div><div class="hero-reasons">43% of contributor non-drafts · the marker-counter gap</div></div><div class="hero" style="border-left-color:#8250df"><div class="hero-num" style="color:#8250df">152</div><div class="hero-sub">AI-triaged <span class="badge new" title="Received an AI-assisted triage comment">v3</span></div><div class="hero-reasons">155% of Quality-Criteria-triaged</div></div><div class="hero" style="border-left-color:#6e7781"><div class="hero-num">18</div><div class="hero-sub">Bot PRs <span class="badge new" title="Separate accounting category">v3</span></div><div class="hero-reasons">top: 10 dependabot</div></div></div>
<h2>💡 What needs attention</h2>
<div class="rec-card medium"><div class="rec-icon">⚠️</div><div class="rec-body"><div class="rec-title">Author silence post-triage <span class="rec-prio medium">MED</span></div><div class="rec-detail">37 contributor PRs waiting on author</div><div class="rec-action"><code>/pr-management-triage stale</code></div></div></div>
<div class="rec-card low"><div class="rec-icon">ℹ️</div><div class="rec-body"><div class="rec-title">Many de-facto-triaged without marker <span class="rec-prio low">LOW</span></div><div class="rec-detail">105 contributor PRs were engaged-by-maintainer but lack the triage marker — strict-counter gap</div></div></div>
<h2>👥 Triager activity — last 6 weeks (AI / manual split)</h2>
<div style="font-size: 12px; color: #656d76; margin-bottom: 8px;">
Each per-week cell shows <span class="ai"><strong>AI</strong></span> / <span class="manual"><strong>manual</strong></span> distinct PRs the maintainer engaged with that week. Trend bar shows total volume + AI portion (purple) over manual (grey). Bot accounts excluded.
</div>
<table>
<thead>
<tr>
<th>Triager</th><th class="num">Total</th><th class="num"><span class="ai">AI</span></th><th class="num"><span class="manual">Manual</span></th>
<th class="num">04-13</th><th class="num">04-20</th><th class="num">04-27</th><th class="num">05-04</th><th class="num">05-11</th><th class="num">05-18</th>
<th>Trend (AI / manual)</th>
</tr>
</thead>
<tbody><tr>
<td><a href="https://github.com/potiuk">@potiuk</a></td>
<td class="num"><strong>217</strong></td>
<td class="num ai">172</td>
<td class="num manual">45</td>
<td class="num"><span class="ai">8</span>/<span class="manual">4</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td><td class="num"><span class="ai">32</span>/<span class="manual">9</span></td><td class="num"><span class="ai">2</span>/<span class="manual">5</span></td><td class="num"><span class="ai">38</span>/<span class="manual">11</span></td><td class="num"><span class="ai">92</span>/<span class="manual">13</span></td>
<td><div class="trend-bar" style="width:60.0%"><div class="trend-ai" style="width:79.26267281105991%"></div><div class="trend-manual" style="width:20.737327188940085%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/eladkal">@eladkal</a></td>
<td class="num"><strong>24</strong></td>
<td class="num ai">0</td>
<td class="num manual">24</td>
<td class="num"><span class="ai">0</span>/<span class="manual">3</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">5</span></td><td class="num"><span class="ai">0</span>/<span class="manual">10</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td>
<td><div class="trend-bar" style="width:6.635944700460829%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/jscheffl">@jscheffl</a></td>
<td class="num"><strong>23</strong></td>
<td class="num ai">0</td>
<td class="num manual">23</td>
<td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">5</span></td><td class="num"><span class="ai">0</span>/<span class="manual">6</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td><td class="num"><span class="ai">0</span>/<span class="manual">6</span></td>
<td><div class="trend-bar" style="width:6.359447004608295%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/vatsrahul1001">@vatsrahul1001</a></td>
<td class="num"><strong>20</strong></td>
<td class="num ai">0</td>
<td class="num manual">20</td>
<td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">20</span></td>
<td><div class="trend-bar" style="width:5.529953917050691%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/ferruzzi">@ferruzzi</a></td>
<td class="num"><strong>10</strong></td>
<td class="num ai">0</td>
<td class="num manual">10</td>
<td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">6</span></td>
<td><div class="trend-bar" style="width:2.7649769585253456%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/pierrejeambrun">@pierrejeambrun</a></td>
<td class="num"><strong>9</strong></td>
<td class="num ai">0</td>
<td class="num manual">9</td>
<td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">4</span></td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td>
<td><div class="trend-bar" style="width:2.488479262672811%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/jroachgolf84">@jroachgolf84</a></td>
<td class="num"><strong>8</strong></td>
<td class="num ai">0</td>
<td class="num manual">8</td>
<td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td>
<td><div class="trend-bar" style="width:2.2119815668202762%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/Lee-W">@Lee-W</a></td>
<td class="num"><strong>8</strong></td>
<td class="num ai">0</td>
<td class="num manual">8</td>
<td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">4</span></td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td>
<td><div class="trend-bar" style="width:2.2119815668202762%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/bugraoz93">@bugraoz93</a></td>
<td class="num"><strong>8</strong></td>
<td class="num ai">0</td>
<td class="num manual">8</td>
<td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td>
<td><div class="trend-bar" style="width:2.2119815668202762%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/uranusjr">@uranusjr</a></td>
<td class="num"><strong>7</strong></td>
<td class="num ai">0</td>
<td class="num manual">7</td>
<td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num dim">·</td>
<td><div class="trend-bar" style="width:1.9354838709677418%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/ashb">@ashb</a></td>
<td class="num"><strong>7</strong></td>
<td class="num ai">0</td>
<td class="num manual">7</td>
<td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td>
<td><div class="trend-bar" style="width:1.9354838709677418%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/vincbeck">@vincbeck</a></td>
<td class="num"><strong>6</strong></td>
<td class="num ai">0</td>
<td class="num manual">6</td>
<td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td>
<td><div class="trend-bar" style="width:1.6589861751152073%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/bbovenzi">@bbovenzi</a></td>
<td class="num"><strong>6</strong></td>
<td class="num ai">0</td>
<td class="num manual">6</td>
<td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num"><span class="ai">0</span>/<span class="manual">3</span></td>
<td><div class="trend-bar" style="width:1.6589861751152073%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/choo121600">@choo121600</a></td>
<td class="num"><strong>5</strong></td>
<td class="num ai">3</td>
<td class="num manual">2</td>
<td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">3</span>/<span class="manual">2</span></td>
<td><div class="trend-bar" style="width:1.3824884792626728%"><div class="trend-ai" style="width:60.0%"></div><div class="trend-manual" style="width:40.0%"></div></div></td>
</tr>
<tr>
<td><a href="https://github.com/amoghrajesh">@amoghrajesh</a></td>
<td class="num"><strong>5</strong></td>
<td class="num ai">0</td>
<td class="num manual">5</td>
<td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">1</span></td><td class="num dim">·</td><td class="num dim">·</td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td><td class="num"><span class="ai">0</span>/<span class="manual">2</span></td>
<td><div class="trend-bar" style="width:1.3824884792626728%"><div class="trend-ai" style="width:0.0%"></div><div class="trend-manual" style="width:100.0%"></div></div></td>
</tr></tbody>
</table>
<div style="font-size: 12px; color: #656d76; margin-top: 8px;">
<strong>6-week throughput:</strong> <span class="ai">175 AI-assisted</span> / <span class="manual">188 manual</span> = <strong>363</strong> total across <strong>15</strong> active maintainers.
</div>
<h2>📊 Closure velocity (last 6 weeks)</h2>
<div class="velocity-chart">
<div class="vrow"><div class="vlabel">04-13</div><div class="vbar"><div class="vseg merged" style="width:0.8547008547008548%;"></div><div class="vseg closed" style="width:0.0%;"></div><span class="vsum">3</span></div></div>
<div class="vrow"><div class="vlabel">04-20</div><div class="vbar"><div class="vseg merged" style="width:2.564102564102564%;"></div><div class="vseg closed" style="width:0.0%;"></div><span class="vsum">9</span></div></div>
<div class="vrow"><div class="vlabel">04-27</div><div class="vbar"><div class="vseg merged" style="width:16.23931623931624%;">57</div><div class="vseg closed" style="width:0.5698005698005698%;"></div><span class="vsum">59</span></div></div>
<div class="vrow"><div class="vlabel">05-04</div><div class="vbar"><div class="vseg merged" style="width:71.22507122507122%;">250</div><div class="vseg closed" style="width:13.105413105413104%;">46</div><span class="vsum">296</span></div></div>
<div class="vrow"><div class="vlabel">05-11</div><div class="vbar"><div class="vseg merged" style="width:70.94017094017094%;">249</div><div class="vseg closed" style="width:29.059829059829063%;">102</div><span class="vsum">351</span></div></div>
<div class="vrow"><div class="vlabel">05-18</div><div class="vbar"><div class="vseg merged" style="width:68.66096866096866%;">241</div><div class="vseg closed" style="width:11.68091168091168%;">41</div><span class="vsum">282</span></div></div>
<div style="font-size: 12px; color: #656d76; margin-top: 8px;">6-week avg merged/week: <strong>134.8</strong> · peak: <strong>250</strong> · total merged: <strong>809</strong></div>
</div>
<h2>📈 Opened vs closed momentum</h2>
<div class="chart-box">
<svg viewBox="0 0 720 220" xmlns="http://www.w3.org/2000/svg" style="width:100%;max-width:720px;"><line x1="40" y1="180.0" x2="680" y2="180.0" stroke="#d0d7de" stroke-width="1"/><line x1="40" y1="40.0" x2="680" y2="40.0" stroke="#d0d7de" stroke-width="1" stroke-dasharray="3,3"/><text x="32" y="184.0" font-size="10" fill="#656d76" text-anchor="end">0</text><text x="32" y="44.0" font-size="10" fill="#656d76" text-anchor="end">351</text><text x="32" y="114.0" font-size="10" fill="#656d76" text-anchor="end">175</text><text x="40.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">04-13</text><text x="168.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">04-20</text><text x="296.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">04-27</text><text x="424.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">05-04</text><text x="552.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">05-11</text><text x="680.0" y="198" font-size="10" fill="#656d76" text-anchor="middle">05-18</text><polyline points="40.0,160.85470085470087 168.0,154.07407407407408 296.0,121.76638176638177 424.0,46.780626780626775 552.0,59.94301994301994 680.0,53.96011396011396" fill="none" stroke="#0969da" stroke-width="2.5"/><circle cx="40.0" cy="160.85470085470087" r="3.5" fill="#0969da"/><circle cx="168.0" cy="154.07407407407408" r="3.5" fill="#0969da"/><circle cx="296.0" cy="121.76638176638177" r="3.5" fill="#0969da"/><circle cx="424.0" cy="46.780626780626775" r="3.5" fill="#0969da"/><circle cx="552.0" cy="59.94301994301994" r="3.5" fill="#0969da"/><circle cx="680.0" cy="53.96011396011396" r="3.5" fill="#0969da"/><polyline points="40.0,178.80341880341882 168.0,176.4102564102564 296.0,156.46723646723646 424.0,61.93732193732193 552.0,40.0 680.0,67.52136752136752" fill="none" stroke="#1a7f37" stroke-width="2.5"/><circle cx="40.0" cy="178.80341880341882" r="3.5" fill="#1a7f37"/><circle cx="168.0" cy="176.4102564102564" r="3.5" fill="#1a7f37"/><circle cx="296.0" cy="156.46723646723646" r="3.5" fill="#1a7f37"/><circle cx="424.0" cy="61.93732193732193" r="3.5" fill="#1a7f37"/><circle cx="552.0" cy="40.0" r="3.5" fill="#1a7f37"/><circle cx="680.0" cy="67.52136752136752" r="3.5" fill="#1a7f37"/><rect x="50" y="20" width="12" height="2" fill="#0969da"/><text x="66" y="24" font-size="11" fill="#1f2328">Opened</text><rect x="142" y="20" width="12" height="2" fill="#1a7f37"/><text x="158" y="24" font-size="11" fill="#1f2328">Closed</text></svg>
<div style="font-size: 13px; color: #1f2328; margin-top: 12px; padding-top: 12px; border-top: 1px solid #d0d7de;">
Net delta this week: <strong>+34 PRs</strong> (316 opened - 282 closed)<br>
6-week net: <strong>+210 PRs</strong>
</div>
</div>
<h2>🔥 Pressure by area (top 8)</h2>
<table>
<thead><tr><th>Area</th><th>Pressure</th><th class="num">Total</th><th class="num">Non-draft</th><th class="num">Ready</th><th class="num">Triaged-waiting</th></tr></thead>
<tbody><tr><td><code>area:providers</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:100.0%;"></div><span class="pval">107</span></div></td><td class="num">132</td><td class="num">94</td><td class="num">38</td><td class="num">10</td></tr>
<tr><td><code>area:task-sdk</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:67.28971962616822%;"></div><span class="pval">72</span></div></td><td class="num">114</td><td class="num">79</td><td class="num">41</td><td class="num">2</td></tr>
<tr><td><code>(no area)</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:50.467289719626166%;"></div><span class="pval">54</span></div></td><td class="num">63</td><td class="num">37</td><td class="num">22</td><td class="num">8</td></tr>
<tr><td><code>area:API</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:35.51401869158878%;"></div><span class="pval">38</span></div></td><td class="num">59</td><td class="num">39</td><td class="num">20</td><td class="num">3</td></tr>
<tr><td><code>area:airflow-ctl</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:31.775700934579437%;"></div><span class="pval">34</span></div></td><td class="num">33</td><td class="num">27</td><td class="num">9</td><td class="num">5</td></tr>
<tr><td><code>area:DAG-processing</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:22.429906542056074%;"></div><span class="pval">24</span></div></td><td class="num">47</td><td class="num">27</td><td class="num">14</td><td class="num">1</td></tr>
<tr><td><code>area:Scheduler</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:21.49532710280374%;"></div><span class="pval">23</span></div></td><td class="num">33</td><td class="num">20</td><td class="num">10</td><td class="num">4</td></tr>
<tr><td><code>area:logging</code></td><td><div class="pbar-wrap"><div class="pbar" style="width:15.887850467289718%;"></div><span class="pval">17</span></div></td><td class="num">16</td><td class="num">14</td><td class="num">4</td><td class="num">1</td></tr></tbody>
</table>
<details>
<summary>📋 Detailed area breakdown</summary>
<table>
<thead><tr><th>Area</th><th class="num">Total</th><th class="num">Drafts</th><th class="num">Non-draft</th><th class="num">Contrib.</th><th class="num">Ready</th><th class="num">Triaged waiting</th><th class="num">Pressure</th></tr></thead>
<tbody><tr><td><code>area:providers</code></td><td class="num">132</td><td class="num">38</td><td class="num">94</td><td class="num">94</td><td class="num">38</td><td class="num">10</td><td class="num"><strong>107</strong></td></tr><tr><td><code>area:task-sdk</code></td><td class="num">114</td><td class="num">35</td><td class="num">79</td><td class="num">78</td><td class="num">41</td><td class="num">2</td><td class="num"><strong>72</strong></td></tr><tr><td><code>(no area)</code></td><td class="num">63</td><td class="num">26</td><td class="num">37</td><td class="num">52</td><td class="num">22</td><td class="num">8</td><td class="num"><strong>54</strong></td></tr><tr><td><code>area:API</code></td><td class="num">59</td><td class="num">20</td><td class="num">39</td><td class="num">41</td><td class="num">20</td><td class="num">3</td><td class="num"><strong>38</strong></td></tr><tr><td><code>area:DAG-processing</code></td><td class="num">47</td><td class="num">20</td><td class="num">27</td><td class="num">27</td><td class="num">14</td><td class="num">1</td><td class="num"><strong>24</strong></td></tr><tr><td><code>area:dev-tools</code></td><td class="num">41</td><td class="num">24</td><td class="num">17</td><td class="num">16</td><td class="num">4</td><td class="num">4</td><td class="num"><strong>16</strong></td></tr><tr><td><code>area:Scheduler</code></td><td class="num">33</td><td class="num">13</td><td class="num">20</td><td class="num">23</td><td class="num">10</td><td class="num">4</td><td class="num"><strong>23</strong></td></tr><tr><td><code>area:airflow-ctl</code></td><td class="num">33</td><td class="num">6</td><td class="num">27</td><td class="num">25</td><td class="num">9</td><td class="num">5</td><td class="num"><strong>34</strong></td></tr><tr><td><code>area:UI</code></td><td class="num">33</td><td class="num">8</td><td class="num">25</td><td class="num">18</td><td class="num">7</td><td class="num">1</td><td class="num"><strong>16</strong></td></tr><tr><td><code>area:ConfigTemplates</code></td><td class="num">26</td><td class="num">13</td><td class="num">13</td><td class="num">15</td><td class="num">7</td><td class="num">2</td><td class="num"><strong>11</strong></td></tr><tr><td><code>area:Triggerer</code></td><td class="num">22</td><td class="num">11</td><td class="num">11</td><td class="num">16</td><td class="num">9</td><td class="num">2</td><td class="num"><strong>14</strong></td></tr><tr><td><code>area:CLI</code></td><td class="num">16</td><td class="num">2</td><td class="num">14</td><td class="num">10</td><td class="num">6</td><td class="num">0</td><td class="num"><strong>12</strong></td></tr><tr><td><code>area:logging</code></td><td class="num">16</td><td class="num">2</td><td class="num">14</td><td class="num">12</td><td class="num">4</td><td class="num">1</td><td class="num"><strong>17</strong></td></tr><tr><td><code>area:db-migrations</code></td><td class="num">13</td><td class="num">3</td><td class="num">10</td><td class="num">7</td><td class="num">4</td><td class="num">1</td><td class="num"><strong>6</strong></td></tr><tr><td><code>area:Executors-core</code></td><td class="num">11</td><td class="num">7</td><td class="num">4</td><td class="num">4</td><td class="num">3</td><td class="num">0</td><td class="num"><strong>6</strong></td></tr><tr><td><code>area:translations</code></td><td class="num">9</td><td class="num">5</td><td class="num">4</td><td class="num">8</td><td class="num">0</td><td class="num">1</td><td class="num"><strong>4</strong></td></tr><tr><td><code>area:deadline-alerts</code></td><td class="num">9</td><td class="num">1</td><td class="num">8</td><td class="num">6</td><td class="num">6</td><td class="num">0</td><td class="num"><strong>6</strong></td></tr><tr><td><code>area:helm-chart</code></td><td class="num">7</td><td class="num">2</td><td class="num">5</td><td class="num">6</td><td class="num">0</td><td class="num">1</td><td class="num"><strong>5</strong></td></tr><tr><td><code>area:plugins</code></td><td class="num">4</td><td class="num">1</td><td class="num">3</td><td class="num">3</td><td class="num">2</td><td class="num">0</td><td class="num"><strong>2</strong></td></tr><tr><td><code>area:secrets</code></td><td class="num">3</td><td class="num">2</td><td class="num">1</td><td class="num">2</td><td class="num">1</td><td class="num">1</td><td class="num"><strong>3</strong></td></tr><tr><td><code>area:core</code></td><td class="num">3</td><td class="num">1</td><td class="num">2</td><td class="num">3</td><td class="num">2</td><td class="num">0</td><td class="num"><strong>2</strong></td></tr><tr><td><code>area:production-image</code></td><td class="num">3</td><td class="num">1</td><td class="num">2</td><td class="num">2</td><td class="num">1</td><td class="num">0</td><td class="num"><strong>1</strong></td></tr><tr><td><code>area:registry</code></td><td class="num">3</td><td class="num">2</td><td class="num">1</td><td class="num">1</td><td class="num">1</td><td class="num">0</td><td class="num"><strong>1</strong></td></tr><tr><td><code>area:go-sdk</code></td><td class="num">3</td><td class="num">2</td><td class="num">1</td><td class="num">2</td><td class="num">1</td><td class="num">0</td><td class="num"><strong>2</strong></td></tr><tr><td><code>area:serialization</code></td><td class="num">2</td><td class="num">1</td><td class="num">1</td><td class="num">1</td><td class="num">1</td><td class="num">0</td><td class="num"><strong>1</strong></td></tr><tr><td><code>area:dynamic-task-mapping</code></td><td class="num">1</td><td class="num">0</td><td class="num">1</td><td class="num">1</td><td class="num">1</td><td class="num">0</td><td class="num"><strong>1</strong></td></tr><tr><td><code>area:kubernetes-tests</code></td><td class="num">1</td><td class="num">0</td><td class="num">1</td><td class="num">0</td><td class="num">0</td><td class="num">0</td><td class="num"><strong>0</strong></td></tr></tbody>
</table>
</details>
<footer>Generated by pr-management-stats v3 (apache/airflow-steward PR fix-stats-untriaged-scope, 2 commits) · 2026-05-18 16:14 UTC · viewer @potiuk</footer>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment