Repository navigation
Conversation
MarcZX10
left a comment
There was a problem hiding this comment.
Reviewed — looks good
The exact-head UTF-16 copy/concatenation test checks returned pointers, complete units, source preservation, and protected write extents; no blocking code or test issue was found.
What I ran
Reviewed PR head 3954ef07cbe613c6694f212aee639823fa993b28 against current main 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48; the merge preview was clean (tree 08fdacad3d5415194ad21e519b40aa1ddfc96703). Environment: Debian 12 x86-64, Python 3.11.2, Git 2.39.5, GCC 12.2.0. I did not build or run C++ tests locally. The Linux and Windows test runs and source-unit mutation control are author-reported for an integration containing this exact PR head. Hosted eligibility, report and library portability passed; Linux was skipped and other build/policy jobs were pending at final refresh.
git diff --check 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48...3954ef07cbe613c6694f212aee639823fa993b28
python3 tools/check_conventions.py --base 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48 --head 3954ef07cbe613c6694f212aee639823fa993b28 --title 'test(libc): guard UTF-16 string copy and concatenation extents' --body /tmp/pr-13316-body.md
python3 tools/pr_test_quality.py --root /tmp/anyps5-review-13316 --json core/libs/prx/libc/CMakeLists.txt core/libs/tests/GuestWideCopyExtent.cpp
git merge-tree --write-tree 58d5af7daa8087d2ffbdb50ae6e0db3cb6a88e48 refs/review/pr-13316
gh pr checks 13316 -R boykopovar/AnyPS5Results
| Check | Result |
|---|---|
| Diff whitespace | Passed; no output from git diff --check. |
| Conventions and PR template | Passed against current main. |
| Current-main merge preview | Passed; clean tree 08fdacad3d5415194ad21e519b40aa1ddfc96703. |
| Test registration/source review | Registered as guest_wide_copy_extent; source lengths 0–128 and destination prefixes 0, 1, 15, and 33 exercise wcscpy and wcscat. Expected full UTF-16 sequences include the terminator; checks also cover returned destination pointers, source preservation, and eight preceding guard units. |
| Test-quality heuristic | Flagged possible missing registration; manual CMake inspection confirmed registration through ${LIBS_INCLUDE_DIR}/tests/GuestWideCopyExtent.cpp. |
| Author-reported tests | The author reports the focused test and filtered 20-topic CTest set passed 20/20 on Linux and Windows, with an exact-head source-unit mutation rejected by the fixture. A full Linux build and affected-target Windows build are also reported. I did not independently run these. |
| Hosted CI | Eligibility, report, and library portability passed; Linux skipped; remaining jobs were pending at final refresh. |
| Build/local C++ execution | Not run locally. |
Unedited local command output
git diff --check produced no output.
Conventions:
All conventions checks passed.
Test-quality heuristic:
{
"findings": [
{
"path": "core/libs/tests/GuestWideCopyExtent.cpp",
"line": 1,
"kind": "possible-unregistered-cpp-test",
"message": "Changed C++ test source path was not found literally in CMake files; inspect registration, generated source lists, and workflow coverage."
}
],
"negative_control_candidates": [],
"limits": [
"Heuristics can miss weak assertions and can flag valid tests; inspect every finding.",
"A test that passes against base is not by itself proof that the PR test is inadequate.",
"Negative controls are only candidates until the test actually runs against base and fails by assertion rather than import/setup error."
]
}Merge preview:
08fdacad3d5415194ad21e519b40aa1ddfc96703
Hosted checks:
linux skipping 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070047808
register-context (macos-15-intel, Debug) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045657
library-portability pass 1m26s https://github.com/boykopovar/AnyPS5/actions/runs/41056257546/job/124064428595
intake pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257320/job/124064431591
labels pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257586/job/124064431448
eligibility pass 9s https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124064429181
conventions pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257583/job/124064431492
register-context (macos-15-intel, Release) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045628
register-context (ubuntu-latest, Debug) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045649
register-context (ubuntu-latest, Release) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045716
relinker (macos-latest, clang++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070046123
relinker (macos-latest, clang++, x86_64) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045703
relinker (ubuntu-latest, g++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045635
relinker (windows-latest, g++) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045694
relinker-asan pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045611
report pass 58s https://github.com/boykopovar/AnyPS5/actions/runs/41056257460/job/124064429111
windows pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045653
write-watch (macos-15) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045582
write-watch (macos-15-intel) pending 0 https://github.com/boykopovar/AnyPS5/actions/runs/41056257475/job/124070045610
Negative control
| Assertion | Mutation reported by author | Result |
|---|---|---|
| Fixture rejects an incorrect wide-copy implementation | Author reports an intentional production-function mutation in the exact-head source-unit control | Author reports the fixture rejected it; I did not independently run the control. |
Findings
Blocking
None found in the reviewed source.
Non-blocking
The PR body cites FreeBSD wmemchr(3) as the behavior reference for wcscpy/wcscat; that link is for a different interface. Please replace it with a source that documents the functions this test covers. This does not block the test change.
Sources
- Registered
guest_wide_copy_extenttarget. - Guarded
wcscpy/wcscatassertions. - Production
wcscpyandwcscatimplementations. - PR body’s FreeBSD
wmemchr(3)reference.
Not verified
No local build or C++ execution, independent Linux/Windows run, macOS or WASM runtime, title, or console test. The reported test results are author-supplied; hosted Linux was skipped and hosted build jobs remained pending.
|
Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.
|
|
@MarcZX10 I clarified the reference label and added a direct line anchor for wcscpy and wcscat. I checked the exact pinned FreeBSD source through the repository API: wmemchr.3 is the shared wide-character family manual, and its NAME/SYNOPSIS include the tested function(s). The description now makes that explicit rather than relying on the filename. Function declaration. This is a PR-description clarification only. Head AI-assisted: yes. |
|
Integrated the existing shared CI fix at new head #13220's original commit Fresh local verification:
Hosted-check snapshot at 2026-10-30T17:44:50+00:00 (UTC): 5 pending. Current-head checks. Earlier red checks belong to heads without the prerequisite; new-head CI remains pending until it completes. Please re-check this integrated head. AI-assisted: yes. |
|
Follow-up to the dependency cleanup: GitHub still reported a conflict, so the source branch is now refreshed at The fixture is byte-identical to the preceding published head and the complete combined tree. Combined Description conventions, whitespace, exact main/prerequisite ancestry and fixture retention pass. This is focused native validation, not a full default product, local macOS, PS5/title or GPU run. Please recheck this updated head. Its new hosted checks remain pending until complete. Current-head checks. AI-assisted: yes. |
What
Adds guarded wcscpy/wcscat tests through 128 source units and four destination-prefix lengths, checking full-unit terminators, exact output extent, return pointers, high/surrogate-range units and source/prefix preservation.
#13220 merged at 2026-11-01T03:58:51Z. Its original commit
e9f09f54fabb6408d3e2711b8df10c10112ab00eremains an ancestor; this independent topic now has no open prerequisite. The earlier shared write-watch configuration fix is already on main and is not a separate feature of this topic.Refreshed the source branch after GitHub still reported a conflict following the dependency cleanup. The topic fixture is unchanged.
Tested
Exact updated head
f921877548573cbf7aaefde014a19b6ae3da90d8integrates current recorded mainba627802e2210187d417deb64c8f2fed8e33011f. Complete combined validation52f04e5a6b07cea04982202ab1d9237163391686now contains all 31 exact topic heads (including the 17 already refreshed). Windows/MinGW and Linux rebuild all affected targets and their real production library dependencies: all 34 registered CTests pass per OS, zero skips, includingguest_wide_copy_extentexactly once and the three related string groups.The fixture is byte-identical to the preceding published head and the combined tree. No assertion or timeout is weakened. Current-main conventions with this full description, whitespace, exact ancestry and fixture retention pass. This is focused native validation, not a complete default product, local macOS, PS5/title or GPU run. Hosted checks for this new head remain pending until complete.
Earlier rationale and validation (historical revisions and dependency state)
What
Adds guarded wcscpy/wcscat tests through 128 source units and four destination-prefix lengths, checking full-unit terminators, exact output extent, return pointers, high/surrogate-range units and source/prefix preservation.
Integrate the existing #13220 fix at
e9f09f54fabb6408d3e2711b8df10c10112ab00eand current recorded main. The failed macOS write-watch jobs stopped in CMake configuration because execute-fault and read-fault were each registered twice. This head includes the original prerequisite commit, removing the duplicate block while retaining all 18 distinct tests. No parallel fix is introduced, no test assertion is weakened, and no timeout is changed.This PR's fixture is byte-identical to the previous published head
3954ef07cbe613c6694f212aee639823fa993b28. The extra topic-relative CI change is the existing prerequisite's five-line registration deletion. Proposed landing order is #13220 first, then this independent topic. The submitted head already includes the fix, so its new CI can test it while the prerequisite PR remains open.Original topic rationale and earlier overlap evidence (historical snapshots)
Adds guarded wcscpy/wcscat tests through 128 source units and four destination-prefix lengths, checking full-unit terminators, exact output extent, return pointers, high/surrogate-range units and source/prefix preservation.
Implementation basis: Public string/memory contract: FreeBSD wide-character family manual, including wcscpy and wcscat. Despite the source filename wmemchr.3, its NAME and SYNOPSIS explicitly document these wide-character interfaces; it is a shared family page. wcscat declaration. The fixture calls the actual production function(s) through the existing public Api.hpp and constructs expected results separately from immutable input snapshots, membership tables or standard C++ range algorithms. No production function body or firmware object is copied into the fixture.
Known limits: The buffers use the canonical char16_t API and have sufficient nonoverlapping storage. Surrogate units are copied opaquely; no transcoding, invalid-input or console-layout policy is asserted.
Source/schema: core/libs/prx/libc/src/Strings.cpp core/libs/prx/libc/include/Api.hpp
Exact topic head
3954ef07cbe613c6694f212aee639823fa993b28is one independent commit on main51c31ea17e9f66cb36fe9655ec31c81610bfcfc9. The current-main repository overlap checker against51c31ea17e9f66cb36fe9655ec31c81610bfcfc9reported no confirmed overlap. It could not finish comparisons for these older PRs already conflicting with main: #5021, #6085, #7081, #7447, #7715, #8150, #8965, #11628, #11661, #11689, #11698, #11947, #12688, #12700, #12965. Their shared-file diffs were reviewed separately. 13 scoped file changes projected onto main and then combined with this topic without a new conflict; 2 peer file changes already conflict with main and are not claimed automatically mergeable. They do not provide this command or test matrix. Registration uses a separate target/name and there is no landing-order dependency. Changes to shared registration before landing need a refreshed merge/test check. The original functional-overlap assessment recorded no dependency at that earlier snapshot. The twenty current topic heads are also merged into tested integrationcedab5157a32822332671c90812c6780d05157e8.Tested
Exact submitted head
8ece7cd1d5d00b16480924bfdf18852a9c4a937c. Recorded main6a3afa4deb18ea58a90efb8040fff8c60e4f2aab; prerequisite #13220e9f09f54fabb6408d3e2711b8df10c10112ab00e. Both and the previous published topic head are ancestors. The fixture and topic assertions remain unchanged.Fresh native validation uses combined commit
fa9a26172d243ed3bb4258ad0e2ea2dfc27de518, containing all 31 exact submitted heads, on Windows 11 / MinGW GCC 15.2 / CMake 4.3.1 and non-root Ubuntu 26.04 / WSL / GCC 15.2 / CMake 4.2.3. This is explicit combined-commit validation, not 31 separate native product builds. Every individual fixture blob matches that combined tree; pairwise main/prerequisite merges are clean.guest_wide_copy_extentis included exactly once. No timeout was raised.The combined native target build is not the complete default product build. No local macOS/WASM, PS5/title/GPU or firmware validation is claimed. Old red CI belongs to older heads without the prerequisite; new-head hosted CI starts after publication and remains pending until it actually completes. The prerequisite's external branch is unchanged.
Exact composition of the fresh native validation
#13310
ab8eeea15ea0dcb8aabe95e656a041963f8e4e8a, #133131ec676984f08d1ee65496d0d1c487a9fecb8ec49, #133141c8549945e9657645da7ce5a98693d50e85b5685, #13317442aef391ffaec2c9cfe1d098c84dde5f19cd292, #13319dab492c88b6bd8093c351b1726db02ad91af39ab, #13320f27454e88a02dd9c9f0510d3afb0aa72378f7e87, #133788bb9ed3e152ea1611fe8216f25dd03c7830f2818, #133799b39858ef369da4f3eb01e4137e3f932a478ebd2, #133806083413b06d03a34e498629da942b8ec40ab7a9f, #13381cf303f4142403e370f807813b99fc5aa087ad72b, #1339115fbf68aa97b2617cd03ae94f033020028edeac6, #13394cb3188c2b1f36700f882311191f86b897c4f01cb, #133958165ef480879e5eed57eb8f631abc924aed02ec7, #1330391bd23b7dd8eb4089321bee7a4475f5fea8fcab4, #13304fe35f6771a55f9c235fa0641ed5558632c59f314, #133057d3995fdbf339d101386dafa4ee0277764a5aba8, #13306d3f06a729a3145cf1aa8b1dccafd555b0a2bee5a, #133079ddb498ae5ea911c04eacad584a59d0e6d66cc9e, #133083f77e0c49bf996aeb3e938be6e92f6e0cc139877, #13311431e940236ba0cb001a0a5cef248f9f033db4c17, #1331299dc47fb5679db7df08117ea7d0977fa1d875a8e, #133168ece7cd1d5d00b16480924bfdf18852a9c4a937c, #133182aef950d26736932bd3521fad1a6f9d1afecba3a, #1338263aa31a6aecf58067ffc8a85ec6fbf870c84215d, #13383b27ad4917985e1006a168f5c931a6b04e00cdf79, #13385bc0f43d9fa2ce2180840d86dc3c287989429a994, #13386de523e20f27b77ca4a85ad7ace1dd89fbc56f25a, #13387802e6e11cc801feb7baef3946745ba3700f82512, #13389fc97324e77f079e1225e3c5df1de9071a56b6397, #133923ea9223d4970cb702327cec3db96dbd9a07414f5, #13393631d48778c8f64b57749b5f97c0fa27bfc096c42Earlier author-reported validation (historical heads; not new results)
Topic head:
3954ef07cbe613c6694f212aee639823fa993b28. Combined integration:cedab5157a32822332671c90812c6780d05157e8, based on main51c31ea17e9f66cb36fe9655ec31c81610bfcfc9. Ubuntu/WSL GCC 15.2, CMake 4.2.3, Python 3.14.4; Windows MinGW GCC 15.2, CMake 4.3.1, Python 3.14.3.The registered test calls the actual libc through canonical headers, using OS-protected pages and real input/output buffers. A separate exact-head control compiled the whole relevant production source unit with this fixture: unchanged production code passed, and the fixture rejected an intentional production-function defect. This is a source-unit control, separately from the product build below.
Registered CTest
guest_wide_copy_extentpassed on Linux and Windows as part of the filtered twenty-topic run:ctest --test-dir <build> -R <20-topic-pattern> -j 8 -V --output-on-failure, 20/20 passed on each platform, zero skips.cmake --build <linux-full-build> --parallel 8: complete default Linux product build passed. Windows used the full configuration and built the sixteen affected libc test targets plus relinker with--parallel 8; a complete default Windows build is not claimed. Conventions, whitespace, script registration and the public-header declaration/umbrella audit passed. No PS5, title or GPU validation run is claimed. macOS, WASM execution and hosted full-build CI are not reported as passed.Checklist
main; no other open PR implements the same functionsNotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file.mdfiles or images added to the repository (attach them to this PR)