Skip to content

feat(libc): implement strmode - #11664

Open
B-Howell wants to merge 9 commits into
boykopovar:mainfrom
B-Howell:codex/libc-strmode
Open

B-Howell wants to merge 9 commits into
boykopovar:mainfrom
B-Howell:codex/libc-strmode

Conversation

@B-Howell

@B-Howell B-Howell commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

What

  • Implement the BSD strmode export in core/libs/prx/libc/src/StringExtensions.cpp, decoding the mode into the twelve-byte ls -l permissions string as FreeBSD 11.4 lib/libc/string/strmode.c does: file-type character from the top four bits, three rwx triples, s/S and t/T for the setuid/setgid/sticky combinations with the matching execute bit, a space in the ACL slot and a trailing NUL. Declaration added to core/libs/prx/libc/include/Api.hpp beside the other string exports.

  • Signature takes int to match the FreeBSD 11.4 <string.h> prototype void strmode(/* mode_t */ int, char *) and the project's sibling guest chmod and fchmod exports; the console mode_t width and register-width expectations are unverified and the doc entry records that uncertainty.

  • Extend core/libs/tests/GuestStrings.cpp to cover a directory, a regular file, a symlink, every s/S/t/T setuid/setgid/sticky combination against the matching execute bit, each non-regular file-type character (c, b, p, s, w) and the ? fallback.

  • Document the export in docs/dev/debt/libc.md with the registry NID Uo-nB2s+1+A; console behavior is unverified.

Tested

Main refresh at 22159353aa90

Head 22159353aa90627dedc7e3fb501250e5940c9b48, tree 235fc990fc5a31f682b1df7d23a9319c5ae28391, ordinarily merges e3c44ac2c60f26c7cbb0c42b447c4d4d61d0fd32 with main c0fb4a6aad1012b7e2abecaf2949e3d26c0e525d, observed at 2026-10-30 20:15:30 UTC; published 6fc8bc373f486b49053870e519b0eba643784f37 remains an ancestor. This is the documented main baseline for this refresh; later remote-main advances are not certified. The four owned contribution files and their additions remain unchanged. Earlier evidence below keeps its original pins.

Fresh Windows/WinLibs GCC 15.2.0 r7 (CMake 4.4.4/Ninja 1.13.2) and WSL Ubuntu 22.04/GCC 11.4 (CMake 3.22.1/Ninja 1.10.1), Release: both configurations and cmake --build <fresh-cache> --target guest_string_tests guest_formatting_tests nid_patcher --parallel 2 pass. ctest --test-dir <fresh-cache> -R '^(guest_strings|guest_formatting|public_headers)$' -V -j1 --repeat until-fail:3 --timeout 30 --no-tests=error passes 18 selected executions at this exact head across both OS = 12 native guest runs + 6 audit-only header runs, with no failures/skips. Builds/OS arms were serial, at most two build jobs. Same-arm production-library binding and Release-active checks were verified, including the existing formatting regression and actual changed-kernel dependency.

The #11664-before-#10270 order is author-confirmed. Reviewer acceptance, later combined validation and actual upstream landing remain separate. The historical hosted web_release timeout and Darwin masked-store failure remain unresolved at their original heads; they are not results for 22159353aa90.

The audit-only case retains its generated 90-second timeout; the 64 header compile batches are excluded. At the 2026-10-30 exact-head readiness audit, 11 latest named checks completed successfully, Linux was skipped, and six macOS checks were queued; no current failed check was reported. Skipped or queued checks are not passes. No new console, GPU, title, macOS, whole-product or full-suite result is claimed.

Current-main integration 6fc8bc373f486b49053870e519b0eba643784f37, tree 4da828c67c90715473314f535e208dc69583af0e, ordinarily merges frozen main 3679074dd61aa6a899a00c19ce2e450b1cacfb60 into published 30abbd1be32adfe2ffe9f3f2de06dc053bad27a4. Owned strmode implementation, declaration and fixture additions are unchanged. Existing clean worktree-specific submodules were aligned to this main's committed pins before the build.

Windows 11, WinLibs GCC 15.2.0 r7, Release: cmake --build build --target guest_string_tests --parallel 2 passes; ctest --test-dir build -R '^(guest_strings|public_headers)$' --repeat until-fail:3 -V passes 2/2 cases, each three repetitions (six passes, no skips), in 65.68 seconds. Conventions against this main pass. No new Linux, macOS/Rosetta, console, full-suite, title or GPU execution is claimed. Historical evidence below retains its exact source/toolchain limits.

#11664-before-#10270 remains author-confirmed; any later combined-head validation is a separate integration step. The #12560 debt-only composition establishes no functional or author-order prerequisite. Current skipped-row source reconciliation is recorded in comment6475614264; it does not clear the compared #10270 scope or the entire overlap warning. Historical hosted outcomes remain at their original heads, and the older Darwin failure has no established current-head cause.

Earlier integrated-head evidence:

Current-main integration at 30abbd1be32adfe2ffe9f3f2de06dc053bad27a4, merging frozen main 319621ba2e578bd053b0baba2877fe70520e0737 by ordinary merge:

  • Windows 11, WinLibs GCC 15.2.0 r7, Release: cmake --build build --target guest_string_tests --parallel 2 passed; ctest --test-dir build -R '^guest_strings$' --repeat until-fail:3 -V passed all three executions (test 517: 0.05, 0.01, 0.01 sec).
  • The four-file contribution is unchanged in behavior; all fetched main content and existing GuestStrings checks are preserved. Independent staged-source review and postcommit python tools/check_conventions.py --base origin/main passed.
  • This integrated head has no new Linux, macOS, Rosetta or console execution claim. The old cancelled hosted conventions run and denied admin-only rerun remain historical; this legitimate main integration does not claim those runs passed. Author-order commitments and future combined validation remain tracked.

Earlier current-main integration at ca2cbc3baa, merging frozen main 750cf6cf48 into the published branch without rewriting its history:

  • Windows 11, WinLibs GCC 15.2.0, Release: a fresh guest_string_tests build and ctest -R '^guest_strings$' --repeat until-fail:3 -V pass all three executions.

  • The implementation is unchanged from 1185982eff; the only manual merge resolution preserves both the strmode debt entry and main's adjacent strtoq entry.

  • Conventions and independent static integration review pass. The merge retains the declaration, implementation and all existing/new GuestStrings cases.

  • No new macOS/Rosetta execution is claimed. The historical masked-store failure and relinker: masked_store_lowering flakes under Rosetta with "Masked store stub changed the flags" #12284 investigation remain separate evidence; this local Windows run does not diagnose its cause.

