Summary
The dev-lead engine repeatedly fails with engine-error (timeout / transient engine error) on larger, feature-sized issues, exhausting its retry budget without ever producing a PR. The retry mechanism now works (auto re-dispatch, "attempt N/3") — but the underlying per-attempt engine budget is too small for substantial issues, so retries just repeat the same timeout. Net: bigger issues silently never get delivered, even though the agent correctly posts an implementation plan first.
Live example — petry-projects/.github#518
#518 ("add-to-project: add a reconcile/backfill mode") is a real feature build (a scan script + workflow_dispatch/cron triggers + bats + docs). dev-lead:
- posted a correct implementation plan, then
- attempt 1/3 failed
engine-error (run 27908018949),
- auto-retried → attempt 2/3 failed
engine-error (run 27909956774),
- ~2.5h elapsed, no PR. Status comment:
status=failed attempt=2 reason=engine-error.
This matches earlier instances this session:
So the throughline: the engine times out on issues above some size/complexity, and either fails outright or produces a rushed/over-engineered result.
Why it matters
- Larger initiatives labeled
dev-lead don't get delivered — they consume 3 attempts of compute and then stall, with only failure comments to show.
- It's silent: no escalation/hand-off, so a human only notices if watching.
Suggested directions
- Right-size the budget: raise the per-attempt engine timeout (and/or use a higher-capacity model/tier) for issues above a complexity threshold.
- Detect oversize + decompose or hand off: if an issue is too big for one attempt, have dev-lead split it (epic → stories, via the planner) or label
dev-lead:needs-human and notify, instead of burning 3 identical timeouts.
- Escalate on retry-exhaustion: when attempt 3/3 fails, apply a clear
dev-lead:failed/needs-human label + ping, so it doesn't just go quiet.
References
Summary
The dev-lead engine repeatedly fails with
engine-error(timeout / transient engine error) on larger, feature-sized issues, exhausting its retry budget without ever producing a PR. The retry mechanism now works (auto re-dispatch, "attempt N/3") — but the underlying per-attempt engine budget is too small for substantial issues, so retries just repeat the same timeout. Net: bigger issues silently never get delivered, even though the agent correctly posts an implementation plan first.Live example —
petry-projects/.github#518#518("add-to-project: add a reconcile/backfill mode") is a real feature build (a scan script +workflow_dispatch/crontriggers + bats + docs). dev-lead:engine-error(run 27908018949),engine-error(run 27909956774),status=failed attempt=2 reason=engine-error.This matches earlier instances this session:
#478— single attempt,Engine failed to implement(no retry then; pre-dev-lead retry doesn't cover failed initial issue implementations (only rate-limited PRs) — issues silently stall #781-fix).#500— attempt 1 failedengine-error, attempt 2 succeeded (but over-engineered the fix → introduced a CodeQL finding that needed manual rework in [Phase 2] Replace PUT-contents clobber deploy with versioned, ring-staged, health-gated promotion #501).So the throughline: the engine times out on issues above some size/complexity, and either fails outright or produces a rushed/over-engineered result.
Why it matters
dev-leaddon't get delivered — they consume 3 attempts of compute and then stall, with only failure comments to show.Suggested directions
dev-lead:needs-humanand notify, instead of burning 3 identical timeouts.dev-lead:failed/needs-humanlabel + ping, so it doesn't just go quiet.References
petry-projects/.github#518(runs 27908018949, 27909956774)..github-private#781(retry gap — the N/3 retry now exists, but the engine-error root cause remains);.github#500→[Phase 2] Replace PUT-contents clobber deploy with versioned, ring-staged, health-gated promotion #501 (over-engineered success).