# Foreground fallback (review only)

Use this policy only when **no native subagents are available** for the required background `diffpi-worker`, `diffpi-reviewer`, or `diffpi-orchestrator` work. This is not a recovery path for a failed launch, child/tool error, unavailable result, authentication failure, failed checks, or a reviewer's BLOCKING findings. Do not substitute a shell process or claim a child launched or completed.

After `review_context` resolves the target/backend/local, but **before substantive creation, diff analysis, thread classification, source edits, or lifecycle-readiness inspection**, call `ask_user_question` in the initiating conversation. State that the named background agent is unavailable and that running the work here loses the intended model tier and agent isolation. Offer `Stop and report blocker` (no substantive work; report missing native agents) and `Run inline` (continue in this conversation without the intended model tier or isolation) as options; a custom response must clearly authorize inline work. Do not interpret a previous lifecycle approval or absence of a refusal as consent. If the user declines, the question tool is unavailable, or this is a background child unable to ask, stop and return a precise blocker to the initiating conversation. Never silently continue inline.

On explicit confirmation only, the calling agent performs the selected workflow's substantive steps inline, using the same resolved target/backend/local/cwd and the child prompt's constraints, tools, checks, and evidence requirements. For `address`, perform the needed source/test edits directly without inventing Worker results; keep `review_respond(resolve:false)` and user-owned thread resolution. For `publish`, `complete`, or `merge`, inline inspection is read-only; the lifecycle call remains in the initiating conversation only after its existing approval and readiness requirements are satisfied. Report actual inline actions and outcomes as **foreground fallback**, not as a completed child. The ordinary short, explicitly approved lifecycle calls, `status`, `open`, `edit`, and `help` do not need this fallback.