Earlier-head evidence follows:

Historical hosted macOS relinker run: 309/310 passed; masked_store_lowering failed with 'Masked store stub changed the flags'. Cause is not yet established. This PR does not change relinker code. Native Linux comparison: Ubuntu 22.04/WSL, GCC 11.4, Release passed all 1728 masked-store executions, including flags checks, with the test/emitter/matcher sources identical to this PR head. This does not reproduce or clear the Rosetta failure; the historical Rosetta failure remains unexplained.

Write-watch CI prerequisite

This update merges the original #13220 commit (e9f09f5) as a second parent. It removes only the duplicate execute-fault and read-fault registrations from the shared write-watch CMake file; the function change remains the first-parent history. Historical function-test results retain their original source/binary pins as recorded above; they are not results on this merged head. A separate configure-only Windows/Linux comparison generated all 18 unique test registrations after the fix, with no fixture build or runtime tests. The hosted macOS checks on this updated head are pending; no macOS runtime result is claimed here.

Checklist

  • Based on current main; no other open PR implements the same functions

  • One topic per PR; follow-ups go in a new PR

  • No comments in code except technical debt

  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file

  • No notes, investigation .md files or images added to the repository (attach them to this PR)

  • New third-party code is a submodule built from source

  • Generic behaviour, not specific to one title

  • Depends on: test(libc): register the macOS write watch fault tests once #13220

  • Fixes: none

  • Unblocks: none

  • GPUs tested: n/a

  • AI-assisted: yes

Add the BSD `strmode` export for the libc PRX, decoding a guest
`mode_t` into the twelve-byte `ls -l` permissions string as FreeBSD
11.4 `lib/libc/string/strmode.c` does: a file-type character from the
top four bits, three `rwx` triples, `s`/`S` and `t`/`T` for the
setuid/setgid/sticky combinations with the matching execute bit, a
space in the ACL slot and a trailing NUL.  Extend the guest strings
test to cover a directory, a regular file, a symlink, every special
`s`/`S`/`t`/`T` combination and each non-regular file-type character.
Document the export in `docs/dev/debt/libc.md` with the registry NID
`Uo-nB2s+1+A`; console behavior is unverified.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Progress report (474030e → 000ed8d)

📈 System libraries: 26.18% (+0.0022%, +1 implemented functions)

✅ 1 implemented
Library Name
libc strmode_nid_postfix

Changed libraries (implemented exports)

Library Before After Change
libc 1480/1496 (98.93%) 1481/1497 (98.93%) +0.0007%

@MarcZX10

Copy link
Copy Markdown
Contributor

The implementation matches the cited FreeBSD 11.4 strmode cases I checked, including file-type bits and the s/S/t/T combinations. One CI blocker remains: the conventions job fails on the added docs/dev/debt/libc.md entry because it is 1,088 characters; the debt-length limit is 1,000. Please shorten the entry before marking the PR ready.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 10270 core/libs/tests/GuestStrings.cpp L583

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.

Pull request Shared files not compared
PR 5021 docs/dev/debt/libc.md
PR 5303 docs/dev/debt/libc.md
PR 7081 docs/dev/debt/libc.md
PR 7386 docs/dev/debt/libc.md
PR 7447 docs/dev/debt/libc.md
PR 7715 docs/dev/debt/libc.md
PR 8150 docs/dev/debt/libc.md
PR 8965 core/libs/tests/GuestStrings.cpp
docs/dev/debt/libc.md
PR 9340 docs/dev/debt/libc.md
PR 9371 docs/dev/debt/libc.md
PR 9447 docs/dev/debt/libc.md
PR 9526 docs/dev/debt/libc.md
PR 9863 docs/dev/debt/libc.md
PR 9929 docs/dev/debt/libc.md
PR 10324 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 10405 docs/dev/debt/libc.md
PR 10729 docs/dev/debt/libc.md
PR 11332 docs/dev/debt/libc.md
PR 12682 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 12688 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 12700 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 12965 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 13793 docs/dev/debt/libc.md
PR 13809 docs/dev/debt/libc.md
PR 14212 docs/dev/debt/libc.md

@B-Howell

Copy link
Copy Markdown
Contributor Author

Fixed the debt-entry length in 1185982: the entry is now 942 characters, below the 1,000-character limit. The implementation is unchanged; the focused guest_strings test and conventions check passed locally.

@B-Howell

Copy link
Copy Markdown
Contributor Author

The macOS failure on this PR is in the `relinker (macos-latest, clang++, x86_64)` job: only `masked_store_lowering` failed (`Masked store stub changed the flags`, 309/310 passed) on exact head 1185982 (run 40438653738).

How it compares:

  • This PR changes only `libc/include/Api.hpp`, `libc/src/StringExtensions.cpp`, `tests/GuestStrings.cpp` and `docs/dev/debt/libc.md`. `masked_store_lowering_tests` builds from `MaskedStoreLowering.cpp` and its own test file, so none of this PR's code is in that binary.
  • In the same run, the relinker jobs for macOS arm64, Ubuntu, Windows and ASan all passed.
  • The merge base is 59872bb. It already includes 3cae921 (the masked-store probe fix). No later main commit touches `MaskedStoreLowering*`.
  • The same job passed on later main runs (for example 40451346825 at ddd72f4 and 40452091805 at 0a570f6). It also passed on unrelated PR runs from the same period.

I couldn't rerun the job because that needs admin rights. Could a maintainer rerun the failed job? I haven't changed the flags expectation. I don't have macOS hardware, so I couldn't reproduce the failure locally, and the evidence above doesn't prove the cause.

AI disclosure: this analysis was written by Claude (an AI assistant) for B-Howell, using CI logs and git history.

@B-Howell

B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

The failed relinker (macos-latest, clang++, x86_64) job on 1185982eff (masked_store_lowering: "Masked store stub changed the flags") has not been causally diagnosed. This PR does not touch the relinker sources, but that observation alone does not prove the runner failure's cause.

The earlier diagnostic report records the same failure on an unrelated PR on 2026-10-25 (run 40216485859). The test's execution part runs only on that Rosetta job, and it passed 2,000 native runs on Linux (3.46M stub executions). Evidence is in #12284. #12286 makes the next failure report which flags changed.

A rerun would provide fresh evidence; it is not guaranteed to clear the failure. The current head and its checks must be assessed separately from this historical result.

AI-assisted: Claude Code; causal-claim clarification by Codex.

@B-Howell

