SLA & escalation
Queuebird’s SLA clock runs on business hours — specifically on the union of the linked team members’ working hours. A linked member who hasn’t set personal hours contributes the team’s anchor hours (in the anchor timezone); unlinked members don’t shift the clock at all; and before anyone links, the clock falls back to the team anchor hours.
- Warn at 75% of the window: the App Home SLA dot flips 🟡. No DM, no channel post — it’s a heads-up badge only.
- Breach at 100%: the dot flips 🔴 and the escalation ladder starts.
The default ladder:
- DMs to the reviewers.
- A channel post mentioning the team’s group handle — never a named individual, never
@channel. - A trailing maintainer ping.
If anyone is already 👀 looking, the whole ladder collapses to one step — a DM to each person currently holding 👀, and nothing else. /qb config can point the opening rung at the PR’s author or straight at the maintainer instead of the whole team. Steps are always spaced on the team’s business-hours clock.
The ladder never runs into the void. A claimer gets a quiet “still on it?” check-in partway through the window, and a claim nobody confirms for 8 business hours is released. If a breached PR loses its last reviewer — they stop, they time out, or a maintainer releases them — the ladder restarts from the top with fresh nudges, so a breached PR doesn’t sit silent.
When a PR has several homes
A PR asked by more than one team runs one clock and one ladder per team, each exactly as described above — its own window, its own anchor hours, its own ladder shape, its own claims, its own stats. One team reviewing, claiming, or breaching never touches another team’s clock.
A team’s obligation is satisfied — clock stopped, card marked ✓ review obligation met — the moment a submitted review (approve, request changes, or a comment-verdict all count) lands from one of that team’s own members. A PR routed to a queue the ordinary way, with no explicit ask, can also satisfy once the repo’s own required-approvals rule is met, even from an outside reviewer; but a team that was explicitly asked — by @team mention or a GitHub team review request — holds its obligation open until that team itself reviews, skips, or the PR merges. Repo rules alone don’t retire an explicit ask.
Skip vs. park. Skip ends one team’s obligation only: its clock is cancelled, nothing is banked, and every other team keeps going untouched. Park is the opposite — it’s global, pausing every hosting team’s clock at once (each banking its own remaining time) until restored. Park pauses the PR; skip removes one team from it.