Add more tools (based on searchfox-py) to the LLM review agent, and make it patch stack aware to a certain extent #6051
Community-TC Integration / bugbug lint
failed
May 26, 2026 in 8m 30s
Community-TC (pull_request)
bugbug lint
Details
View task in Taskcluster | View logs in Taskcluster | View task group in Taskcluster
Task Status
Started: 2026-05-26T17:08:40.795Z
Resolved: 2026-05-26T17:17:09.622Z
Task Execution Time: 8 minutes, 28 seconds, 827 milliseconds
Task Status: failed
Reason Resolved: failed
TaskId: S6-leinJRl21MJlfltoReg
RunId: 0
Artifacts
- public/logs/live_backing.log
- public/logs/live.log
[taskcluster 2026-05-26T17:08:40.872Z] Worker Type (proj-bugbug/batch) settings:
[taskcluster 2026-05-26T17:08:40.872Z] {
[taskcluster 2026-05-26T17:08:40.872Z] "generic-worker": {
[taskcluster 2026-05-26T17:08:40.872Z] "config": {
[taskcluster 2026-05-26T17:08:40.872Z] "capacity": 1,
[taskcluster 2026-05-26T17:08:40.872Z] "headlessTasks": false
[taskcluster 2026-05-26T17:08:40.872Z] },
[taskcluster 2026-05-26T17:08:40.872Z] "engine": "multiuser",
[taskcluster 2026-05-26T17:08:40.872Z] "go-arch": "amd64",
[taskcluster 2026-05-26T17:08:40.872Z] "go-os": "linux",
[taskcluster 2026-05-26T17:08:40.872Z] "go-version": "go1.26.2",
[taskcluster 2026-05-26T17:08:40.872Z] "release": "https://github.com/taskcluster/taskcluster/releases/tag/v100.0.1",
[taskcluster 2026-05-26T17:08:40.872Z] "revision": "fcf9d8ed582ed8de3d1cdb8f4f91ccec93b7803c",
[taskcluster 2026-05-26T17:08:40.872Z] "source": "https://github.com/taskcluster/taskcluster/commits/fcf9d8ed582ed8de3d1cdb8f4f91ccec93b7803c",
[taskcluster 2026-05-26T17:08:40.872Z] "version": "100.0.1"
[taskcluster 2026-05-26T17:08:40.872Z] },
[taskcluster 2026-05-26T17:08:40.872Z] "image": "projects/community-tc-workers/global/images/generic-worker-ubuntu-24-04-bngpghpfficdxtlhnusi",
[taskcluster 2026-05-26T17:08:40.872Z] "instance-id": "6776799414992793056",
[taskcluster 2026-05-26T17:08:40.872Z] "instance-type": "projects/757942385826/machineTypes/n2-standard-2",
[taskcluster 2026-05-26T17:08:40.872Z] "local-ipv4": "10.128.0.71",
...(11845 lines hidden)...
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠇ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠋ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠙ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠹ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠸ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠼ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠴ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠦ Preparing packages... (218/219)
Building llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
Built llama-cpp-python==0.3.19
⠧ Preparing packages... (218/219)
⠧ (219/219)
░░░░░░░░░░░░░░░░░░░░ [0/0] Installing wheels...
░░░░░░░░░░░░░░░░░░░░ [0/219] Installing wheels...
░░░░░░░░░░░░░░░░░░░░ [0/219] graphviz==0.21
░░░░░░░░░░░░░░░░░░░░ [1/219] graphviz==0.21
░░░░░░░░░░░░░░░░░░░░ [1/219] python-multipart==0.0.26
░░░░░░░░░░░░░░░░░░░░ [2/219] python-multipart==0.0.26
░░░░░░░░░░░░░░░░░░░░ [2/219] pydantic==2.12.5
░░░░░░░░░░░░░░░░░░░░ [3/219] pydantic==2.12.5
░░░░░░░░░░░░░░░░░░░░ [3/219] abnf==2.2.0
░░░░░░░░░░░░░░░░░░░░ [4/219] abnf==2.2.0
░░░░░░░░░░░░░░░░░░░░ [4/219] executing==2.2.1
░░░░░░░░░░░░░░░░░░░░ [5/219] executing==2.2.1
░░░░░░░░░░░░░░░░░░░░ [5/219] pyjwt==2.12.1
░░░░░░░░░░░░░░░░░░░░ [6/219] pyjwt==2.12.1
░░░░░░░░░░░░░░░░░░░░ [6/219] greenlet==3.3.2
░░░░░░░░░░░░░░░░░░░░ [7/219] greenlet==3.3.2
░░░░░░░░░░░░░░░░░░░░ [7/219] validx==0.8.1
░░░░░░░░░░░░░░░░░░░░ [8/219] validx==0.8.1
░░░░░░░░░░░░░░░░░░░░ [8/219] intervaltree==3.2.1
░░░░░░░░░░░░░░░░░░░░ [9/219] intervaltree==3.2.1
█████░░░░░░░░░░░░░░░ [63/219] whatthepatch==1.0.7
████████░░░░░░░░░░░░ [91/219] cint==1.0.0
██████████░░░░░░░░░░ [115/219] fonttools==4.62.1
███████████░░░░░░░░░ [127/219] polyfile-weave==0.5.9
██████████████░░░░░░ [154/219] langchain-openai==1.1.14
█████████████████░░░ [188/219] diskcache==5.6.3
██████████████████░░ [205/219] ortools==9.15.6755
███████████████████░ [216/219] pandas==3.0.1
███████████████████░ [217/219] pandas==3.0.1
███████████████████░ [217/219] scipy==1.17.1
Installed 219 packages in 507ms
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-prettier:prettier@4.0.0-alpha.8.
[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.20260408,types-PyYAML==6.0.12.20260408,types-orjson==3.6.2,types-tabulate==0.10.0.20260408,types-requests==2.33.0.20260503.
[INFO] Initializing environment for https://github.com/pre-commit/mirrors-mypy:types-pkg_resources==0.1.2,types-requests==2.33.0.20260503,types-Flask==1.1.6,types-redis==4.6.0.20241004,types-python-dateutil==2.9.0.20260408,types-orjson==3.6.2,types-tabulate==0.10.0.20260408.
[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.................................................................Passed
ruff check...............................................................Passed
ruff format..............................................................Failed
- hook id: ruff-format
- files were modified by this hook
warning: Selection `CPY` has no effect because preview is not enabled.
1 file reformatted, 243 files left unchanged
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................................................................Passed
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/tests/test_code_review.py b/tests/test_code_review.py
index 456b6e38..17ec0845 100644
--- a/tests/test_code_review.py
+++ b/tests/test_code_review.py
@@ -98,21 +98,27 @@ def test_get_file_after_stack_modifies_file():
"--- a/foo.txt\n+++ b/foo.txt\n@@ -1,3 +1,4 @@\n a\n-b\n+B\n c\n+d\n"
)
result = asyncio.run(
- get_file_after_stack(patch.patch_stack,"foo.txt", make_fetch({"foo.txt": "a\nb\nc\n"}))
+ get_file_after_stack(
+ patch.patch_stack, "foo.txt", make_fetch({"foo.txt": "a\nb\nc\n"})
+ )
)
assert result == "a\nB\nc\nd\n"
def test_get_file_after_stack_added_file():
patch = make_patch("--- /dev/null\n+++ b/new.txt\n@@ -0,0 +1,2 @@\n+a\n+b\n")
- result = asyncio.run(get_file_after_stack(patch.patch_stack,"new.txt", make_fetch({})))
+ result = asyncio.run(
+ get_file_after_stack(patch.patch_stack, "new.txt", make_fetch({}))
+ )
assert result == "a\nb\n"
def test_get_file_after_stack_unmodified_file():
patch = make_patch("")
result = asyncio.run(
- get_file_after_stack(patch.patch_stack,"foo.txt", make_fetch({"foo.txt": "a\nb\n"}))
+ get_file_after_stack(
+ patch.patch_stack, "foo.txt", make_fetch({"foo.txt": "a\nb\n"})
+ )
)
assert result == "a\nb\n"
@@ -122,7 +128,9 @@ def test_get_file_after_stack_applies_stack():
"--- /dev/null\n+++ b/f.txt\n@@ -0,0 +1,2 @@\n+a\n+b\n",
"--- a/f.txt\n+++ b/f.txt\n@@ -1,2 +1,3 @@\n a\n-b\n+B\n+c\n",
)
- result = asyncio.run(get_file_after_stack(patch.patch_stack,"f.txt", make_fetch({})))
+ result = asyncio.run(
+ get_file_after_stack(patch.patch_stack, "f.txt", make_fetch({}))
+ )
assert result == "a\nB\nc\n"
@@ -130,7 +138,9 @@ def test_get_file_after_stack_raises_for_deleted_file():
patch = make_patch("--- a/f.txt\n+++ /dev/null\n@@ -1,2 +0,0 @@\n-a\n-b\n")
try:
asyncio.run(
- get_file_after_stack(patch.patch_stack,"f.txt", make_fetch({"f.txt": "a\nb\n"}))
+ get_file_after_stack(
+ patch.patch_stack, "f.txt", make_fetch({"f.txt": "a\nb\n"})
+ )
)
assert False, "expected FileNotFoundError"
except FileNotFoundError:
@@ -143,7 +153,9 @@ def test_get_file_after_stack_follows_renames():
"--- a/old.txt\n+++ b/new.txt\n@@ -1,2 +1,3 @@\n a\n-B\n+C\n+d\n",
)
result = asyncio.run(
- get_file_after_stack(patch.patch_stack,"new.txt", make_fetch({"old.txt": "a\nb\n"}))
+ get_file_after_stack(
+ patch.patch_stack, "new.txt", make_fetch({"old.txt": "a\nb\n"})
+ )
)
assert result == "a\nC\nd\n"
[taskcluster 2026-05-26T17:17:07.433Z] Exit Code: 1
[taskcluster 2026-05-26T17:17:07.433Z] User Time: 153.768ms
[taskcluster 2026-05-26T17:17:07.433Z] Kernel Time: 209.684ms
[taskcluster 2026-05-26T17:17:07.433Z] Wall Time: 8m2.090364587s
[taskcluster 2026-05-26T17:17:07.433Z] Average Available System Memory: 5.83 GiB
[taskcluster 2026-05-26T17:17:07.433Z] Average System Memory Used: 1.92 GiB
[taskcluster 2026-05-26T17:17:07.433Z] Peak System Memory Used: 2.70 GiB
[taskcluster 2026-05-26T17:17:07.433Z] Total System Memory: 7.75 GiB
[taskcluster 2026-05-26T17:17:07.433Z] Result: FAILED
[taskcluster 2026-05-26T17:17:07.434Z] === Task Finished ===
[taskcluster 2026-05-26T17:17:07.434Z] Task Duration: 8m2.091913655s
[taskcluster:error] exit status 1
Loading