Copy link
Copy Markdown
Contributor Author

Refreshed this existing branch onto main 750cf6c in ca2cbc3, preserving the published history. The only manual merge resolution keeps both the strmode debt entry and main's neighboring strtoq entry; the strmode implementation itself is unchanged from 1185982.

A fresh Windows 11 / WinLibs GCC 15.2.0 Release build of guest_string_tests succeeds, and guest_strings passes all three executions with --repeat until-fail:3. Conventions and an independent static integration review pass. The description now distinguishes this new evidence from the earlier-head results.

This does not claim new macOS/Rosetta execution or diagnose the historical masked_store_lowering failure. Keeping this PR a draft pending its refreshed CI/review.

AI-assisted: Codex.

@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 28, 2026
@B-Howell

B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

Manual follow-up to the skipped comparisons in the overlap report (comment6432290956). Reviewed target head: ca2cbc3baa21facb720d204e1ebc19337c38a847.

I inspected the listed shared-file patches for all 26 candidates. No duplicate target export/implementation was found in this scoped review. The table records the specific shared-file changes and integration requirements; shared debt/header changes still need to preserve both sides. This is not a claim that every pair merges cleanly or that a combined branch has been built/tested.

This follow-up addresses the skipped-comparison request only. Existing CI limitations, dependency ordering and outstanding re-review requirements remain in force; approvals or tests from older heads do not become current-head evidence through this audit.

Update: the refreshed bot report added #10002 and #12397. Their listed debt patches are now included below at the recorded heads; the earlier24candidate assessment remains unchanged. This delta review does not close the separate landing-order coordination.

Candidate heads, shared files and manual dispositions
Candidate Reviewed head Shared files Disposition
#5021 151294f979ab00aaff2f702314425caf61a72790 libc.md Adds a separate ARM64 CRT-profile debt entry: x87 strtold/wcstold exports remain excluded on ARM64, and extended-format arguments reject before host decoding. Preserve both entries and architecture qualifications; no implementation compatibility conclusion follows from this debt-only scope.
#6713 668d51adbdb91248f49fdd28acbfd0b85adb98cd libc.md Debt-only statements in libc.md concern Application heap without process parameters. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#7081 e6f5d4c71b6ff42a43ee1c90b9b3fc912efdad7b libc.md Debt-only statements in libc.md concern localeconv; set_constraint_handler_s. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#7386 bf7352321cf85d1bfdfe402f3fba7b2d90c683eb libc.md Debt-only statements in libc.md concern The scanf family. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#7447 dead12ebad24a3c4b01a05c14ab60cc06aacaf7d libc.md Debt-only statements in libc.md concern app0.zar. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#7648 bdf0d319632cb330c4ca909fe9d76577d6e58ae9 libc.md Debt-only statements in libc.md concern std::_Throw_C_error. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#7715 783fa9b83f5f0ac617d4b0f05321a34c1279cb7f libc.md Debt-only statements in libc.md concern getenv, setenv, unsetenv, putenv. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#8150 6a9b1285c596904698bb0511c14f7c04302b708b libc.md Debt-only statements in libc.md concern fopen of /dev/random and /dev/urandom. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#8937 27aeb1feb4a533bb0d8ca20b9450ea4c0cc45efc Api.hpp, libc.md Api.hpp changes fesetenv_nid_postfix. Debt-only statements in libc.md concern fesetenv. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve strmode plus distinct API declarations/includes; run integrated guest string tests.
#9371 9ea4c6561be22466166fb26fa61cd2eb0d23f2cf libc.md Debt-only statements in libc.md concern Windows link before ... These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#9447 2dc7b701a4d72515be281c8e469fb14c5a588d63 libc.md Debt-only statements in libc.md concern std::__sce_v2::_Thrd_hardware_concurrency, _Cnd_timedwait, chrono::steady_clock::now_v1_compat. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#9526 1da5b7cd5c8904a515d275f1677f7fbaedf8fe34 libc.md Debt-only statements in libc.md concern std::__sce_v2::setw; std::__sce_v2::_Fiopen; std::__sce_v2::_Xregex_error. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#9929 57c6df1f5620c34835e450490fbc574c854e74d1 libc.md Debt-only statements in libc.md concern syslog. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#10253 5b96a875888056c5bd758270593be17d1a3f5542 libc.md Debt-only statements in libc.md concern asin and acos. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#10324 5e32fdc2a5ccd4050a6a2e7f46f94e31966f8cca Api.hpp, libc.md Api.hpp changes fwide_nid_postfix. Debt-only statements in libc.md concern fwide. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve strmode plus distinct API declarations/includes; run integrated guest string tests.
#10433 1e32d23a9c221fffeca70ba8a7f709b0057dbd77 libc.md Debt-only statements in libc.md concern fopen and freopen. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#10620 2a999da21f5650bfb9aacf88c0d0194d3c5d66ad libc.md Debt-only statements in libc.md concern fopen and freopen of /dev/random and /dev/urandom. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11332 793a55ba18497e36f1038242dae9d7e707641f35 libc.md Debt-only statements in libc.md concern snprintf and vsnprintf. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11625 e97bbf045122e4326b0f5332a9844df37bd1d5dc libc.md Debt-only statements in libc.md concern app0.zar. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11849 cd97f141d91cbd1e47f670a3d4eec4c1cfeed609 libc.md Debt-only statements in libc.md concern asinl. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11850 663230eaafcdc8da7e52b6067e287261c335bb9b libc.md Debt-only statements in libc.md concern reallocalign. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11870 3670a1509408a983806f09933d5be619263bb44b libc.md Debt-only statements in libc.md concern malloc_stats_fast. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve both debt changes; no implementation integration inferred from debt-only scope.
#11872 21d5a977f993346c5f762d31eebfb15ce349f76f Api.hpp, libc.md Api.hpp changes #include "prx/libc/include/JumpBuffer.hpp". Debt-only statements in libc.md concern setjmp, longjmp. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve strmode plus distinct API declarations/includes; run integrated guest string tests.
#11969 560f498196e7db59ef8b4f41463105dadb96e15a Api.hpp, libc.md Api.hpp changes #include "prx/libc/include/JumpBuffer.hpp". Debt-only statements in libc.md concern setjmp, longjmp. These are documentation claims, not independently reviewed candidate implementations. No scoped strmode declaration, body or debt duplicate identified. Preserve strmode plus distinct API declarations/includes; run integrated guest string tests.
#10002 9bbf84ead3b761fba399c40788bb783b98934e64 libc.md Adds asinhf msun range-reduction debt with system-library/FMA qualifications; this is distinct from the target strmode debt entry. Only the listed debt patch was reviewed; implementation compatibility was not assessed. Preserve both entries and their measurement/platform limitations.
#12397 f2548977ea559a13c157c8ad0e5109983745dccd libc.md Updates narrow printf/unknown-conversion debt and adds a printf-length-modifier qualification. These changed paragraphs are distinct from the target strmode debt entry. Only the listed debt patch was reviewed; implementation compatibility was not assessed. Preserve both entries and their measurement/platform limitations.

