Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* #31

Closed
opened 2026-07-12 16:31:08 +02:00 by frank · 4 comments
Owner

Ziel

Der Agent soll den Status eines Issues über ein einziges agent:*-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.

Gewünschter Lifecycle

Zeitpunkt Label
Agent-Arbeit abgeschlossen (Coding/Babysit fertig, PR offen) agent:ready
PR gemerged und Worktree gelöscht agent:done

Bestehendes Verhalten (agent:working während der aktiven Pipeline) bleibt Teil derselben Label-Familie.

Vorschlag für den vollständigen Fluss:

  1. Claim / Start → agent:working (ersetzt jedes andere agent:*)
  2. Arbeit abgeschlossen → agent:ready (ersetzt agent:working)
  3. PR-Merge + Worktree-Cleanup → agent:done (ersetzt agent:ready)

Invariante

Auf einem Issue darf immer nur genau ein Label mit Präfix agent: liegen.

  • Beim Setzen eines neuen agent:*-Labels alle anderen agent:*-Labels entfernen.
  • Der Watch-/Pipeline-Code soll das aktiv überwachen und bei Abweichung korrigieren (z. B. nach Claim, Finalize, Merge/Cleanup).

Label-Anlage

Fehlende agent:*-Labels (agent:working, agent:ready, agent:done) sollen bei Bedarf automatisch im Repo angelegt werden, falls sie noch nicht existieren — bevor sie einem Issue zugewiesen werden.

Abgrenzung zum Status quo

Heute:

  • --working-label Default agent:working
  • --done-label optional, wird in finalizeIssue gesetzt (nicht zwingend an Merge + Worktree-Delete gekoppelt)
  • Keine Exklusivitätsgarantie für die agent:*-Familie
  • agent:ready existiert noch nicht als Standard-Zwischenstatus nach abgeschlossener Arbeit

Akzeptanzkriterien

  • Nach erfolgreichem Abschluss der Agent-Arbeit trägt das Issue agent:ready (und nicht mehr agent:working)
  • Nach Merge des zugehörigen PRs und Löschen des Worktrees trägt das Issue agent:done
  • Es liegt zu jedem Zeitpunkt höchstens ein agent:*-Label am Issue
  • Der Agent setzt/korrigiert die Labels in den genannten Lifecycle-Schritten selbst
  • Fehlende Labels (agent:working, agent:ready, agent:done) werden bei Bedarf automatisch im Repo angelegt
  • Wiki/forge agent watch --help und Defaults (working_label / neuer Zwischenstatus / done_label) sind angepasst

Hinweise

  • Trigger-Label (--label) und Status-Labels (agent:*) ggf. klar trennen, falls der Trigger weiterhin kein agent:-Präfix nutzt.
  • Bei Fehlschlag der Pipeline: agent:working entfernen; kein automatisches agent:ready/agent:done (Verhalten explizit festlegen).
## Ziel Der Agent soll den Status eines Issues über ein einziges `agent:*`-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen. ## Gewünschter Lifecycle | Zeitpunkt | Label | | --- | --- | | Agent-Arbeit abgeschlossen (Coding/Babysit fertig, PR offen) | `agent:ready` | | PR gemerged **und** Worktree gelöscht | `agent:done` | Bestehendes Verhalten (`agent:working` während der aktiven Pipeline) bleibt Teil derselben Label-Familie. Vorschlag für den vollständigen Fluss: 1. Claim / Start → `agent:working` (ersetzt jedes andere `agent:*`) 2. Arbeit abgeschlossen → `agent:ready` (ersetzt `agent:working`) 3. PR-Merge + Worktree-Cleanup → `agent:done` (ersetzt `agent:ready`) ## Invariante Auf einem Issue darf **immer nur genau ein** Label mit Präfix `agent:` liegen. - Beim Setzen eines neuen `agent:*`-Labels alle anderen `agent:*`-Labels entfernen. - Der Watch-/Pipeline-Code soll das aktiv überwachen und bei Abweichung korrigieren (z. B. nach Claim, Finalize, Merge/Cleanup). ## Label-Anlage Fehlende `agent:*`-Labels (`agent:working`, `agent:ready`, `agent:done`) sollen bei Bedarf **automatisch im Repo angelegt** werden, falls sie noch nicht existieren — bevor sie einem Issue zugewiesen werden. ## Abgrenzung zum Status quo Heute: - `--working-label` Default `agent:working` - `--done-label` optional, wird in `finalizeIssue` gesetzt (nicht zwingend an Merge + Worktree-Delete gekoppelt) - Keine Exklusivitätsgarantie für die `agent:*`-Familie - `agent:ready` existiert noch nicht als Standard-Zwischenstatus nach abgeschlossener Arbeit ## Akzeptanzkriterien - [x] Nach erfolgreichem Abschluss der Agent-Arbeit trägt das Issue `agent:ready` (und nicht mehr `agent:working`) - [x] Nach Merge des zugehörigen PRs und Löschen des Worktrees trägt das Issue `agent:done` - [x] Es liegt zu jedem Zeitpunkt höchstens ein `agent:*`-Label am Issue - [x] Der Agent setzt/korrigiert die Labels in den genannten Lifecycle-Schritten selbst - [x] Fehlende Labels (`agent:working`, `agent:ready`, `agent:done`) werden bei Bedarf automatisch im Repo angelegt - [x] Wiki/`forge agent watch --help` und Defaults (`working_label` / neuer Zwischenstatus / `done_label`) sind angepasst ## Hinweise - Trigger-Label (`--label`) und Status-Labels (`agent:*`) ggf. klar trennen, falls der Trigger weiterhin kein `agent:`-Präfix nutzt. - Bei Fehlschlag der Pipeline: `agent:working` entfernen; kein automatisches `agent:ready`/`agent:done` (Verhalten explizit festlegen).
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 6

Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges agent:*-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 6 Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges `agent:*`-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.
Author
Owner

forge agent failed

agent cursor-agent exited with code 1
❌ **forge agent failed** ``` agent cursor-agent exited with code 1 ```
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 6

Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges agent:*-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 6 Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges `agent:*`-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 6

Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges agent:*-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 6 Agent-Labels: Lifecycle agent:ready / agent:done und Exklusivität von agent:* — Der Agent soll den Status eines Issues über ein einziges `agent:*`-Label abbilden und dieses Lifecycle selbst pflegen bzw. überwachen.
frank 2026-07-12 16:44:00 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frank/forgecli#31
No description provided.