Skip to main content

3 posts tagged with "blockers"

View All Tags

· 5 min read
VibeGov Team

A lot of agent discussions still assume there is one loop.

The agent is running. The loop is going. Work is happening.

That sounds fine until you try to govern it. Then you discover that "the loop" is hiding several different kinds of work with different sources, different outputs, and different reasons to pause.

VibeGov should be more explicit.

The real shape is usually three loops

In practice, agent-enabled work often has at least three loops running in parallel:

  • a Build Loop
  • an Exploratory Loop
  • a Human Feedback Loop

And once those exist, you also need one important rule for how they pause:

  • Scoped Blocking

1) Build Loop

The Build Loop is the delivery loop.

Its job is not to invent work. Its job is to consume already-governed work and turn it into clear outputs.

That means the Build Loop should take input from:

  • the repository,
  • the issue backlog,
  • the bound specs or requirements,
  • and the current governed delivery state.

And it should write back:

  • code,
  • docs,
  • tests,
  • evidence,
  • issue or PR state,
  • release-readiness or shipping outputs when relevant.

The important boundary is this:

build should not recursively self-source its own next work from its own outputs.

If it does, the delivery loop becomes unstable. Instead of a governed execution path, you get a self-expanding activity engine.

2) Exploratory Loop

The Exploratory Loop is the non-delivery intelligence loop.

Its job is to inspect reality and feed governed work into delivery.

That can include:

  • UI exploration,
  • workflow review,
  • spec exploration,
  • issue exploration,
  • drift detection,
  • gap analysis,
  • backlog hydration,
  • and exploratory report generation.

This is also where a lot of confusion happens. People hear planner or evaluator and assume those roles must belong to a delivery harness. But that is too narrow.

In VibeGov terms, exploratory work can absolutely include:

  • planner-style scoping of a review surface,
  • evaluator-style judgment of coverage, artifacts, or review quality,
  • and even generator-style output when the output is an exploratory artifact rather than a delivered product change.

What makes the work exploratory is not the role name. What makes it exploratory is that it is not directly delivering the product change.

3) Human Feedback Loop

A lot of loop talk accidentally removes the human except as a final approver. That is too weak.

The Human Feedback Loop should be first-class.

Its job is to inject:

  • approval,
  • correction,
  • judgment,
  • taste,
  • reprioritisation,
  • missing context,
  • or strategic redirection.

Without this loop, the human falls out of the operating model. Then teams start claiming the human is "in the loop" when the human is really only around to react to surprises.

4) Scoped Blocking

Once you accept that there are multiple loops, blocker handling has to get sharper too.

A human question, missing dependency, or unresolved approval should not automatically freeze everything.

That is why VibeGov needs scoped blocking.

Scoped blocking means:

  • pause the exact lane that truly needs the answer,
  • keep unrelated build work moving,
  • keep unrelated exploratory work moving,
  • and make the blocked boundary explicit.

This is stronger than simply saying "blockers should redirect work." It explains which work should pause and which should continue.

Why this matters

Without this model, teams drift into four bad habits:

  • treating all agent work as one vague loop,
  • letting build recursively invent new work for itself,
  • turning human-in-the-loop into stop-the-world behavior,
  • or misclassifying exploratory planner/evaluator work as delivery.

The result is usually motion without clean governance.

Diagram

Loop system view

flowchart LR
subgraph CORE["Governed Core"]
REPO["Repo / Code"]
SPECS["Specs / Requirements"]
ISSUES["Issues / Backlog"]
end

subgraph BUILD["Build Loop"]
DEV["Develop / Validate"]
DEPLOY["Deploy / Update Demo"]
end

subgraph EXPLORE["Exploratory Loop"]
REVIEW["Explore UI / Specs / Issues"]
HYDRATE["Create or Update Governed Work"]
end

subgraph HUMAN["Human Feedback Loop"]
HUMANREVIEW["Human Uses Demo"]
INTAKE["Bot / Intake"]
NORMALISE["Convert Feedback to Proper Issues / Specs"]
end

DEMO["Demo Instance"]

REPO --> DEV
SPECS --> DEV
ISSUES --> DEV

DEV --> REPO
DEV --> DEPLOY
DEPLOY --> DEMO

REPO --> REVIEW
SPECS --> REVIEW
ISSUES --> REVIEW
DEMO --> REVIEW

REVIEW --> HYDRATE
HYDRATE --> ISSUES
HYDRATE --> SPECS

DEMO --> HUMANREVIEW
HUMANREVIEW --> INTAKE
INTAKE --> NORMALISE
NORMALISE --> ISSUES
NORMALISE --> SPECS