AI-assisted: yes (Codex).

Current-target delta addendum (October 28): target 30abbd1be32adfe2ffe9f3f2de06dc053bad27a4, integrated main 319621ba2e578bd053b0baba2877fe70520e0737. The historical26-row table above retains its original pins. The target contribution's added/removed lines in Api.hpp, StringExtensions.cpp, GuestStrings.cpp and libc.md are unchanged after this main integration.

The refreshed skipped list adds two debt-only scopes:

  • fix(libc): compute _LLog with the bundled libc.prx's Dinkumware code #11270 at 2eb8d8d12ff470331b8fed5da1126215ec935214: replaces the _LLog paragraph with bundled-library/Dinkumware results, caller x87 precision, error/exception behavior and other-SDK limitations. Preserve that paragraph alongside the separate strmode contract. Only this debt patch was reviewed; its reported binary comparison and implementation were not independently verified here.
  • fix(libc): set ERANGE for decimal subnormals in wcstod as strtod does #11892 at 6219aaaff1520be4d484d6b618c3c3977024be58: updates the decimal-subnormal paragraph so wcstod follows strtod's ERANGE rule, based on eleven title libraries. Its candidate paragraph is stale relative to landed fix(libc): match title libc.prx for hexadecimal strtod underflow #12291: the final sentence still says the hexadecimal rule is unverified. When integrating, compose the eleven-title decimal wcstod qualification with main's PPSA08329-only hexadecimal measurements on a Linux host and glibc 2.35 rounding limitation, keeping console wcstod explicitly unmeasured. Preserve both measurement sets and the independent strmode paragraph. The existing #11892 follow-up requests focused math/wide-string tests, including inherited hexadecimal-underflow cases, on the future combined head; those tests remain pending, and this review adds no implementation or combined-test qualification.

Retained #7648 moved from bdf0d319632cb330c4ca909fe9d76577d6e58ae9 to 2b34b0217219d34a2aca78d07135039dc24468d9. Its scoped debt addition retains the _Throw_C_error mapping and unsupported-SDK limit, changing the provenance wording from a named title to a bundled PS5 library. It does not duplicate strmode; preserve both entries without treating this review as independent binary verification. #11850/#11870 are absent from the current bot list; their historical rows above are retained as history.

The existing compared #10270 scope remains at ee3d2ffb81d5b5e7a87e167bcc8f37c4f2d0540a, covered by comment6475614264. Its author confirmed #11664 first, then #10270 in comment6475839338, retaining modeBuffer checks alongside CheckConstraintHandlerCalls() and rerunning after integration. That future combined validation is still pending. The current-head local guest_strings three passing executions remain their own evidence; this source-only addendum adds no tests or new approval and clears no CI/landing obligation.

AI-assisted: yes (Codex).

@B-Howell

B-Howell commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor Author

Follow-up to the actual compared conflicts in overlap comment6432290956, for this PR at ca2cbc3baa21facb720d204e1ebc19337c38a847.

I inspected the listed shared-file patches for 1 compared candidate at the heads below. This is separate from the earlier skipped-comparison review.

  • fix(libc): bound and report the Annex K copies as measured on a PS5 #10270 (ee3d2ffb81d5b5e7a87e167bcc8f37c4f2d0540a): Both add tests after CheckSecureStringSizeLimits() and before main returns CheckMemcpyOverlap(). Candidate adds CheckConstraintHandlerCalls(), helper/counters, RSIZE_MAX boundary coverage and revised secure-copy/concatenation assertions; target adds the independent strmode modeBuffer checks. Candidate helper restores the prior constraint handler. No duplicate strmode test or export appears in the compared GuestStrings.cpp patch. Keep the new helper/call and every candidate assertion together with all target modeBuffer assertions. Rebuild/rerun integrated guest_strings; this test-only patch establishes no runtime dependency or successful combined result.

These scoped findings do not establish clean pairwise merges or a successful combined build/test. They do not clear other review, CI, dependency or current-head verification obligations.

@orezraey For the reported #10270 test insertion, I propose #11664 first, then #10270 retain the strmode assertions alongside CheckConstraintHandlerCalls. Please confirm or propose another order. This is not an existing agreement, and neither branch has been combined/tested by this audit.

AI-assisted: yes (Codex).

New compared-scope delta (October 28): #11664 target 30abbd1be32adfe2ffe9f3f2de06dc053bad27a4 and #12560 at 476f65332d09398311207a8fdf0a57d2a63962bf, both based on 319621ba2e578bd053b0baba2877fe70520e0737. The earlier #10270 review above keeps its recorded pin.

I reviewed #12560’s complete listed docs/dev/debt/libc.md patch. It replaces the already-landed strtoq paragraph with Windows HostOpenName/fopen/opendir/rename path-normalization debt. #11664 inserts the separate strmode paragraph immediately before that strtoq entry. The shared-file-only merge preview conflicts at this block. Reconciliation must preserve all three distinct entries: strmode, the existing strtoq contract and limitations, and the candidate’s Windows path paragraph. Do not silently drop the landed strtoq documentation while accepting the new paragraph.

The Windows text describes DOS device names, trailing dots/spaces, verbatim paths, remaining host filesystem restrictions and relative-path normalization. This review covers that debt text only; it does not independently validate the candidate implementation, filesystem behavior or measurements. Preserve strmode’s unverified console/register-width qualification and strtoq’s unverified console-export qualification. No duplicate strmode contract appears in this shared patch.

Adjacent documentation does not establish a semantic dependency or an agreed order with #12560. The separately confirmed #11664 → #10270 order from the author’s reply remains unchanged, with later integrated guest_strings validation still pending. This addendum adds no combined branch build/test, current approval, console, title or GPU result and does not clear remaining readiness/CI obligations.

AI-assisted: yes (Codex).

October 29 current-head #12560 follow-up

Current strmode integration 6fc8bc373f486b49053870e519b0eba643784f37 normally merges main 3679074dd61aa6a899a00c19ce2e450b1cacfb60 into published 30abbd1be32adfe2ffe9f3f2de06dc053bad27a4. Its owned strmode implementation, declaration and fixture additions are unchanged.

