kokkos-kernels
kokkos-kernels copied to clipboard
Propose increasing column limit to 120.
Moving the topic of line length formatting here from https://github.com/kokkos/kokkos-kernels/pull/2247.
I propose extending code format column width from 80 to >100. This may be a bit controversial, but I often feel like our formatter makes my code look worse. A lot of the issue is the line splitting it does makes the code worse to look at. With all the templating we do, it's easy for even simple code to go over 80 characters. I understand that no one wants to see a line wrap on their editor, but I think most of us spend most of our time developing on a nice large monitor, so we would be unlikely to need to line wrap at under 100 characters. As an example, on my current setup, I can have a single source file open with no line wrapping up to 224 characters or 112 if I have two files open side-by-side as I often do.
If the team agrees that we should extend the allowed line length, we need to agree on what length. 120 seemed to get the most agreement when I brought this up at our weekly meeting.
Should we can take this opportunity, while we are modifying our format, to also upgrade to clang-format-16 (or whatever supports C++20) to prep for C++20?
We can also do this all at once in one massive commit or just reformat files as they are touched naturally during KK development.
One concern what that we don't want git blame to show a commit that was just doing formatting changes. Like many git commands, git blame has a -w that will filter whitespace changes. Unfortunately, the -w flag is not smart enough to filter line split changes, so we will need a smarter solution...
Fortunately, one exists!
https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revltrevgt
NOTE: this flag was only added fairly recently; you'll need git version > 2.23 (released in 2021). I tested it and it works great! The downside is that you have to remember to add this flag every time you run git blame. This is where git aliases and a maintained file of formatting commits would be super useful. One person recommended a tracked file, like .gitignore, at the root of the repo. Something like .git-blame-ignore-revs. This would allow us to add formatting/uninteresting commits in the future. We could then all configure our git to make this convenient. The options are:
# Add formatting and other uninteresting commits here and
# 'git blame $file' will skip them IF
# A) you have it configured to do so:
# git config --global blame.ignoreRevsFile .git-blame-ignore-revs
# OR
# B) you have an aliased blame command for KokkosKernels:
# git config --global alias.kkblame 'blame --ignore-revs-file=.git-blame-ignore-revs'
# NOTE: this implies you run 'git kkblame $file'
# OR
# C) you explicitly tell blame to skip them
# git blame --ignore-revs-file=.git-blame-ignore-revs $file
This --ignore-revs-file approach forces us to do the reformatting in a small number of (maybe even just one) giant commits.
Why do this at all?
Some examples of how much nicer the code looks with a 100 column limit:
- Kokkos::parallel_for(Kokkos::TeamThreadRange(team, k1, k2),
- [&](const size_type k) {
- const auto col = Base::U_entries(k);
- Base::uset(k, 0.0);
- Base::iw(my_team, col) = k;
- });
+ Kokkos::parallel_for(Kokkos::TeamThreadRange(team, k1, k2), [&](const size_type k) {
+ const auto col = Base::U_entries(k);
+ Base::uset(k, 0.0);
+ Base::iw(my_team, col) = k;
+ });
- KokkosBlas::Algo::Gemv::Unblocked>::invoke(team,
- one,
- Ljj, Xj,
- zero,
+ KokkosBlas::Algo::Gemv::Unblocked>::invoke(team, one, Ljj, Xj, zero,
- LowerTriLvlSchedTP1SolverFunctor<RowMapType, EntriesType, ValuesType,
- LHSType, RHSType>
- tstf(row_map, entries, values, lhs, rhs, nodes_grouped_by_level,
- node_count);
+ LowerTriLvlSchedTP1SolverFunctor<RowMapType, EntriesType, ValuesType, LHSType, RHSType>
+ tstf(row_map, entries, values, lhs, rhs, nodes_grouped_by_level, node_count);
- } else if (thandle.get_algorithm() ==
- SPTRSVAlgorithm::SUPERNODAL_SPMV ||
- thandle.get_algorithm() ==
- SPTRSVAlgorithm::SUPERNODAL_SPMV_DAG) {
+ } else if (thandle.get_algorithm() == SPTRSVAlgorithm::SUPERNODAL_SPMV ||
+ thandle.get_algorithm() == SPTRSVAlgorithm::SUPERNODAL_SPMV_DAG) {
- std::cout << " + Execution space : " << execution_space::name()
- << std::endl;
+ std::cout << " + Execution space : " << execution_space::name() << std::endl;
std::cout << " + Memory space : " << temp_mem_space::name() << std::endl;
- std::cout << " + SpTrsv(lower) time: " << sptrsv_time_seconds << std::endl
- << std::endl;
+ std::cout << " + SpTrsv(lower) time: " << sptrsv_time_seconds << std::endl << std::endl;
I added the entire team as reviewers since the code formatting change would impact everyone.
@jgfouca thanks for documenting the usage above. I think we'll need to discuss how to proceed with open PRs, works in progress, etc. as the format update will require at least rebasing existing work, but could create merge conflicts in some cases
@ndellingwood , good point. That is a downside of the giant reformat commit that --ignore-revs-file kind of forces us into. How important is it for git blame to automatically hide format changes? If you run git blame and get shown a commit that you don't care about, it's not that hard to just skip it yourself.
Status Flag 'Pre-Test Inspection' - Auto Inspected - Inspection is Not Necessary for this Pull Request.
Status Flag 'Pull Request AutoTester' - Testing Jenkins Projects:
Pull Request Auto Testing STARTING (click to expand)
Build Information
Test Name: KokkosKernels_PullRequest_CUDA11_CUDA11_LayoutRight
- Build Num: 1398
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GCC930_Light_Tpls_GCC930_Tpls_CLANG13CUDA10
- Build Num: 986
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GNU1021
- Build Num: 643
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GNU1021_Light_LayoutRight
- Build Num: 630
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_Tpls_GNU1021
- Build Num: 631
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_Tpls_INTEL19_solo
- Build Num: 635
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_CLANG1001_solo
- Build Num: 607
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_VEGA90A_ROCM561
- Build Num: 1087
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_VEGA90A_Tpls_ROCM561
- Build Num: 602
- Status: STARTED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Using Repos:
- Repo: KOKKOSKERNELS (jgfouca/kokkos-kernels)
- Branch: jgfouca/increase_line_len_format
- SHA: aac98c6d1f75c882e56c4054a480d61ffda0fcc2
- Mode: TEST_REPO
Pull Request Author: jgfouca
Status Flag 'Pull Request AutoTester' - Jenkins Testing: all Jobs PASSED
Pull Request Auto Testing has PASSED (click to expand)
Build Information
Test Name: KokkosKernels_PullRequest_CUDA11_CUDA11_LayoutRight
- Build Num: 1398
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GCC930_Light_Tpls_GCC930_Tpls_CLANG13CUDA10
- Build Num: 986
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GNU1021
- Build Num: 643
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_GNU1021_Light_LayoutRight
- Build Num: 630
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_Tpls_GNU1021
- Build Num: 631
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_Tpls_INTEL19_solo
- Build Num: 635
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_CLANG1001_solo
- Build Num: 607
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_VEGA90A_ROCM561
- Build Num: 1087
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Build Information
Test Name: KokkosKernels_PullRequest_VEGA90A_Tpls_ROCM561
- Build Num: 602
- Status: PASSED
Jenkins Parameters
| Parameter Name | Value |
|---|---|
| KOKKOSKERNELS_SOURCE_REPO | https://github.com/jgfouca/kokkos-kernels |
| KOKKOSKERNELS_SOURCE_SHA | aac98c6d1f75c882e56c4054a480d61ffda0fcc2 |
| KOKKOSKERNELS_TARGET_BRANCH | develop |
| KOKKOSKERNELS_TARGET_REPO | https://github.com/kokkos/kokkos-kernels |
| KOKKOSKERNELS_TARGET_SHA | 47942bf7c87c470275c5bb221e4a52eefa989e40 |
| PR_LABELS | |
| PULLREQUESTNUM | 2255 |
| TEST_REPO_ALIAS | KOKKOSKERNELS |
Status Flag 'Pre-Merge Inspection' - - This Pull Request Requires Inspection... The code must be inspected by a member of the Team before Testing/Merging NO REVIEWS HAVE BEEN PERFORMED ON THIS PULL REQUEST!
All Jobs Finished; status = PASSED, However Inspection must be performed before merge can occur...
Status Flag 'Pre-Merge Inspection' - SUCCESS: The last commit to this Pull Request has been INSPECTED AND APPROVED by [ e10harvey ]!
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
+1 for switching to clang-format-16 at the same time
I guess most of our machines will have podman, so this is an option:
podman run -v $PWD:/src xianpengshen/clang-tools:16 clang-format ...
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
Status Flag 'Pull Request AutoTester' - Pull Request MUST BE MERGED MANUALLY BY Project Team - This Repo does not support Automerge
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....
All Jobs Finished; status = PASSED, However PR is now STALE, and must be retested. Set the AT: RETEST Label to force retest....