Ticket flow
Tickets filed against tickets
closed, per track, from the public board's git history —
3957 tickets over 69 days, as of
8fc1b4df1. Both curves are a 7-day trailing mean, so a
quiet Sunday is not a trend.
Data generated 2026-09-02 by
tools/ticket_flow.py. It is a committed snapshot, not a live
query — if that date is old, the charts are too.
What this cannot tell you. A falling filed-rate cannot distinguish fewer bugs exist from we stopped looking. The defensible read is sweep-over-sweep — does the next deliberate campaign find less than the last? — not week-over-week.
Shaded bands mark windows where the rate says something about us rather than about the code:
- board created (2026-06-26) — The day devdocs/progress/ was founded: 398 of the board's tickets were written down at once, for work that had been in flight since 2026-05-24. Nothing was discovered on this date. Every 'filed' curve starts with this cliff and it means bookkeeping, not defects.
- CPython differential sweep (2026-07-28 to 2026-08-02, track N) — Deliberate bulk discovery: Nil-Python run against CPython and every divergence filed. Peaked at 47 tickets on 2026-08-02. The bugs are real; the RATE is a measure of how hard we looked, so the fall afterwards is not the code improving.
filed closed (dashed) declared window
Filed vs closed
One panel per track. Each panel has its own y scale — Track A carries 1377 tickets and the smallest here carries 189, so a shared axis would flatten every lane but the biggest. Compare the shape between panels, never the height. Colour is filed-vs-closed in every panel; the track is the title, never a hue.
These panels start after 2026-06-26 — the board created window described above. Plotted, that one day sets Track A's axis to 308/day and presses the real rate flat against the baseline, so it is excluded here rather than quietly smoothed away. The open-over-time panels below do count those tickets: they genuinely were open from that day on.
Open over time
The running integral of the panels above: filed, minus solved, minus rejected-or-decided. A ticket that was answered rather than fixed still leaves the queue — counting it as open forever would make every lane look permanently swamped.
How old is what's still open
The working-queue-versus-graveyard check. A lane whose open tickets are mostly days old is being worked; one whose queue is mostly a month old is a backlog with a nice name.
0-7 days 7-14 days 14-30 days 30+ days
| Track | Total | Open | 0-7 days | 7-14 days | 14-30 days | 30+ days |
|---|---|---|---|---|---|---|
| A | 1377 | 188 | 9 | 3 | 2 | 28 |
| B | 298 | 32 | 1 | 0 | 1 | 10 |
| C | 291 | 22 | 2 | 1 | 2 | 2 |
| N | 815 | 110 | 4 | 0 | 4 | 4 |
| P | 397 | 67 | 1 | 0 | 1 | 4 |
| T | 459 | 13 | 2 | 0 | 0 | 2 |
| U | 189 | 44 | 0 | 3 | 5 | 2 |
Method
- Track is the ticket's
track:field, never its filename. A ticket owned jointly (A+C) is filed once and counted under the first lane, not twice. - Filed is the first commit touching that ticket under
devdocs/progress/; closed is the first commit where it appears underdone/. - Tracks with fewer than 40 tickets get no panel — a curve drawn from a handful of tickets is noise with an axis. Folded out here: D (33), E (17), F (2), M (4), O (18), R (22), S (21), W (13), Z (1).
- The numbers are generated by
tools/ticket_flow.pyin the public repo and committed asdevdocs/progress/ticket-flow.json, so anyone can recompute them from the same history. - Undeclared spikes: the generator flags days that look like a campaign but are not declared as one. Currently 21 — they are shown unshaded, so treat a sharp step in a panel as unexplained rather than meaningful.