I re-read the complete listed docs/dev/debt/libc.md patch of #12560 at 42d1ec15867f5faa2c9fad45ca0850f5122cf06c (base bb04a4f1ea0175e9e4f149f0359a764d62ff3296). Unlike the historical 476f653... patch above, this current patch keeps the landed strtoq paragraph and adds its Windows HostOpenName/fopen/opendir/rename paragraph immediately after it. The previous dropped-strtoq finding therefore does not describe this head. Its other debt edit removes the old trailing-dot/space and DOS-device observations from the lower Windows-file-name paragraph while retaining the reserved-character, colon, measurement and mapping limitations.

Future composition must retain all three distinct entries: this PR's strmode console/register-width qualification, main's strtoq alias/unverified-console qualification, and the candidate's Windows device-name/trailing-dot/space/verbatim-prefix/relative-path qualifications. Preserve the lower-paragraph revision too. This is a complete review of the bot-listed debt patch, not a verdict on #12560's implementation or an independent repetition of its filesystem observations. No runtime dependency, new author-order agreement, clean whole-PR combination or combined test follows from this documentation scope.

The existing confirmed #11664 -> #10270 order remains visible in #10270's current checklist at 0bc7597aed156d555c51ab0afcc58501854f69e0; that head has moved since the old compared row, so its current patch and future combined guest_strings tests still need reconciliation. Other changed/unknown rows in the live bot scope remain pending. Historical rows, test pins, hosted cancellations/admin-only rerun denial and the unexplained older macOS masked-store failure keep their limitations. This PR stays draft; no new Darwin diagnosis, current reviewer acceptance or all-comments-complete claim is made.

AI-assisted: yes (Codex).

October 30 - additional scoped overlap follow-through

Frozen target #11664: 6fc8bc373f486b49053870e519b0eba643784f37. The historical 2026-10-30T01:32:59Z inventory of bot comment6432290956 contained 38 candidate rows and identified 18 new rows relative to the named earlier snapshot. The latest captured update (2026-10-30T03:36:10Z) contains 36 rows: 1 compared and 35 skipped. It removed #11625 and #12688, added no candidates, and changed no retained shared-path rows. The #12688 findings below remain pinned historical source evidence.

The source heads that moved during preparation have been refreshed at the exact pins below, including additional actual shared paths discovered in complete file indices. Shared code/declarations and debt text are assessed separately. Retained references remain identified as retained.

Shared code and declarations

Refreshed non-debt shared-header/test scopes for strmode

Target #11664 remains 6fc8bc373f486b49053870e519b0eba643784f37. The earlier all-header-only description is historical: refreshed #9688/#12598 now also list GuestStrings.cpp. Their500-file primary indexes were fully captured, but review is restricted to these actual owned-path intersections. Libc.md remains a separate follow-up; no whole captured38-row clearance.

No selected patch changes StringExtensions.cpp or the twelve-byte strmode implementation. This fresh source check preserves the int/buffer contract, existing fixture checks and earlier null/console/register-width limits. It does not assert clean header compilation, foreign locale/allocator correctness, runtime, author-order/dependency agreement or whole-table readiness. Tests and approvals keep their original heads.

Shared debt documentation

Refreshed pinned shared libc debt scopes for #11664

Target 6fc8bc373f486b49053870e519b0eba643784f37. These 17 shared-document candidate rows keep the captured membership labels: 17 new. Only the eleven moved heads listed in the publication guard were refreshed; six pinned source records are unchanged. This is not a whole-table/whole-PR clearance, and non-debt paths are covered separately.

Preserve the target's debt contract verbatim:

  • strmode (libc, NID Uo-nB2s+1+A) follows FreeBSD 11.4 strmode.c: decode the mode into the twelve-byte ls -l string, with the file-type character from the top four bits, rwx per owner/group/other triple, s/S/t/T for setuid/setgid/sticky combined with the matching execute bit, a trailing space in the ACL slot and a final NUL. The signature takes int to match the FreeBSD 11.4 string.h prototype void strmode(/* mode_t */ int, char *) and sibling guest chmod/fchmod exports; FreeBSD's __mode_t is __uint16_t, which SysV AMD64 widens to 32 bits in the register. A null buffer is undefined on FreeBSD and is not special-cased. Console behavior and exact PS5 register-width expectations are unverified.

Additional current shared-debt content (the affected candidate numbers are explicit):

The other functions' firmware/module samples do not settle strmode's unverified PS5 register width or console behavior; retain its own exact qualification.

