Expect the found heading in the finding for '## What', an indented '### what', '#WHAT' and the existing '#### What' case, and no hint for a different word such as '### Whatever'.
The template check only reads '### Name' headings, so '## What', '#### Tested' or '### checklist' counted as missing, and the finding did not say why. When a section is missing, look for the same name as a heading at any level and in any case, and add it to the finding, as in "add the '### What' heading of the template; found '## What'".
Expect 'fill the ### What section' for the untouched template and for sections that are blank or only hold a comment, and 'add the ### What heading of the template' for a heading written at another level. Add a body that names its sections without headings, the shape that failed #10721 at first, and expect one finding per missing heading.
The pull request template check reported 'section What is missing or empty' both when the body had no '### What' heading and when the heading was there with nothing under it, without saying which heading it looks for. Report 'add the ### What heading of the template' when the heading is absent and 'fill the ### What section' when it is empty, for What, Tested and Checklist.
progress.py skips every definition whose name ends in _nid_no_patch or
_nid_no_patch_cut, which are meant to be internal helpers. Some libraries
export such functions with APS5_EXPORT under an explicit NID or name:
libSceAgcVsh (150), libSceNKWebKit (150) and libSceJson2's inventory
(66), all of them calling NotImplemented_nid_no_patch. None of the 366
was counted, so those three libraries showed 151 of 151 functions where
they declare 517, and import_audit, which takes its stub list from the
same scan, reported imports of them as implemented.
A _nid_no_patch definition is now skipped only when no APS5_EXPORT in its
library exports it. The library totals go from 6104 of 12305 to 6104 of
12671 on main.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With 250 pull requests of which every 25th shares a file with the branch, expect probe lines at 100, 200 and 250 with 4, 8 and 10 related pull requests and one line for merging those 10; without a branch, expect merge lines at 100 and 150 of 150. The tests fail before the previous commit.
After the fetch, a --branch run probed about 1,300 pull requests for about 28 s without output, and --out merged every pull request into the base. Report every 100 pull requests and at the end how many were probed and how many of them share files or exports with the branch, and how many were merged into the base.
Check that listing 150 pull requests over two pages reports their number, that fetching 250 heads in three batches reports 99, 199 and 250 of them, and that a run without pull requests still reports one fetch line. The tests fail before the previous commit.
pr_overlap printed nothing until its report, which takes 54 to 81 s on Linux with about 1,300 open pull requests and took minutes on Windows, so a run looked stuck. Write progress lines to stderr: the number of open pull requests once they are listed, and the number of pull request heads fetched after each batch of 100. The report on stdout is unchanged.
Path.write_text takes newline only from Python 3.10, so the three tests errored in the fixture helper on the Python 3.9.6 that macOS ships as /usr/bin/python3. open() with newline writes the same LF bytes on every version.
The branch scan gives the same overlaps as a scan of every pull request and merges only the pull requests that share a file or an export with the branch; a scan without a branch still merges all of them.
pr_overlap --branch merged every open pull request against main, although a pull request can only appear in the report when it shares a file or an export with the branch, so on a repository with a thousand open pull requests the check did not finish in an hour. probe lists each pull request's files and exports from git diff base...head, without a merge, and scan_all merges only the ones that overlap the branch; the others get empty sets, which is what they would contribute to the report. --out is unchanged.
The relinker eligibility list was written on 10-12 and missed inputs added to the relinker-only build since then: the nid sources that relinker_core and two relinker tests compile, the libkernel headers that ParamJsonParser.cpp includes, the pad command file test, the recompiler test targets and cache source tests, and the PR template and pr-overlap.yml that tools tests read. A pull request that changed only these got no automatic build, and a push to main skipped the macOS relinker hosts for them.
The recompiler is listed as a directory because shader_cache_runtime_sources copies all of core/shader/recompiler and hashes every file its CMakeLists globs, so an edit to any of them can change that test.
An edit to the relinker-asan job alone also skipped both relinker jobs, because only edits to the relinker job counted.
The progress report headline subtracted two percentages that were already rounded to two decimals, so one implemented function among tens of thousands read as +0.0%. When the rounded change is zero but the exact change is not, compute it from the done and total counts with exact fractions and print it with up to four decimals, or +<0.0001 below that. The icon follows the exact sign. Changes that survive the rounding, a zero change in the ratio and the per-library table are unchanged.
Specify utf-8-sig encoding when reading library source files in
source_stubs so UTF-8 characters are preserved on Windows and leading
BOMs are tolerated.
Reconfigure stdout and stderr streams to UTF-8 with backslashreplace
at the beginning of main, and specify UTF-8 encoding when writing test
fixtures.