chore: prompt agents to report blockers instead of going silent #16

Merged
erik merged 1 commit from chore/blocker-reporting-in-bootstraps into main 2026-05-14 10:39:02 +00:00
Member

Summary

Adds a "Blockers" section to each role's bootstrap prompt (dev, test, pm). Pattern:

  1. An error is not automatically a blocker — try the alternative fjx invocation, read the actual error, check workflow logs, re-read the brief.
  2. Only when those are exhausted, update the ledger with Status: blocked (or PM-ledger Note), apply agent/blocked via fjx issue label <N> -A agent/blocked, and exit cleanly.
  3. Don't skip the handoff and act like the cycle finished — recording the blocker IS the way to finish the cycle when you can't.

Motivated by the agent reflection quoted in the issue: deno run jsr:@tfks/fjx failed, the agent treated it as a blocker without trying the globally installed fjx, and quietly stopped instead of escalating.

Test plan

  • just validate clean (92 tests pass — no code changes, prompt-only)
  • Spot-check: fjx dev prompt bootstrap, fjx test prompt bootstrap, fjx pm prompt default (or equivalent) — the Blockers section renders inline.
  • Reviewer: sanity-check that the commands cited actually exist (fjx <role> ledger --status blocked, fjx issue label <N> -A agent/blocked).

Refs #1

## Summary Adds a "Blockers" section to each role's bootstrap prompt (`dev`, `test`, `pm`). Pattern: 1. An error is not automatically a blocker — try the alternative `fjx` invocation, read the actual error, check workflow logs, re-read the brief. 2. Only when those are exhausted, update the ledger with `Status: blocked` (or PM-ledger Note), apply `agent/blocked` via `fjx issue label <N> -A agent/blocked`, and exit cleanly. 3. Don't skip the handoff and act like the cycle finished — recording the blocker IS the way to finish the cycle when you can't. Motivated by the agent reflection quoted in the issue: `deno run jsr:@tfks/fjx` failed, the agent treated it as a blocker without trying the globally installed `fjx`, and quietly stopped instead of escalating. ## Test plan - `just validate` clean (92 tests pass — no code changes, prompt-only) - Spot-check: `fjx dev prompt bootstrap`, `fjx test prompt bootstrap`, `fjx pm prompt default` (or equivalent) — the Blockers section renders inline. - Reviewer: sanity-check that the commands cited actually exist (`fjx <role> ledger --status blocked`, `fjx issue label <N> -A agent/blocked`). Refs #1
chore: prompt agents to report blockers instead of going silent
All checks were successful
Validate / validate (pull_request) Successful in 20s
2f75800c62
Closes #1.

Adds a "Blockers" section to each role's bootstrap prompt (dev, test,
PM). The pattern: an error is not automatically a blocker — exhaust
the obvious alternatives first (alternative `fjx` invocations, real
error text, workflow logs, re-read the brief).  Only when those are
truly exhausted, update the ledger with `Status: blocked`, apply
`agent/blocked`, and exit cleanly.  Do not skip the handoff and act
as if the cycle finished.

Motivated by an agent that hit `deno run jsr:@tfks/fjx` errors,
treated them as a blocker without trying the globally installed
`fjx`, and quietly stopped instead of recording the blocker.
erik merged commit cf1c3b0784 into main 2026-05-14 10:39:02 +00:00
erik deleted branch chore/blocker-reporting-in-bootstraps 2026-05-14 10:39:02 +00:00
Sign in to join this conversation.
No description provided.