Candidate / pinned head Membership; current complete debt +/- (hunks) Shared-note preservation
#9340 3f2fa3b280504410e7ff6ed94dfd435992f1d92c NEW; +1/-1 (1) Replaces the generic scanf-family note with Linux UTF-8 decoding into one/two UTF-16 units, surrogate pairs, character widths versus _s unit sizes and unsized-%lc non-BMP refusal; retain Windows host delegation and unverified console-locale caveat. Keep the target note above.
#9688 ae15d0493797e9d40b2ab2eedbf202abf14c90e3 NEW; +16/-9 (8) Rewrites qsort/qsort_s provenance to title-bundled disassembly plus side-by-side host comparisons, introsort and zero-size/constraint qualifications; keep host/library evidence distinct from console measurements. Also preserve set A. Keep the target note above.
#10226 20e94cc49e05144f86b1f1b2a1776c5657720eb8 NEW; +35/-17 (12) Updates the atanhf/log1pf helper/fallback description and adds log1pf, expf, erff/erfcf notes; preserve host invalid/nonfinite fallbacks, errno rules, untested FP exceptions, FMA-copy differences and unverified system-library assumptions. Also preserve set A/B. Keep the target note above.
#10229 8bb1886d3ab535c1ac45c0c4409593f55fd8718c NEW; +34/-16 (12) Adds tanhf, expm1f and atan/atan2 notes with Windows-host/FreeBSD evidence and FP/FMA limits. Wording conflict: its tanhf bullet says exported expm1f is still host, while its new expm1f bullet describes the shared msun port; reconcile the text without deciding production behavior here. Also preserve set A/B. Keep the target note above.
#10247 476bb9f96cb5f66b7bfba9de65143f5d2568d24c NEW; +32/-16 (12) Adds fdlibm log10/k_log provenance, signed-domain errno and signed-zero distinctions, sampling/FP-exception limits and title-FMA differences. Keep those qualifiers; if composed with10317, retain one reconciled log10 note rather than duplicate it. Also preserve set A/B. Keep the target note above.
#10317 edceab45c77be9c8d66bef00a6ff15caa2844838 NEW; +33/-16 (12) Adds log10 and log2/k_log notes with host sampling, NaN/errno/zero semantics, FP-exception limits and FMA differences; preserve its additional log2 note when reconciling the overlapping log10 addition. Also preserve set A/B. Keep the target note above.
#11724 6447ec7dd2c8f92cb4a6c4391cd3477f27a088e0 NEW; +2/-2 (2) Updates the two scanf-family/secure-stream notes for Linux wide stream scanning and first-unconsumed-character position. Retain width/unit/platform qualifications and the explicit absence of PS5 stream-form measurements. Keep the target note above.
#12292 d0d0787413df112c1dc1e30d2a9ba95cccd38cd0 NEW; +1/-0 (1) Adds the wide-stream null-pointer EINVAL/-1/null defensive gap versus faults reported from PPSA07923 bundled libc. Preserve the actual title-module provenance; do not convert the note wording into a new hardware-console verification claim. Keep the target note above.
#12468 abe5a9d8036e7174a7c7664cde8e4c2f5a5ac3c4 NEW; +2/-2 (2) Current-primary bytewise wide-field/scanf_s notes keep byte widths/scansets and EILSEQ/failure behavior, three bundled-library references, failed-field stream position unmeasured and stream forms not measured on PS5; the edited lines match the prior pinned patch at the new head. Keep the target note above.
#12514 cb8b5a67e7613d42e6b2b666974960bb587e938d NEW; +1/-1 (1) Replaces floating-scan errno note with Windows/Linux narrow differences, wide long-double decimal-only ERANGE conditions, quiet NaNs and ten-byte %Lf writes leaving the other six bytes untouched; retain the two bundled-library references. Keep the target note above.
#12597 1768c1821b2921745f051fb97b999bb63b97f38f NEW; +2/-2 (2) Updates fopen_s/freopen_s null-argument constraint-handler texts, EINVAL/result handling and ENOTSUP mode-only reopen qualification; retain title-bundled provenance and unverified console return/open-path clauses. Keep the target note above.
#12598 9125fed5190f6e1e14ec0ec96da721a6e4d256b6 NEW; +16/-9 (8) Updates qsort and qsort_s notes, including safe host zero-size no-op versus one PPSA07923 Linux-native SIGFPE at0x6a3cd, module SHA51ae8427c4a3 and unmeasured return/callback/canary/other-SDK effects. Do not relabel this a console run. Also preserve set A. Keep the target note above.
#12605 45a7c8a8a22fb822e8830d3df77a864cfb356cd5 NEW; +8/-8 (1) Keep eight vector min/max helper notes with their existing NIDs, invalid_argument-versus-recorded firmware13.00 invalid-range fault distinction and separate nonempty bundled-libc/host provenance. Keep the target note above.
#12659 58fddd82c67ac084cb2d8ca6a3aff862910e7daf NEW; +1/-0 (1) Keep the added scaled-floating-NaN note: non-C locales, other SDKs and console execution unverified; PPSA03766/PPSA07923 references were run in Linux host processes. Keep the target note above.
#12688 5dce7fea277f92c9e74db908ba1a0a5e0ebbe5c6 NEW; +1/-1 (1) Append only the setjmp/longjmp context-identity-at92 I/O-lifetime implementation metadata to the existing signal-mask72/flag88 note; preserve console-unverified qualification. The same scoped paragraph edit is shared with12700/12965; the #12965 raw patch differs only in its hunk offset (27 to 28), with identical context and added/deleted text. Whole-file blobs can differ with inherited context. Keep the target note above.
#12700 daa3a810cbb43e399e3912df6bf3edb4221ef98c NEW; +1/-1 (1) Same setjmp/longjmp paragraph edit as12688/12965 (the #12965 raw patch has an offset-only hunk change) at this separately pinned head; preserve context identity92 as console-unverified implementation metadata, without inferring cancellation/runtime composition. Keep the target note above.
#12965 e01288c9204944ae5befa08a514fb7d93443ac03 NEW; +1/-1 (1) Same setjmp/longjmp paragraph edit as12688/12700; the raw hunk start moved from 27 to 28 while all context and added/deleted text remained identical at this separately pinned head; preserve context identity92 and the unverified-console limitation, not a new search/mode contract. Keep the target note above.

The expm1f wording conflict was rechecked at #10229 8bb1886d3ab535c1ac45c0c4409593f55fd8718c and remains: its tanhf note says exported expm1f is host while its expm1f note describes the shared msun port. Reconcile documentation without selecting production behavior here. The alternative scanf/qsort paragraphs, overlapping log10 additions and related setjmp notes require coherent wording if later composed; no merge order or implementation dependency is inferred.

All source identities use raw Git bytes with explicit UTF-8 decoding. Eleven heads and bases stayed stable across their bounded reads; four omitted primary patches were reconstructed from exact merge-base/head raw blobs and match complete pull-file counts. Existing runtime/console/reviewer evidence retains its original pins. No combined build, runtime, same-export, console/firmware validation, author consent, dependency or readiness conclusion follows from this shared-document review. No tests/code/cache/refs/public/central state were changed.

These are pinned shared-source preservation findings only. Existing runtime evidence keeps its tested commits and platforms. No combined build/runtime, console measurement, whole-table clearance, author consent or new implementation dependency follows from sharing these files; unshared foreign implementations are outside this note. Other retained-head and review/CI obligations remain separate.

AI-assisted: yes (Codex).


Source-preservation follow-through for #11664 at 6fc8bc373f486b49053870e519b0eba643784f37 (owned source SHA256 fe7b83cee984959968b7230659c112bb70d92e6cdc898b5c69ae34789fadf0b2). This is an append draft for independent review, not a posted or combined-tested result.

  • fix(libc): use the Annex K size limit and codes of the PS5 libc, as measured on a PS5 #8965 65c7c4abe424979778bae6f529d2afee8a03086f, core/libs/tests/GuestStrings.cpp (patch SHA256 58e5926c2692a8ad493411fa0a515a09d1bce8a842f0c874f811fe82c595a142): Three RsizeMax constants become 0x1fffffffffffffff in secure copy/string size-limit checks. Assertions retain invalid-size buffer preservation/clearing and valid threshold copy success. Keep all three revised size boundaries with the independent strmode mode/termination matrix and final overlap return. Do not change unrelated memset_s boundaries or treat size constants as mode masks.
  • feat(libc): implement timingsafe_bcmp #12586 6b3ffd47d159020e9e15f80394fdb643f442c9b3, core/libs/tests/GuestStrings.cpp (patch SHA256 f9790e884caf9d5ebb4c3b1ff5b46f5485c7e503a987cb3ccdffe48f33535f83): Adds beginning/middle/end mismatches, both argument orders, equal prefix, zero length and high-byte comparisons. Two mismatches explicitly require return 1, not merely nonzero. Keep exact ==1 assertions and local safeD/safeMid buffers. Insert alongside the owned strmode matrix before the existing final overlap return; do not transplant the foreign old main tail over strmode. Limits: Complete primary patch only; full actual-MB raw-file reconstruction not claimed.

