- name
- refactor-execute
- description
- Automatically processes TizenFX ai-task issues (dispatching between refactoring/feature modes) and creates a PR.
## TizenFX AI Bot Universal Task Pipeline (Refactoring / Feature Combined)
### Overview
A universal automation pipeline that sequentially processes GitHub Issues labeled `ai-task`.
The task mode is dynamically determined based on the `[Type: Refactoring]` keyword in the issue body or explicit instructions in comments.
### Repository
- **Repo**: samsung/TizenFX (GitHub)
- **CLI**: `gh` CLI (authenticated)
---
### Pipeline Flow
```
⓪ Discover target Issues (ai-task)
→ ① Determine task mode (Refactoring vs Feature/Bug)
→ [Refactoring] Refactor + guarantee API preservation → Build → Benchmark → PR
→ [Feature/Bug] Implement feature + tests → Build → PR
```
---
### Stage ⓪: Universal Issue Discovery
```bash
gh issue list --repo samsung/TizenFX --label "ai-task" --state open --json number,title,createdAt --jq 'sort_by(.createdAt) | .[]'
```
- Process the oldest issue first
- **Process at most 2 issues per run** (to maintain quality)
- Always terminate after 2 issues even if more are pending
---
### Stage ①: Mode Determination and Feedback Absorption
Fetch the selected issue details and comments:
```bash
gh issue view {NUMBER} --repo samsung/TizenFX --comments
```
**Mode dispatch criteria:**
1. **[Refactoring mode]**: The issue body contains `[Type: Refactoring]`, or comments explicitly request refactoring/optimization.
→ Apply benchmark and rollback stages.
2. **[Feature-centric mode]**: Any other bug fix or feature request.
→ Skip benchmark, focus on unit test validation.
---
### Stage ②: Branch Creation and Pre-Validation
1. Clone or update the repository:
```bash
gh repo clone samsung/TizenFX || (cd TizenFX && git checkout main && git pull)
```
2. Create a working branch:
```bash
git checkout -b ai-task/issue-{ID}
```
3. **[Refactoring mode]** Self-reflection on potential API compatibility breaks:
- Enumerate public API surface of the target area
- Verify by design that the API signature remains unchanged after the refactor
---
### Stage ③: Code Modification
- Modify source per the analysis/plan in the issue
- **Refactoring mode**: Strictly preserve state/behavior, keep public API signatures intact
- **Feature-centric mode**: Implement per spec, account for edge cases
---
### Stage ④: Build Verification and Testing
1. Build verification (required):
```bash
dotnet build
```
→ Must have 0 errors. Fix errors and rebuild if any occur.
2. **[Feature-centric mode]** Unit tests:
```bash
dotnet test
```
→ Existing tests must pass. Add missing test cases when necessary.
---
### Stage ⑤: [Refactoring Mode Only] Benchmark and Rollback Validation
1. Add a comparative benchmark to `test/Tizen.Benchmark.Gallery/`
2. Attempt to deploy and run on an `sdb` device
**When sdb-related errors/issues occur (device not connected, deploy failure, execution error, etc.):**
- **Pass (skip)** the benchmark stage
- Post a comment on the PR explaining why the benchmark was skipped:
```bash
gh pr comment {PR_NUMBER} --repo samsung/TizenFX --body "⚠️ **Benchmark skipped**: Encountered an issue with sdb device connection/deployment/execution, so the benchmark could not be run. Manual benchmark verification is required. Error: {error summary}"
```
- Also note "Benchmark: skipped (sdb error)" in the PR Verification section
**On successful execution:**
- If the execution log shows a **performance regression of 5% or more (median)**, automatically roll back the code:
```bash
git checkout -- .
```
→ After rollback, retry from Stage ③ with a different approach (max 1 retry)
→ If a regression persists on retry, leave a comment on the issue and move to the next issue
---
### Stage ⑥: PR Creation and Issue Linking
0. Perform a final .NET expert review over the full set of changes.
1. Commit and push changes:
```bash
git add -A
git commit -m "Refactor: {change summary} (Fixes #{ID})"
git push origin HEAD
```
2. Write the PR description (pr_description.md):
```markdown
## Summary
{Summary of the changes}
## Changes
{List of changed files and what changed in each}
## Mode
{Refactoring / Feature}
## Verification
- [ ] Build: passed
- [ ] Tests: {passed / N/A}
- [ ] Benchmark: {result summary / skipped (sdb error: reason) / N/A}
Fixes #{ID}
```
3. Create the PR:
```bash
gh pr create --repo samsung/TizenFX --title "[AI Task] {task summary}" --body-file pr_description.md --label "ai-task"
```
3-1. Verify and ensure the label is applied:
```bash
gh pr view --repo samsung/TizenFX --json labels --jq '.labels[].name' | grep -q "ai-task" || \
gh pr edit --repo samsung/TizenFX --add-label "ai-task"
```
4. After processing the current issue, if fewer than 2 issues have been handled and more are queued, return to Stage ⓪. **Always terminate once 2 issues have been processed.**
---
### Constraints
- **At most 2 issues per run** (this limit is absolute)
- When performing refactoring-only changes, behavior preservation is mandatory
- If build errors cannot be resolved in 2 consecutive attempts, comment on the issue and skip it
- Prefer small, reviewable PRs over large sweeping changes
### Reporting
- Processed issue numbers and links
- Created PR links
- Task mode per issue (Refactoring / Feature)
- Benchmark result (where applicable) or skip reason
- Reason for any skipped issues
View on GitHub