P0 block 后推进 P1/P2
The operator sees exactly what decision is needed while the agent can keep making bounded progress elsewhere.
案例背景
这个案例展示 P0 被用户决策卡住时,系统不应该继续硬跑,也不应该让整个目标停摆。原场景是 benchmark rotation:一个 lane 需要大型本地 image,其他 no-upload benchmark work 仍然安全。
公开仓库没有暴露原始 benchmark task 或本地 image 名,而是用 synthetic smoke 复现控制面行为。用户价值是明确看到一个需要决策的 P0,同时安全 fallback 可以继续,且 gated lane 不消耗额外自动推进预算。
仓库证据
被阻塞的 P0 决策不应该阻止安全的 P1/P2 工作继续。
concrete user todo、safe fallback、quota control
`examples/showcase-0617-blocked-p0-safe-rotation-smoke.py` 复现 P0 user gate、被 gate 阻塞的 P0 agent lane 和 P1 no-upload fallback。
smoke 固定 `should_run=True`、`requires_user_action=True`、`safe_bypass_allowed=True`、`safe_bypass_kind=scoped_user_gate_fallback` 等关键 contract。
fixture 选择 `terminal_bench_no_upload`,同时保留 `ale_image` gate 的 user-visible blocker。
smoke 检查 markdown 中包含 `scoped_user_gate_fallback` 和 safe no-upload Terminal-Bench rotation。
LoopX 行为
- 1用户 todo 具体命名 P0 决策,不用“owner gate”这种空话。
- 2agent 不在 gated lane 上花 compute;只选择不依赖该决策的 fallback。
- 3状态同时记录 blocker 和 fallback reason,方便之后恢复 P0。
用户看到什么
用户看到需要自己决定的具体问题,同时项目仍能在安全范围内推进。
这减少了注意力负担:不需要每 10 分钟看一次 agent 为什么没动,也不会错过真正需要决策的事项。
仓库来源
docs/showcases/cases/0617-blocked-p0-safe-rotation.mdsynthetic smokeexamples/showcase-0617-blocked-p0-safe-rotation-smoke.py证据边界. Synthetic public fixture only; no private screenshots, raw tasks, internal links, local image names, or raw run logs.
python3 examples/showcase-0617-blocked-p0-safe-rotation-smoke.py