File size: 11,758 Bytes
6a437f0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

<style>

:root { color-scheme: light; }

.bi-wrap { font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; color: #1f2328 !important; }

.bi-wrap h1, .bi-wrap h2, .bi-wrap h3, .bi-wrap p, .bi-wrap strong, .bi-wrap td, .bi-wrap th, .bi-wrap div { color: #1f2328 !important; }

.bi-band { border: 1px solid #d8dee4; border-radius: 8px; background: #ffffff !important; padding: 16px; margin: 0 0 12px; }

.bi-title { display: flex; gap: 12px; align-items: flex-start; justify-content: space-between; margin-bottom: 12px; }

.bi-title h1, .bi-title h2 { margin: 0; line-height: 1.15; letter-spacing: 0; }

.bi-title h1 { font-size: 1.55rem; }

.bi-title h2 { font-size: 1.12rem; }

.bi-title p { margin: 4px 0 0; color: #57606a; max-width: 820px; }

.status-pill { border-radius: 999px; padding: 5px 9px; font-size: .78rem; font-weight: 700; background: #dafbe1; color: #116329 !important; white-space: nowrap; }

.metric-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(138px, 1fr)); gap: 8px; }

.metric { border: 1px solid #d0d7de; border-radius: 8px; padding: 10px; background: #f6f8fa !important; min-height: 86px; }

.metric-value { font-size: 1.45rem; font-weight: 800; line-height: 1.1; color: #0969da !important; }

.metric-label { margin-top: 4px; font-size: .84rem; font-weight: 700; }

.metric-note { margin-top: 2px; font-size: .76rem; color: #57606a !important; }

.callout-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 8px; }

.callout { border-left: 4px solid #0969da; background: #f6f8fa !important; border-radius: 8px; padding: 10px 12px; }

.callout:nth-child(2) { border-left-color: #1a7f37; }

.callout:nth-child(3) { border-left-color: #bf8700; }

.callout:nth-child(4) { border-left-color: #cf222e; }

.callout strong { display: block; margin-bottom: 4px; }

.group-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(310px, 1fr)); gap: 10px; }

.group-card { border: 1px solid #d8dee4; border-radius: 8px; padding: 12px; background: #fff !important; }

.group-card h3 { margin: 0 0 7px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }

.meta-row { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0; }

.chip-row { display: inline-flex; flex-wrap: wrap; gap: 5px; align-items: center; vertical-align: middle; }

.chip { display: inline-flex; align-items: center; border: 1px solid #d0d7de; border-radius: 999px; padding: 2px 7px; font-size: .78rem; background: #f6f8fa !important; color: #24292f !important; }

.chip.bucket { border-color: #9a6700; background: #fff8c5 !important; }

.chip.kind { border-color: #0969da; background: #ddf4ff !important; }

.workflow-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 10px; }

.workflow-card { border: 1px solid #d8dee4; border-radius: 8px; padding: 12px; background: #fff !important; }

.workflow-card h3 { margin: 0 0 7px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }

.workflow-card .move-count { font-weight: 800; color: #0969da !important; }

.move-list { display: grid; gap: 10px; }

.move-row { border: 1px solid #d8dee4; border-radius: 8px; background: #fff !important; }

.move-row summary { list-style: none; cursor: pointer; padding: 12px; }

.move-row summary::-webkit-details-marker { display: none; }

.move-summary { display: grid; grid-template-columns: minmax(190px, 1.1fr) minmax(220px, 1.35fr) minmax(220px, 1.35fr) minmax(120px, .7fr) minmax(100px, .55fr) minmax(220px, 1.25fr) auto; gap: 10px; align-items: start; }

.move-title h3 { margin: 0 0 4px; font-size: 1rem; line-height: 1.25; letter-spacing: 0; }

.move-field span { display: block; color: #57606a !important; font-size: .72rem; font-weight: 800; text-transform: uppercase; letter-spacing: .02em; }

.move-field p { margin: 3px 0 0; font-size: .84rem; line-height: 1.35; }

.view-bundles { align-self: center; justify-self: end; border: 1px solid #000000; border-radius: 999px; color: #000000 !important; background: #ffffff !important; padding: 4px 9px; font-size: .78rem; font-weight: 800; white-space: nowrap; }

.move-row[open] .view-bundles { background: #f6f8fa !important; }

.move-expanded { border-top: 1px solid #d8dee4; padding: 0 12px 12px; }

.bundle-row { border-top: 1px solid #eef1f4; padding: 12px 0; }

.bundle-row:first-child { border-top: none; }

.bundle-row h4 { margin: 0 0 6px; font-size: .94rem; line-height: 1.25; letter-spacing: 0; }

.bundle-scope { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 7px; margin-top: 8px; }

.evidence-list { margin: 8px 0 0 18px; padding: 0; color: #57606a !important; font-size: .82rem; line-height: 1.35; }

.evidence-list li { margin: 3px 0; }

.muted { color: #57606a !important; }

.evidence { font-size: .84rem; color: #57606a !important; }

.scroll-table { overflow-x: auto; border: 1px solid #d8dee4; border-radius: 8px; background: #fff !important; }

table.bi-table { width: 100%; border-collapse: collapse; font-size: .86rem; }

.bi-table th { text-align: left; background: #f6f8fa !important; color: #57606a !important; font-size: .78rem; border-bottom: 1px solid #d8dee4; padding: 8px; white-space: nowrap; }

.bi-table td { border-bottom: 1px solid #eef1f4; padding: 8px; vertical-align: top; min-width: 86px; }

.bi-table tr:last-child td { border-bottom: none; }

.wide { min-width: 280px; }

.tight { max-width: 180px; }

a { color: #0969da !important; text-decoration: none; }

a:hover { text-decoration: underline; }

.bi-wrap, .bi-wrap * { color: #000000 !important; }

@media (max-width: 720px) {

  .bi-title { display: block; }

  .status-pill { display: inline-block; margin-top: 8px; }

  .group-grid { grid-template-columns: 1fr; }

  .move-summary { grid-template-columns: 1fr; }

  .view-bundles { justify-self: start; }

}

</style>
<div class='bi-wrap'><section class='bi-band'><div class='bi-title'><div><h1>SQLAlchemy Backlog Intelligence</h1><p>A read-only, public-safe backlog compression view. It turns individual notifications into an auditable maintainer work plan with linked evidence underneath. No GitHub writes are performed.</p></div><span class='status-pill'>all open issues represented</span></div><div class='metric-grid'><div class='metric'><div class='metric-value'>186</div><div class='metric-label'>Open issues</div><div class='metric-note'>all represented</div></div><div class='metric'><div class='metric-value'>32</div><div class='metric-label'>Open PRs</div><div class='metric-note'>full local PR graph</div></div><div class='metric'><div class='metric-value'>99</div><div class='metric-label'>Review groups</div><div class='metric-note'>46.8% fewer review units</div></div><div class='metric'><div class='metric-value'>11</div><div class='metric-label'>Maintainer moves</div><div class='metric-note'>88.9% fewer than review groups</div></div><div class='metric'><div class='metric-value'>175</div><div class='metric-label'>Work threads</div><div class='metric-note'>expandable evidence graph</div></div><div class='metric'><div class='metric-value'>19</div><div class='metric-label'>PR-backed groups</div><div class='metric-note'>issues + PRs reviewed together</div></div><div class='metric'><div class='metric-value'>207</div><div class='metric-label'>No-write audit rows</div><div class='metric-note'>dry-run only</div></div></div></section><section class='bi-band'><div class='bi-title'><div><h2>Recommended Workflow</h2><p>This static run compresses 186 open issues and 32 open PRs into 99 review groups, then into 11 recommended maintainer moves. Start with maintainer-owned unblock work, then repair-ready failing PRs, then PR lineages, then batch issue sweeps, then volunteer-ready bundles.</p></div><span class='status-pill'>local-only; no GitHub writes</span></div><div class='workflow-grid'><article class='workflow-card'><h3>Do First: Maintainer-Owned Unblocks</h3><div class='move-count'>2 action queues &middot; 27 issues affected &middot; 22 PRs</div><p class='evidence'>Stalled work where the next action is maintainer-owned, such as repo-owner test approval or final review.</p><p class='evidence'><strong>Example:</strong> PRs waiting on repo-owner test approval are separated from contributor-blocked PRs, so maintainers can unblock them without rereading the full thread.</p><ul><li><strong>approve/inspect gated test run</strong><div class='muted'>12 bundles &middot; 24 issues &middot; 18 PRs</div></li><li><strong>make final PR decision</strong><div class='muted'>4 bundles &middot; 3 issues &middot; 4 PRs</div></li></ul></article><article class='workflow-card'><h3>Do Second: Repair-Ready PRs</h3><div class='move-count'>2 action queues &middot; 4 issues affected &middot; 9 PRs</div><p class='evidence'>Open PRs with named failing checks, merge state, or concrete repair direction.</p><ul><li><strong>fix failing static/type checks</strong><div class='muted'>3 bundles &middot; 2 issues &middot; 4 PRs</div></li><li><strong>update blocked branch</strong><div class='muted'>3 bundles &middot; 2 issues &middot; 5 PRs</div></li></ul></article><article class='workflow-card'><h3>Do Third: PR Lineage Cleanup</h3><div class='move-count'>1 action queue &middot; 24 issues affected &middot; 15 PRs</div><p class='evidence'>Older, superseded, or overlapping PR attempts that should be reviewed together.</p><ul><li><strong>resolve overlapping PR lineage</strong><div class='muted'>9 bundles &middot; 24 issues &middot; 15 PRs</div></li></ul></article><article class='workflow-card'><h3>Do Fourth: Batch Issue Sweeps</h3><div class='move-count'>4 action queues &middot; 117 issues affected &middot; 1 PR</div><p class='evidence'>Grouped issue families where one policy, duplicate, close, or clarification pass can cover several rows.</p><ul><li><strong>park or close contributor-waiting PRs</strong><div class='muted'>1 bundle &middot; 1 issue &middot; 1 PR</div></li><li><strong>apply stale sweep policy</strong><div class='muted'>25 bundles &middot; 111 issues &middot; 0 PRs</div></li><li><strong>consolidate duplicate candidates</strong><div class='muted'>1 bundle &middot; 2 issues &middot; 0 PRs</div></li><li><strong>park or close waiting-info issues</strong><div class='muted'>3 bundles &middot; 3 issues &middot; 0 PRs</div></li></ul></article><article class='workflow-card'><h3>Do Fifth: Volunteer Bundles</h3><div class='move-count'>2 action queues &middot; 38 issues affected &middot; 0 PRs</div><p class='evidence'>Contributor-ready issue slices with shared scope, labels, and test expectations.</p><ul><li><strong>prepare patch-plan bundle</strong><div class='muted'>11 bundles &middot; 16 issues &middot; 0 PRs</div></li><li><strong>prepare volunteer-ready bundle</strong><div class='muted'>12 bundles &middot; 22 issues &middot; 0 PRs</div></li></ul></article></div></section><section class='bi-band'><div class='bi-title'><div><h2>How This Reduces Maintainer Time</h2><p>The output does not act on GitHub. It turns individual notifications into evidence-bound review units.</p></div></div><div class='callout-grid'><div class='callout'><strong>Maintainer moves first</strong>Shows what a maintainer should do first, second, third, and why.</div><div class='callout'><strong>Threads stay expandable</strong>Review threads, relationship edges, and raw rows remain underneath for audit.</div><div class='callout'><strong>Specific blockers</strong>PR states are split into owner gates, contributor waits, check fixes, review decisions, and branch updates.</div><div class='callout'><strong>Batchable issue work</strong>Duplicate, stale, waiting-info, and volunteer-ready rows are handled as grouped sessions.</div></div></section></div>