# PR lifecycle, Sep 2026 (read-only, REST)
Sample: 150 merged PRs picked at random (10 per 2-day window, Aug 31-Sep 30) via search; detail pulled on 70, reviews on 35, merge-sha runs on 25, head-sha runs on 10. ~150 calls. Raw: arch/d/. FACT = fetched; EST = labeled.

| Stage (from PR open) | n | median | p90 |
|---|---|---|---|
| First CI green on PR (FACT, small n) | 10 | 0.35 h | 0.57 h |
| First bot review | 35 | 0.08 h | 0.12 h |
| First approval | 33 | 0.12 h | 1.02 h |
| Last approval -> merge | 33 | 0.03 h | 0.13 h |
| **Open -> merge** | 70 | **0.36 h** (mean 0.61) | **1.43 h** |
| Merge -> push CI on main finished | 23 | 0.14 h (8 min) | 0.18 h |
| Merge -> Lambdas deploy done | 12 | 0.18 h | 0.24 h |
| Merge -> prod live (EST = CI end + 0-30 min promote batch, avg +15) | - | ~0.4 h | ~0.7 h |
| Prod verified | - | none per-deploy; only scheduled Freshness Alarm + Watchdog | - |

Shape: pushes/PR median 2, p90 5, mean 3.2 (60% of PRs push more than once). Bot reviews/PR median 3, p90 11 (9 of 35 had 5+). Size median 303 lines, p90 1,463, mean 831. Runs on one PR head sha: 15-24 each (n=10). 2 of 25 main CI runs failed, 2 cancelled, 2 had none.

Where the waiting is (PR-hours, sum 42.7 h over 70 PRs): PR-hours concentrate in the tail. The top 7 PRs (>5 pushes) and 9 with 5+ reviews are a small count but most of the hours (review/fix loops). Approval->merge and first review are negligible.
Caveats: earlier audit (80 PRs, GraphQL) found median open->merge 0.65 h and prod EST 1.13 h; this sample is faster, with prod timing taken from CI end rather than promote end. The promote batch wait is not directly measured here.

## Top 5 waste sources (hours/month; EST unless noted)
| # | Waste | Basis | h/mo |
|---|---|---|---|
| 1 | Review/fix loops on big PRs (5+ reviews, >5 pushes) | FACT share ~25% of sampled PRs carry most PR-hours; ~4,000 PRs/mo x 0.61 h mean x ~60% tail | ~1,400 PR-h |
| 2 | Promote batching wait after merge | EST avg 15 min x ~4,000 merges (only customer-facing fixes feel it) | ~1,000 PR-h |
| 3 | 15-24 workflow runs per push, many skipped/cancelled (prior audit: 38% skipped, cancelled = 17% of wall-min) | prior audit + 10 head-sha samples | ~17% of CI wall-min |
| 4 | Failed/cancelled main CI (4 of 25 = 16%) forcing redeploy/rerun | FACT n=25 | ~600 runs/mo EST |
| 5 | No post-deploy verify per sha: problems found by schedule, not by deploy | FACT run lists | unmeasured |
