feat(agent): prompt incremental commit and push during work #42

Merged
frank merged 2 commits from agent/issue-40-agent-während-der-implementierung-regel into main 2026-07-12 17:15:05 +02:00
Owner

Summary

  • Agent-Prompts (BuildPrompt, CI-/Conflict-/Mention-Follow-ups) fordern jetzt inkrementelle, thematisch kleine Commits mit sofortigem Push nach logischen Teilschritten.
  • „Do not push“ und die Ein-Commit-am-Ende-Formulierung wurden entfernt; im PR-Modus öffnet weiterhin nur der Watcher den Pull Request.
  • Pipeline-Kommentar dokumentiert die Idempotenz: uncommittete Reste werden committet, Push ist harmlos wenn der Agent schon gepusht hat.
  • Tests und Wiki (docs/wiki/Agent-Watch.md) entsprechend aktualisiert.

Test plan

  • go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention'

Kurzfassung

internal/agent/prompt.go: Neue Hilfsfunktion writeIncrementalCommitPushInstructions — alle Prompts fordern regelmäßiges Committen und Pushen; im PR-Modus bleibt „Do not open a pull request“.

internal/agent/pipeline.go: Kommentar in successFinish zur Idempotenz bei bereits gepushten Agent-Commits.

Tests: Erwartete Strings von „Do not push“ auf „push incrementally“ / „push immediately“ umgestellt; neuer Test TestBuildPromptCommitModeIncrementalGit.

docs/wiki/Agent-Watch.md: Abschnitt „Inkrementelle Commits während der Arbeit“ mit optionalem pre_prompt-Beispiel.

Closes #40

## Summary - Agent-Prompts (`BuildPrompt`, CI-/Conflict-/Mention-Follow-ups) fordern jetzt inkrementelle, thematisch kleine Commits mit sofortigem Push nach logischen Teilschritten. - „Do not push“ und die Ein-Commit-am-Ende-Formulierung wurden entfernt; im PR-Modus öffnet weiterhin nur der Watcher den Pull Request. - Pipeline-Kommentar dokumentiert die Idempotenz: uncommittete Reste werden committet, Push ist harmlos wenn der Agent schon gepusht hat. - Tests und Wiki (`docs/wiki/Agent-Watch.md`) entsprechend aktualisiert. ## Test plan - [x] `go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention'` ## Kurzfassung **`internal/agent/prompt.go`**: Neue Hilfsfunktion `writeIncrementalCommitPushInstructions` — alle Prompts fordern regelmäßiges Committen und Pushen; im PR-Modus bleibt „Do not open a pull request“. **`internal/agent/pipeline.go`**: Kommentar in `successFinish` zur Idempotenz bei bereits gepushten Agent-Commits. **Tests**: Erwartete Strings von „Do not push“ auf „push incrementally“ / „push immediately“ umgestellt; neuer Test `TestBuildPromptCommitModeIncrementalGit`. **`docs/wiki/Agent-Watch.md`**: Abschnitt „Inkrementelle Commits während der Arbeit“ mit optionalem `pre_prompt`-Beispiel. Closes #40
feat(agent): prompt incremental commit and push during work
All checks were successful
CI / test (pull_request) Successful in 35s
CI / race (pull_request) Successful in 36s
1968fd787f
Agents should commit and push after each logical step so PR history and
CI feedback stay visible early; the watcher only commits leftovers and
pushes idempotently when the agent already pushed.

Co-authored-by: Cursor <cursoragent@cursor.com>
Author
Owner

🔗 Linked to issue #40. Babysitting CI until green…

🔗 Linked to issue #40. Babysitting CI until green…
Author
Owner

forge agent finished implementation

  • Commit: feat(agent): prompt incremental commit and push during work
  • Pull request: #42
  • Next: waiting for CI / babysitting fixes if needed
docs/wiki/Agent-Watch.md        | 12 ++++++++++++
 internal/agent/config_test.go   | 18 +++++++++++++++++-
 internal/agent/pipeline.go      |  2 ++
 internal/agent/prfix_test.go    |  4 ++--
 internal/agent/prompt.go        | 26 ++++++++++++++++----------
 internal/agent/worktree_test.go |  2 +-
 6 files changed, 50 insertions(+), 14 deletions(-)
Agent output (tail)
Die Implementierung ist abgeschlossen.
TODO_DONE: Prompt-Instruktionen verlangen inkrementelle, sinnvolle Commits **und Push** während der Arbeit
TODO_DONE: „Do not push“ / Ein-Commit-am-Ende-Formulierung entfernt bzw. ersetzt
TODO_DONE: Watcher bleibt kompatibel, wenn der Agent bereits gepusht hat
TODO_DONE: Tests für Prompt-Inhalt angepasst
TODO_DONE: Wiki/Docs kurz aktualisiert, falls Verhalten dokumentiert ist
PR_TITLE: feat(agent): prompt incremental commit and push during work
PR_BODY:
## Summary
- Agent-Prompts (`BuildPrompt`, CI-/Conflict-/Mention-Follow-ups) fordern jetzt inkrementelle, thematisch kleine Commits mit sofortigem Push nach logischen Teilschritten.
- „Do not push“ und die Ein-Commit-am-Ende-Formulierung wurden entfernt; im PR-Modus öffnet weiterhin nur der Watcher den Pull Request.
- Pipeline-Kommentar dokumentiert die Idempotenz: uncommittete Reste werden committet, Push ist harmlos wenn der Agent schon gepusht hat.
- Tests und Wiki (`docs/wiki/Agent-Watch.md`) entsprechend aktualisiert.
## Test plan
- [x] `go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention'`
## Kurzfassung
**`internal/agent/prompt.go`**: Neue Hilfsfunktion `writeIncrementalCommitPushInstructions` — alle Prompts fordern regelmäßiges Committen und Pushen; im PR-Modus bleibt „Do not open a pull request“.
**`internal/agent/pipeline.go`**: Kommentar in `successFinish` zur Idempotenz bei bereits gepushten Agent-Commits.
**Tests**: Erwartete Strings von „Do not push“ auf „push incrementally“ / „push immediately“ umgestellt; neuer Test `TestBuildPromptCommitModeIncrementalGit`.
**`docs/wiki/Agent-Watch.md`**: Abschnitt „Inkrementelle Commits während der Arbeit“ mit optionalem `pre_prompt`-Beispiel.
✅ **forge agent finished implementation** - Commit: `feat(agent): prompt incremental commit and push during work` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/42 - Next: waiting for CI / babysitting fixes if needed ``` docs/wiki/Agent-Watch.md | 12 ++++++++++++ internal/agent/config_test.go | 18 +++++++++++++++++- internal/agent/pipeline.go | 2 ++ internal/agent/prfix_test.go | 4 ++-- internal/agent/prompt.go | 26 ++++++++++++++++---------- internal/agent/worktree_test.go | 2 +- 6 files changed, 50 insertions(+), 14 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` Die Implementierung ist abgeschlossen. TODO_DONE: Prompt-Instruktionen verlangen inkrementelle, sinnvolle Commits **und Push** während der Arbeit TODO_DONE: „Do not push“ / Ein-Commit-am-Ende-Formulierung entfernt bzw. ersetzt TODO_DONE: Watcher bleibt kompatibel, wenn der Agent bereits gepusht hat TODO_DONE: Tests für Prompt-Inhalt angepasst TODO_DONE: Wiki/Docs kurz aktualisiert, falls Verhalten dokumentiert ist PR_TITLE: feat(agent): prompt incremental commit and push during work PR_BODY: ## Summary - Agent-Prompts (`BuildPrompt`, CI-/Conflict-/Mention-Follow-ups) fordern jetzt inkrementelle, thematisch kleine Commits mit sofortigem Push nach logischen Teilschritten. - „Do not push“ und die Ein-Commit-am-Ende-Formulierung wurden entfernt; im PR-Modus öffnet weiterhin nur der Watcher den Pull Request. - Pipeline-Kommentar dokumentiert die Idempotenz: uncommittete Reste werden committet, Push ist harmlos wenn der Agent schon gepusht hat. - Tests und Wiki (`docs/wiki/Agent-Watch.md`) entsprechend aktualisiert. ## Test plan - [x] `go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention'` ## Kurzfassung **`internal/agent/prompt.go`**: Neue Hilfsfunktion `writeIncrementalCommitPushInstructions` — alle Prompts fordern regelmäßiges Committen und Pushen; im PR-Modus bleibt „Do not open a pull request“. **`internal/agent/pipeline.go`**: Kommentar in `successFinish` zur Idempotenz bei bereits gepushten Agent-Commits. **Tests**: Erwartete Strings von „Do not push“ auf „push incrementally“ / „push immediately“ umgestellt; neuer Test `TestBuildPromptCommitModeIncrementalGit`. **`docs/wiki/Agent-Watch.md`**: Abschnitt „Inkrementelle Commits während der Arbeit“ mit optionalem `pre_prompt`-Beispiel. ``` </details>
Author
Owner

☑️ ToDos checked off

  • Prompt-Instruktionen verlangen inkrementelle, sinnvolle Commits und Push während der Arbeit
  • „Do not push“ / Ein-Commit-am-Ende-Formulierung entfernt bzw. ersetzt
  • Watcher bleibt kompatibel, wenn der Agent bereits gepusht hat
  • Tests für Prompt-Inhalt angepasst
  • Wiki/Docs kurz aktualisiert, falls Verhalten dokumentiert ist
☑️ **ToDos checked off** - [x] Prompt-Instruktionen verlangen inkrementelle, sinnvolle Commits **und Push** während der Arbeit - [x] „Do not push“ / Ein-Commit-am-Ende-Formulierung entfernt bzw. ersetzt - [x] Watcher bleibt kompatibel, wenn der Agent bereits gepusht hat - [x] Tests für Prompt-Inhalt angepasst - [x] Wiki/Docs kurz aktualisiert, falls Verhalten dokumentiert ist
Author
Owner
🟢 **CI green** (attempt 1/3) https://repository.hildebrandt.io/frank/forgecli/actions/runs/95
Author
Owner

⚠️ Watch: merge conflict detected — starting repair…

⚠️ **Watch: merge conflict detected** — starting repair…
Author
Owner

⚠️ Merge conflict detected (attempt 1/3)

Re-running coding agent to merge/rebase and resolve conflicts…

⚠️ **Merge conflict detected** (attempt 1/3) Re-running coding agent to merge/rebase and resolve conflicts…
Author
Owner

🛠️ Pushed merge-conflict fix (attempt 1/3). Re-checking mergeability…

Konflikte

internal/agent/prompt.go

  • Inkrementelles Committen und Pushen bleibt über writeIncrementalCommitPushInstructions.
  • PR-Modus-Hinweis kombiniert beide Seiten: Der Watcher hat bereits einen WIP-PR geöffnet und finalisiert Titel/Beschreibung danach; der Agent soll keinen eigenen PR öffnen.
  • „Do not push“ von main entfällt, damit Issue #40 (regelmäßig pushen) erhalten bleibt.
    docs/wiki/Agent-Watch.md
  • Beide Abschnitte bleiben: --pr-Modus: WIP-PR und Fortschritt (#41) sowie Inkrementelle Commits während der Arbeit (#40).
  • Der Inkrementell-Abschnitt verweist auf den bereits geöffneten WIP-PR.

Verifikation

  • go test ./internal/agent/... — bestanden
  • Commit: ebacf49Merge origin/main into agent/issue-40
    Der Branch ist 3 Commits vor origin; der Forge-Agent-Watcher kann pushen und die Mergeability erneut prüfen.
🛠️ Pushed merge-conflict fix (attempt 1/3). Re-checking mergeability… ### Konflikte **`internal/agent/prompt.go`** - Inkrementelles Committen und Pushen bleibt über `writeIncrementalCommitPushInstructions`. - PR-Modus-Hinweis kombiniert beide Seiten: Der Watcher hat bereits einen WIP-PR geöffnet und finalisiert Titel/Beschreibung danach; der Agent soll keinen eigenen PR öffnen. - „Do not push“ von `main` entfällt, damit Issue #40 (regelmäßig pushen) erhalten bleibt. **`docs/wiki/Agent-Watch.md`** - Beide Abschnitte bleiben: `--pr`-Modus: WIP-PR und Fortschritt (#41) sowie Inkrementelle Commits während der Arbeit (#40). - Der Inkrementell-Abschnitt verweist auf den bereits geöffneten WIP-PR. ### Verifikation - `go test ./internal/agent/...` — bestanden - Commit: `ebacf49` — *Merge origin/main into agent/issue-40* Der Branch ist 3 Commits vor `origin`; der Forge-Agent-Watcher kann pushen und die Mergeability erneut prüfen.
Author
Owner

⚠️ Merge conflict detected (attempt 2/3)

Re-running coding agent to merge/rebase and resolve conflicts…

⚠️ **Merge conflict detected** (attempt 2/3) Re-running coding agent to merge/rebase and resolve conflicts…
Merge origin/main into agent/issue-40
All checks were successful
CI / test (pull_request) Successful in 31s
CI / race (pull_request) Successful in 32s
ebacf49182
Resolve conflicts in prompt and wiki: keep incremental commit/push
during agent work alongside early WIP-PR flow from #41.

Co-authored-by: Cursor <cursoragent@cursor.com>
Author
Owner

🛠️ Pushed merge-conflict fix (attempt 2/3). Re-checking mergeability…

Die Merge-Konflikte sind bereits aufgelöst — der Branch ist mit main zusammengeführt und mergebar.
Status: PR #42 ist lokal und remote auf dem Stand ebacf49 und laut Forgejo-API mergeable: true. Es gibt nichts mehr zu committen oder zu pushen.
Merge-Commit: ebacf49Merge origin/main into agent/issue-40
Aufgelöste Konflikte:

  1. internal/agent/prompt.go — Beide Seiten kombiniert:
    • Inkrementelles Committen/Pushen aus #40 (writeIncrementalCommitPushInstructions)
    • WIP-PR-Hinweis aus #41: „the forge agent watcher already opened a WIP pull request and will finalize the PR title and description after your work“
  2. docs/wiki/Agent-Watch.md — Beide Wiki-Abschnitte erhalten:
    • --pr-Modus: WIP-PR und Fortschritt (aus #41)
    • Inkrementelle Commits während der Arbeit (aus #40), angepasst an den bereits geöffneten WIP-PR
      Tests: go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention' — bestanden.
      Der Forge-Agent-Watcher kann den Branch pushen und die Mergeability erneut prüfen; von hier aus ist keine weitere Aktion nötig.
🛠️ Pushed merge-conflict fix (attempt 2/3). Re-checking mergeability… Die Merge-Konflikte sind bereits aufgelöst — der Branch ist mit `main` zusammengeführt und mergebar. **Status:** PR #42 ist lokal und remote auf dem Stand `ebacf49` und laut Forgejo-API `mergeable: true`. Es gibt nichts mehr zu committen oder zu pushen. **Merge-Commit:** `ebacf49` — *Merge origin/main into agent/issue-40* **Aufgelöste Konflikte:** 1. **`internal/agent/prompt.go`** — Beide Seiten kombiniert: - Inkrementelles Committen/Pushen aus #40 (`writeIncrementalCommitPushInstructions`) - WIP-PR-Hinweis aus #41: *„the forge agent watcher already opened a WIP pull request and will finalize the PR title and description after your work“* 2. **`docs/wiki/Agent-Watch.md`** — Beide Wiki-Abschnitte erhalten: - `--pr`-Modus: WIP-PR und Fortschritt (aus #41) - Inkrementelle Commits während der Arbeit (aus #40), angepasst an den bereits geöffneten WIP-PR **Tests:** `go test ./internal/agent/... -run 'TestBuildPrompt|TestBuildConflict|TestBuildCIFix|TestBuildMention'` — bestanden. Der Forge-Agent-Watcher kann den Branch pushen und die Mergeability erneut prüfen; von hier aus ist keine weitere Aktion nötig.
Author
Owner

Merge conflicts resolved — PR is mergeable again.

✅ **Merge conflicts resolved** — PR is mergeable again.
frank merged commit 30d2460831 into main 2026-07-12 17:15:05 +02:00
frank deleted branch agent/issue-40-agent-während-der-implementierung-regel 2026-07-12 17:15:05 +02:00
Sign in to join this conversation.
No reviewers
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!42
No description provided.