Moving an issue from Draft to Todo is the specific transition that makes it eligible for an agent run. Until you make that change, no host will claim it and no repository is cloned.
Status lifecycle
A typical issue moves through the lifecycle in roughly this order:Pre-work
These statuses cover the period before an agent host has claimed the issue.Agent running
These statuses indicate a host is actively handling the issue.Review
These statuses cover the period between the agent opening a pull request and the PR being merged. Most transitions in this section are driven by GitHub webhook events — see How GitHub events map to statuses below.Automatic Review
When a project or issue has Automatic Review enabled, an isolated reviewer agent evaluates each pull request instead of (or alongside) waiting on a human review. This section only covers what’s visible on the Issue; the engine itself is documented indocs/adr/0004-automatic-review-lifecycle-engine.md and its neighbors.
Status precedence. When several conditions could apply to a pull request at once, the issue’s status reflects the most actionable one first, in this order: changes-requested (a reviewer — automatic or human — asked for changes) beats tests-failed (CI failed) beats testing (CI still running) beats reviewing (an automatic review attempt is in flight) beats ready-for-review / approved. This precedence is computed in the database and is stable regardless of which webhook or review event arrives first.
Timeline. Every step of an automatic review attempt — queued, started, approved, changes requested, an infrastructure failure, or a cycle being superseded by a new push or a human review — appears as its own entry on the Issue’s timeline, each optionally linking to that attempt’s reviewer execution log. Reviewer logs are never appended to Issue chat.
Multiple pull requests. An Issue with more than one associated pull request shows each one’s review state independently in the sidebar, plus an aggregate (“2 of 3 pull requests reviewed”).
Attempts. Each pull request gets up to three automatic review attempts per review cycle (a cycle covers one line of fix-iteration pushes). A completed attempt (approved, changes requested, or commented) counts against that budget; an infrastructure failure does not — it retries once automatically, and after a second consecutive failure, automatic progress pauses until new code arrives or you intervene.
Recovery controls. When automatic progress is paused or blocked, the Issue sidebar offers up to three actions, shown only when they apply:
- Retry review — queue a fresh attempt after two trailing infrastructure failures, without waiting for new code.
- Continue with human review — accept the current human review as sufficient and stop further automatic attempts.
- Start fresh implementation session — abandon an unresumable implementation session (its host was deleted or banned, its agent/model changed, or no session was ever recorded) so the next fix has somewhere to go.
Merge and deploy
Terminal
Issues in these statuses are no longer active. You can re-open a conversation by sending a new message in the transcript, which moves the issue back totodo and resumes the same agent session with full prior context.
How GitHub events map to statuses
If you have configured the GitHub integration with a webhook, Gentic listens for pull request activity on the PR that the agent opened and updates the issue automatically. The mapping is:
Gentic matches pull request, review, and comment events to a stored pull-request URL on the issue. For check events, Gentic resolves the pull request from the check’s commit SHA. Active checks can move
ready-for-review issues back to testing, and completed checks only update issues still in testing, so late CI results do not overwrite review or merge statuses. Unsupported event types are ignored.
To enable this, point a GitHub webhook at https://<your-gentic-host>/api/integrations/github/webhook, subscribe to the Pull requests, Pull request reviews, Pull request review comments, Issue comments, Check runs, and Check suites events, and set the shared secret to match the GITHUB_WEBHOOK_SECRET configured on your Gentic deployment.
Held status and usage limits
Theheld status is the recovery path for temporary agent outages. When Claude Code or Codex returns a usage-limit, session-limit, rate-limit, or quota error during a run, the host:
- Parses a reset time from the error message. Relative (
try again in 2h), absolute, andHH:MM (UTC)-style resets are all supported. - Moves the issue to
heldand stores the parsed reset time. - Skips the issue on subsequent polls until the reset time has passed.
- Re-claims the issue automatically once the reset window opens, resuming the same agent session.
run-failed instead so you can intervene manually. You can also cancel a held issue at any time by changing its status to cancelled.
