Skip to content

Bug 2051452: Add the uplift merge-conflict resolver agent - #6876

Open
cgsheeh wants to merge 9 commits into
mozilla:masterfrom
cgsheeh:uplift-agents
Open

cgsheeh wants to merge 9 commits into
mozilla:masterfrom
cgsheeh:uplift-agents

Bug 2051452: Add the uplift agent README

c812576
Select commit
Loading
Failed to load commit list.
Community-TC Integration / bugbug lint failed Sep 18, 2026 in 2m 8s

Community-TC (pull_request)

bugbug lint

Details

View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster

Task Status

Started: 2026-09-18T02:42:39.660Z
Resolved: 2026-09-18T02:44:46.915Z
Task Execution Time: 2 minutes, 7 seconds, 255 milliseconds
Task Status: failed
Reason Resolved: failed
TaskId: bPy6aosvQIqPCpRGj_DsTw
RunId: 0

Artifacts

- public/logs/live_backing.log (1.1 MB)
- public/logs/live.log


[taskcluster 2026-09-18T02:42:39.743Z] Worker Type (proj-bugbug/batch) settings:
[taskcluster 2026-09-18T02:42:39.743Z]   {
[taskcluster 2026-09-18T02:42:39.743Z]     "generic-worker": {
[taskcluster 2026-09-18T02:42:39.743Z]       "config": {
[taskcluster 2026-09-18T02:42:39.743Z]         "capacity": 1,
[taskcluster 2026-09-18T02:42:39.743Z]         "headlessTasks": false
[taskcluster 2026-09-18T02:42:39.743Z]       },
[taskcluster 2026-09-18T02:42:39.743Z]       "engine": "multiuser",
[taskcluster 2026-09-18T02:42:39.743Z]       "go-arch": "amd64",
[taskcluster 2026-09-18T02:42:39.743Z]       "go-os": "linux",
[taskcluster 2026-09-18T02:42:39.743Z]       "go-version": "go1.27.1",
[taskcluster 2026-09-18T02:42:39.743Z]       "release": "https://github.com/taskcluster/taskcluster/releases/tag/v108.1.0",
[taskcluster 2026-09-18T02:42:39.743Z]       "revision": "f86624a8bf3761cdbc48de2c7f74bae44d7464dd",
[taskcluster 2026-09-18T02:42:39.743Z]       "source": "https://github.com/taskcluster/taskcluster/commits/f86624a8bf3761cdbc48de2c7f74bae44d7464dd",
[taskcluster 2026-09-18T02:42:39.743Z]       "version": "108.1.0"
[taskcluster 2026-09-18T02:42:39.743Z]     },
[taskcluster 2026-09-18T02:42:39.743Z]     "image": "projects/taskcluster-imaging/global/images/generic-worker-ubuntu-24-04-9ed5a812d3d844ac9e4e",
[taskcluster 2026-09-18T02:42:39.743Z]     "instance-id": "4826045047461976696",
[taskcluster 2026-09-18T02:42:39.743Z]     "instance-type": "projects/757942385826/machineTypes/n2-standard-2",
[taskcluster 2026-09-18T02:42:39.743Z]     "local-ipv4": "10.142.0.24",

...(62 lines hidden)...

[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier:prettier@3.1.0.
[INFO] Initializing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Initializing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Initializing environment for https://github.com/codespell-project/codespell.
[INFO] Initializing environment for https://github.com/marco-c/taskcluster_yml_validator.
[INFO] Initializing environment for https://github.com/asottile/yesqa.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-mypy.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-mypy:types-pkg_resources==0.1.2,types-python-dateutil==2.9.0.20260807,types-PyYAML==6.0.12.20260815,types-orjson==3.6.2,types-tabulate==0.10.0.20260508,types-requests==2.33.0.20260712.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-mypy:types-pkg_resources==0.1.2,types-requests==2.33.0.20260712,types-Flask==1.1.6,types-redis==4.6.0.20241004,types-python-dateutil==2.9.0.20260807,types-orjson==3.6.2,types-tabulate==0.10.0.20260508.
[INFO] Installing environment for https://github.com/pre-commit/mirrors-prettier.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/astral-sh/ruff-pre-commit.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pre-commit/pre-commit-hooks.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/codespell-project/codespell.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/marco-c/taskcluster_yml_validator.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/asottile/yesqa.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pre-commit/mirrors-mypy.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
[INFO] Installing environment for https://github.com/pre-commit/mirrors-mypy.
[INFO] Once installed this environment will be reused.
[INFO] This may take a few minutes...
prettier.................................................................Failed
- hook id: prettier
- files were modified by this hook

docs/hackbot/agents.md
agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/prompts/system.md

ruff check...............................................................Passed
ruff format..............................................................Passed
check python ast.........................................................Passed
check docstring is first.................................................Passed
check that executables have shebangs.....................................Passed
check for merge conflicts................................................Passed
check for broken symlinks............................(no files to check)Skipped
debug statements (python)................................................Passed
trim trailing whitespace.................................................Passed
check yaml...............................................................Passed
mixed line ending........................................................Passed
python tests naming......................................................Passed
check json...............................................................Passed
check vcs permalinks.....................................................Passed
codespell................................................................Failed
- hook id: codespell
- exit code: 65

agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/agent.py:370: unparseable ==> unparsable
agents/uplift/tests/test_uplift_report.py:73: unparseable ==> unparsable

taskcluster_yml..........................................................Passed
Strip unnecessary `# noqa`s..............................................Passed
mypy-bugbug..............................................................Passed
mypy-bugbug-http.........................................................Passed
Check for useless excludes...............................................Passed
pre-commit hook(s) made changes.
If you are seeing this message in CI, reproduce locally with: `pre-commit run --all-files`.
To run `pre-commit` as part of git workflow, use `pre-commit install`.
All changes made by hooks:
diff --git a/agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/prompts/system.md b/agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/prompts/system.md
index 6ad0409e..96da533d 100644
--- a/agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/prompts/system.md
+++ b/agents/uplift/hackbot_agents/uplift_merge_conflict_resolver/prompts/system.md
@@ -36,7 +36,7 @@ not apply.
 
 ## Resolving a conflict
 
-Resolve conflicts while preserving the *intent* of the original patch while
+Resolve conflicts while preserving the _intent_ of the original patch while
 fitting the code as it exists on the target branch:
 
 - When the intent is not obvious from the diff alone, consult the originating
@@ -92,7 +92,7 @@ this shape:
   "confidence": "high",
   "summary": "One short paragraph for the developer: what conflicted and how you resolved it.",
   "conflicts": [
-    {"file": "path/to/file", "resolution": "what you did and why"}
+    { "file": "path/to/file", "resolution": "what you did and why" }
   ],
   "unresolved": ["path/to/file: why it could not be resolved"]
 }
diff --git a/docs/hackbot/agents.md b/docs/hackbot/agents.md
index baefe298..bf12c408 100644
--- a/docs/hackbot/agents.md
+++ b/docs/hackbot/agents.md
@@ -50,15 +50,15 @@ or code.
 
 ## The catalog
 
-| Agent                 | Does                                                                                                                                                                        | Source | Firefox build | Auto-applies actions |
-| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----: | :-----------: | :------------------: |
-| `bug-fix`             | Triage a Bugzilla bug and produce a candidate fix as a Phabricator revision. Also handles `@hackbot` follow-ups on an existing revision, and Bugzilla `needinfo?` requests. |  yes   |      yes      |       **yes**        |
-| `test-repair`         | Classify a CI test failure as regression or intermittent, blame the culprit commit, propose a fix.                                                                          |  yes   |      yes      |       **yes**        |
-| `build-repair`        | Analyze a Firefox build failure at a specific commit and produce a candidate fix.                                                                                           |  yes   |      yes      |          no          |
-| `frontend-triage`     | Read-only root-cause analysis and fix plan for a desktop frontend bug.                                                                                                      |  yes   |      no       |          no          |
-| `autowebcompat-repro` | Reproduce a web-compatibility report in headless Firefox via DevTools MCP.                                                                                                  |   no   |      no       |          no          |
-| `test-plan-generator` | Generate Firefox QA test cases, run them through DevTools MCP, report results.                                                                                              |   no   |      no       |          no          |
-| `uplift-merge-conflict-resolver` | Resolve the merge conflicts from cherry-picking patches onto a stable uplift branch, and return the resolved patch with a confidence level. |  yes   |      no       |          no          |
+| Agent                            | Does                                                                                                                                                                        | Source | Firefox build | Auto-applies actions |
+| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----: | :-----------: | :------------------: |
+| `bug-fix`                        | Triage a Bugzilla bug and produce a candidate fix as a Phabricator revision. Also handles `@hackbot` follow-ups on an existing revision, and Bugzilla `needinfo?` requests. |  yes   |      yes      |       **yes**        |
+| `test-repair`                    | Classify a CI test failure as regression or intermittent, blame the culprit commit, propose a fix.                                                                          |  yes   |      yes      |       **yes**        |
+| `build-repair`                   | Analyze a Firefox build failure at a specific commit and produce a candidate fix.                                                                                           |  yes   |      yes      |          no          |
+| `frontend-triage`                | Read-only root-cause analysis and fix plan for a desktop frontend bug.                                                                                                      |  yes   |      no       |          no          |
+| `autowebcompat-repro`            | Reproduce a web-compatibility report in headless Firefox via DevTools MCP.                                                                                                  |   no   |      no       |          no          |
+| `test-plan-generator`            | Generate Firefox QA test cases, run them through DevTools MCP, report results.                                                                                              |   no   |      no       |          no          |
+| `uplift-merge-conflict-resolver` | Resolve the merge conflicts from cherry-picking patches onto a stable uplift branch, and return the resolved patch with a confidence level.                                 |  yes   |      no       |          no          |
 
 Two shapes recur. **Source agents** (`bug-fix`, `test-repair`, `build-repair`) check out
 Firefox, often build it, edit the tree, and let the runtime capture the diff. **Browser
[taskcluster 2026-09-18T02:44:44.960Z]                        Exit Code: 1
[taskcluster 2026-09-18T02:44:44.960Z]                        User Time: 41.812ms
[taskcluster 2026-09-18T02:44:44.960Z]                      Kernel Time: 30.052ms
[taskcluster 2026-09-18T02:44:44.960Z]                        Wall Time: 1m39.583888836s
[taskcluster 2026-09-18T02:44:44.960Z]  Average Available System Memory: 6.20 GiB
[taskcluster 2026-09-18T02:44:44.960Z]       Average System Memory Used: 1.54 GiB
[taskcluster 2026-09-18T02:44:44.960Z]          Peak System Memory Used: 1.90 GiB
[taskcluster 2026-09-18T02:44:44.960Z]              Total System Memory: 7.75 GiB
[taskcluster 2026-09-18T02:44:44.960Z]                           Result: FAILED
[taskcluster 2026-09-18T02:44:44.961Z] === Task Finished ===
[taskcluster 2026-09-18T02:44:44.961Z] Task Duration: 1m39.584688847s
[taskcluster:error] exit status 1