This is the important boundary to notice: build consumes governed work from repo/specs/issues and writes clear outputs back, while exploration and human feedback feed new governed work into the source side.

Scoped blocking view

flowchart LR
HB["Human decision needed"]

subgraph BUILD["Build Loop"]
B1["Ready build work continues"]
B2["Blocked build lane pauses"]
end

subgraph EXPLORE["Exploratory Loop"]
E1["Ready exploratory work continues"]
E2["Blocked exploratory lane pauses"]
end

HB --> B2
HB --> E2

B1 -. unrelated work keeps moving .-> B1
E1 -. unrelated work keeps moving .-> E1

This is the important blocker rule: pause only the lane that truly needs the missing answer. Do not let one unresolved human input freeze every build and exploratory path by default.

With the three-loop model, the system becomes easier to reason about:

  • Build changes reality.
  • Exploratory understands reality.
  • Human feedback reshapes intent.
  • Scoped blocking prevents one unanswered question from freezing the whole system.

That is a much better operating model than pretending there is just one loop and hoping everyone means the same thing.

· 2 min read
VibeGov Team

Most delivery stalls are not caused by impossible engineering problems. They are caused by weak blocker handling.

Teams hit missing permissions, broken dependencies, unclear requirements, or bad runtime state, then respond with the same message: blocked, waiting.

VibeGov uses a harder rule.

A blocker is a routing event

A blocker means the current item cannot advance with useful confidence right now. It does not mean the whole loop stops.

In VibeGov terms, blockers should be handled inside the active execution mode:

  • Development blockers should redirect implementation or release-readiness work
  • Exploration blockers should redirect review scope
  • Development release-verification blockers should reduce confidence and shape the go/no-go recommendation

That distinction matters because one blocked path should not erase all other ready work.

What good blocker handling looks like

When VibeGov declares a blocker, it expects:

  • bounded effort to confirm the problem
  • evidence showing what was attempted
  • a tracked blocker artifact
  • a clear statement of what remains unvalidated
  • the next best unblocked item or route

That turns a blocker into navigational information instead of dead time.

Weak and strong examples

Weak blocker report:

  • "Blocked, waiting on environment."

Strong blocker report:

  • "Blocked on the permission state required for approval review. Attempted standard and elevated-user paths; neither can reach the control in the current environment. Blocker artifact linked with confidence limits. Moving to the notification audit route."

The strong version makes recovery possible. The weak version just spreads ambiguity.

Why this improves flow

Better blocker handling gives teams:

  • less idle time
  • better evidence of real dependencies
  • cleaner handoffs
  • faster restart when the blocker clears
  • more honest backlog sequencing

The goal is not to hide blockers. The goal is to stop letting one blocker quietly freeze everything else.

Read the operational guidance:

· 2 min read
VibeGov Team

The biggest delivery mistake is not forgetting the workflow loop. It is pretending every kind of work closes the same way.

VibeGov's updated GOV-02 makes execution mode explicit so teams stop mixing exploration notes and development proof into one blurry definition of done.

Mode clarity is a throughput tool

VibeGov uses two operating modes:

  • exploration: what did we learn from real behavior, and what backlog work did that create?
  • development: what changed, how do we know it works, and can it ship safely?

The delivery loop does not change. The evidence standard does.

Done requires mode-appropriate evidence

Exploration done is not a passing build. It is a fully classified review scope with tracked artifacts for everything non-validated.

Development done is not a good intention. It is linked intent, changed artifacts, recorded proof from checks, tests, or manual validation, and release-readiness evidence when shipping is in scope.

If the evidence does not match the mode, the work is not done yet.

Backlog hydration belongs inside the workflow

Discovery is not separate from delivery discipline.

  • exploration work hydrates backlog by design
  • development release-readiness checks must feed newly observed drift back into tracked follow-up
  • development work must track adjacent gaps instead of silently absorbing them

That keeps throughput honest. Teams can move quickly without hiding uncovered work inside status updates.

Blockers should redirect work, not freeze it

A blocker pauses the current item. It should not pause the whole loop unless it removes every viable next step.

Strong blocker handling means:

  • confirm the blocker with bounded effort
  • record evidence and confidence limits
  • create or link a blocker artifact
  • recommend the next ready item or route
  • move on

This is how backlog continuity becomes real instead of aspirational.

Practical takeaway

If you want autonomous delivery, do not just tell contributors to continue. Tell them:

  • which mode they are in
  • what evidence closes that mode
  • how blockers should be escalated
  • what happens when the current item cannot advance

Read the supporting pages: