feat(agents): add work-started notification to task-implementor
CI / lint (pull_request) Successful in 51s
CI / helm (pull_request) Successful in 29s
CI / build (pull_request) Successful in 31s
CI / quality (pull_request) Successful in 1m21s
CI / typecheck (pull_request) Successful in 1m27s
CI / security (pull_request) Successful in 1m28s
CI / push-validation (pull_request) Successful in 20s
CI / integration_tests (pull_request) Successful in 4m43s
CI / unit_tests (pull_request) Successful in 6m5s
CI / docker (pull_request) Successful in 1m33s
CI / coverage (pull_request) Successful in 10m47s
CI / status-check (pull_request) Successful in 3s

Add Step 2 (notification) to issue_impl and pr_fix procedures —
posts a comment on the issue/PR after reading it but before cloning,
giving authors instant visibility that implementation work has started.

Also update CHANGELOG.md with entry for #11031.

ISSUES CLOSED: #11031
This commit is contained in:
CoreRasurae
2026-05-12 11:46:44 +00:00
committed by Forgejo
parent 52830971f2
commit 39bbff0849
2 changed files with 52 additions and 20 deletions
+44 -20
View File
@@ -121,16 +121,28 @@ This is where actual implementation happens. Choose the appropriate procedure ba
1. **Read the issue.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/issues/{work_number}` — read title, body, labels, milestone, and metadata section (branch name, commit message format). Paginate all comments to understand full context and any subtask structure.
2. **Determine branch name.** Extract the branch name from the issue's Metadata section if present. If absent, derive one: `feature/issue-{work_number}-{kebab-slug-of-title}`.
2. **Post work-started notification.** POST `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/issues/{work_number}/comments` with body:
```
> Starting implementation for issue #{work_number}: {issue_title} (`issue_impl`)...
>
> Reading requirements and setting up development environment. This may take several minutes.
3. **Create isolated clone.** Call `git-isolator-util` with `create_branch: true`, `base_branch: master`, and the determined `branch_name` (see Subagents section for prompt template).
---
Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor
```
Use authentication: `Authorization: token {forgejo_pat}`. Replace `{issue_title}` with the title read in step 1. Do NOT wait for a response before continuing — fire and move on.
4. **Implement the code.** Load the `cleverthis-guidelines` skill for CONTRIBUTING.md rules and follow them strictly. Key rules:
3. **Determine branch name.** Extract the branch name from the issue's Metadata section if present. If absent, derive one: `feature/issue-{work_number}-{kebab-slug-of-title}`.
4. **Create isolated clone.** Call `git-isolator-util` with `create_branch: true`, `base_branch: master`, and the determined `branch_name` (see Subagents section for prompt template).
5. **Implement the code.** Load the `cleverthis-guidelines` skill for CONTRIBUTING.md rules and follow them strictly. Key rules:
- Source in `src/cleveragents/`, Behave unit tests in `features/`, Robot Framework integration/e2e tests in `robot/`
- Full static typing throughout — no `# type: ignore`
- All commands via `nox` — never invoke `pip`, `pytest`, `behave`, or `robot` directly
5. **Run quality gates in order:**
6. **Run quality gates in order:**
```bash
nox -e lint
nox -e typecheck
@@ -140,11 +152,11 @@ This is where actual implementation happens. Choose the appropriate procedure ba
nox -e coverage_report
```
6. **Fix any failures.** If a gate fails, fix the code and re-run the failing gate (and any that follow it). Repeat until all gates pass. Do not move forward with failing gates.
7. **Fix any failures.** If a gate fails, fix the code and re-run the failing gate (and any that follow it). Repeat until all gates pass. Do not move forward with failing gates.
7. **Commit.** Call `git-commit-util` with `commit_and_push` operation. The first line of the commit message must match the issue's Metadata section exactly (see Subagents section).
8. **Commit.** Call `git-commit-util` with `commit_and_push` operation. The first line of the commit message must match the issue's Metadata section exactly (see Subagents section).
8. **Create PR.** POST `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/pulls` with:
9. **Create PR.** POST `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/pulls` with:
- `title`: taken from the issue title or the commit message first line
- `body`: description of changes + `Closes #{work_number}` + dependency link (`This PR blocks issue #{work_number}`)
- `base`: `master`
@@ -152,35 +164,47 @@ This is where actual implementation happens. Choose the appropriate procedure ba
- `milestone` (if set on the issue): same milestone ID
- Use PAT authentication: `Authorization: token {forgejo_pat}`
9. **Post attempt comment** on the issue (see "Attempt Comments" section below).
10. **Post attempt comment** on the issue (see "Attempt Comments" section below).
10. **Clean up.** `rm -rf {repo_dir}`
11. **Clean up.** `rm -rf {repo_dir}`
11. **Exit.**
12. **Exit.**
#### Procedure: `pr_fix` (PR Fix)
1. **Read the PR.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/pulls/{work_number}` — read description, head branch, head SHA, and CI state. Set `branch_name` to the PR's head branch.
2. **Read all reviews.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/pulls/{work_number}/reviews?limit=50&page=N` — paginate fully. For any review in `REQUEST_CHANGES` state, GET its comments to understand the specific feedback.
2. **Post work-started notification.** POST `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/issues/{work_number}/comments` with body:
```
> Starting fix for PR #{work_number}: {pr_title} (`pr_fix`)...
>
> Addressing review feedback and CI failures. This may take several minutes.
3. **Read all PR comments.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/issues/{work_number}/comments?limit=50&page=N` — paginate fully.
---
Automated by CleverAgents Bot
Supervisor: Implementation | Agent: task-implementor
```
Use authentication: `Authorization: token {forgejo_pat}`. Replace `{pr_title}` with the title read in step 1. Do NOT wait for a response before continuing — fire and move on.
4. **Fetch CI failure details.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/commits/{head_sha}/statuses?limit=50&page=N` — paginate fully. For each failing status that has a `target_url`, webfetch that URL to retrieve the failure logs.
3. **Read all reviews.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/pulls/{work_number}/reviews?limit=50&page=N` — paginate fully. For any review in `REQUEST_CHANGES` state, GET its comments to understand the specific feedback.
5. **Create isolated clone.** Call `git-isolator-util` with `create_branch: false` and `branch: {branch_name}` (the PR's head branch, resolved in step 1).
4. **Read all PR comments.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/issues/{work_number}/comments?limit=50&page=N` — paginate fully.
6. **Fix the issues.** Address all CI failures and all unresolved reviewer feedback. Never partially address reviewer comments — every `REQUEST_CHANGES` concern must be fully resolved.
5. **Fetch CI failure details.** GET `{forgejo_url}/api/v1/repos/{forgejo_owner}/{forgejo_repo}/commits/{head_sha}/statuses?limit=50&page=N` — paginate fully. For each failing status that has a `target_url`, webfetch that URL to retrieve the failure logs.
7. **Run quality gates locally** (same 6 gates as above). All must pass before pushing. Fix and re-run as many times as needed.
6. **Create isolated clone.** Call `git-isolator-util` with `create_branch: false` and `branch: {branch_name}` (the PR's head branch, resolved in step 1).
8. **Commit and push.** Call `git-commit-util` with `force_push_with_lease` operation (see Subagents section).
7. **Fix the issues.** Address all CI failures and all unresolved reviewer feedback. Never partially address reviewer comments — every `REQUEST_CHANGES` concern must be fully resolved.
9. **Post attempt comment** on the PR (see "Attempt Comments" section below).
8. **Run quality gates locally** (same 6 gates as above). All must pass before pushing. Fix and re-run as many times as needed.
10. **Clean up.** `rm -rf {repo_dir}`
9. **Commit and push.** Call `git-commit-util` with `force_push_with_lease` operation (see Subagents section).
11. **Exit.**
10. **Post attempt comment** on the PR (see "Attempt Comments" section below).
11. **Clean up.** `rm -rf {repo_dir}`
12. **Exit.**
### Attempt Comments