Escalation by feeling is slow and political. Escalation by arithmetic is quick: backlog divided by the net burn rate (fixes minus new violations, measured over recent days) is the number of days the owner needs, and if it exceeds the days left the project is at risk, whatever the owner thinks.
days_left = 8
owners = { # backlog (open endpoints), recent net burn rate (endpoints per day)
"core owner": (120, 30),
"memory owner": (60, 5),
"io owner": (10, 2),
}
need = {o: round(b / r, 1) for o, (b, r) in owners.items()}
assert need == {"core owner": 4.0, "memory owner": 12.0, "io owner": 5.0}
at_risk = sorted(o for o, d in need.items() if d > days_left)
assert at_risk == ["memory owner"]
short_by = round(need["memory owner"] - days_left, 1)
assert short_by == 4.0
required_rate = 60 / days_left
assert required_rate == 7.5
print("PASS: at risk:", at_risk, "needs", need["memory owner"], "days with", days_left, "left; needs", required_rate, "fixes per day")Owner | Backlog | Net burn rate (per day) | Days needed | Days left | Status |
|---|---|---|---|---|---|
Core | 120 | 30 | 4.0 | 8 | On track |
Memory | 60 | 5 | 12.0 | 8 | At risk: 4 days short |
IO | 10 | 2 | 5.0 | 8 | On track |
The core owner has the largest backlog but is fastest, and finishes in 4 days. The memory owner has half the backlog but a net burn rate of 5 per day, so needs 12 days of the 8 left: at risk by 4 days, and needing 7.5 net fixes per day instead of 5. The example numbers are net rates, after subtracting new violations. The division is a floor estimate: it assumes the recent net rate holds and treats zero backlog as the floor, so a falling rate or a fresh wave of new violations breaks it. The escalation question is concrete: what changes the rate (more people, a different fix method for those endpoints, a structural change), or what changes the target (a waiver with evidence)? The IO owner is closer to the limit than the numbers suggest if their rate is falling.
Rates are measured over the last few days, not promised; a falling rate is a warning on its own.
At-risk owners get a named plan with a date, not a request to try harder.
The escalation record is part of the signoff package: it shows risks were visible and handled.
No: 60 / 10 = 6 days needed, less than the 8 left.