Blocked/Stuck Protocol (CQ)¶
Owner: Vi | Updated: 2026-02-05
Purpose¶
Define what happens when a developer posts a blocker. Devs won't surface blockers if they don't get help—this SOP ensures every blocker gets a response.
The deal: You post blockers honestly → We respond and help you move.
Principles¶
| Principle | Why |
|---|---|
| Acknowledge fast | Dev knows someone saw it, isn't shouting into void |
| Unblock, don't necessarily solve | Sometimes answer is "skip this" or "do X instead" |
| Time-box waiting | Don't let devs sit blocked for days |
| Escalate early | Better to over-escalate than let blocker fester |
| No shame in being stuck | Complex work = getting stuck sometimes |
Blocker Types & Who Responds¶
| Blocker Type | First Responder | Example |
|---|---|---|
| Requirements unclear | Vi (PM) | "What should happen when user clicks X?" |
| Need decision | Vi → Ryan if needed | "Should we support edge case Y?" |
| Technical / architecture | Senior dev or Ryan | "How should this integrate with Z?" |
| Waiting on another dev | Vi (coordinates) | "Need Minh to finish API first" |
| Access / tooling | Vi or Ryan | "Can't access staging server" |
| Priority conflict | Ryan | "Task A and B both urgent, which first?" |
| Strategic / direction | Erik (via Ryan) | "Should we build this feature at all?" |
Response SLAs¶
| Action | Timeframe | Who |
|---|---|---|
| Acknowledge | Within 4 hours (or next morning if EOD post) | Vi |
| Provide answer OR escalate | Within 24 hours | First responder |
| Escalation response | Within 24 hours | Ryan / Erik |
If SLA missed: Ryan gets notified automatically.
The Process¶
Step 1: Dev Posts Blocker (in Daily Update)¶
**Blocker:** Need API endpoint specs from backend. Who owns this?
Or posts standalone in #cq-product:
@vi Blocked on [task]: [description]. Need [what you need].
Step 2: Vi Acknowledges¶
Within 4 hours (or next business morning):
Saw this. Checking with [person] and will get back to you.
Or if she can answer immediately:
[Answer]. You're unblocked—let me know if not.
Step 3: Resolve or Escalate¶
If Vi can resolve: Provide answer, confirm dev is unblocked.
If Vi can't resolve:
Escalating to Ryan. @ryan [dev] is blocked on [issue], needs [decision/help].
Step 4: Confirm Unblocked¶
After providing answer:
Does this unblock you? Let me know if you need more.
Dev confirms:
Yes, unblocked. Thanks.
Escalation Path¶
Dev blocked
↓
Vi (first response, 4 hrs)
↓ (can't resolve in 24 hrs)
Ryan (technical/priority decisions)
↓ (strategic/direction)
Erik
When to Escalate Immediately¶
| Situation | Escalate To |
|---|---|
| Blocker affects deadline | Ryan |
| Multiple devs blocked on same thing | Ryan |
| Blocker is about whether to build something | Ryan → Erik |
| Dev blocked 2+ days | Ryan |
| Vi unsure how to answer | Ryan |
For Devs: How to Post a Good Blocker¶
DO¶
**Blocker:** Payment API returning 403 on sandbox.
**Tried:** Checked API key, verified sandbox mode, tested in Postman.
**Need:** Someone with Stripe admin access to check permissions.
DON'T¶
**Blocker:** It doesn't work.
Template¶
**Blocker:** [What's blocking you]
**Tried:** [What you already attempted]
**Need:** [Specific help needed - decision, access, answer, review]
The more specific, the faster you get unblocked.
For Vi: Responding to Blockers¶
Quick Response Templates¶
Acknowledging:
Saw this. Let me check and get back to you within [timeframe].
Need more info:
Can you clarify [specific question]? Want to make sure I get you the right answer.
Providing answer:
[Answer]. Does this unblock you?
Escalating:
This needs Ryan's input. Escalating now. @ryan [brief context]
Unblock confirmed:
Great, marking this resolved. Let me know if anything else comes up.
Triage Questions¶
- Can I answer this myself? → Answer it
- Does another dev know? → Connect them
- Is this a product/priority question? → Escalate to Ryan
- Is this a strategic question? → Ryan will involve Erik
Blocker Tracking¶
Vi maintains visibility: - Note blockers in daily standup tracking - If blocker persists 2+ days, escalate to Ryan - In weekly meeting, review any blockers that took >24 hrs to resolve
What "Unblocked" Means¶
| Outcome | Counts as Unblocked? |
|---|---|
| Got the answer they needed | Yes |
| Told to skip the task / deprioritize | Yes |
| Given a workaround | Yes |
| Told to wait (with clear timeline) | Yes, if timeline < 2 days |
| "We'll figure it out later" | No - need concrete next step |
Key: Dev must be able to continue productive work.
Anti-Patterns to Avoid¶
| Anti-Pattern | Why It's Bad | Do This Instead |
|---|---|---|
| "Let me look into it" (then silence) | Dev waits indefinitely | Give a timeframe, follow up |
| Solving instead of unblocking | Over-engineering, slow | "Do X for now, we'll revisit" |
| Only checking blockers in standup | 24hr delay minimum | Check #cq-product channel throughout day |
| Making dev feel bad for being stuck | They'll hide blockers | Thank them for surfacing early |
| Answering in DM | No visibility, can't help others | Answer in thread on #cq-product |
FAQ¶
Q: What if I'm stuck but not sure it's a "blocker"? A: Post it anyway. Better to surface early. Worst case, you figure it out and update "never mind, solved it."
Q: Should I wait before posting a blocker? A: Try for 30 minutes max. If you're not making progress, post it. Don't lose hours.
Q: What if the blocker is embarrassing (I should know this)? A: Post it. Everyone gets stuck on "obvious" things. Speed > ego.
Q: What if Vi is out? A: Post in #cq-product anyway, tag @ryan. Someone will respond.
Q: Can I ask another dev directly? A: Yes, but also post in #cq-product so Vi has visibility. DMs are invisible.
Summary¶
| Role | Responsibility |
|---|---|
| Dev | Post blockers honestly, with context |
| Vi | Acknowledge in 4 hrs, resolve/escalate in 24 hrs |
| Ryan | Handle escalations, priority conflicts |
| Erik | Strategic direction (via Ryan) |
The goal: No dev stuck for more than 24 hours without a path forward.