Owned contract retained: Require writes to stderr and aborts, including Release. Preserve the 12-byte strmode buffer, eleven rendered characters plus NUL, directory/regular/symlink modes, setuid/setgid lower/upper case, sticky lower/upper case, c/b/p/s/w types and unknown-mode output; preserve CheckMemcpyOverlap final return. Local buffers; no global handler changes in these two selected patches.

Proof classes: 1 actual-merge-base raw reconstructions; 1 cached complete-primary patches. Existing published ABI/runtime evidence remains pinned to its original head/control/environment; no new build, test, merged composition, author ordering or whole-table approval is claimed. AI-assisted (Claude Code).


Scoped libc API preservation follow-up — #11664

Source-only review against owned 6fc8bc373f486b49053870e519b0eba643784f37. This covers only the Api.hpp intersections listed below, at the frozen candidate pins; it neither retargets historical test evidence nor approves the other PRs in full.

Preserve exactly: void APS5_VABI strmode_nid_postfix(int mode, char* buffer);. Keep their existing symbol/NID bindings unchanged.

Candidate pin Scoped declaration action
#10989 74ce435fab44e28eb7a6c7ab67e35077d4c0b92f Keep the five filesystem pointer/error/result declarations and both explicit void() error declarations as written; no arguments or behavior inferred from mangled names.
#12586 6b3ffd47d159020e9e15f80394fdb643f442c9b3 Retain the distinct timingsafe_bcmp declaration once with const void* inputs and size_t length; retain the neighboring timingsafe_memcmp declaration.
#12920 b72b61741b9d64eabe1eb407be72defde98658c8 Keep signed int64 results, char**/size_t* outputs and guest FileStream* for getdelim/getline; do not replace FileStream with host FILE.

Apply declarations as scoped edits while preserving our own declarations; copying an older complete header could discard them. This does not establish implementation dependencies, agreed merge order, source compatibility of uninspected files, a successful merge/build, or runtime/console behavior. Other table paths and outstanding integration obligations remain separate.

AI-assisted (Claude Code).


Bounded libc debt-source supplement for #11664

Target source 6fc8bc373f486b49053870e519b0eba643784f37; counterpart pins below are from the frozen 2026-10-30 05:42 UTC metadata map. This reviews only complete selected docs/dev/debt/libc.md patches: 12 candidate/path scopes (27 added, 5 deleted lines; 18 hunks). No implementation/export correctness, combined build/runtime, landing order or whole-table clearance is claimed. Historical test and review pins remain unchanged.

Keep strmode's twelve-byte mode string, int/FreeBSD ABI rationale, undefined null-buffer behavior and unverified console/register-width expectations.

The selected added/deleted debt paragraphs concern the following separate subjects; none replaces this target's own debt paragraph. During composition preserve both, and resolve overlapping foreign replacement paragraphs against the actual implementation rather than restoring stale text from hunk context.

Scoped counterparts at examined head Preservation/action
#9867 56b82ac96e61, #10113 81fa0ec111f4, #10222 de5fd246210f, #10349 71a6a726c99b, #12053 2d2c5d945357 Math and floating environment: Keep each numerical helper entry and its exact provenance: host execution of a bundled library is not console execution; FMA/SDK, rounding, DAZ/FTZ, sampled inputs and unmasked-exception limits stay attached to the specific helper. Reconcile overlapping replacement paragraphs against the actual composed implementation rather than letting a context block restore stale host/port wording.
#8965 65c7c4abe424 Formatting, scanning and secure conversions: Preserve separate narrow/wide, secure/plain and string/stream distinctions, size/error/constraint-handler policies and module-specific measurements. Conflicting handler descriptions and buffer-capacity rules across these independent patches need implementation-matched wording during any composition; this review does not choose one foreign implementation.
#12586 6b3ffd47d159 Buffer comparison and provenance: Preserve the recorded FreeBSD 11.4 timingsafe_bcmp.c source, ISC / Copyright (c) 2010 Damien Miller attribution, 0-if-identical/1-on-difference result convention and content-independence requirement. This review did not measure constant-time execution or approve the foreign implementation; the target's own function contract remains separate, with no new dependency inferred.
#12920 b72b61741b9d Streams and host diagnostics: Keep per-operation stream-lock, buffer/error, descriptor and platform caveats separate from this target's search/mode/sort contract; prose for getline or diagnostics does not qualify either implementation.
#11661 1358bef8f5c8, #11689 7f992f4931a6, #11698 998fd58bf95d Runtime, signals and thread lifetime: Preserve GS registration/unload, signal-buffer, platform and unsupported-path caveats. These runtime notes do not change the target's search/mode/sort debt or establish a new interface dependency.
#10989 74ce435fab44 Filesystem, parsing and licence provenance: Preserve filesystem stubs and source/layout limits, getsubopt state handling and required upstream licence provenance. A debt-only note neither implements an export nor waives code conventions.

Specific source distinctions:

This is AI-assisted source/documentation review. Shared prose supplies no new prerequisite, author consent or runtime qualification. Existing source/interface, CI and explicit dependency obligations remain separate.


New captured #12622 intersections, source only

Against owned 6fc8bc373f486b49053870e519b0eba643784f37, I reviewed the complete selected GuestStrings.cpp and libc.md patches at #12622 1dd0d4a860eefb9ee7834d67e110c1e0e20cfc6b.

  • The fixture changes twelve size arguments across eight secure-scan assertions to std::size_t; two capacity failures now check all four unterminated bytes with memcmp instead of expecting the first byte cleared. These are meaningful scanner ABI/output expectations, not strmode changes. Keep all 15 inline strmode calls and their twelve-byte mode-string assertions. Applying only the selected hunk to the owned fixture in memory preserves that block and the existing scanner call; no build or combined-runtime result is claimed.
  • Retain the separate sprintf_s/vsprintf_s violation/handler rules, narrow-versus-wide size limits, removal of obsolete vsscanf_s debt and runtime/system/bundled handler distinctions. The wide secure-scan and module/console measurement limitations remain local to those entries; keep strmode's independent int ABI, null-buffer and unverified-console paragraph.

