Blog
Scrum Masters Are Supposed to Remove Blockers They Can't See
9 min read
The sprint fails on day nine. Three days earlier, at standup, you asked: "is anyone blocked?" Everyone said no. Two engineers said they were making good progress. One said she'd have a PR up by end of day.
What was true at that standup: a PR had been sitting in review for four days with no activity because the assigned reviewer called in sick and nobody reassigned it. A ticket had quietly picked up three new acceptance criteria since sprint planning. A service that two other teams were both modifying this sprint was already in a broken state in staging. None of that got raised. The scrum master had no way to know.
This is not a standup format problem. It is a visibility problem. The blockers existed. They just didn't live anywhere a scrum master could see them.
Why standup is a poor blocker detection mechanism
Standup is a social mechanism. It depends on engineers volunteering information — and there are several reasons they do not, even when they should.
Engineers often don't label their situation as "blocked." A PR waiting on review isn't blocked, exactly — it's just waiting. A ticket that expanded scope isn't blocked — it's just harder than expected. A shared service in a broken state isn't their blocker — it's someone else's problem. By the time an engineer identifies something as a blocker in the standup sense, it has usually already cost them a day or more.
There is also the social reality that people don't like admitting they are stuck. Asking for help in front of the whole team, including the product owner and the manager, carries social cost. Engineers protect their perceived competence by underreporting friction, especially early in a sprint when it feels premature to escalate.
And standup happens once a day. The PR that stalled on Tuesday does not become visible until Wednesday's standup — assuming the engineer raises it at all. By then, the window to intervene has narrowed considerably.
The blockers that are invisible at standup
Some blockers are structurally invisible from a standup-based process — not because engineers are hiding them, but because they are system-state problems that nobody in the room has full visibility into.
Blockers standup surfaces:
-> "I'm waiting on a code review" (sometimes)
-> "I don't know how to do X" (rarely — people don't like admitting this)
-> "There's a conflict with what team B is building" (almost never — too vague)
-> "I'm blocked" (only once the engineer has already lost a day)
Blockers that live in the system and don't get raised at standup:
-> PRs open for 4+ days with no reviewer assigned or reviewer out sick
-> Tickets that gained three acceptance criteria since sprint planning
-> A shared service another team is modifying mid-sprint
-> An integration environment that has been failing since Monday
-> A dependency on a ticket in another team's backlog that has no due date
-> A service whose API contract changed without a corresponding update in this sprint's work
-> Two tickets that both touch the same database table with no noted coordinationPR review stalls are among the most common silent blockers. An engineer pushes a PR, assigns a reviewer, and moves to the next ticket. The reviewer is out sick or in crunch on something else. Four days pass. The original ticket is sitting at "in review" in Jira. Nobody raised it at standup because the engineer is working on other things and expects the review will happen eventually. The scrum master has no signal that this PR is on the critical path for two other tickets waiting to start.
Silent scope expansion is another category that standup almost never surfaces. A ticket that was estimated at two days gains an acceptance criterion on day three — added by the product owner in response to a stakeholder conversation. The engineer implementing it sees it, shrugs, and absorbs the extra work. It never gets flagged. The sprint estimate is now wrong by a day, but nobody knows until the sprint end retrospective.
Cross-team dependency conflicts are the hardest to surface because no individual engineer has the full picture. Team A is building a feature that calls the notification service. Team B is refactoring the notification service this sprint. Neither team's standup mentions the other. The integration break happens on day eight.
What scrum masters need to see that they currently can't
The gap a scrum master faces is not a matter of asking better standup questions. The gap is that the information they need to do their job — to see blockers before they kill sprint velocity — lives in systems they don't have access to in a queryable form. It lives in GitHub PR state, in Jira ticket history, in the codebase's service dependency graph, and in the diff between what a ticket said at sprint planning and what it says today.
A scrum master who can see the actual system state behind the sprint board — not the self-reported status updates, but the observable state — is operating with a fundamentally different information base than one who depends on standup. They can identify stalled PRs before the engineer raises them. They can spot scope expansion before it becomes a sprint failure. They can flag cross-team dependency conflicts before integration day.
Why "ask more questions" is not the solution
The usual advice for scrum masters who feel like they're missing blockers is to improve standup hygiene: add a blocker-specific question, make it a safe space to raise concerns, follow up one-on-one after standup. These interventions help marginally at best.
The problem is not that engineers are being asked the wrong question. The problem is that the information the scrum master needs is not in anyone's head. Nobody in standup knows that the PR has been in review for four days — that's a GitHub state, not a mental state. Nobody knows that the notification service Team B is modifying has three callers in this sprint's scope — that's a codebase dependency graph, not common knowledge. Nobody has done the cross-reference between Jira ticket history and sprint scope that would surface the silent scope expansion. Asking more questions in standup cannot surface information that is not in the room.
A scrum master who asks "is the notification service stable?" in standup gets "I think so" from the one engineer who has touched it recently. A scrum master who can query the system gets a factual answer about the service's current state, what changed in the last week, and which sprint tickets depend on it.
What queryable sprint and codebase state gives scrum masters
The shift from standup-dependent visibility to system-queryable visibility changes the scrum master role in a concrete way. Instead of asking the team what's blocked and hoping they surface the right things, a scrum master can check the state of the sprint against the state of the system and identify divergences directly.
Five queries a scrum master can run in Kognita that standup cannot answer:
1. "Which tickets in this sprint have been in-progress for more than three days
without a linked PR?"
-> surfaces invisible work, unclear estimates, or silent abandonment
2. "Which open PRs in this sprint have had no reviewer activity in the last 48 hours?"
-> surfaces review bottlenecks before they block the merge window
3. "Which tickets in this sprint touch services that Team B is also modifying
this sprint?"
-> surfaces cross-team dependency conflicts before integration
4. "Have any tickets in this sprint expanded in scope since they were estimated?
Show me tickets where acceptance criteria were added after sprint start."
-> surfaces silent scope expansion that will blow the sprint
5. "What does the auth service do, and which tickets this sprint have work
that depends on it?"
-> gives the scrum master enough technical grounding to ask the right questionsThese queries require exactly the kind of joint Jira-and-codebase context that most tools keep separate. A Jira query can tell you which tickets are in-progress. A GitHub query can tell you which PRs are open. Neither can tell you which open PRs are on the critical path for which in-progress tickets, or which in-progress tickets touch services that another team is actively modifying. That cross-reference requires the two context layers to be unified — Jira state and codebase state, queryable together.
Kognita's Jira MCP integration connects sprint state to codebase reality. A scrum master can ask plain-language questions — not write queries, not read API documentation, not know anything about the codebase structure — and get answers that are grounded in the actual system state rather than in what people volunteered at standup.
Sprint health snapshot — what Kognita + Jira reveals at sprint midpoint:
Sprint: Q2 Sprint 4 — Day 6 of 10
Work state
-> 14 tickets in scope
-> 5 completed, 6 in-progress, 3 not started
-> 2 tickets added to sprint after planning (scope expansion)
-> 1 ticket originally estimated at 3 points now has 6 acceptance criteria
PR state
-> 8 open PRs linked to sprint tickets
-> 3 PRs open > 3 days with no review activity
-> 1 PR linked to a blocking ticket has been in review for 5 days
-> 2 PRs touch the payments service — both need merge coordination
Cross-team signals
-> Team B is modifying the notification service this sprint
-> 3 tickets in this sprint depend on the notification service
-> No coordination ticket or shared planning noted in Jira
Risk
-> At current velocity, 4 tickets will not complete by sprint end
-> The 3 stalled PRs are on the critical path for 2 of those ticketsThe sprint health snapshot above is not a dashboard someone built for a specific team. It is the answer to: "what does this sprint look like right now, from a risk perspective?" A scrum master who can generate this at day five of a ten-day sprint can intervene on the stalled PRs, escalate the scope expansion conversation, and flag the cross-team dependency conflict — while there is still time to do something about all three.
Final take
Scrum masters are not failing to ask the right questions. The right questions are being asked. The answers are not available in standup because the answers live in systems the scrum master has no direct access to.
The role was designed around the assumption that blockers would be surfaced through conversation. That assumption held when team size was small, work was more homogeneous, and codebases were simpler. It does not hold when cross-team dependencies are invisible, when PR queues are opaque, when tickets can silently expand scope between planning and delivery, and when AI-accelerated development means five times as many changes are touching the same system in the same sprint.
A scrum master with queryable visibility into sprint state, PR age, scope drift, and cross-team dependency conflicts is not doing a better version of the same job. They are doing a different job — one where blockers get surfaced before they kill the sprint, not after.