Forgejo: start implementer sessions from a configured intake label #131
No reviewers
Labels
No labels
Agent
Ignore
Agent
In Progress
Agent
Planned
Agent
Planning
Agent
Ready
Agent
Triage
Compat
Breaking
Kind
Bug
Kind
Documentation
Kind
Enhancement
Kind
Feature
Kind
Security
Kind
Testing
Priority
Critical
Priority
High
Priority
Low
Priority
Medium
Reviewed
Confirmed
Reviewed
Duplicate
Reviewed
Invalid
Reviewed
Won't Fix
Status
Abandoned
Status
Blocked
Status
Need More Info
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
lucas/omp-deck!131
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/issue-130-label-implementer"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes: #130
What changed
Config:
.omp/forgejo.yamlgets a newimplementationsection withintake_label,progress_labelandmax_concurrent(default 1). The parser validates every key and rejects these collisions:issue_handler.label;labelTriggerFornow also returns"implementation".Label path: an
issue_labelevent gates as the new reasonimplementer-intakeunder the same checks as the issue handler: the latest change must have added the label, the sender needs write access, and exactly one workspace must match.runIntakethen claims the row and creates the session in the issue clone with basenull. It sets the labels and awaits the first turn, then finishes the row:donewith reasonimplementer-intakeon success;failedon error;droppedplus a "can't start an implementer" notice when refused.Concurrency:
max_concurrentlimits how many label-started first turns run at once in each repo. A row over the limit makes the gate return"deferred"and stayspending. While a row is deferred, its artifact key is not pumped, so the queue for that issue keeps its order. Each slot release re-gates the deferred rows. The button does not count toward the limit and is never deferred.Shared core: both paths use the same
checkImplementable,launchImplementerandmarkInProgresscode.forgejo_conversationsession is archived and replaced, and the issue's mapping moves to the new session.Status/Blockedis still refused.Manual path: no longer requires
Agent/Ready. It reads the repo config and removes the intake label and adds the progress label when they are configured. Without that config it changes no labels. A config file it can't read or parse refuses the start with 502 or 422..omp/commands/implement.mdis unchanged, as the issue requires.Verification
bun test apps/server/src/forgejopasses (365 tests).tsc --noEmit -p apps/serveris clean.max_concurrentdeferring label starts while button starts still go through.