Compose fixture expectations with the corresponding candidate implementation when integrating; this shared-file review establishes no new strmode dependency, author order, foreign implementation approval or table-wide clearance. Historical test pins remain unchanged. AI-assisted (Codex).

Current skipped-row source reconciliation — target 22159353aa90627dedc7e3fb501250e5940c9b48

Bot comment #6432290956, refreshed at 2026-10-30 23:19:16Z, reports one compared row (#10270) and 27 skipped rows. I reconciled the 27 current skipped rows as 34 exact shared-file tuples against this target and the current foreign heads below. #12468 and #13119 are absent from this refreshed selection; both remain open at the same heads previously reviewed (8a0ba602095aa5a280dc363263ae8f914e3b53be and 0502e85d9873f69f4ac7377cc5b8e9c7ab0a68ad). Their prior source findings remain historical and are excluded from the current counts. Their omission alone does not establish merge or no overlap.

The three manual paragraph conflicts are not clean automatic merges. Their private previews preserve every other target debt paragraph and the exact target strmode paragraph once; they make no approval of another PR's implementation. The three clean debt-file compositions are source-only and likewise establish no behavior or runtime equivalence. The target's strmode paragraph remains at line 99; its strtoq paragraph and target-specific notes remain intact.

Separate #12560 debt composition

Current #12560 head is 718027132c6aadb27f792e552327c05f77540072; its true common base with target 221 is 1189ec3003672bb364dd9f3119ead7b3976e3c83. A text composition preserves five distinct notes: target strmode, landed strtoq, #12560's Windows-path entry, the updated Windows filename entry, and the target-side license-notice entry. The insertion after strtoq and Windows paragraph replacement are semantically disjoint, but context must be adjusted around the target-side license note; do not call this an automatic clean merge. #12560 states Depends on: none; this review creates no author-order or functional prerequisite.

These dispositions cover the selected source tuples only. They do not clear the compared #10270 row, approve whole PRs, claim a combined build/runtime result, resolve hosted CI, establish author order, or clear the entire overlap warning. #11664 remains OPEN/draft.

@orezraey

Copy link
Copy Markdown
Contributor

Confirmed: #11664 lands first. #10270 already lists it in Depends on; after it merges I will merge main into it, keep the strmode modeBuffer checks next to CheckConstraintHandlerCalls(), and rerun guest_strings.

@B-Howell

B-Howell commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor Author

CI follow-through for 6fc8bc373f

The Windows relinker job passed 506/507 tests; web_release alone timed out at 20.41 seconds. Its test-level timeout is 20 seconds, so the global CTest --timeout 120 does not extend it.

The relevant Python fixture/workflow inputs are byte-identical to pinned main 3679074d; the later main snapshot inspected did not change them either. This fixture does not exercise the strmode implementation.

Preliminary local check, Windows/Python 3.12.0:

  • ctest --test-dir build -R '^web_release$' -V --no-tests=error: 1/1 passes, 2.07 seconds.
  • python -B tools/tests/test_web_release.py -v --durations 0: 33/33 pass, 2.003 seconds; slowest method 0.511 seconds.

CI used Python 3.15.1 and parallel four, so this does not reproduce or explain its timeout and is not proof of a flaky test. No source or timeout change was made. The failed CI check remains unresolved.

My Actions retry request was denied and the existing account has read-only repository permissions. Could a maintainer retry this failed job when eligible, or capture the existing fixture's named timings on the CI interpreter?

AI-assisted: yes (Codex).

Exact-version follow-through

Additional bounded check for 6fc8bc373f: official Python 3.15.1 embedded AMD64, verified release checksum and valid Python Software Foundation executable signatures. Unchanged web_release passes 33/33 in 2.051 seconds with named timings, and passes under focused parallel-four CTest in 2.02 seconds. This does not reproduce the hosted 20.41-second timeout.

The four-test replay is 3/4 overall: companion web_library_assets encounters an embedded-runtime child import failure (package_release unavailable), which is recorded separately. Embedded startup and local selected load differ from the hosted 507-case run. No source/timeout changes or CI rerun; the failed hosted check remains unresolved.

AI-assisted: yes (Codex).


Main refresh at 22159353aa90

Head 22159353aa90627dedc7e3fb501250e5940c9b48, tree 235fc990fc5a31f682b1df7d23a9319c5ae28391, ordinarily merges e3c44ac2c60f26c7cbb0c42b447c4d4d61d0fd32 with main c0fb4a6aad1012b7e2abecaf2949e3d26c0e525d, observed at 2026-10-30 20:15:30 UTC; published 6fc8bc373f486b49053870e519b0eba643784f37 remains an ancestor. This is the documented main baseline for this refresh; later remote-main advances are not certified. The four owned contribution files and their additions remain unchanged. Earlier evidence below keeps its original pins.

Fresh Windows/WinLibs GCC 15.2.0 r7 (CMake 4.4.4/Ninja 1.13.2) and WSL Ubuntu 22.04/GCC 11.4 (CMake 3.22.1/Ninja 1.10.1), Release: both configurations and cmake --build <fresh-cache> --target guest_string_tests guest_formatting_tests nid_patcher --parallel 2 pass. ctest --test-dir <fresh-cache> -R '^(guest_strings|guest_formatting|public_headers)$' -V -j1 --repeat until-fail:3 --timeout 30 --no-tests=error passes 18 selected executions at this exact head across both OS = 12 native guest runs + 6 audit-only header runs, with no failures/skips. Builds/OS arms were serial, at most two build jobs. Same-arm production-library binding and Release-active checks were verified, including the existing formatting regression and actual changed-kernel dependency.

The #11664-before-#10270 order, other scoped/shared-file qualifications, future combined validation, reviewer acceptance and actual upstream landing remain separate. The historical hosted web_release timeout and Darwin masked-store qualifications remain unresolved. This PR stays draft.

The audit-only case retains its generated 90-second timeout; the 64 header compile batches are excluded. Fresh hosted CI at the new head is pending after push. No new console, GPU, title, macOS, whole-product or full-suite result is claimed.

AI-assisted (Codex).

@B-Howell
B-Howell marked this pull request as ready for review October 30, 2026 23:33
@adriadam10 adriadam10 self-assigned this Oct 30, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants