Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .agents/skills/graalpython-rota/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
name: graalpython-rota
description: Run GraalPy ROTA maintenance workflows for (1) import update pull requests and (2) triage of recent periodic job failures in Jira. Use when asked to perform or guide recurring ROTA tasks from `docs/contributor/ROTA.md`, including branch setup, `mx` update commands, PR creation with reviewers/gates via `ol-cli bitbucket`, and date-bounded periodic-failure issue triage via `ol-cli jira`.
description: Run GraalPy ROTA maintenance workflows for (1) import update pull requests and (2) triage of recent periodic job failures in Jira. Use when asked to perform or guide recurring ROTA tasks from `docs/contributor/ROTA.md`, including branch setup, `mx` update commands, PR creation with reviewers/gates via `gdev-cli bitbucket`, and date-bounded periodic-failure issue triage via `gdev-cli jira`.
---

# GraalPy ROTA
Expand Down Expand Up @@ -32,7 +32,7 @@ mx python-update-import
mx --dy /graalpython-enterprise python-update-unittest-tags
```
4. Create PR with description `[GR-21590] Import update`.
5. Use `ol-cli bitbucket` to create PR, start gates, and set reviewers:
5. Use `gdev-cli bitbucket` to create PR, start gates, and set reviewers:
- `tim.felgentreff@oracle.com`
- `michael.simacek@oracle.com`
- `stepan.sindelar@oracle.com`
Expand All @@ -47,14 +47,14 @@ mx --dy /graalpython-enterprise python-update-unittest-tags
- Default to the last 14 days unless user specifies otherwise.
- Always state concrete start/end calendar dates in the response.
```bash
ol-cli jira search --json --max 100 \
gdev-cli jira search --json --max 100 \
-f key,summary,creator,created,status,labels,components,assignee \
-jql "project = GR AND component = Python AND creator = olauto AND labels = periodic-job-failures AND created >= -14d AND status != Closed AND status != 'In Progress' ORDER BY created DESC"
```

3. Fetch shortlisted issue details with `get-issue`:
```bash
ol-cli jira get-issue --json -id GR-XXXX \
gdev-cli jira get-issue --json -id GR-XXXX \
| jq '{key, summary:.fields.summary, status:.fields.status.name, created:.fields.created, labels:.fields.labels, assignee:(.fields.assignee.name // null), description:.fields.description, comments:(.fields.comment.comments | map({author:.author.name, created, body}))}'
```

Expand Down
26 changes: 13 additions & 13 deletions .agents/skills/jira/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@ Typical fields you need to know:

### 1. Getting context

To get the issue data, start with `ol-cli`, for example:
To get the issue data, start with `gdev-cli`, for example:

ol-cli jira get-issue --json -id GR-72840
gdev-cli jira get-issue --json -id GR-72840

Read the description and follow any links that seem relevant.

Expand All @@ -33,7 +33,7 @@ Run this in a subagent if possible and let it give you a summary.
### 2. Check if there is work to do

Issues may be stale, already solved, or no longer apply. Search the context and
logs for other potentially relevant keywords, use `ol-cli jira search` to find
logs for other potentially relevant keywords, use `gdev-cli jira search` to find
out if there are potentially other related issues, query the codebase and git
history and look for reproducers.

Expand All @@ -56,27 +56,27 @@ just a script to reproduce it. Do NOT write new tests in
using `mx graalpytest`.

Reproducing something that fails rarely or only on another architecture or in
the CI may be tough, but can be achieved using `ol-cli bitbucket` and running
the CI may be tough, but can be achieved using `gdev-cli bitbucket` and running
in the gate, stress testing there.

1. Create a temporary branch.
2. Potentially add a new CI job to run just the reproducer.
3. Push to Bitbucket.
4. Open a PR using ol-cli bitbucket.
4. Open a PR using gdev-cli bitbucket.
5. Use the bitbucket buildbot REST API to request a merge commit `/rest/ci/1.0/base/projects/G/repos/<REPO>/pullRequest/<PRID>/mergeCommit`. You need a `Authorizatin: Bearer <TOKEN>` header.
Make sure to disable any proxy environment variables for the API call. You should be able to find the token by decoding the base64 token from the ol-cli config.
Make sure to disable any proxy environment variables for the API call. You should be able to find the token by decoding the base64 token from the gdev-cli config.
6. Wait a bit, the CI will create a new commit on a branch. The name of that branch is `<BRANCHNAME_YOU_PUSHED>_gate`. Use `git fetch` to see the branch update come in.
7. Use the bitbucket buildbot REST API to request CI job enumeration for the HEAD commit of that `<BRANCHNAME_YOU_PUSHED>_gate` branch: `/rest/ci/1.0/base/projects/G/repos/<REPO>/enumerate/<COMMIT>?branch=<URL_ENCODED_BRANCH_NAME>&force=false&toBranch=master`
8. Wait a bit, the CI will enumerate the available CI jobs on that commit.
9. Use ol-cli bitbucket to start your reproducer job on that commit.
9. Use gdev-cli bitbucket to start your reproducer job on that commit.
10. Repeat steps 3 through 9 until you are satisfied with the reproducer.

DO NOT STOP POLLING AND RETRYING UNTIL EITHER YOU REPRODUCE THE ISSUE, MORE
THAN 8 HOURS HAVE ELAPSED WHILE YOU TRIED, OR YOU HAVE USED AT LEAST AROUND 2
MILLION TOKENS (you may estimate from the conversation history) WHILE TRYING!

Make sure to decline the temporary reproducer PR once you are done with it
using `ol-cli bitbucket`.
using `gdev-cli bitbucket`.

### 4a. Fixing a reproducible issue.

Expand All @@ -99,7 +99,7 @@ issue. Then STOP AND ASK for guidance.
Once a code change has been implemented and verified (either with reproducer or
by approval of the human user), it needs to be prepared for inclusion.

Transition the Jira issue to be "In Progress" using `ol-cli jira transition`.
Transition the Jira issue to be "In Progress" using `gdev-cli jira transition`.

Make sure your changes are committed in reviewable, focused, incremental
commits.
Expand All @@ -111,13 +111,13 @@ comments carefully, change the code where the subagent's comments make sense.
Create a bitbucket PR

1. Push your branch.
2. Open a PR using ol-cli bitbucket with a title including the Jira issue ID, like "[GR-XXXXX] Short description of overall fix."
2. Open a PR using gdev-cli bitbucket with a title including the Jira issue ID, like "[GR-XXXXX] Short description of overall fix."
3. Use the bitbucket buildbot REST API to request a merge commit `/rest/ci/1.0/base/projects/G/repos/<REPO>/pullRequest/<PRID>/mergeCommit`. You need a `Authorizatin: Bearer <TOKEN>` header.
Make sure to disable any proxy environment variables for the API call. You should be able to find the token by decoding the base64 token from the ol-cli config.
Make sure to disable any proxy environment variables for the API call. You should be able to find the token by decoding the base64 token from the gdev-cli config.
4. Wait a bit, the CI will create a new commit on a branch. The name of that branch is `<BRANCHNAME_YOU_PUSHED>_gate`. Use `git fetch` to see the branch update come in.
5. Use the bitbucket buildbot REST API to request CI job enumeration for the HEAD commit of that `<BRANCHNAME_YOU_PUSHED>_gate` branch: `/rest/ci/1.0/base/projects/G/repos/<REPO>/enumerate/<COMMIT>?branch=<URL_ENCODED_BRANCH_NAME>&force=false&toBranch=master`
6. Wait a bit, the CI will enumerate the available CI jobs on that commit.
7. Use ol-cli bitbucket to start and watch the gate jobs on the HEAD commit of that `<BRANCHNAME_YOU_PUSHED>_gate` branch. They may take a few hours to finish, so poll sparingly.
7. Use gdev-cli bitbucket to start and watch the gate jobs on the HEAD commit of that `<BRANCHNAME_YOU_PUSHED>_gate` branch. They may take a few hours to finish, so poll sparingly.
8. If there are failures, investigate them and try to fix them yourself on top of the PR.
9. Repeat steps 1 through 8 until the gates pass or you need help from the human.

Expand All @@ -128,7 +128,7 @@ been implemented and the PR created, the Jira issue needs to be updated.

You can do this in parallel while watching the Bitbucket PR from step 5.

Add a comment using `ol-cli jira comment` to the Jira issue, summarizing your
Add a comment using `gdev-cli jira comment` to the Jira issue, summarizing your
findings and any work you may have done. Do NOT use Attlassian markup, the
comment just ONLY be PLAIN TEXT. For paragraphs, just use double '\n'. You can
make plaintext lists by making lines begin with '* '. Do NOT use ADF, use raw
Expand Down
6 changes: 3 additions & 3 deletions .agents/skills/pr-gate-check/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ description: Check gate status for a Bitbucket PR by resolving the PR head commi
Use this workflow when asked for gate status of a PR. Usually the builds are tied to a merge commit generated on Bitbucket, so this skill goes through finding the remote merge commit.

## Workflow
1. Get PR commits and identify PR head commit (first commit in `ol-cli bitbucket commits` output):
1. Get PR commits and identify PR head commit (first commit in `gdev-cli bitbucket commits` output):
```bash
ol-cli bitbucket commits --project=G --repo=graalpython --pullrequest=<PR_ID> --all --json
gdev-cli bitbucket commits --project=G --repo=graalpython --pullrequest=<PR_ID> --all --json
```

2. Fetch refs and locate merge commit whose parent includes PR head:
Expand All @@ -24,7 +24,7 @@ Pick the merge commit where one parent is `<PR_HEAD_SHA>` and the other is the t

3. Check builds on that merge commit:
```bash
ol-cli bitbucket get-builds --commit=<MERGE_SHA> --all --format=key,state,url
gdev-cli bitbucket get-builds --commit=<MERGE_SHA> --all --format=key,state,url
```

4. Separate root failures from fan-out failures:
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -77,5 +77,5 @@ It consists of: Java (Truffle) + C (CPython C-API compatibility) + Python stdlib

We use Jira and Bitbucket, and each PR should reference a Jira ticket with the form [GR-XXXX] where XXXX is the ticket number.
When asked to open pull requests, agents should ask for the Jira ticket number.
When asked to create a ticket, the `ol-cli jira` tool can be used to create a ticket for the "Python" component.
When asked to create, run gates on, or check on the builds previously run on a pull request, use the `ol-cli bitbucket` tool.
When asked to create a ticket, the `gdev-cli jira` tool can be used to create a ticket for the "Python" component.
When asked to create, run gates on, or check on the builds previously run on a pull request, use the `gdev-cli bitbucket` tool.
17 changes: 2 additions & 15 deletions ci/graal/ci/common.jsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -166,8 +166,8 @@ local common_json = import "../common.json";
"Graal diagnostic output saved in '(?P<filename>[^']+)'",
# Keep in sync with jdk.graal.compiler.debug.DebugContext#DUMP_FILE_MESSAGE_REGEXP
"Dumping debug output to '(?P<filename>[^']+)'",
# Keep in sync with com.oracle.svm.hosted.NativeImageOptions#DEFAULT_ERROR_FILE_NAME
" (?P<filename>.+/svm_err_b_\\d+T\\d+\\.\\d+_pid\\d+\\.md)",
# Keep in sync with com.oracle.svm.hosted.ProgressReporter#printErrorMessage
"Please inspect the generated error report at: '(?P<filename>[^']+)'",
# Keep in sync with jdk.graal.compiler.test.SubprocessUtil#makeArgfile
"@(?P<filename>.*SubprocessUtil-argfiles.*\\.argfile)",
# Keep in sync with com.oracle.truffle.api.test.SubprocessTestUtils#makeArgfile
Expand All @@ -192,19 +192,6 @@ local common_json = import "../common.json";
packages+: if self.os == "windows" then $.devkits["windows-" + self.jdk_name].packages else {},
},

eclipse: {
downloads+: {
ECLIPSE: {
name: "eclipse",
version: common_json.eclipse.version,
platformspecific: true,
}
},
environment+: {
ECLIPSE_EXE: "$ECLIPSE/eclipse",
},
},

jdt: {
environment+: {
JDT: "builtin",
Expand Down
6 changes: 3 additions & 3 deletions ci/graal/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"Jsonnet files should not include this file directly but use ci/common.jsonnet instead."
],

"mx_version": "7.74.1",
"mx_version": "7.75.0",

"COMMENT.jdks": "When adding or removing JDKs keep in sync with JDKs in ci/common.jsonnet",
"jdks": {
Expand Down Expand Up @@ -67,8 +67,8 @@

"pip": {
"ninja_syntax": "==1.7.2",
"lazy-object-proxy": "==1.6.0",
"pylint": "==2.4.4",
"lazy-object-proxy": "==1.10.0",
"pylint": "==3.2.7",
"black": "==23.11.0"
}
}
13 changes: 1 addition & 12 deletions ci/python-gate.libsonnet
Original file line number Diff line number Diff line change
Expand Up @@ -376,17 +376,6 @@
packages(os, arch)::
get(PACKAGES, os, arch),

local eclipse = task_spec(evaluate_late({
// late evaluation of the eclipse mixin, conditional import based on platform
// eclipse downloads are not provided for aarch64
"eclipse": function(builder)
local arch = builder.arch;
if arch == "aarch64" then
{}
else
common.deps.eclipse
})),

logs(os, arch):: LOGS,

//------------------------------------------------------------------------------------------------------------------
Expand Down Expand Up @@ -501,7 +490,7 @@
dynamic_imports+:: ["/graalpython"],
}),

graalpy_eclipse_gate:: $.graalpy_gate + eclipse + jdt,
graalpy_eclipse_gate:: $.graalpy_gate + jdt,

unittest_retagger_gate:: $.graalpy_gate + task_spec({
environment+: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ test.test_capi.test_abstract.CAPITest.test_mapping_haskey @ darwin-arm64,linux-a
test.test_capi.test_abstract.CAPITest.test_mapping_haskeystring @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_capi.test_abstract.CAPITest.test_mapping_keys_valuesitems @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_capi.test_abstract.CAPITest.test_mapping_size @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_capi.test_abstract.CAPITest.test_object_ascii @ darwin-arm64,linux-aarch64,linux-x86_64
test.test_capi.test_abstract.CAPITest.test_object_bytes @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_capi.test_abstract.CAPITest.test_object_delattr @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_capi.test_abstract.CAPITest.test_object_getattr @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ test.test_cmd_line.CmdLineTest.test_run_module @ darwin-arm64,linux-aarch64,linu
test.test_cmd_line.CmdLineTest.test_run_module_bug1764407 @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.CmdLineTest.test_site_flag @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.CmdLineTest.test_stdin_readline @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_cmd_line.CmdLineTest.test_stdout_flush_at_shutdown @ darwin-arm64,linux-aarch64,linux-x86_64
test.test_cmd_line.CmdLineTest.test_unbuffered_input @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.CmdLineTest.test_unbuffered_output @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.CmdLineTest.test_unmached_quote @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.CmdLineTest.test_verbose @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.IgnoreEnvironmentTest.test_ignore_PYTHONPATH @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github,win32-AMD64,win32-AMD64-github
test.test_cmd_line.SyntaxErrorTests.test_decoding_error_at_the_end_of_the_line @ darwin-arm64,linux-aarch64,linux-x86_64
test.test_cmd_line.SyntaxErrorTests.test_tokenizer_error_with_stdin @ darwin-arm64,linux-aarch64,linux-x86_64
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ test.test_concurrent_futures.test_as_completed.ThreadPoolAsCompletedTest.test_co
test.test_concurrent_futures.test_as_completed.ThreadPoolAsCompletedTest.test_duplicate_futures @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_as_completed.ThreadPoolAsCompletedTest.test_future_times_out @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_as_completed.ThreadPoolAsCompletedTest.test_no_timeout @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
# Transiently times out GR-65714
!test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_crash_at_task_unpickle
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_error_at_task_pickle @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_error_at_task_unpickle @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_error_during_func_exec_on_worker @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
Expand All @@ -16,8 +18,6 @@ test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_exit_during_func_exec_on_worker @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_exit_during_result_pickle_on_worker @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_exit_during_result_unpickle_in_result_handler @ darwin-arm64,linux-aarch64,linux-aarch64-github,linux-x86_64,linux-x86_64-github
# Transiently times out GR-65714
!test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_crash_at_task_unpickle
!test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_gh105829_should_not_deadlock_if_wakeup_pipe_full
!test.test_concurrent_futures.test_deadlock.ProcessPoolSpawnExecutorDeadlockTest.test_shutdown_deadlock_pickle
!test.test_concurrent_futures.test_future.FutureTests.test_cancel
Expand Down
Loading
Loading