Skip to content

feat(libc): implement fcloseall with tracked stream lifetimes - #11831

Draft
B-Howell wants to merge 17 commits into
boykopovar:mainfrom
B-Howell:codex/libc-fcloseall
Draft

B-Howell wants to merge 17 commits into
boykopovar:mainfrom
B-Howell:codex/libc-fcloseall

Conversation

@B-Howell

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

Copy link
Copy Markdown
Contributor

What

Implement the named fcloseall export using FreeBSD 11.4's void __fcloseall/_fwalk(fclose) behavior: visit streams present at entry and ignore individual close errors. The public PS5 3.20 libSceLibcInternal inventory establishes the export name; its console signature and edge cases have not been measured.

Tracked registrations, pinned wrapper lifetimes and shared per-native-stream gates let close-all coordinate with fclose, freopen and explicit stream locks without holding the registry mutex across blocking native operations. Windows reopen retains native FILE identity; aliases follow successful and failed reopen. Host output preservation completes before destructive closure. Known limitations are recorded in libc debt.

Draft: #10755 kernel descriptor-state cleanup is an implementation prerequisite for correct guest-descriptor reuse after fcloseall, not merely a proposed landing order. In the accepted same-main private comparison, the Windows #11831-alone close-all control 4e714d379658486989f0587195a321b7b116f76f exits 204 at stale status flags after descriptor reuse; composition ebd07d1d6b48e08fd32a60bd561239eede4816ae with exact #10755 92f4276f28e9643fe7e336e1cc40ee02f30277da passes 13 focused cases three times each (39 passes) on each of Windows and Linux (results). The combined close-all adaptation is not in public #11831, and neither public branch was changed by the comparison. The proposed #10755-before-#11831 landing order still lacks author agreement: #10755 (comment). #9763 and #10929 have landed and their closed-stream/pending-UTF16 behavior is retained in the current-main integration below. #11872 is closed, so it is no longer listed as an open dependency. The former #11872-before-#11831 agreement is historical, not proof that its cancellation implementation landed. Public-branch #10755 integration, qualification of that integrated head, author coordination and reviewer acceptance remain outstanding. Existing overlap reports remain pinned to their declared heads; this main integration does not refresh every historical comparison. The earlier October 29 warning snapshot contained 170 candidates. The frozen overlap-bot snapshot updated 2026-10-30T00:18:59Z contains 45 rows: 10 compared conflicts and 35 skipped comparisons. The mapped source evidence covers all 45 pinned candidate heads and shared paths (79 complete shared-file patches), with no missing head or path in that snapshot. This is source coverage only: historical reviews retain their original target pins, and it does not establish the same semantic effect on changed context, clean pairwise integration, runtime compatibility or author agreement. Existing lifecycle/cancellation composition obligations, including #12682/#12688/#12700/#12965, remain separate and are not cleared by the private #10755 result.

Reference: https://github.com/freebsd/freebsd-src/blob/releng/11.4/lib/libc/stdio/fcloseall.c and https://github.com/freebsd/freebsd-src/blob/releng/11.4/lib/libc/stdio/fwalk.c.

Tested

Main-refresh candidate 4a435cca770907c13c2445505b3f7ef8fc7881cc, tree 77eb45c4ad8ce58f4ed6a66852242ed71436b069, ordinary parents 136c01112bef728d3b2937634665575f3430cc7c and frozen tested main fd41cca5d9133081edc27e21f87f53d73b6aa53b:

  • Windows 11 / WinLibs GCC 15.2.0 r7 and Ubuntu 22.04 WSL2 / GCC 11.4, Release, separate new caches, at most two build jobs, platforms serial: 36 passes per OS, 72 total, zero failures/skips.
  • Eleven actual registered cases per OS repeated three times (33 passes), plus three existing file_streams invocations using unique child-only ANYPS5_LOG_FILE paths (3 passes). All five guest_standard_streams cases are included: default, closed stdout, exclusive stdout, reopen closed stdout, update stdout. Other cases: public_headers audit, guest_stream_purge, file_stream_status, file_streams, guest_freopen_host_standard, and Windows guest_stream_buffer_host_write or Linux log_file. Internal FileStreams child modes are not additional registered cases. Explicit 10/20/90-second timeouts remain; other selected cases use a 30-second runner limit.
  • Production libc and fixture compile/binding/artifacts retained; explicit failure checks remain active under Release/NDEBUG. The five topic deltas, main debt text and owned fcloseall paragraph are preserved. Source conventions against frozen fd41 pass; final publication conventions/guards remain separate.
  • All six alternate log files were observed. Linux native /tmp scratch has bounded before/after observations only; transient actual paths and cleanup success are unknown. No install/export, full-suite, separate scanner/strerror_s/UDP correctness, console/title/GPU, cancellation-family or fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 descriptor-reuse qualification. Open fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 public integration/final-head, human/CI and coordination gates remain; draft stays draft. This does not clear every current overlap row.

The previous 136c01112bef728d3b2937634665575f3430cc7c 42-pass qualification remains historical. Historical verification below retains its original source pins and controls; none is retargeted to this candidate.

Historical published integration commit beba15a60f1223d6db34cc79cd282cb75a081c0d, tree a7dcbf9df5df5f8f3ab6b1e95f1d0d4873addd6f, ordinary merge of main 4c8cff191609bc5f28bf9ee2f93672b531285aa4 into existing head 3aac4f32d3fced7f0558a47541e517c2715ae246:

  • Windows 11, WinLibs GCC 15.2.0 r7, Release. cmake --build build --target file_streams_tests guest_freopen_host_standard_tests guest_standard_stream_tests guest_wide_stream_scan_tests --parallel 2 passes.
  • ctest --test-dir build -R '^(file_streams|guest_freopen_host_standard|guest_standard_streams.*|guest_wide_stream_scan|public_headers)$' --output-on-failure --repeat until-fail:3: 9/9 cases, each three repetitions, final restored run 64.25 seconds. Includes the lifetime child checks, closed-wrapper revival, snapshot publication and landed supplementary-wide-read/pushback regressions.
  • New guest getwc/freopen alias regression leaves low surrogates pending on source and alias, then reads the replacement file without stale halves. Removing only the two pending-state alias assignments and rebuilding actual libc made file_streams fail with Reopen must discard the alias's old low surrogate (CTest 8, process 0xc0000409). Restored exact staged source, rebuilt all four targets, and obtained the final 9/9 result above.
  • Main's zero-sized-transfer fixture remains intact; Windows directory reopen retains final directory state across aliases and publication/retirement rules. Required conventions against current main pass.
  • No Linux, full-suite, install, console, title/GPU, or combined-open-fix(libc): drop the kernel state of a descriptor that fclose or freopen closes #10755 validation is claimed. Historical test reports retain their original pins and limitations. Draft remains pending the coordination/integration/review actions above.

Checklist

CI configuration prerequisite — 2026-10-30

CI-only integration 035245f793d7157dc0ea9a1219ced0bbafeca85d (tree 8cabff0d10a59c419afec7badfb05f57e54acbaa) retains original #13220 commit e9f09f54fabb6408d3e2711b8df10c10112ab00e as its second merge parent, after 4a435cca770907c13c2445505b3f7ef8fc7881cc. Whole-tree and source-pin verification confirms only core/libs/tests/write_watch/CMakeLists.txt changes: five lines deleting the repeated execute-fault/read-fault registration. No libc implementation or fixture source changes.

Configuration-only comparison used the exact exported four-file graphs: the old graphs match across #11831/#12271, the fixed graphs match across both integrations, and all three companion C++ files are unchanged. Two shared arms per OS were configured serially: Windows CMake 4.4.4 / WinLibs GCC 15.2.0 r7 / Ninja 1.13.2 and WSL CMake 3.22.1 / GCC 11.4 / Ninja 1.10.1. Both old arms failed on both duplicate names after genuine native compiler/Threads probes; both fixed arms configured/generated successfully. Each fixed generated inventory contains exactly 18 unique name/executable/mode mappings with 30-second timeouts. These are four configure checks (two expected RED, two GREEN), not 18 runtime passes. No fixture build or CTest execution occurred.

The 72 native passes remain pinned to 4a435cca770907c13c2445505b3f7ef8fc7881cc / frozen fd41cca5d9133081edc27e21f87f53d73b6aa53b; they were not rerun or retargeted to this integration. The functional #10755 public integration/final-head gate, author coordination, human/bot review and verified main landing remain open; this PR stays draft.

New-head hosted CI qualification remains pending after publication. No macOS tests were run locally; the earlier hosted failure and all historical results retain their original heads. This configuration result does not establish platform/runtime, whole-product or dependency-order clearance.

Host-stream integration and focused follow-up — 2026-10-30

Candidate 0db63ae0011f859a41c04f6d277835f39e1c9938 retains public 035245f793d7157dc0ea9a1219ced0bbafeca85d, the ordinary main merge anchored to deliberately frozen badd7cd5b8d3f06118d7aced81e8875cc71da407, original #13220 e9f09f54fabb6408d3e2711b8df10c10112ab00e, and both original #13390 author commits through its exact head 4cf81e1d1d4aebae35b813dd8dc89a118d72beba. This preserves upstream authorship and the existing stream-lifetime/alias logic. It adds #13390's host-output preservation and fixed Windows standard-FILE identity, then restores entry errno when a real keep helper returns a negative result and continues the guest reopen, matching its best-effort failure policy.

Focused Release evidence on the same machine (Windows 11 / WinLibs GCC 15.2.0 r7; Ubuntu 22.04 WSL2 / GCC 11.4, glibc 2.35):

  • Windows control a3cb2a218b8754e930e2df68abab7fb581ca5dea fails both real stdout/stderr keep-return cases specifically because errno leaks into the native-open callback. Candidate b49bb5c9ba74ab6d9d8df6674e10d3f270ff9041 passes ten native cases and one audit-only header check. These runtime pins are retained; Windows was not rerun on the later Linux-only fixture amendments.
  • Linux control 00b952303c9ab2cf320e74c63dbefec795be3f5c passes three native cases. Candidate 0db63ae0011f859a41c04f6d277835f39e1c9938 passes eleven native cases and one audit-only header check, with zero failures/skips. Each arm includes a direct native freopen setup in a fresh process and a real-helper/lease/gate/Reopen consumer in another, requiring identical return/errno for the same closed-stdout state and pathname. This is host-outcome coverage, not a Linux RED discriminator or a hardcoded ENOENT requirement.
  • The planned evidence across these pins totals 28 selections: two expected Windows control failures, 24 native passes and two audit-only passes. It is not 28 candidate passes or a Windows runtime result for the final Linux head. Earlier Linux control failures from an unsupported ENOENT assumption, and its one print-only observation, remain separate. A private inventory-path check also stopped before tests; after correcting that helper alone, the already-compiled exact control was verified and reused. No production/assertion change was made for that helper stop.

The later source amendments affect only Linux fixture/dispatch and Linux CMake registration; production and Windows test branches remain unchanged. The selected cases cover host-log isolation, both platform-specific keep-failure paths, all five guest-standard-stream modes, file_streams and guest_freopen_host_standard. Real production/fixture builds, Release checks, same-arm PE/CTest PATH or ELF/ldd bindings and artifacts were retained; no live CPU PID/module or patched-NID tracing is claimed. Both borrowed workspaces and their prior protected artifacts were restored, and all owned processes ended.

This integrates frozen main badd7cd, not every later main revision. A bounded source check at observed main f1e340be4a6e67440f1d2b2574ede902140cbed4 found the coupled stream implementation/helpers and libc CMake unchanged; two related fixtures switched temporary-file allocation to the shared helper (Linux still uses std::tmpfile, Windows uses its temp-directory path). That later main context was not integrated or runtime-qualified here. All older qualifications above remain at their stated pins.

#10755 remains a functional public-branch integration/final-head qualification prerequisite, with author-order agreement and reviewer acceptance still outstanding. #13220 and #13390 remain open dependencies; preserving their source ancestry is not proof of main landing or author-order agreement. This PR stays draft. New-head hosted CI, current overlap/lifecycle/cancellation obligations, macOS/WebAssembly, full-suite, install/export, console/title/GPU and verified main landing are not cleared by these focused results.

@github-actions

github-actions Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Progress report (9605300 → 0db63ae)

📈 System libraries: 26.94% (+0.0027%, +1 implemented functions)

✅ 1 implemented
Library Name
libc fcloseall_nid_postfix

Changed libraries (implemented exports)

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

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked the three declared predecessors: #9763, #10755 and #10929 are all still open, and I could not find a public acknowledgement in their PR discussions confirming an agreed landing order. The description says this is a draft pending that agreement, so I am leaving the code review pending rather than requesting a code change or approving it. The contribution rule requires the overlapping authors to agree which PR lands first and to record the dependency.

The current build workflow has its Windows job in progress and Linux product tests skipped; the author reports the focused Windows/UCRT tests, but no POSIX runtime run. Please link the agreed order when it is settled and revisit POSIX coverage before marking this ready.

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The focused checks have useful results now: the relinker builds on Windows, but its CTest run failed 1 of 369 tests because web_release exceeded its 20-second timeout; the other 368 passed. The PR changes no web tooling, so this looks unrelated to the diff, but the failed check should be understood or rerun before treating the matrix as green. The Linux relinker, relinker ASan, Ubuntu register-context, conventions, intake, labels, and eligibility jobs passed. Windows product tests and several macOS jobs are still pending; Linux product was skipped.

One readiness item: this PR's base SHA is 5bc84038c490a0427ff272e39e2a1cdf6fdc3c0e, while current main is 801d5b9bc11049e6274daca09d70690bd5b8d0a9. CONTRIBUTING asks PR branches to stay current with main, and the body describes this tested branch as based on 5bc8403. Please update/retest against the current base before marking this draft ready. Since the PR is draft, I am leaving a comment rather than approving it.

@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 6565 docs/dev/debt/libc.md L263
PR 9867 docs/dev/debt/libc.md L263
PR 10113 docs/dev/debt/libc.md L263
PR 10222 docs/dev/debt/libc.md L263
PR 10226 docs/dev/debt/libc.md L263
PR 10229 docs/dev/debt/libc.md L263
PR 10349 docs/dev/debt/libc.md L263
PR 10755 core/libs/prx/libc/include/FileStream.hpp L7, L193, L196-198, L236, L383-384, L386
PR 10989 docs/dev/debt/libc.md L263
PR 12053 docs/dev/debt/libc.md L263
PR 12586 docs/dev/debt/libc.md L263

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 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 5303 docs/dev/debt/libc.md
PR 6085 core/libs/prx/libc/CMakeLists.txt
PR 7081 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/src/FileAndHeap.cpp
docs/dev/debt/libc.md
PR 7386 core/libs/tests/FileStreams.cpp
docs/dev/debt/libc.md
PR 7447 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
docs/dev/debt/libc.md
PR 7715 core/libs/prx/libc/CMakeLists.txt
docs/dev/debt/libc.md
PR 8150 core/libs/prx/libc/CMakeLists.txt
core/libs/tests/FileStreams.cpp
docs/dev/debt/libc.md
PR 8965 core/libs/prx/libc/CMakeLists.txt
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 core/libs/prx/libc/src/FileAndHeap.cpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 9863 docs/dev/debt/libc.md
PR 10324 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/Api.hpp
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
docs/dev/debt/libc.md
PR 10405 core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
docs/dev/debt/libc.md
PR 10620 core/libs/prx/libc/src/FileAndHeap.cpp
docs/dev/debt/libc.md
PR 10729 docs/dev/debt/libc.md
PR 11332 docs/dev/debt/libc.md
PR 11628 core/libs/prx/libc/CMakeLists.txt
PR 11661 core/libs/prx/libc/CMakeLists.txt
docs/dev/debt/libc.md
PR 11689 core/libs/prx/libc/CMakeLists.txt
docs/dev/debt/libc.md
PR 11698 core/libs/prx/libc/CMakeLists.txt
docs/dev/debt/libc.md
PR 11899 docs/dev/GAME_TESTING.md
PR 12057 core/libs/prx/libc/include/FileStream.hpp
core/libs/tests/FileStreams.cpp
docs/dev/debt/libc.md
PR 12363 core/libs/prx/libc/include/Api.hpp
docs/dev/debt/libc.md
PR 12468 docs/dev/debt/libc.md
PR 12682 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/Api.hpp
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 12688 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/Api.hpp
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 12700 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/Api.hpp
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 12965 core/libs/prx/libc/CMakeLists.txt
core/libs/prx/libc/include/Api.hpp
core/libs/prx/libc/include/FileStream.hpp
core/libs/prx/libc/src/FileAndHeap.cpp
core/libs/prx/libc/src/RuntimeSupport.cpp
docs/dev/debt/libc.md
PR 13119 core/libs/tests/FileStreams.cpp
docs/dev/debt/libc.md

@B-Howell

Copy link
Copy Markdown
Contributor Author

The unchanged implementation now passes the same 12 focused stream cases on Windows and Ubuntu 22.04/WSL (GCC 11.4), including the POSIX stderr-owner reopen/close-all case.

Proposed integration order: land #9763, #10755 and #10929 first, then rebase this draft and rerun the combined regressions. The conflicts need semantic handling: closed-stream adoption must publish the replacement handle to aliases; descriptor cleanup must remain inside the shared native-stream gate without holding the global registry mutex; pending UTF-16 state must reset and synchronize with aliases on close/reopen. The current branch does not include those PRs, and combined behavior is not yet tested.

Please confirm or revise that order before this draft becomes ready. Its dependency list records proposed predecessors, not an agreed order. No duplicate fcloseall implementation was found by the overlap check.

@MarcZX10 MarcZX10 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I checked the updated head 1ec2f73ee67254dac42ad634b47d347e723c6a3d; the implementation is unchanged, but the commit removes the fcloseall debt entry. The PR body still says the console signature and edge cases have not been measured. That is an unresolved gap under the repository's documentation rules, so please retain a concise debt entry limited to the unverified console signature/behavior and relevant boundary conditions; the implementation itself need not be restated as debt.

On integration order, I can assess the technical overlap, but I cannot confirm agreement on behalf of #9763, #10755, or #10929's authors. All three remain open, and #10929 currently has change requests for the ungetwc pushback ordering when a low surrogate is pending. Please keep this draft until the affected authors agree to the order and that blocking issue is resolved. I am requesting changes for the missing debt note and unresolved integration agreement, not asserting a new runtime failure in this unchanged implementation.

@Felipebmaitan

Copy link
Copy Markdown
Contributor

@B-Howell I am coordinating #11872 (POSIX read/receive cancellation, head bcf5df1) with this PR under CONTRIBUTING.md.

Proposed order: #11872 first, then #11831. Both branches change FileStream.hpp and share #10755 as a prerequisite. With #11872 first, the later registry/native-FILE lifetime integration should preserve FILE-before-descriptor exclusion order, kernel close/forget hooks and cancellation/HostWrite guard release before callbacks. Combined fcloseall/fclose/freopen and guest_io_descriptor_stdio_* checks should cover the lock/lifetime seam. Your existing #9763/#10755/#10929 dependencies remain yours; I have not run the combined branch.

Would you agree to that order and record #11872 in your Depends on line for the ordering? If your PR needs to go first, please say so; I can handle the later conflict resolution on #11872 instead. This is a proposal awaiting your confirmation, not an existing agreement.

AI-assisted coordination.

@B-Howell

Copy link
Copy Markdown
Contributor Author

@Felipebmaitan Agreed: #11872 first, then #11831. I've added #11872 to Depends on. When I rebase onto it (after #9763/#10755/#10929, whose authors have not confirmed the order yet), I'll keep FILE locks taken before descriptor locks, keep the kernel close/forget hooks, and release cancellation/HostWrite guards before callbacks run. Then I'll run combined fcloseall/fclose/freopen and guest_io_descriptor_stdio_* checks. No combined build or test has been run yet, so this stays a draft.

AI-assisted (Claude Code).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@B-Howell

Copy link
Copy Markdown
Contributor Author

@MarcZX10 About the debt entry: 1ec2f73 didn't remove it. That commit only dropped one sentence ("Windows concurrency/alias tests pass; POSIX runtime behavior is unverified here."). The fcloseall entry stayed at docs/dev/debt/libc.md line 213.

As you asked, 97e4999 shortens it to what is still unmeasured or differs from the console:

  • the console signature, return value and edge cases are unmeasured, and only the name is established, by the PS5 3.20 inventory;
  • it follows FreeBSD 11.4's void __fcloseall/_fwalk(fclose), so close errors are ignored and streams opened during the call stay open;
  • keeping the host stdout/stderr open takes a host descriptor, and a failure throws;
  • concurrent ordinary I/O while streams are destroyed is unsupported.

The implementation isn't described in the entry any more. This commit only changes docs, and the executable source is the same as at 3586f1cb41. check_conventions.py --base origin/main and git diff --check pass.

On the order of the dependencies: I haven't claimed that the authors of #9763, #10755 or #10929 agreed. The only agreed order is #11872 then #11831, with @Felipebmaitan. I also haven't rebased onto current main, so the base is still 5bc8403. I'll rebase once the predecessor order is settled, so the combined branch is tested once. The PR stays a draft until then.

AI-assisted (Claude Code).

@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 (comment6438055323, refreshed October28). Target head: 97e49991f83f94174b6363e4b6cdcec2b89f4242.

I reviewed the listed shared-file patches for all 152 candidates. This includes the newly listed #12511/#12514; #12510 was refreshed to 937a5651db81949af8725731bf0acb517cc75d5d with the same scoped debt patch. No second fcloseall implementation/declaration was found in this scoped review. There are real integration requirements below; this is not a blanket no-overlap finding.

This PR remains draft/conflicting. The known dependency discussion still applies: #9763 landed; #10755/#10929/#11872 require follow-through, and only the #11872-before-this-PR ordering has recorded author acknowledgement. I have not run a combined integration build/test or established clean pairwise merges in this audit. Source integration and current-head verification remain pending.

Freshness supplement to bot comment #6438055323 (updated 2026-10-28 18:39Z), for target head 97e49991f83f94174b6363e4b6cdcec2b89f4242:

The current bot table has 155 unique candidates. The earlier manual table records 152 historical candidate reviews. The exact set delta is #11737 and #11333 removed after merging at 16:59Z and 18:27Z, respectively, and #12518, #12524, #12527, #12530 and #12532 added. Keep both removed rows in the earlier table as historical audit evidence, not as current open-candidate results. The 13 retained candidates listed below have moved heads; their historical rows remain intact and are refreshed here against the current shared-file patches.

Candidate Historical head Current head Current scoped-patch result
#10927 d0ffc183045adec39c8880e4b3232fbf561584ce 91a46e583c8ac564e94c696a9f96b67bf91a28f9 Current _Throw declaration and matching debt added/deleted lines are unchanged; separate export/debt from fcloseall.
#10989 7b74f7e57709f04ad4b5e2ba4927013fc43266b7 1d2eed5e94f56a39f9d8612b7e370a399bd6668c Seven filesystem declarations and versioned-filesystem debt payloads are unchanged; separate from fcloseall.
#11421 8b16fed4284eec850c27d7d4c0b00746682f3056 2763fc067aa7b427797eb4abdd77e3cf80c54204 _Syserror_map_search declaration payload unchanged; separate from fcloseall.
#11450 f6d5314730ccb4eb8e2d01885ba05a12f7cf3775 549c4125e30444606e33b0c6d84b471f0d0d1539 _Locinfo_ctor/_Locinfo_dtor declaration payload unchanged; separate from fcloseall.
#11773 a7304b2e17dedb0f496f15d2d87924301b9395fc 5ab0f0f7bfb2b842a10788ad27612e60a329308a numpunct<wchar_t> declarations and clog/wclog/facet debt payloads unchanged; separate from fcloseall.
#11793 4b2145deb4741290e731f10e3c022e8bb3e578ee 2f61b7eaba9630cbbe7a4c4ff3891507b7d612a1 collate<char>::transform declaration/debt payloads unchanged; separate from fcloseall.
#11850 663230eaafcdc8da7e52b6067e287261c335bb9b f1d1fc7349b607804fd582cf072224d545517e46 reallocalign debt payload unchanged; separate from fcloseall.
#11870 3670a1509408a983806f09933d5be619263bb44b 75ab49fb0e23f222c18d0dbdb372de906c01a62e malloc_stats_fast debt payload unchanged; separate from fcloseall.
#12365 97272c18770f94765914db25ee91e1278f6dc0b6 9d907a63f8bd62843cdcb2d3e5bb89ed53a08743 Both scoped patches are byte-identical to reviewed patches; prior _Erfc assessment remains exact.
#12420 1bb1f9728cdaf8c26bae65710f48d7122226cf7e a51d64dbb74f749fcd422aedbc73800c4f84c644 Fresh review required and recorded: current debt patch preserves _WStoul and revises swscanf_s; %p length modifier is now described as ignored, like FreeBSD and the console scanner, whereas the historical text said it throws. This scanner debt is separate from fcloseall; keep the console evidence limits.
#12468 d17f1fbbae269099f222a207800a770e44b28f95 d9cf30a7a26ebd847a1aefb24d33037d3decd706 Scoped libc.md patch byte-identical to the reviewed patch; prior scanf-family debt assessment remains exact and separate from fcloseall.
#12510 937a5651db81949af8725731bf0acb517cc75d5d d1571b8973fda7553aacaf041a4b110333633954 Current debt payload unchanged. Its time_put<char> line exactly duplicates the current #12518 line; reconcile to one entry if both integrate.
#12511 97b5432399ef19fbfb70c0514e70353ef301db5f f2e5b8ca07645463357fdfcf4c84f8b2d1efb6ef Current debt payload unchanged. Its time_put<char> and money_get<char> lines exactly duplicate current #12518 lines; reconcile each to one entry if both integrate.

Two candidate PRs have byte-identical full patches; for ten others the hunk hashes/contexts changed but every added/deleted payload line is identical; #12420 changed payload and has a fresh assessment above. Hunk/context changes do not establish clean merges.

New candidate Current head Fresh shared-file assessment
#12518 f1a39a4878b750176fa767802f286379a578dda9 Adds time_put<char>, money_get<char> and money_put<char> vtable debt entries. These describe separate unimplemented facet methods/NIDs, not fcloseall. The first two entries duplicate current #12510 and #12511 debt lines exactly; preserve one each if integrated together. money_put<char> has no duplicate debt line among the three compared facet patches (#12510, #12511 and #12518). Retain each size, title and fault qualification.
#12524 a769b232a83fb29732b1cbad9bdc459723b2a6e3 Adds _Stodx/_Stofx/_Stoldx debt for host floating-point flags on unscaled hexadecimal range errors. Separate debt subject; retain host/title qualifications.
#12527 e80f7d8048d29ca9e640129f9e05ca799ae20171 Revises strerror/strerror_r/perror measured ranges/source qualifications and separately revises strerror_s/strerrorlen_s scope. Neither entry describes fcloseall; preserve distinct measured and unmeasured console limits.
#12530 3eca2be06731a86e6dc6a7cf07259dc1378eb149 Adds sscanf_s/vsscanf_s debt for string-form 0x-without-digit failure distinctions and decimal floating ERANGE rules, with separate stream-form lookahead and host-long-double caveats. It edits the same existing scanning debt paragraph as #12532.
#12532 92c6891d1cdec64888aac01dbabdcea24b97101e Adds the positive default quiet-NaN result and repeats 0x/range material in the same scanning debt paragraph as #12530. If both integrate, retain the NaN fact and reconcile stream/string and host-long-double qualifications in one paragraph. The target fcloseall debt is a separate entry.

This addendum reviews the listed current scoped patches only. It does not claim implementation compatibility, clean pairwise merges, author agreement on integration order, or combined test results.

152 candidate heads, scoped files and manual dispositions
Candidate Reviewed head Shared files Disposition
#3965 8029f87e5872277c330494a052a3d907052a3b7b libc.md Scoped debt subjects: Windows main-stack entry. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#5021 151294f979ab00aaff2f702314425caf61a72790 FileStream.hpp, RuntimeSupport.cpp, libc.md SyncUnlockedStatus changes unlocked-status lookup qualification; target changes the native-handle snapshot used by those calls. Preserve both unqualified platform-compatible calls and atomic handle snapshot. strtoimax/strtoumax removals are separate from target file-lock changes; ARM64 debt entry is distinct.
#5303 fb98512bf7ee58032649cb02b336e5881f4a26a7 libc.md Scoped debt subjects: The wide printf family. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#6084 6951e39255a218dfa66dfb86eea22bdc340bc890 Api.hpp Scoped declaration changes: timespec_get_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#6565 f2029f9ebe0855a064402716084959cb3983f634 libc.md Scoped debt subjects: Leases while a mutation waits for an unpinned range. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#6713 668d51adbdb91248f49fdd28acbfd0b85adb98cd libc.md Scoped debt subjects: Application heap without process parameters. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#6819 3551ba114cf3000200e39d574fc2f774f5e4f99f libc.md Scoped debt subjects: _Unwind_Context; slots. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#7081 e6f5d4c71b6ff42a43ee1c90b9b3fc912efdad7b FileAndHeap.cpp, libc.md fopen_s adds Sony constraint-handler calls for null result/name/mode; target adds registry code at the following export boundary and changes fopen lifetime publication. Preserve constraint calls and null-result behavior; localeconv/handler-sharing debt entries are distinct from fcloseall.
#7386 bf7352321cf85d1bfdfe402f3fba7b2d90c683eb FileStreams.cpp, libc.md Adds wide-fscanf assertions before the existing close in the ordinary FileStreams path. Preserve these assertions and target child-mode dispatch and end-of-main subprocess tests. No duplicate fcloseall/alias test; scanf debt entry remains distinct.
#7447 dead12ebad24a3c4b01a05c14ab60cc06aacaf7d FileStream.hpp, FileAndHeap.cpp, libc.md Integration required: Archive detach must survive both Reopen and the new CloseNativeUnderGate path. Preserve CloseOwnedStream cleanup on allocation/failure before registry publication. Plain old Close cleanup is insufficient after the refactor.
#7544 92365e35a4cac04a651731dc1fb0cdd4fb52851b libc.md Scoped debt subjects: lgamma and signgam. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#7648 bdf0d319632cb330c4ca909fe9d76577d6e58ae9 RuntimeSupport.cpp, libc.md Replaces _Throw_C_error with exact error mapping and a returning default directly before _Lockfilelock, whose body target changes. Preserve both mappings and new lock/pin logic. Separate debt entry; no duplicate fcloseall export.
#7715 783fa9b83f5f0ac617d4b0f05321a34c1279cb7f libc.md Scoped debt subjects: getenv, setenv, unsetenv, putenv. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#7851 5ff0e821f6fea62e78559d73572821bd7e2e844f Api.hpp, libc.md Scoped declaration changes: _ZSt14_Atomic_assertPKcS0__nid_postfix. Scoped debt subjects: ZSt14_Atomic_assertPKcS0. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract. The Atomic_assert debt writes the guest _Stderr then aborts; preserve this distinct contract and check guest/host diagnostic retention when integrating stream finalization. The scoped debt does not prove implementation compatibility.
#8150 6a9b1285c596904698bb0511c14f7c04302b708b FileStreams.cpp, libc.md Adds RandomCharacterInput and --random-character-input early return at main entry; target dispatches argc==3 child modes there. Keep random test after child dispatch so fcloseall subprocess modes do not run unrelated setup, preserve focused random invocation and target lifetime tests. Random-device debt is distinct.
#8397 1e89d2117d9448d9976510d88a0df1308f789911 Api.hpp, libc.md Scoped declaration changes: _Dint_nid_postfix, _FDint_nid_postfix, _LDint_nid_postfix, _Dscale_nid_postfix, _FDscale_nid_postfix, _LDscale_nid_postfix, _Dunscale_nid_postfix, _FDunscale_nid_postfix, _LDunscale_nid_postfix, _Dnorm_nid_postfix, _FDnorm_nid_postfix, _LDnorm_nid_postfix, _Fpcomp_nid_postfix, _FFpcomp_nid_postfix, _LFpcomp_nid_postfix, _Poly_nid_postfix, _FPoly_nid_postfix, _LPoly_nid_postfix. Scoped debt subjects: _LDnorm. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#8417 8c3d8f207ed5c032edb0f0699dc6c5498c4285db Api.hpp, libc.md Scoped declaration changes: tgamma_nid_postfix, lgammaf_nid_postfix, lgamma_r_nid_postfix, lgammaf_r_nid_postfix, gamma_nid_postfix, gammaf_nid_postfix, gamma_r_nid_postfix, gammaf_r_nid_postfix. Scoped debt subjects: lgamma and signgam; lgammaf, lgamma_r, lgammaf_r, gamma, gammaf, gamma_r and gammaf_r; acoshl, asinhl, atanhl, atan2l, cbrtl, erfl, erfcl, expm1l, hypotl, log1pl, log2l, lgammal, tgammal, j0f, j1f, jnf, y0f, y1f and ynf; acoshl, asinhl, atanhl, atan2l, cbrtl, erfl, erfcl, expm1l, hypotl, log1pl, log2l, lgammal, tgamma, tgammal, j0f, j1f, jnf, y0f, y1f and ynf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#8937 27aeb1feb4a533bb0d8ca20b9450ea4c0cc45efc Api.hpp, libc.md Scoped declaration changes: fesetenv_nid_postfix. Scoped debt subjects: fesetenv. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#8965 65c7c4abe424979778bae6f529d2afee8a03086f libc.md Scoped debt subjects: memcpy_s, memmove_s, strcpy_s, strncpy_s, strcat_s, strncat_s, wmemcpy_s, wmemmove_s, wcsncpy_s, wcscat_s, wcsncat_s; fopen_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9087 ec862a495abf1248277185e224b98287c20729ee libc.md Scoped debt subjects: snwprintf_s; snprintf_s and vsnprintf_s; vsscanf_s; set_constraint_handler_s; sscanf_s and vsscanf_s; _WStoul. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9340 3f2fa3b280504410e7ff6ed94dfd435992f1d92c libc.md Scoped debt subjects: The scanf family. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9371 9ea4c6561be22466166fb26fa61cd2eb0d23f2cf libc.md Scoped debt subjects: Windows link before ... These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9447 2dc7b701a4d72515be281c8e469fb14c5a588d63 libc.md Scoped debt subjects: std::__sce_v2::_Thrd_hardware_concurrency, _Cnd_timedwait, chrono::steady_clock::now_v1_compat. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9466 52a3e3b1a30339e6b006d99b85ef02d370b827c3 libc.md Scoped debt subjects: _Getctype, _Getcoll, _Getcvt, _Getdateorder, _Strcoll and _Strxfrm. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9526 1da5b7cd5c8904a515d275f1677f7fbaedf8fe34 FileAndHeap.cpp, RuntimeSupport.cpp, libc.md Versioned _Fiopen adds a fopen/fseek/fclose wrapper near target fcloseall end and ordinary fread; it benefits from registration/retirement through those exports but does not implement a second registry. Preserve mode table, seek-failure close, versioned entropy wrapper and separate debt entries.
#9677 6ac7ce9e401899294b07fd56eea0ec72a6fb0980 libc.md Scoped debt subjects: clock. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9688 03874cf1c5e43c18969364be032dc1e8371fe1c9 FileAndHeap.cpp, libc.md Replaces sort helpers and qsort/qsort_s behavior; target changes stream lifecycle and inserts registry helpers between export linkage blocks. Preserve sort helpers and linkage, do not conflate HeapSort with stream snapshot traversal. Separate qsort debt entries.
#9761 8bee41a347e4e0e701422d09f9aa81227a7f3f1e libc.md Scoped debt subjects: ctype<wchar_t> vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9863 b48707c2497061f0fcb80046299bc8420f9a0ede libc.md Scoped debt subjects: _WStoul. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9867 56b82ac96e6136cd4d10648f8174dda62cdfd9cb libc.md Scoped debt subjects: tanhf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9873 5d6c2ba14fc596f6da5e0e217778f0f92a18c2aa libc.md Scoped debt subjects: log10f and log2f. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9929 57c6df1f5620c34835e450490fbc574c854e74d1 libc.md Scoped debt subjects: syslog. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9935 7aa063d91cb079e5d82cdb64aff5731288b0406f libc.md Scoped debt subjects: set_constraint_handler_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9953 d777f1973b80b3056827557c713bef216d675227 libc.md Scoped debt subjects: %s in the wide printf family. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#9964 85de0b5ff191e7410b6e322d16192558892de64b libc.md Scoped debt subjects: %s in the wide printf family. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10002 9bbf84ead3b761fba399c40788bb783b98934e64 libc.md Scoped debt subjects: asinhf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10007 780fa4b76a6fb769a20ba2cf6ccc7859e00baef1 libc.md Scoped debt subjects: log1pf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10113 81fa0ec111f4b74214a86fc627e6255fcfe77c4d libc.md Scoped debt subjects: log1pf; expf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10158 d5fc5599a017bb1a66eeefd1b0a6c76518fa598f libc.md Scoped debt subjects: messages vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10165 b8b60ee7ac3e72aaf186fb113471fa01dce604a3 libc.md Scoped debt subjects: codecvt<char,char,_Mbstatet> vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10200 4098dd0401d8ad6818799a49617894fef8f7b9d4 libc.md Scoped debt subjects: numpunct vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10222 de5fd246210fbef0ecfdae38cb776d7708f0bf95 libc.md Scoped debt subjects: logb and logbf; tanhf; expm1f. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10226 cdd012cae3ac45798796661f0a3f840a37ff85ca libc.md Scoped debt subjects: atanhf; log1pf; expf; erff and erfcf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10229 2b011faec6045105ac26138a06693907d82b1c60 libc.md Scoped debt subjects: tanhf; expm1f; atan and atan2. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10234 686f200cdf0ba73d678953d034a12519b3977a61 libc.md Scoped debt subjects: exp. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10245 c45208322cbdc0bebd6833280a6f1cd50565e89b libc.md Scoped debt subjects: log. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10247 2f72ecea0435492b20466c6d63e9c5e43bb85ae7 libc.md Scoped debt subjects: log10. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10250 a3b71d51a5cdc0c27e3dbafe81817c7dce8e4ac7 libc.md Scoped debt subjects: sinf, cosf, tanf and sincosf; sin, cos and tan. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10253 5b96a875888056c5bd758270593be17d1a3f5542 libc.md Scoped debt subjects: asin and acos. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10265 7d51a8b3314a3db490738d2a2a739561588e6733 libc.md Scoped debt subjects: pow. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10270 ee3d2ffb81d5b5e7a87e167bcc8f37c4f2d0540a libc.md Scoped debt subjects: memcpy_s, memmove_s, strcpy_s, strncpy_s, strcat_s, strncat_s, wmemcpy_s, wmemmove_s, wcsncpy_s, wcscat_s, wcsncat_s; wcsncat_s and wcscat_s; set_constraint_handler_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10274 26ea9fdf6abedd3c11cc4d8c8b601cd51dacc102 libc.md Scoped debt subjects: exp2. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10315 72a6683e64531e4fc948e6115af96037b367ab5e libc.md Scoped debt subjects: atanh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10317 2cf7d26d3c733921cd1757f607cc61a97769143c libc.md Scoped debt subjects: log10; log2. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10321 476e0558339ebf0c423c69e5e32e3ebbb320ed7f libc.md Scoped debt subjects: exp; erf and erfc. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10324 5e32fdc2a5ccd4050a6a2e7f46f94e31966f8cca Api.hpp, FileStream.hpp, FileAndHeap.cpp, libc.md Integration required: Preserve orientation reset on Detach/Reopen/native close after replacing raw handle stores with atomics. Decide and test alias orientation synchronization; registry alias synchronization currently copies guest/error/random/directory state only.
#10325 d08fdf47159ca7e888e212baf49e5a3393aeb233 libc.md Scoped debt subjects: hypot. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10328 b25d8e9725f491fb11b7c2e01c5105481132a74d libc.md Scoped debt subjects: hypotf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10345 760f4f9386287b626560c16bcbe7363936741872 libc.md Scoped debt subjects: fmodf; fmod and fmodf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10349 71a6a726c99b18c241f9dbdca1a859ac852e1c61 libc.md Scoped debt subjects: remainder, remainderf, remquo and remquof. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10397 f3b832397ae390282cdd107ccba38bdcc9f6370b Api.hpp, libc.md Scoped declaration changes: sceLibcMspaceIsHeapEmpty_nid_postfix, sceLibcPafMspaceIsHeapEmpty_nid_postfix. Scoped debt subjects: sceLibcPafMspaceCreate, Destroy, Malloc, Memalign, PosixMemalign, Free, Calloc, Realloc, Reallocalign, MallocStats and MallocStatsFast; sceLibcPafMspaceCreate, Destroy, Malloc, Memalign, PosixMemalign, Free, Calloc, Realloc, Reallocalign, MallocStats, MallocStatsFast and IsHeapEmpty; sceLibcMspaceIsHeapEmpty. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10405 7d100f768e4f52970f417d0db32b11942a56ae2c FileStream.hpp, FileAndHeap.cpp, libc.md Integration required: Preserve the fixed guest reserved-area conversion state and reset on Reopen/seek. Registry host fields must stay after the 256-byte guest area. Alias synchronization does not itself establish shared multibyte-state behavior.
#10433 1e32d23a9c221fffeca70ba8a7f709b0057dbd77 FileAndHeap.cpp, libc.md Integration required: Directory reopen adds a branch in freopen that must acquire the same stream lease/gate and retire on failure rather than directly deleting pinned streams. Preserve directory descriptor registration/forget semantics with deferred stream registration.
#10506 6a8a2372a3c3932e23dce46dd388cfe9b06aa87a libc.md Scoped debt subjects: tanh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10510 8b6da33ff5518d4ee7f1620a5d1aca1e280fbffd libc.md Scoped debt subjects: expm1. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10512 c81cb822ae6c618a0683961b4ff6a4d415f23cce libc.md Scoped debt subjects: log1p. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10565 26c43ad44c145126c7ab24707957d520a5bdf9fc libc.md Scoped debt subjects: atanh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10569 66685d4028d01878a6cd8c1788047e1bf2f53c47 libc.md Scoped debt subjects: _Atomic_signal_fence. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10615 03d02d2f7fafc9493167943b001677ca7f2329b6 Api.hpp, libc.md Scoped declaration changes: _Cnd_register_at_thread_exit_nid_postfix, _Cnd_unregister_at_thread_exit_nid_postfix, _Cnd_do_broadcast_at_thread_exit_nid_postfix. Scoped debt subjects: std::_Pad, _Thrd_join, _Thrd_detach, _Thrd_id; _Cnd_register_at_thread_exit, _Cnd_unregister_at_thread_exit and _Cnd_do_broadcast_at_thread_exit. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10620 2a999da21f5650bfb9aacf88c0d0194d3c5d66ad FileAndHeap.cpp, libc.md Integration required: Random-device reopen adds a branch before ordinary path resolution; combine with lease/gate acquisition, failure retirement and MarkRandomDevice/alias synchronization. Preserve deferred registration/preallocated gate in fopen.
#10729 31cc00b5d822a4e2e7c0eead1e3e42ac5950c82c libc.md Scoped debt subjects: _WStoul. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10749 32c682c803c4a11bd4d137c95f77e2e723f9911b Api.hpp, libc.md Scoped declaration changes: siginterrupt_nid_postfix. Scoped debt subjects: siginterrupt. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10780 70a0b39dcef4a4c3786982841b965ccbbe50a46c Api.hpp, libc.md Scoped declaration changes: _LExp_nid_postfix. Scoped debt subjects: _LExp. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10895 5be64730a23cb09a9ce5ed0136f4ec074a13f3a7 libc.md Scoped debt subjects: wcsftime. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10927 d0ffc183045adec39c8880e4b3232fbf561584ce Api.hpp, libc.md Scoped declaration changes: _ZSt6_ThrowRKSt20bad_array_new_length_nid_postfix. Scoped debt subjects: std::_Throw(const std::bad_array_new_length&). These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10953 581d45c282371af828efec2a8cec6f43beacc68a Api.hpp, libc.md Scoped declaration changes: __error_nid_postfix. Scoped debt subjects: sigvec. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10987 fe748d4f48743f437bb180bc0f3731a4a07fbe3a libc.md Scoped debt subjects: tzname. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#10989 7b74f7e57709f04ad4b5e2ba4927013fc43266b7 Api.hpp, libc.md Scoped declaration changes: _ZNSt8__sce_v210filesystem5_StatEPKcPNS0_5permsEPi_nid_postfix, _ZNSt8__sce_v210filesystem9_Open_dirERA260_cPKcRiRNS0_9file_typeE_nid_postfix, _ZNSt8__sce_v210filesystem9_Read_dirERA260_cPvRNS0_9file_typeE_nid_postfix, _ZNSt8__sce_v210filesystem10_Close_dirEPv_nid_postfix, _ZNSt8__sce_v210filesystem12_Current_getERA260_c_nid_postfix, _ZNSt8__sce_v210filesystem18_Xfilesystem_errorEPKcNS_10error_codeE_nid_postfix, _ZNSt8__sce_v210filesystem18_Xfilesystem_errorEPKcRKNS0_4pathENS_10error_codeE_nid_postfix. Scoped debt subjects: Versioned std::__sce_v2::filesystem primitives. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11077 fa653e8c08153c828419adfa1c029ad3488917b3 libc.md Scoped debt subjects: frexp. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11109 8500fa8fdd2aaecf62c7e0424c6bad742f01a453 libc.md Scoped debt subjects: coshf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11172 6ad55bff263cb8a47ce17a2c9391b9eacc4bfbba libc.md Scoped debt subjects: codecvt<wchar_t,char,_Mbstatet> vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11214 33152529f5ab4c3756e653d47896b0fbb431ca23 libc.md Scoped debt subjects: %p and %lp. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11260 8365772e47fbce5df3fda265bd7b194ea2a4e98d libc.md Scoped debt subjects: acosl; atanl, sinl, cosl, tanl, sinhl, coshl, tanhl, expl, exp2l, logl, log10l and powl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11262 aaa0f5c0fe687bf6bde4cb2fb96969f78abe18f7 libc.md Scoped debt subjects: acosl; atanl, sinl, cosl, tanl, sinhl, coshl, tanhl, expl, exp2l, logl, log10l and powl; atanl; sinl, cosl, tanl, sinhl, coshl, tanhl, expl, exp2l, logl, log10l and powl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11266 394be8ce3e9042cfd9ea42729e083839e8decb8d libc.md Scoped debt subjects: acosl; atanl, sinl, cosl, tanl, sinhl, coshl, tanhl, expl, exp2l, logl, log10l and powl; atanl; exp2l; sinl, cosl, tanl, sinhl, coshl, tanhl, expl, logl, log10l and powl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11270 2eb8d8d12ff470331b8fed5da1126215ec935214 libc.md Scoped debt subjects: _LLog. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11332 793a55ba18497e36f1038242dae9d7e707641f35 libc.md Scoped debt subjects: snprintf and vsnprintf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11333 f139bcf1fc29cca5d3e26c90e7704f9fa04f5298 Api.hpp, libc.md Scoped declaration changes: __std_max_4i_nid_postfix. Scoped debt subjects: __std_max_4i. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11341 bb065fccc0b2a5ee3fc3b8deeceb94b2245de901 libc.md Scoped debt subjects: Host stdout preservation; Host stderr preservation; Guest arena; Guest long double conversions. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract. Host stdout/stderr preservation debt is directly related to host-versus-guest stream ownership, but specifies WebAssembly restrictions rather than fcloseall. Preserve both platform qualifications; actual implementation integration is outside this declaration/debt slice.
#11421 8b16fed4284eec850c27d7d4c0b00746682f3056 Api.hpp Scoped declaration changes: _ZNSt8__sce_v220_Syserror_map_searchEi_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11450 f6d5314730ccb4eb8e2d01885ba05a12f7cf3775 Api.hpp Scoped declaration changes: _ZNSt8__sce_v28_Locinfo13_Locinfo_ctorEPS0_PKc_nid_postfix, _ZNSt8__sce_v28_Locinfo13_Locinfo_dtorEPS0__nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11504 778c4a74ec4c86e29c48bd3766745debe86a91f5 Api.hpp, libc.md Scoped declaration changes: _ZNSt10filesystem18_Xfilesystem_errorEPKcSt10error_code_nid_postfix, _ZNSt10filesystem18_Xfilesystem_errorEPKcRKNS_4pathESt10error_code_nid_postfix. Scoped debt subjects: std::filesystem::_Xfilesystem_error. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11625 e97bbf045122e4326b0f5332a9844df37bd1d5dc libc.md Scoped debt subjects: app0.zar. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11632 d842922824753d84a30f90241ca1c10f3fa7068d libc.md Scoped debt subjects: acoshl, asinhl, atanhl, atan2l, cbrtl, erfl, erfcl, expm1l, hypotl, log1pl, log2l, lgammal, tgammal, j0f, j1f, jnf, y0f, y1f and ynf; acoshl, asinhl, atanhl, atan2l, erfl, erfcl, expm1l, hypotl, log1pl, log2l, lgammal, tgammal, j0f, j1f, jnf, y0f, y1f and ynf; cbrtl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11634 679a6c6eee95abae5e00037fd5cb8a3a366578c8 libc.md Scoped debt subjects: acoshl, asinhl, atanhl, atan2l, cbrtl, erfl, erfcl, expm1l, hypotl, log1pl, log2l, lgammal, tgammal, j0f, j1f, jnf, y0f, y1f and ynf; acoshl, asinhl, atanhl, atan2l, erfl, erfcl, expm1l, log1pl, log2l, lgammal, tgammal, j0f, j1f, jnf, y0f, y1f and ynf; cbrtl; hypotl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11661 339b7e0fd9bafe4bccbebb27777bb05752534b46 libc.md Scoped debt subjects: Windows guest GS continuation. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11689 60cd7a6c827922533ee28d036eefe6186e37bdbc libc.md Scoped debt subjects: Windows guest GS continuation. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11698 034bfe7adfeb5c28372a98df6ceefbeb522a5574 libc.md Scoped debt subjects: Windows guest GS continuation. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11724 6a95925815d5db353ac80890fd008d04bf38df92 libc.md Scoped debt subjects: The scanf family; scanf_s, fscanf_s, vscanf_s and vfscanf_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11726 d838ff6410b647a3ed9590d5f6a9e4ea315b8f74 libc.md Scoped debt subjects: The scanf family; scanf_s, fscanf_s, vscanf_s and vfscanf_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11733 e47bec17d8d80c08bd71926221b6d28b74d4233f Api.hpp, libc.md Scoped declaration changes: _WStoull_nid_postfix, _WStoll_nid_postfix, _WStod_nid_postfix, _WStof_nid_postfix, _WStold_nid_postfix. Scoped debt subjects: _WStod, _WStof and _WStold. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11734 7f2d69f3401a19156d100cd72a01539894d7e273 Api.hpp Scoped declaration changes: _Btowc_nid_postfix, _Wctob_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11735 78bc7a2c4ebee0bccd12819df3f8c36c95e9f9b9 Api.hpp Scoped declaration changes: _Getptimes_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11737 893250cf72c4b4a1d5ea649372968416c2e9dc43 libc.md Scoped debt subjects: asinh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11773 a7304b2e17dedb0f496f15d2d87924301b9395fc Api.hpp, libc.md Scoped declaration changes: _ZNSt8numpunctIwE2idE_nid_postfix, _ZNSt8numpunctIwE7_GetcatEPPKNSt6locale5facetEPKS1__nid_postfix. Scoped debt subjects: numpunct<wchar_t> _Getcat; std::clog, std::wclog and the facet ids. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11785 fc8fc19125970c88c35950295952427c3e7775f0 libc.md Scoped debt subjects: std::thread::hardware_concurrency. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11793 4b2145deb4741290e731f10e3c022e8bb3e578ee Api.hpp, libc.md Scoped declaration changes: _ZNKSt7collateIcE9transformEPKcS2__nid_postfix. Scoped debt subjects: collate::transform. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11843 2dc798856cc1540a2f16a52f8bdd982f4661b6ce Api.hpp, libc.md Scoped declaration changes: timelocal_nid_postfix. Scoped debt subjects: timelocal. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11848 c272bbe1b3d1fa9cdd9e56d7e9c56d01ef04df15 Api.hpp, FileAndHeap.cpp, libc.md Adds freezero immediately after free and distinct allocation declaration/debt text. Target close/registry helpers do not zero allocations. Preserve export once and both debt entries; no duplicate stream implementation.
#11849 cd97f141d91cbd1e47f670a3d4eec4c1cfeed609 libc.md Scoped debt subjects: asinl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11850 663230eaafcdc8da7e52b6067e287261c335bb9b libc.md Scoped debt subjects: reallocalign. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11852 00750dfaa2ff705880fcc459d015125d18b61b3b libc.md Scoped debt subjects: The scanf family. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11870 3670a1509408a983806f09933d5be619263bb44b libc.md Scoped debt subjects: malloc_stats_fast. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11890 45cdab208ee9fd3e027056bcf6b2d3dab33e18ca Api.hpp Scoped declaration changes: stpncpy_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11892 6219aaaff1520be4d484d6b618c3c3977024be58 libc.md Scoped debt subjects: strtod. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11893 17c950f0a54f8e44ec1e7561034ab6d7086ef824 libc.md Scoped debt subjects: printf length modifiers. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11895 e132c515f1e7e3b18878d6ac3f6db63cb5c64d04 libc.md Scoped debt subjects: acosh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11907 15b33e8e763cc814c74aa122a83b34c8cf8fe25e libc.md Scoped debt subjects: printf family conversions; printf length modifiers. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11947 61a4d9cf7b2bd916615d036f3bfa33179c52ea2d Api.hpp, libc.md Scoped declaration changes: getsubopt_nid_postfix. Scoped debt subjects: getsubopt. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#11969 560f498196e7db59ef8b4f41463105dadb96e15a Api.hpp, FileStream.hpp, FileAndHeap.cpp, libc.md Integration required: Both patches change Reopen and native close lifetimes. Preserve descriptor-closing cancellation callbacks and GuestDescriptorAccess alongside registry pin/gate retirement. Establish compatible FILE/native/descriptor lock order, including append helpers. Never simply retain old Close while fcloseall uses the new CloseNativeUnderGate path.
#11979 d618f5cf19aff331c509777bf31f590a1615f3e5 libc.md Scoped debt subjects: Application heap without process parameters. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12036 9f16485c4188efc23cae31f13be4f6012fd4ce59 FileStream.hpp, FileStreams.cpp Changes PrepareRead UCRT writing/reading flags, not target close/registry algorithm. Preserve clearing UcrtWriting, keep the unbuffered read-after-write test in main alongside target child dispatch/end-of-main lifetime tests; run combined guest_file_streams on Windows.
#12053 2d2c5d945357b4aa05119d5235070d570844086a libc.md Scoped debt subjects: _FSinh and _FCosh; logb and logbf; tanhf; expm1f. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12054 dbce646e7bbdcbd8fbb3f4e35c5921c346f5bdab libc.md Scoped debt subjects: getenv, setenv, unsetenv, putenv. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12057 b03facfbd4ab0e7dee657cd827d6806cf99d19a0 FileStream.hpp, FileStreams.cpp, libc.md Extends host UcrtStreamState with descriptor/characterBuffer/bufferSize fields; target adds private FileStream fields after guest prefix. These are distinct structures: preserve host offsets and the 256-byte guest area. Keep unbuffered write-after-read assertions and updated debt plus target lifecycle tests.
#12060 f658dd8dadecdf8523c7b731d059c855cfa3499f libc.md Scoped debt subjects: flock. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract. flock debt concerns shared descriptor lock state and closure/reopen references. It is distinct from fcloseall but concurrent descriptor closure remains explicitly unverified; do not infer compatible lifetime behavior from this document alone.
#12111 f8d5c3414a1475b610da68e75cb9a0e69344b890 libc.md Scoped debt subjects: unwinder. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12117 e295dbaa362a5fdd90c7315b875f066fd1b78a5b libc.md Scoped debt subjects: a write fault in a watched file mapping whose backing has been truncated can still be retried indefinitely. Th. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12122 420a233ac59933fcb61d496dedb26c01257410e1 libc.md Scoped debt subjects: exp; cosh. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12146 6d7b03b730560c3772b370811f5b8c25d1a81c07 Api.hpp Scoped declaration changes: _ZNSt8__sce_v228_Timespec64_diff_to_usecondsEPK8timespec_nid_postfix, _Smtx_init_nid_postfix, _Smtx_init_with_name_nid_postfix, _Smtx_destroy_nid_postfix, _Smtx_lock_exclusive_nid_postfix, _Smtx_lock_shared_nid_postfix, _Smtx_try_lock_exclusive_nid_postfix, _Smtx_try_lock_shared_nid_postfix, _Smtx_timedlock_exclusive_nid_postfix, _Smtx_timedlock_shared_nid_postfix, _Smtx_unlock_exclusive_nid_postfix, _Smtx_unlock_shared_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12149 081d5fd372ca845f8fef72a3623cefeec589bfab Api.hpp, libc.md Scoped declaration changes: _setjmp_nid_postfix, _longjmp_nid_postfix. Scoped debt subjects: _setjmp, _longjmp, longjmp. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12160 84433d65e8eb5a664e6df36e601896aa4d604ea7 Api.hpp Scoped declaration changes: null_memory_resource_nid_postfix, _Aligned_new_delete_resource_nid_postfix, _Unaligned_new_delete_resource_nid_postfix, _Aligned_get_default_resource_nid_postfix, _Unaligned_get_default_resource_nid_postfix, _Aligned_set_default_resource_nid_postfix, _Unaligned_set_default_resource_nid_postfix. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12162 2b21d42b7620b238482503b0f80a9d2d9b2f6d2f Api.hpp, libc.md Scoped declaration changes: _ZnwmSt11align_val_tRKSt9nothrow_t_nid_postfix, _ZnamSt11align_val_t_nid_postfix, _ZnamSt11align_val_tRKSt9nothrow_t_nid_postfix, _ZdaPvRKSt9nothrow_t_nid_postfix, _ZdlPvSt11align_val_tRKSt9nothrow_t_nid_postfix, _ZdaPvSt11align_val_t_nid_postfix, _ZdaPvmSt11align_val_t_nid_postfix, _ZdaPvSt11align_val_tRKSt9nothrow_t_nid_postfix. Scoped debt subjects: operator new. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12178 b41c727b01e69f5317294c5084becff862026488 libc.md Scoped debt subjects: nearbyintf; nearbyint and nearbyintl. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12184 e52854d1b6ecef00ae86bf9b86c90333000dbadf Api.hpp, FileAndHeap.cpp, libc.md Adds __std_calloc_crt forwarding to calloc, distinct declaration and new unknown-info debt entry. Target stream allocation and registry uses are different. Preserve wrapper/export, retain allocation provenance limitation and fcloseall debt.
#12186 d702b9d7e545f56d206e3cf45fa7b42a392f0805 libc.md Scoped debt subjects: getifaddrs. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12193 504111f10c8bc83a8a9ae36a85bdd03c124528b5 Api.hpp, libc.md Scoped declaration changes: stdc_leading_zeros_uc_nid_postfix, stdc_leading_zeros_us_nid_postfix, stdc_leading_zeros_ui_nid_postfix, stdc_leading_zeros_ul_nid_postfix, stdc_leading_zeros_ull_nid_postfix, stdc_trailing_zeros_uc_nid_postfix, stdc_trailing_zeros_us_nid_postfix, stdc_trailing_zeros_ui_nid_postfix, stdc_trailing_zeros_ul_nid_postfix, stdc_trailing_zeros_ull_nid_postfix. Scoped debt subjects: stdc_leading_zeros_uc, us, ui, ul and ull; stdc_trailing_zeros_uc, us, ui, ul and ull. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12229 d7986b1fb6738b5971ac3c7b7e734207b81c414e Api.hpp, libc.md Scoped declaration changes: stdc_leading_ones_uc_nid_postfix, stdc_leading_ones_us_nid_postfix, stdc_leading_ones_ui_nid_postfix, stdc_leading_ones_ul_nid_postfix, stdc_leading_ones_ull_nid_postfix, stdc_trailing_ones_uc_nid_postfix, stdc_trailing_ones_us_nid_postfix, stdc_trailing_ones_ui_nid_postfix, stdc_trailing_ones_ul_nid_postfix, stdc_trailing_ones_ull_nid_postfix. Scoped debt subjects: stdc_leading_ones_uc, us, ui, ul and ull; stdc_trailing_ones_uc, us, ui, ul and ull. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12289 1af5f0735f91d789c52296ede257cd0ee41fbb16 libc.md Scoped debt subjects: bsearch_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12363 817de5b106e25d6113d2e2823dc9669d1f28c984 Api.hpp, libc.md Scoped declaration changes: _Hypot_nid_postfix, _FHypot_nid_postfix, _LHypot_nid_postfix. Scoped debt subjects: _Hypot, _FHypot and _LHypot. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12364 f8b89cba1efebdfc687f4acc29d9f4319827515b Api.hpp, libc.md Scoped declaration changes: _Rint_nid_postfix, _FRint_nid_postfix, _LRint_nid_postfix. Scoped debt subjects: _Rint, _FRint and _LRint. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12365 97272c18770f94765914db25ee91e1278f6dc0b6 Api.hpp, libc.md Scoped declaration changes: _Erfc_nid_postfix, _FErfc_nid_postfix, _LErfc_nid_postfix. Scoped debt subjects: _Erfc, _FErfc and _LErfc. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12397 f2548977ea559a13c157c8ad0e5109983745dccd libc.md Scoped debt subjects: The narrow printf family; printf family conversions; printf length modifiers. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12420 1bb1f9728cdaf8c26bae65710f48d7122226cf7e libc.md Scoped debt subjects: _WStoul. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12428 54f7658e23001c6f42e2c28b6aec371cf9071162 libc.md Scoped debt subjects: Narrow scansets, string lengths and unknown conversions. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12468 d17f1fbbae269099f222a207800a770e44b28f95 libc.md Scoped debt subjects: The scanf family; scanf_s, fscanf_s, vscanf_s and vfscanf_s. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12469 df28f3f54be811af90a64f0628037e2501d28795 libc.md Scoped debt subjects: setvbuf and setbuf. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract. setvbuf/setbuf debt concerns host/guest buffer ownership and refill on watched pages. It does not implement fcloseall; retain buffering/platform caveats and check stream lifetime in the implementation review.
#12480 10748557503652d16a3aa17ed13f036a087e62ac libc.md Scoped debt subjects: fseeko and fsetpos. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract. fseeko/fsetpos debt documents UCRT failed-seek buffer movement. It does not duplicate close-all behavior; retain the platform caveat, with stream implementation integration left to the other review slice.
#12481 0824780682a2aad1b70dc62295bc2c11b55be1c7 FileStreams.cpp Adds CheckZeroSizedTransfers and call near main opening; target inserts child-mode dispatch before argc check and lifetime child invocations at end. Preserve zero-size buffer/position/error assertions and all child dispatch. No duplicate fcloseall test.
#12510 937a5651db81949af8725731bf0acb517cc75d5d libc.md Scoped debt subjects: time_put vtable. These changed declarations/entries are distinct from the target void fcloseall declaration and close-all debt contract.
#12511 97b5432399ef19fbfb70c0514e70353ef301db5f libc.md Adds distinct time_put and money_get facet-vtable debt entries. They describe unimplemented virtual methods, not fcloseall; preserve those qualifications and target close-all debt when reconciling appended entries.
#12514 046d6598004971d26dedb689b3a4af7baa92a4c6 libc.md Replaces floating-scan errno debt with measured wide-scanner conversion/NaN/long-double rules. It does not change the fcloseall debt entry; preserve both contracts, without inferring stream-lifetime implementation compatibility from this debt-only scope.

AI-assisted: yes (Codex).

Current-target adaptation supplement (October 28)

I compared the actual shared code/test patches of 17 candidates with target 3aac4f32d3fced7f0558a47541e517c2715ae246, based on main 319621ba2e578bd053b0baba2877fe70520e0737. These 17 candidate heads remain the exact heads listed in the existing table; their scoped patch base/head pairs were rechecked unchanged. The earlier 155-candidate audit remains pinned to target 97e49991f83f94174b6363e4b6cdcec2b89f4242. This supplement covers the new closed-wrapper adoption/revival and snapshot-generation changes, not a refresh of the other 138 historical rows.

The main integration does not complete these combinations:

The other reviewed code changes remain distinct: #5021 changes unlocked-status name qualification; #7081 adds fopen_s constraint-handler calls; #9526 adds versioned stream/entropy wrappers; #9688 changes sorting; #11848/#12184 add allocation exports. Preserve their exact behavior/linkage alongside the lifetime changes.

For #7386/#8150/#12036/#12057/#12481, retain the scanner/random/unbuffered-update/host-CRT-layout/zero-transfer changes and tests. Dispatch all lifetime child modes, including --closed-reopen-child and --reopen-snapshot-child, before ordinary fixture setup; #8150's unconditional random-input setup must not precede those child returns. Keep the UCRT read/write flag and host-layout changes separate from the guest FILE registry fields.

All prior author-order and prerequisite qualifications remain. In particular, the recorded #11872-before-#11831 order is unchanged; unresolved #10755/#10929 coordination and combined integration remain open. Preserve capacity-only reservation, actual ID assignment at successful publication, and snapshot rechecks after the gate in both close-all passes when composing branches. This is a scoped source review: no pairwise merge, combined build/test, new author agreement or draft-promotion claim. Existing main-only tests do not establish these combinations.

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

Copy link
Copy Markdown
Contributor

Follow-up on the debt entry and integration order

Thanks for clarifying: 97e49991f8 retains a concise fcloseall debt entry with the unmeasured console details and remaining limitations, which resolves my documentation finding. I also confirmed #9763 has merged and #11872 is now closed.

The PR body still says the draft is pending order agreement with #10755 and #10929, both of which remain open. I do not see a recorded agreement from those authors or a declared dependency order in the checklist yet, and the tested integrated branch still says the combined branch has not been tested. I am leaving the review pending on that coordination/integration item; no new code defect is asserted.

@MarcZX10

Copy link
Copy Markdown
Contributor

Update on the #10929 prerequisite

I re-reviewed #10929 on its current head and approved it: its pending-surrogate ungetwc ordering regression is fixed and the focused Linux/Windows runs are reported. That resolves the code issue I referenced earlier, but #10929 remains open and the landing order with #10755 still needs an explicit agreement/checklist dependency before this draft is ready. The debt-entry issue on #11831 remains resolved.

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

Copy link
Copy Markdown
Contributor Author

@MarcZX10 #10929 has now merged as df53927b7b7f57d43d336e787423495c2d6ad950; I verified it is reachable from fetched main d820fef1827f27247cd28da7b4eec7891904bae5. Its landing-order requirement is therefore settled.

#10755 remains open, and its order agreement plus the current-main/combined integration checks remain outstanding. This draft is not ready yet; no new build or test result is claimed here. The debt-documentation finding remains resolved as you recorded.

AI-assisted: yes (Codex).

@B-Howell

Copy link
Copy Markdown
Contributor Author

@MarcZX10 Updated the existing draft to beba15a60f1223d6db34cc79cd282cb75a081c0d, an ordinary merge of main 4c8cff191609bc5f28bf9ee2f93672b531285aa4. The landed #10929 pending UTF-16 state now resets and synchronizes across the close-all alias lifecycle. Current-main directory reopen and zero-sized-transfer tests are preserved.

Windows 11 / WinLibs GCC 15.2.0 r7 / Release: four focused targets build, and nine selected stream/header cases each pass three repetitions after exact restoration (64.25 seconds). A rebuilt-library control removing only pending-state alias synchronization fails the new guest getwc/freopen regression at Reopen must discard the alias's old low surrogate; restored source rebuilds and passes. Conventions and independent source/log/binary review pass.

#10755 remains open and absent from this integration. I requested @Ragbie's order confirmation in #10755 (comment); the checklist explicitly labels it a proposed predecessor pending agreement. #10929 has landed and #11872 is closed. Combined #10755 tests, author agreement and subsequent reviewer acceptance remain open, so this stays draft. Historical overlap reports retain their exact pins; the new/changed scope in the current 170-candidate bot table still requires review. No Linux, full-suite, console or combined-open-prerequisite result is claimed.

AI-assisted: yes (Codex).

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

B-Howell commented Oct 29, 2026 •

Copy link
Copy Markdown
Contributor Author

Bounded October 29 overlap-source supplement

This supplements the historical manual table for target beba15a60f1223d6db34cc79cd282cb75a081c0d. I froze bot6438055323 at 2026-10-29 22:28:34Z. Its170 rows differ from the literal157-ID historical manual table by34 additions and21 removals. That literal table retains merged historical rows; it is not the earlier156/later155 open-candidate snapshot. Between the captured21:09 and22:28 bot versions, #12527 left and #13025 entered without changing the total.

I read the complete current shared-file patches for the34 added IDs below. Each patch was checked against GitHub file addition/deletion counts; heads are pinned here. This establishes scoped source findings only, without pairwise merge or combined build/test qualification.

Added PR Reviewed head Exact shared subject
#12292 d0d0787413df112c1dc1e30d2a9ba95cccd38cd0 wide null-stream debt
#12541 75fd07f2d33fa7d86fcf4e0b1eaae0ab0fb2c98d math/siglist licence notices
#12553 24d86650b018bf8256ec386c47ea130918819007 hex Dinkumware conversion debt
#12555 dee895a889b181fdabf93ca00cb6f45cc40427e3 x87 rounding debt
#12560 42d1ec15867f5faa2c9fad45ca0850f5122cf06c HostOpenName path factory
#12574 6b2c35188f6706790c39f7ba302fc92148fbc7c6 secure time/handler debt
#12581 65ac15cd8fbb66f0228cf094eadd1ff65a631d38 strtok_s four-argument ABI
#12586 6b3ffd47d159020e9e15f80394fdb643f442c9b3 timingsafe_bcmp declaration/debt
#12589 2cbccfc58da9c1ebd8c4b357df965a3fa404a8d2 strerror_s handler debt
#12592 7e8465539372e0c6615956deac04adfe5886b30e mktime daylight debt
#12593 b8ea6ed9cc7bb5562bfe81b7360b53055b49d85d gmtime_s/localtime_s debt
#12594 37d0c191b5a04732daaca697ca5678ac9c670aaf memset_s violation debt
#12595 20e06ec7beb15674a2d550a164c09c85c432fa79 secure multibyte debt
#12597 9eb070d687ba03fb485af2c15b741452fa886216 secure open handler validation
#12598 c6cfa7cfd9dbff57752dab24b5574af9d8037822 qsort helper/validation rewrite
#12605 45a7c8a8a22fb822e8830d3df77a864cfb356cd5 vector min/max fault debt
#12622 1dd0d4a860eefb9ee7834d67e110c1e0e20cfc6b secure format/handler debt
#12627 21a0461a09a8d85d28a272f21465963329262bd0 wide secure-format debt
#12659 0fd2f5aff1845b2cb570d4f50f124ab8d75513ae scaled NaN debt
#12682 f1d93052db2598bce4dacde0c3bd2ab65070b037 native close/cancellation guards
#12688 1fb274f0fcc1f7b354d31efae38ddeb9d41216f5 same shared cancellation guards
#12691 13a8cd50f7cb4fc42d71bef35cc2772d770209f2 bsearch_s zero-stride debt
#12700 d828f6cca320e8c1b335a86d401be40a45a2c977 same shared cancellation guards
#12704 fa46ac3504e4e4d847111c193462963e2d596bbf time_put facet debt
#12715 bef4e7d3bf71204ab5da89750c03c66d7ec91aa1 host-output logging contract
#12841 e908061e3243c54655215bec7d156276baa4cb6c asctime_r declaration/debt
#12845 9b2a89d0c3830bed9c0f7edc31ef0c5f43ed0213 qsort_r declaration/helper call
#12849 556a92d0ee6bb7ee17260539dce7c2237469de2b small-span heap debt
#12861 3965731782c0f0f4d79dc6662ea88733be964464 recallocarray source/declaration
#12920 b72b61741b9d64eabe1eb407be72defde98658c8 getdelim/getline stream-lock contract
#12933 c33785b183c1f5af0343087d40de23316b5f8f6d dprintf/vdprintf declaration/debt
#12947 c508d259b63bba7989a2ad5a3fb0265146c7a3b7 complex-number declarations/debt
#12965 23691a5aa0f29643b2649f840732e3fd91b4ba57 same shared cancellation guards
#13025 30d5439075e33df009d3cd3cee47a9d8b8f1cedc stream-scan errno regression fixture

Integration actions from these patches:

I also refreshed the expanded retained scopes #7648 (2b34b0217219d34a2aca78d07135039dc24468d9; Api.hpp noreturn correction for _Throw_C_error plus its separate RuntimeSupport/debt changes) and #12160 (8e1b2c32d1863ac0bf942872c1c344c4aca57c6a; pmr resource debt added to prior declarations), and moved #10620 (e465f47d929d32f850d6b9e31ab49c12c9f74eb7): its random-device reopen branch still requires the lease/gate/reservation path, retirement rather than raw deletion of pinned wrappers, and random/pending-wide alias synchronization.

Still pending: retained candidate heads have moved from their explicit old pins. Except the three retained rows just named, those current patches are not represented as re-reviewed. Historical comparisons stay pinned; removed rows are retained as audit history, without inferred landing semantics. The #10755 author-order/combined-validation gate remains open and this PR remains draft. No author consent, whole-PR compatibility, new combined execution, or readiness verdict follows.

AI-assisted: yes (Codex).

Three retained-head scope checks — October 29

For #11831 at published beba15a60f1223d6db34cc79cd282cb75a081c0d, I checked these three still-open moved rows against their saved old shared-file patches. All four scoped added/removed-line sets are byte-identical; the full patches differ in hunk offsets/context. This does not establish that the complete candidate implementations are unchanged.

  • build(libs): support Emscripten memory64 compilation #11341: bb065fccc0b2a5ee3fc3b8deeceb94b2245de901 -> 5f2d45501d2acb9b7407df37f7842ac39d8f427b. The complete shared libc.md patch retains the same four WebAssembly qualifications for stdout, stderr, guest arena and long double. Its current General.cpp makes Emscripten host-stdout preservation throw and uses descriptor2 directly for host stderr; it does not promise an independently retained host stream there. Its separate kernel Stdio.cpp hunk selects Emscripten getdents, not host-output preservation. No current FileStream/FileAndHeap patch is present. Preserve these platform caveats beside fcloseall debt; native Windows/Linux results do not qualify that WebAssembly behavior. The saved old scope contains debt only, so no old/current General.cpp semantic-equivalence claim is made.
  • test(libc): check fsetpos clears end of file and rejects a negative position #12480: 10748557503652d16a3aa17ed13f036a087e62ac -> ef17cec92d46d261e4bcc5472f63b40aa353da15. The shared debt addition retains the same Windows failed-seek/read-ahead caveat and explicitly unverified Linux behavior. Current code scope is a FilePosition fixture addition: read to EOF, successful fsetpos clears EOF/repositions, negative fsetpos returns failure/EINVAL, then ordinary Close. No FileStream/FileAndHeap implementation change or fcloseall invocation is added. Keep the assertions and caveat; the old saved scope has no fixture patch, so its fixture is not described as unchanged.
  • feat(libc): export _setjmp and _longjmp #12149: 081d5fd372ca845f8fef72a3623cefeec589bfab -> 056c4b4f4a60d60f80f8f777b628eada046ac461. The shared Api.hpp _setjmp/_longjmp declarations, attributes and jump-buffer debt additions retain the same changed lines. Current implementation adds jump-buffer assembly and its dedicated fixture, without a FileStream/FileAndHeap edit or descriptor-closing/cancellation hook. Preserve both API declaration sets and debt entries. This does not review jump semantics or transfer the separate cancellation/stream-lifecycle integrations to this PR.

The attempted lifecycle-code filter yielded zero new lifecycle obligations in this bounded retained-scope selection: the historical moved list's FileAndHeap rows are the independent #9688 sort change and #10620 random reopen, already refreshed above. These three related rows were checked instead; no three lifecycle clearances are being asserted. All three still say Depends on:none, with no #11831 author-order agreement identified in their discussions. Their scoped source patches establish no new implementation dependency or need for another author ping.

No merge, build/test, source/cache/branch change or runtime promise was added by this review. Keep the original170-row and retained-head freshness obligations scoped: other retained rows and current cancellation/reopen combinations are not refreshed or cleared here. The private #10755 comparison remains separate evidence.

AI-assisted: yes (Codex).

Frozen retained shared-scope batch — October 29

I audited the 54-row intersection of the original 57 moved-head list with the saved 152-row source inventory. This is one frozen batch against main 673fa865f418876429bd871fdda2ab15ac1a0831, with per-row before/after head and base checks around complete file-page reads; all 54 stayed consistent. It is not a continuously refreshed or all 170-row clearance.

Saved shared-patch classification Rows
Raw patch identical 4
Same added/deleted lines; hunk offsets/context changed 35
Changed scoped content, all in libc debt 13
Merged and verified ancestors of frozen main 2

Raw-identical rows: #10234, #10265, #11724, #11726. Same changed-line sets: #8937, #9087, #9688, #9761, #10002, #10158, #10165, #10200, #10253, #10345, #10615, #10620, #10749, #10780, #10989, #11172, #11270, #11341, #11421, #11632, #11634, #11773, #11793, #11849, #11895, #12122, #12146, #12149, #12160, #12178, #12468, #12480, #12510, #12511, #12514. These categories compare only the exact saved shared patches, not complete PR implementations or runtime behavior. Identical ordered added/deleted lines do not prove the same semantic effect on changed base/context; lifecycle integration still needs its own source/runtime review. All 68 old/current shared-file pairs have complete addition/deletion and hunk-range proofs.

The 13 content changes need the following preservation when integrating the independent fcloseall debt:

PR and frozen head Scoped preservation action
#7648 2b34b0217219d34a2aca78d07135039dc24468d9 Only the debt provenance wording changes from a named PRAGMATA build to a bundled PS5 library; error mappings, returning unknown-value path and SDK limits remain. Keep those qualifications with the independent lock/pin changes; no new runtime verdict.
#9929 fa25a4b798ecf66300dd100d6c4d37bdb9c7c9da Rewrites syslog debt around borrowed identity/program-name fallback and stderr sink limits. Preserve string-lifetime, unverified console mask/fallback and no-daemon/extra-LOG_PERROR caveats; do not restore the old no-program-name assumption.
#10245 911827abb1f536098649cb5f6e1ec199cd48e93d Adds revised asinh debt alongside log: msun log/log1p composition and new sampled title-library comparison replace the old host-log discrepancy. Preserve sampled-only, floating-exception/system-library and SDK limits.
#10270 0bc7597aed156d555c51ab0afcc58501854f69e0 Separates strncat_s terminator handling from strcat_s: retain the PPSA31872 rule for strncat_s and physical-payload qualification for strcat_s, plus unmeasured wide-overlap behavior. Preserve other existing debt removals/handler qualifications.
#10895 3d9db7dad635e0290f9e0a2808c593048ecb964d Adds conversion-overflow continuation provenance from a reported native-PC firmware 13.42 measurement; retain that this was not a physical-console run and leaves %Z/%z, within-conversion failures and bundled-title differences unverified.
#11214 382120ba678c55c2494ef692ae2ca10ee55ede79 Records firmware 13.60 pointer precision/width/zero-padding and wide %lp observations. Keep payload-versus-title limits and the Linux custom-formatter routing/unsupported-position throw caveat.
#11892 f6ca8993e813d818781a29f86148c52f58df4d4b Updates decimal wcstod ERANGE to eleven title-bundled Windows measurements while retaining console wcstod as unmeasured and the separate PPSA08329 Linux-only hexadecimal/glibc 2.35 rounding qualification.
#12111 21d5544daf5fda50d7e878d0f41d829a08f6c60e Replaces the invented encoding0 CFA description with explicit compact-unwind rejection; missing/rejected DWARF FDEs also fail without a fallback. Preserve signed personality offsets and the libc DWARF build qualification.
#12363 3f865021bf6ca3db4c253e88d10334307c74b25e Adds the retained Plauger copyright/permission notice to the cited Dinkumware provenance; preserve the null-pointer throw, _FHypot measured discrepancy and unverified exceptional/rounding behavior.
#12365 2fd4997231f3fac30bf9cc197d004a7ca616ffc4 Expands erfc precision-subrange/caller-dispatch qualifications and explicitly unverified console signatures/results, while preserving numerical discrepancy/exception limits and non-FMA provenance.
#12397 078102a03f127cd5dee128d1244195d4034916e4 Also removes the obsolete secure-length-modifier debt paragraph while updating unknown-conversion behavior. Preserve that removal, title-library provenance, Linux routing and trailing-percent throw; do not resurrect the old secure-form assumption.
#12420 3961a1f069963e5cf67d70124ae8c9c0576b51d1 Changes wide-scanner %p length handling to ignored rather than thrown, and explicitly leaves unknown conversions at input EOF unmeasured. Keep the other scanf ABI/size/partial-output, character-conversion and physical-title limits.
#12428 efdeef66aa35be7ef17c73152ac2dddac6ea18da Adds measured Linux plain/secure string-width and errno limitations, distinguishes the shared secure scanner from the glibc plain path, and retains Windows scanset/high-byte/unknown-conversion qualifications.

Retired rows: #10927 merged as 5e216d6aedcdecf7628e04402acffec2483b4750; #11450 merged as 034e5a015ab783cff6cdc9d8631b3f7a02deff9a. Both merge commits are verified ancestors of the frozen main. Their old branches were not retested.

Provenance limit: eleven entries in the moved-head index used intermediate override pins different from the saved scoped-source pins. Two are the retired rows above; for #10989, #11421, #11773, #11793, #12365, #12420, #12468, #12510, #12511, this batch compares the explicitly retained older source snapshot, not the intervening pin. Their intermediate-pin-to-now equivalence remains unproved. #12518/#12524/#12532 are outside the saved 152 inventory and have no old scope in this batch; they remain separate pending rows. The historical 155/157/170 and original 57 baselines are not interchangeable.

No new FileStream/FileAndHeap lifecycle content change was identified in these saved shared scopes, and the open PR file lists introduced no previously unlisted file of either name. The two retained FileAndHeap scopes (#9688 sort, #10620 random reopen) keep their existing separately qualified obligations. Old nonshared source is unavailable in these scoped snapshots, so no unchanged-General.cpp/FilePosition.cpp/JumpBuffer.cpp or whole-PR claim follows.

This source-only batch adds no merge/build/test, author-order agreement, source/cache/branch change, runtime promise or readiness decision. Preserve candidate-specific debt/API changes and fcloseall independently. Other scopes, cancellation/reopen combinations and author/reviewer requirements remain separate; the private #10755 result does not clear them.

AI-assisted: yes (Codex).

Current warning scope and remaining integration

The earlier October 29 warning snapshot contained 170 candidates. The frozen overlap-bot snapshot updated 2026-10-30T00:18:59Z contains 45 rows: 10 compared conflicts and 35 skipped comparisons. The mapped source evidence covers all 45 pinned candidate heads and shared paths (79 complete shared-file patches), with no missing head or path in that snapshot. This is source coverage only: historical reviews retain their original target pins, and it does not establish the same semantic effect on changed context, clean pairwise integration, runtime compatibility or author agreement. Existing lifecycle/cancellation composition obligations, including #12682/#12688/#12700/#12965, remain separate and are not cleared by the private #10755 result.

The historical outside-inventory IDs #12518/#12524/#12532 are absent from that captured table. Missing older scoped patches for those IDs do not create a current bot-row obligation. Their separate historical-source notes do not establish old-to-current equivalence, landing or runtime compatibility. The updated PR body distinguishes the functional #10755 cleanup prerequisite and accepted private results from pending public integration.

October 30 — two additional libc debt scopes

Frozen target #11831: beba15a60f1223d6db34cc79cd282cb75a081c0d. Captured bot6438055323 at 2026-10-30T01:33:12Z has 47 rows, versus the earlier 45-row mapping. This append reviews only the two new shared docs/dev/debt/libc.md paths; earlier reviewed rows, source pins and runtime evidence keep their original scope. Both candidate PRs also change code outside this shared-document scope; those implementations were not reviewed here.

#12605 updates eight existing signed/unsigned min/max vector-helper debt bullets to name std::invalid_argument versus the documented firmware13.00 invalid-range faults; nonempty bundled-libc/host evidence remains distinct. #12659 adds one scaled-floating NaN debt bullet retaining non-C-locale, other-SDK and console-execution unknowns. These are the notes’ recorded provenance, not new measurements from this review. The same two immutable candidate patches are reused for the two targets, with separate target-specific preservation dispositions.

Candidate / frozen head Complete shared debt patch Target-specific preservation
#12605 45a7c8a8a22fb822e8830d3df77a864cfb356cd5 +8/-8, 1 complete hunk Keep all eight updated vector-helper debt statements: std::invalid_argument versus the recorded firmware13.00 invalid-range payload faults, with nonempty bundled-libc disassembly/host provenance kept distinct. Retain #11831’s separate fcloseall entry verbatim: actual void ABI, unmeasured console signature/return/edge cases, FreeBSD11.4 __fcloseall/_fwalk(fclose), ignored close errors, streams opened during the walk left open, host stdout/stderr descriptor-limit throws and unsupported concurrent ordinary I/O/destruction. Those vector-helper failure notes do not rewrite the stream contract.
#12659 0fd2f5aff1845b2cb570d4f50f124ab8d75513ae +1/-0, 1 complete hunk Retain the new Scaled floating NaN subjects bullet and its non-C-locale/other-SDK/console-unverified limits plus PPSA03766/PPSA07923 Linux-host provenance. Keep #11831’s complete void fcloseall/lifetime/host-descriptor/concurrency debt entry alongside it. The candidate snapshot has no fcloseall debt entry; taking that whole file instead of composing the entries would drop ours. Absence of that note is only a document fact, not an export/implementation conclusion.

These are fresh pinned debt-composition notes only. They establish no same-export, implementation/dependency, author-order, composed runtime or console-verification conclusion; the shared path alone settles none of those. No new source edit, build, test, cache/ref change or public write was performed. This does not refresh every retained row or clear the whole current table; existing readiness/integration gates and old test pins remain unchanged.

AI-assisted: yes (Codex).

October 30 - pinned #12659 debt follow-up

At 58fddd82c67ac084cb2d8ca6a3aff862910e7daf, #12659 retains the same sole added libc.md paragraph reviewed at 0fd2f5aff1845b2cb570d4f50f124ab8d75513ae: scaled-floating NaN evidence comes from two title-bundled libraries run on Linux; non-C locales, other SDK variants and console execution remain unverified. Complete shared scope is still +1/-0 in one hunk. The raw patch differs in its hunk offset (131 to 134) and inherited _LLog context, rather than being byte-identical. This is a current scoped-document preservation check, not equivalence of the foreign implementation.

Our target remains beba15a60f1223d6db34cc79cd282cb75a081c0d and its debt contract is unchanged. Preserve the void fcloseall contract, ignored close errors, streams opened during traversal, host-descriptor failure and concurrent-lifetime limits. Existing test pins remain unchanged; no new build/runtime, export, dependency, merge-order, consent or whole-table clearance is claimed.

AI-assisted: yes (Codex).


Seven libc runtime/interface source scopes

Pinned target remains #11831 beba15a60f1223d6db34cc79cd282cb75a081c0d: fcloseall keeps its void ABI, two-pass snapshot/pin/gate/retirement behavior, reopen reservations, alias/UTF16 state and host stdout/stderr preservation. This block covers only these seven selected shared paths (120 additions,3 deletions,8 complete hunks), not other overlap rows or final combined qualification.

PR / exact source head Shared path and preservation action
#7648 2b34b0217219d34a2aca78d07135039dc24468d9 src/RuntimeSupport.cpp: retain its separate C11 error-dispatch change; do not replace the adjacent owned file-lock wrappers, their pins, native/shared-gate ordering or balanced unpin/deferred lifetime. Its sole hunk moves from141 to147; the remaining patch body/context is byte-identical to the older artifact. Raw patch and whole-file identity are not claimed. No approval of foreign console/error constants follows.
#11848 c272bbe1b3d1fa9cdd9e56d7e9c56d01ef04df15 src/FileAndHeap.cpp: retain freezero beside heap exports and its delegation to free; it does not replace stream close/registration/retirement or establish a fcloseall implementation dependency.
#12036 9f16485c4188efc23cae31f13be4f6012fd4ce59 include/FileStream.hpp: preserve successful UCRT update-read transition's clearing of UcrtWriting, setting of UcrtReading and status sync, while retaining the owned class prefix/layout, atomic handle, leases/registry and alias/wide-state synchronization. Do not copy the older whole class over it.
#12184 e52854d1b6ecef00ae86bf9b86c90333000dbadf src/FileAndHeap.cpp: preserve the __std_calloc_crt forwarding alias once, with the existing calloc allocator/error/overflow behavior; keep stream lifecycle code independently.
#12861 3965731782c0f0f4d79dc6662ea88733be964464 src/FileAndHeap.cpp: retire the unmerged counterpart row. It merged as 0362b1521c4ee08eeeccc2f98e9987e36fca9ea1; that commit is an ancestor of independently frozen actual main 42d992b02adb1729a9b0488d444ecafc81c0a5a8, which contains the complete added recallocarray block. Retain that landed heap addition in a later main refresh; no old-branch retest or runtime approval is implied.
#12682 55161f97476a8bd413c279829cabb6390307e4d5 src/FileAndHeap.cpp: retain the two descriptor-update admissions and begin/end closing-descriptor hooks alongside, rather than instead of, FILE pointer pin/gate identity and snapshot/alias/reopen semantics. This file's complete patch and full blob match the older f1d93052db2598bce4dacde0c3bd2ab65070b037 scope. Actual admission-token cleanup/lock ordering with the cancellation stack and native close still needs its own composition; descriptor numbers cannot stand in for FILE identity. This does not discharge the separately recorded descriptor-cleanup/public integration or cancellation-combination gates, nor create a new standalone order/dependency agreement.
#12920 b72b61741b9d64eabe1eb407be72defde98658c8 include/FileStream.hpp: retain the separate LibcDetail::ExpandLineBufferCapacity declaration outside the extern-C standard-stream block without changing class/lease/registry layout. The declaration alone is not getline-family implementation or runtime validation.

Paths above are under core/libs/prx/libc. Every selected patch reconstructs its exact raw new Git file, with all old/new hunk ranges and blob IDs verified against this target contract. Six counterparts remain open; one is source-verified landed. This source preservation review is not a combined merge/build/test, foreign whole-PR approval, console-behavior validation, author consent, or all-table/readiness clearance. Historical tests and private combination results keep their original heads.

AI-assisted: yes (Codex).


Source-preservation follow-through for #11831 at beba15a60f1223d6db34cc79cd282cb75a081c0d (owned source SHA256 4386868043ad34846c00a267ad523f9a6c16fc43665969933addaeb1f63a68ca). This is an append draft for independent review, not a posted or combined-tested result.

  • fix(libc): leave write mode when an unbuffered update stream switches to reading on Windows #12036 9f16485c4188efc23cae31f13be4f6012fd4ce59, core/libs/tests/FileStreams.cpp (patch SHA256 476a5f686e062f7255de200cc45acaac3423d3f8b157425eb7117dc52a9afa39): Seven write cases and four subsequent read cases require byte 2 (or ungetc Z then 2), no ferror, cursor 3 and AB23456789 after close. Retain setvbuf mode2/size0, each guest fclose, unique .unbuffered path cleanup, and new main invocation after update-stream checks. Keep owned subprocess dispatch before parent-only fixture calls and all eight child invocations. Limits: Complete primary patch only; full actual-MB raw-file reconstruction not claimed.
  • fix(libc): preserve errno on stream scan input exhaustion #13025 ff736bd24ae73dfa54f1f27fca96419cba3b0195, core/libs/tests/FileStreams.cpp (patch SHA256 63703a3a7d7caa11ec78a6232acbbf1888427a3b350ebcb8053f11c14c397443): Ordinary direct/va-list scanners keep errno seeds 0/22/97 and value123 on empty/space EOF, feof true/ferror false. GLIBC descriptor-read error requires changed errno/ferror; float overflow requires ERANGE. Preserve saved errno restoration, native fclose in each iteration, .scan-error removal, glibc guard, and unchanged conditional platform ABI in existing ScanList. Do not move destructive close-all into these parent loops. Limits: The selected fixture does not establish scanner implementation correctness or Windows execution of the glibc-only branch.
  • fix(libc): ignore non-wide lengths on character scans #13049 ce32d855ba3817332ab44e454f95f6257836943d, core/libs/tests/FileStreams.cpp (patch SHA256 2ecfb8f691b2a914a1c9d1a7b0eeee72a35db74ddca77703df9e9215e0cdefac): s/c/[a-z] with hh/h/ll/j/z/t/L require two consumed bytes, a/b output, terminator except c and intact Z suffix. Windows skips ordinary scanners. Keep platform skip and all destination canaries; preserve secure size argument32u. Reconcile new ScanSafeList with the owned Windows-SysV/Unix-std::va_list convention before composition; do not silently claim portability from other helpers. Limits: New ScanSafeList unconditionally uses __builtin_sysv_va_list/start/end. Its compatibility on the owned Linux ABI was not established by this source-only pass; require exact ABI proof or a separately reviewed change before claiming combined readiness.
  • fix(libc): retain short stream character scan fields #13057 ff25c7aba5f6a53215385cae3627b00556c4dd99, core/libs/tests/FileStreams.cpp (patch SHA256 aaacf507faa9e709974951d2ed90f7fa3071860d457ea1620b6268736f9d266f): Direct secure and va-list secure scanners cover empty/a/ab/embedded-NUL/space, widths1/2/8 and suppression; assert EOF/result/count, bytes, Z canaries, ftell, feof iff input shorter than width and no ferror. 1MiB threaded read forbids file-lock release mid-field and requires post-return lock acquisition. Keep thread barrier, atomic completion, reader join, exception propagation, balanced unlock and native fclose before close-all children. Preserve all result/EOF/position assertions, not just copied bytes. Reconcile shared helper definitions with fix(libc): retain ordinary short character scan fields #13119 rather than duplicating them. Limits: Scheduling-sensitive source assertions have not been run here; no stress/performance or deadlock guarantee. Exception propagation occurs after join but before native fclose on failure, so source-visible cleanup is normal-success-path only.
  • fix(tests): open scratch streams under a Unicode TEMP on Windows #13104 9ffb865109811c3c161159ebccce68373eed0d03, core/libs/tests/FileStreams.cpp (patch SHA256 51e990d6224f920f80b8abcdc859270a66472483db718ac00cf1af0e47f857d9): Replaces one top-level closed-stream std::tmpfile input with TemporaryFile::Open and adds helper include. Explicit Close, fflush==-1/errno9 and remove(argv[1]) stay. Retain the closed-stream EBADF assertion and explicit Close. Do not generalize this one replacement to native temporary files in registry/close-all child cases. Require helper ownership/lifetime and platform contract evidence before claiming composed fixture equivalence. Limits: TemporaryFile.hpp body is outside the frozen selected inputs. Return validity, cleanup, registry/native-handle and environment effects are unknown; no claim that helper is semantically interchangeable.
  • fix(libc): retain ordinary short character scan fields #13119 1baea53cdedba020ebd1091b550c7bcf0b92a686, core/libs/tests/FileStreams.cpp (patch SHA256 413a211f0652337f68c77bd81bc5109b7e0ab6925082965a32bc83c652f1dc26): Carries secure short-character/locking cases also present in fix(libc): retain short stream character scan fields #13057. Non-Windows ordinary direct/va-list tests add the same short-field matrix, q integer lengths and signed/overflow width strings; exact taken counts, next unread byte, %n, canaries and ftell are asserted. Invalid float prefixes keep value42/count-77/outputZ and errno97, with EOF only for empty/space. Retain #ifndef _WIN32 around ordinary/quad/width/failure suite and saved errno restoration; preserve exact boundary expectations (2147483647 takes3; 4294967298 takes2; listed other oversized forms take1), q octal/hex/decimal values/count13/next !. Reconcile CheckShortCharacterScanLocking(bool,scanner), shared secure helper and CheckShortCharacterScans with fix(libc): retain short stream character scan fields #13057; call each intended test once. Keep all owned child dispatch and subprocess calls. Limits: No new host-libc equivalence or scanner implementation approval; non-Windows scope must not be described as Windows-tested. Normal loop paths close native FILE; exception cleanup is not universally guaranteed.

Owned contract retained: Require throws runtime_error, active in Release. Preserve alias pending-surrogate invalidation (old low surrogate must become Q after reopen), descriptor-invalid/EBADF after close-all, flushed/reopened payloads, repeated close-all, closed-stream reopen ABC, registry gate and old/new snapshot exclusion, and lock/race outcomes. Preserve all eight early child dispatches before argc==2 and all eight parent child-result==0 checks. Global standard-stream replacement, close-all, CRT exhaustion and watchdog termination remain isolated in subprocesses. Retain Win32 CreateProcess/30-second wait and Unix fork/exec/wait; locked-stream watchdogs/joins/unlocks and unique path cleanup must survive composition.

Proof classes: 5 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 — #11831

Source-only review against owned beba15a60f1223d6db34cc79cd282cb75a081c0d. 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 fcloseall_nid_postfix();. 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.
#6084 6951e39255a218dfa66dfb86eea22bdc340bc890 Keep KernelTimespec* and int base/result for timespec_get; do not substitute host timespec.
#7648 2b34b0217219d34a2aca78d07135039dc24468d9 Remove noreturn consistently from the Throw_C_error declaration and its paired RuntimeSupport definition; the selected header alone does not qualify its returning/throwing behavior.
#7851 5ff0e821f6fea62e78559d73572821bd7e2e844f Replace the old int() Atomic_assert prototype with noreturn void(const char*,const char*), consistently with its definition/callers; our old Export.cpp definition still has int(), so a header-only composition is insufficient.
#8397 1e89d2117d9448d9976510d88a0df1308f789911 Preserve all 18 numeric helper declarations, short/int64/uint16 pointer widths and float/double/long double distinctions; no numeric implementation or console ABI validation.
#8417 8c3d8f207ed5c032edb0f0699dc6c5498c4285db Preserve all eight gamma-family additions with float/double distinctions and int* sign outputs.
#8937 d2386a7a78fca58ae72f0e2d4a1a8373c9e19750 Retain const GuestFloatingPointEnvironment* in fesetenv; no host fenv substitution.
#10397 f3b832397ae390282cdd107ccba38bdcc9f6370b Keep both heap-empty query declarations with int result and opaque void* handle.
#10615 5486fca2bffb9d92a47526855a1fb826c4d3ed6b Keep the three thread-exit condition declarations including void* handles/int* ready and noexcept on broadcast; no teardown/cancellation implementation claim.
#10749 f430c9ec4eeee6b495b2e5ca478758b5f0dd1ffb Preserve the deliberate removal of the direct siginterrupt declaration; keep declaration ownership coherent when composing the complete change rather than reintroducing the old API line by full-file copy.
#10780 1147f76d012a7aa0133c49a88fc5440a5e77f92c Keep _LExp short result, long double* value/long double y and short offset.
#10953 581d45c282371af828efec2a8cec6f43beacc68a Preserve GuestErrno/LegacySignals include routing and direct __error declaration removal together; do not create a duplicate direct declaration or infer errno/signal behavior from this header.
#11733 e47bec17d8d80c08bd71926221b6d28b74d4233f Preserve char16_t input/end pointers, integer conversion widths and int64 scale arguments; do not substitute host wchar_t.
#11735 78bc7a2c4ebee0bccd12819df3f8c36c95e9f9b9 Retain GuestLocale::TimeInfo* as the _Getptimes result.
#11773 23852cdda9558f4af067c780defec98dc8d65e18 Keep numpunct<wchar_t> id as an extern uint64 data symbol, separately from its guest-facet getter function; do not turn the id into a function.
#11793 f4f760e2b3125ffa43552ca0e3adcf4ca2a92f9c Preserve explicit GuestLocale::String result storage, CollateFacet self and first/last pointers for transform.
#11843 4307d56478d851b78abb424a9b771ea0fb52fe9d Keep timelocal int64 result and GuestTm* argument.
#11848 c272bbe1b3d1fa9cdd9e56d7e9c56d01ef04df15 Keep freezero void result with void*/size_t; preserve the owned fcloseall declaration and independent heap/stream contracts.
#11890 45cdab208ee9fd3e027056bcf6b2d3dab33e18ca Retain stpncpy char* result, destination/source constness and size_t bound.
#11947 61a4d9cf7b2bd916615d036f3bfa33179c52ea2d Retain getsubopt int result, char** option/value outputs and char* const* token table. Exact source identity is verified separately.
#12146 3c592e8141a09309b89548efed776fb62c675b27 Preserve all 12 timing/shared-mutex declarations including void** handles, const Xtime* deadlines and int results; do not infer lock runtime or cancellation behavior.
#12149 056c4b4f4a60d60f80f8f777b628eada046ac461 Keep returns_twice on _setjmp, noreturn on _longjmp and uint64* guest buffers; these attributes do not prove RAII/cancellation unwinding.
#12160 8e1b2c32d1863ac0bf942872c1c344c4aca57c6a Historical merged scope: retain the seven memory-resource pointer getters/setters already present in frozen main; no open-row or old-test promotion.
#12184 e52854d1b6ecef00ae86bf9b86c90333000dbadf Keep __std_calloc_crt void* result with two size_t arguments; retain the adjacent owned search callback declarations.
#12363 3f865021bf6ca3db4c253e88d10334307c74b25e Preserve float/double/long double hypot variants with int* exponent output.
#12364 f8b89cba1efebdfc687f4acc29d9f4319827515b Preserve float/double/long double Rint variants.
#12365 2fd4997231f3fac30bf9cc197d004a7ca616ffc4 Preserve float/double/long double Erfc variants.
#12581 65ac15cd8fbb66f0228cf094eadd1ff65a631d38 Replace the old three-argument strtok_s prototype with the four-argument form including size_t* remaining; coordinate definition/callers, without retaining incompatible declarations or claiming the ABI qualified here.
#12841 e908061e3243c54655215bec7d156276baa4cb6c Keep asctime_r char* result, const GuestTm* input and caller buffer.
#12861 3965731782c0f0f4d79dc6662ea88733be964464 Historical merged scope: retain recallocarray void*/size_t declaration present in frozen main; no open-row or allocator runtime acceptance.
#12933 c33785b183c1f5af0343087d40de23316b5f8f6d Historical merged scope: retain descriptor-int dprintf/vdprintf and guest VaList* declarations present in frozen main; no output runtime acceptance.
#12947 14ae9e98af6526c1f838dfb3ae296998140c3b44 Preserve all 18 complex declarations with GNU complex float/double/long double types and the corresponding real return types; do not substitute std::complex.
#12682 55161f97476a8bd413c279829cabb6390307e4d5 Retain the JumpBuffer include alongside FileStream and other guest headers; this does not establish integration of the cancellation prerequisite stack.

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.

The three merged rows #12160/#12861/#12933 are historical scopes removed from the later 161-row bot capture; their selected declarations are checked against frozen main 42d992b02adb1729a9b0488d444ecafc81c0a5a8, not treated as new open obligations. Keep fcloseall void, its FILE registry/lease lifetime and alias/UTF-16 behavior; public #10755 adaptation/final-head qualification and conditional cancellation/reopen work remain outstanding.

AI-assisted (Claude Code).

Publication source freshness: #11773 and #11793 were refreshed to the saved 06:15 UTC guard pins. Both selected Api.hpp patches differ only in hunk coordinates; their complete bodies/context and ordered additions/deletions are unchanged. New raw patch and whole-file identities are recorded separately; no whole-branch, implementation or runtime equivalence is claimed.

Later source-pin capture: the newer two API pins listed here come from the saved 2026-10-30T06:30:59.721645+00:00 publication guard and were matched by complete current primary file records. All selected raw patch strings are byte-identical to the preceding accepted source refresh; earlier guard times describe that earlier phase, not these later pins. This adds no whole-branch or runtime qualification.


Bounded libc debt-source supplement for #11831

Target source beba15a60f1223d6db34cc79cd282cb75a081c0d; counterpart pins use the frozen 2026-10-30 05:42 UTC metadata map with the eleven #11831 source-pin refreshes qualified below. This reviews only complete selected docs/dev/debt/libc.md patches: 107 candidate/path scopes (162 added, 66 deleted lines; 121 hunks). No implementation/export correctness, combined build/runtime, landing order or whole-table clearance is claimed. Historical test and review pins remain unchanged.

Keep the void FreeBSD-style fcloseall contract, ignored close errors, streams opened during the call left open, host-descriptor cost/throw caveat and unsupported concurrent ordinary I/O/destruction. These debt notes do not qualify native-FILE identity, aliases/UTF16, close admission or cancellation composition.

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
#7544 92365e35a4ca, #8397 1e89d2117d94, #8417 8c3d8f207ed5, #8937 d2386a7a78fc, #9873 5d6c2ba14fc5, #10002 c39daee22f77, #10007 780fa4b76a6f, #10234 c988f73c1702, #10245 911827abb1f5, #10250 a3b71d51a5cd, #10253 ec98fb890ddb, #10265 b5dc3b4296ad, #10274 26ea9fdf6abe, #10315 72a6683e6453, #10321 476e0558339e, #10325 d08fdf47159c, #10328 b25d8e9725f4, #10345 5b596a5d104d, #10506 6a8a2372a3c3, #10510 8b6da33ff551, #10512 c81cb822ae6c, #10565 26c43ad44c14, #10780 1147f76d012a, #11077 fa653e8c0815, #11109 8500fa8fdd2a, #11260 8365772e47fb, #11262 aaa0f5c0fe68, #11266 394be8ce3e90, #11632 3688e03a745f, #11634 7e9165cb8ba8, #11849 8b626e30747a, #11895 808cea2543e5, #12122 e0415047dc40, #12363 3f865021bf6c, #12364 f8b89cba1efe, #12365 2fd4997231f3, #12524 31b1ed651b9b, #12553 24d86650b018, #12947 14ae9e98af65 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, #9087 29d8de386f91, #9863 b48707c24970, #9935 7aa063d91cb0, #9953 d777f1973b80, #9964 85de0b5ff191, #10270 ec13bce3d846, #10729 31cc00b5d822, #10895 3d9db7dad635, #11214 382120ba678c, #11733 e47bec17d8d8, #11892 f6ca8993e813, #11907 15b33e8e763c, #12397 078102a03f12, #12420 3961a1f06996, #12428 efdeef66aa35, #12530 3eca2be06731, #12532 6d16add5fb12, #12574 6b2c35188f67, #12589 2cbccfc58da9, #12593 b8ea6ed9cc7b, #12594 37d0c191b5a0, #12595 20e06ec7beb1, #12622 1dd0d4a860ee, #12841 e908061e3243, #13049 ce32d855ba38, #13119 1baea53cdedb 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.
#9466 52a3e3b1a303, #9761 9e8e06063550, #10158 9211539cf500, #10165 0df700e54275, #10200 ca982a920a05, #11172 fdc62fb1048c, #11773 23852cdda955, #11793 f4f760e2b312, #12510 3697bf09eac8, #12511 7151b9f2b5a2, #12518 37bc008f1855, #12704 21c6a4742818 Locale facets and C locale: Keep slot counts, zero/unwired versus wired slots, C-locale restrictions and bundled-binary/disassembly qualifiers local to each facet. A source/table layout report does not prove working virtual dispatch, console behavior or stdio lifetime.
#6565 f2029f9ebe08, #10397 f3b832397ae3, #11848 c272bbe1b3d1, #11850 f1d1fc7349b6, #11870 75ab49fb0e23, #12184 e52854d1b6ec, #12849 556a92d0ee6b Allocation and memory accounting: Preserve allocator ownership, arithmetic/error, guest-versus-host accounting, opt-in/quarantine and measurement limits. Guest allocation leases and heap accounting are not FileStream pins or stream close admission; this prose supplies no close-all concurrency proof.
#7851 5ff0e821f6fe, #9929 fa25a4b798ec, #12480 ef17cec92d46 Streams and host diagnostics: Keep per-operation stream-lock, error, descriptor and platform caveats separate from fcloseall. Guest stderr/syslog output and getline/flockfile behavior do not verify host-output preservation, concurrent close or callback cancellation safety.
#11661 1358bef8f5c8, #11689 7f992f4931a6, #11698 998fd58bf95d, #3965 8029f87e5872, #6819 3551ba114cf3, #7648 2b34b0217219, #10569 66685d4028d0, #10615 5486fca2bffb, #10749 f430c9ec4eee, #10953 581d45c28237, #11341 98248606d4ef, #12149 056c4b4f4a60, #12682 55161f97476a Runtime, signals and thread lifetime: Preserve registration/unload, signal-mask/buffer, platform and unsupported-path caveats. Do not interpret guest GS lifetime, thread-exit notifications or cancellation context metadata as proof of close-all lifetime/admission composition.
#9677 6ac7ce9e4018, #10987 fe748d4f4874, #11843 4307d56478d8, #12592 7e8465539372 Time-zone and process time: Keep host zone/process-clock fallback, daylight-transition and console/title-process uncertainty. None changes the target search/mode/sort/close-all debt entry.
#11947 61a4d9cf7b2b, #12541 75fd07f2d33f 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:

The original captured debt queue also contained #12160, #12861 and #12933. The saved 05:58:44 bot refresh removes exactly those three from #11831 (164 to 161 rows; no additions or retained-row changes). Their three debt patches remain historical evidence here, not current #11831 warning rows. The frozen-main 42d992b02adb landing/ancestry evidence is separate from behavior qualification or contribution ownership. No other target's removal is inferred.

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.

Publication source freshness: eleven debt heads were refreshed from the saved 06:18 UTC guard. Their selected patches keep identical ordered added/deleted lines: ten differ only in hunk coordinates; #9087 also has inherited context updates (qsort_r, error-text/reference qualifications, bsearch_s zero stride, directory flock and _Fltrounds/logb positioning). Preserve that newer inherited context rather than restoring the old paragraphs. Raw patches and whole files are not identical; this is no whole-branch semantic or runtime equivalence claim. The same-head #12420 state changed to MERGED; its merge 1764ec5c60a1 and author head are verified ancestors of frozen main 3b32cc7b61f1. That is baseline ancestry only, not our contribution or runtime acceptance; no later bot-membership removal is inferred.

Later source-pin capture: the newer ten debt pins listed here come from the saved 2026-10-30T06:30:59.721645+00:00 publication guard and were matched by complete current primary file records. All selected raw patch strings are byte-identical to the preceding accepted source refresh; earlier guard times describe that earlier phase, not these later pins. This adds no whole-branch or runtime qualification.

Additional #9087 source refresh at the saved 2026-10-30T06:38:18.321759+00:00 guard: the listed 29d8de386f91 debt patch is complete, but not raw/offset-only identical to the preceding patch. Its wide-scanner paragraph inherits newer rules on both sides: %p length modifiers are ignored; scanset ranges, narrow length forms, L integers, unknown conversions and unterminated sets have module-specific handling, with unknown conversions on empty input explicitly unmeasured. The original secure-size ABI/short-buffer distinctions are unchanged within that paragraph. Preserve these newer caveats rather than restoring the earlier broad throw descriptions; this is debt-source review, not validation of the foreign scanner implementation or console behavior.


New captured #13186 debt intersection, source only

Against owned beba15a60f1223d6db34cc79cd282cb75a081c0d, the complete selected libc.md patch at #13186 70abd3a2be069e5b78e7162bf8a26ed5c4f8b8a7 adds one __inet_aton/__inet_addr paragraph: null text throws std::invalid_argument here while the candidate reports a null dereference fault on console. Preserve that exception-versus-fault qualification as candidate-reported debt, not our console measurement.

Keep fcloseall's separate void ABI, unmeasured console signature/edge cases, ignored close errors, host-descriptor caveat and unsupported concurrent ordinary I/O/destruction. This prose does not qualify native FILE lifetime, aliases/UTF16, cancellation or the #10755 integration gate. No implementation/export, combined runtime, order or whole-table approval follows. Historical test pins remain unchanged. AI-assisted (Codex).

@B-Howell

Copy link
Copy Markdown
Contributor Author

Private combined validation now covers published #11831 beba15a60f1223d6db34cc79cd282cb75a081c0d plus exact #10755 92f4276f28e9643fe7e336e1cc40ee02f30277da, on frozen main dc38224141e0b6096007b876b4c42fc9144d11b8. The local-only composition is ebd07d1d6b48e08fd32a60bd561239eede4816ae, tree b56380eb37aefbaed68c673df911e67a5b8d75b1; neither public branch was changed.

The composition places descriptor cleanup inside CloseNativeUnderGate, retains FILE-before-positioned-lock scope across native close, and releases the ordinary reopen guard before allocating its replacement while retaining #11831's native FILE identity, registry/alias lifetimes, wide-state resets and host-output behavior. The original #10755 race/archive fixtures remain intact. An added actual fcloseall/alias case checks append/CLOEXEC, random and directory descriptor reuse.

With identical fixtures, the #11831-alone arm passes ten selected cases and fails the three expected cleanup cases on both Windows and Linux; the new close-all control exits 204 at stale status flags. The combined arm builds and passes all 13 selected cases three times on each platform (39 passes/no skips): Windows 11/WinLibs GCC 15.2.0 r7 Release and Ubuntu 22.04.1/GCC 11.4 Release. Public-header audits and frozen-main conventions also pass. This is focused private combination evidence, with no full-suite or console claim.

The source adaptation and fixtures are not included in the public #11831 branch yet. Author-order agreement, other overlap/composition obligations and subsequent public-head review remain separate; this result is not consent or readiness. The existing order proposal remains unchanged, and #11831 stays draft.

AI-assisted: yes (Codex).

@B-Howell

Copy link
Copy Markdown
Contributor Author

The macOS x86_64 relinker job failed on published beba15a60f1223d6db34cc79cd282cb75a081c0d: job123770132739, sole failed case mulx_lowering (MULX changed arithmetic flags,1.28s);498/499 CTests passed, exit8. This is a real failed check, not a stream-test failure.

The job checked out main 4c8cff191609bc5f28bf9ee2f93672b531285aa4 and merged this PR only. core/relinker, root/relinker CMake, the workflow and dependency gitlinks are identical between that main and this head. mulx_lowering_tests links relinker_core; relinker-only configuration excludes guest libc, so the new fcloseall implementation is not linked into this failing executable. The job uses macOS26.6.2(25G83), AppleClang21.0.0.21000101, Release x86_64 under Rosetta, with CTest parallel4.

An earlier #9162 report records the same hosted diagnostic; I verified its reported head has byte-identical MULX emitter and test sources. Its follow-up also leaves the cause unresolved and records an existing diagnostic-only change. Those local passes are not proof of a hosted flake or a main runtime pass. This log lacks the failing operand case and expected/actual flag values; no causal fix is established. No assertions/source were changed, and no local rerun or CI retry was performed.

AI-assisted: yes (Codex).

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

B-Howell commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor Author

Focused qualification of 4a435cca770907c13c2445505b3f7ef8fc7881cc (tree 77eb45c4ad8ce58f4ed6a66852242ed71436b069), ordinary merge of frozen main fd41cca5d9133081edc27e21f87f53d73b6aa53b into the earlier 136c01112bef728d3b2937634665575f3430cc7c integration. The five fcloseall source/fixture deltas are preserved; all main debt text and the owned fcloseall paragraph remain.

Windows 11 / WinLibs GCC 15.2.0 r7 and Ubuntu 22.04 WSL2 / GCC 11.4, Release, separate new caches, at most two build jobs, platforms serial: 36 passes per OS, 72 total; zero failures/skips. Eleven registered cases each ran three times (33), followed by three separate existing file_streams invocations with three unique child-only ANYPS5_LOG_FILE paths (3). The selected cases include all five guest_standard_streams registrations (default, closed stdout, exclusive stdout, reopen closed stdout, update stdout), plus public_headers audit, guest_stream_purge, file_stream_status, file_streams, guest_freopen_host_standard, and Windows guest_stream_buffer_host_write or Linux log_file. Internal FileStreams child modes are not extra registered cases. Existing explicit 10/20/90-second timeouts remain; cases without one use a 30-second runner limit.

Built actual production libc and fixtures; same-build PE/ELF binding and native/runtime artifacts are retained. Release failure checks remain active. All six alternate log files were observed. Linux's native log_file fixture uses unique /tmp scratch: bounded before/after observations are retained, but transient exact paths and cleanup success are not established by exit status. No parent/child startup-count or live Windows PID-module claim.

These results stay pinned to 4a/fd41; the earlier 136c 42-pass results and all historical controls retain their original pins. This is not targeted correctness approval of the separate GLIBC scanner, strerror_s, UDP, release packaging, install/export or every overlap row. No console/title/GPU, cancellation-family or #10755 descriptor-reuse clearance. The functional #10755 public integration/final-head gate, human/CI and coordination requirements remain; this stays draft.

AI-assisted: yes (Codex).

CI configuration prerequisite — 2026-10-30

CI-only integration 035245f793d7157dc0ea9a1219ced0bbafeca85d (tree 8cabff0d10a59c419afec7badfb05f57e54acbaa) retains original #13220 commit e9f09f54fabb6408d3e2711b8df10c10112ab00e as its second merge parent, after 4a435cca770907c13c2445505b3f7ef8fc7881cc. Whole-tree and source-pin verification confirms only core/libs/tests/write_watch/CMakeLists.txt changes: five lines deleting the repeated execute-fault/read-fault registration. No libc implementation or fixture source changes.

Configuration-only comparison used the exact exported four-file graphs: the old graphs match across #11831/#12271, the fixed graphs match across both integrations, and all three companion C++ files are unchanged. Two shared arms per OS were configured serially: Windows CMake 4.4.4 / WinLibs GCC 15.2.0 r7 / Ninja 1.13.2 and WSL CMake 3.22.1 / GCC 11.4 / Ninja 1.10.1. Both old arms failed on both duplicate names after genuine native compiler/Threads probes; both fixed arms configured/generated successfully. Each fixed generated inventory contains exactly 18 unique name/executable/mode mappings with 30-second timeouts. These are four configure checks (two expected RED, two GREEN), not 18 runtime passes. No fixture build or CTest execution occurred.

The 72 native passes remain pinned to 4a435cca770907c13c2445505b3f7ef8fc7881cc / frozen fd41cca5d9133081edc27e21f87f53d73b6aa53b; they were not rerun or retargeted to this integration. The functional #10755 public integration/final-head gate, author coordination, human/bot review and verified main landing remain open; this PR stays draft.

New-head hosted CI qualification remains pending after publication. No macOS tests were run locally; the earlier hosted failure and all historical results retain their original heads. This configuration result does not establish platform/runtime, whole-product or dependency-order clearance.

Host-stream integration and focused follow-up — 2026-10-30

Candidate 0db63ae0011f859a41c04f6d277835f39e1c9938 retains public 035245f793d7157dc0ea9a1219ced0bbafeca85d, the ordinary main merge anchored to deliberately frozen badd7cd5b8d3f06118d7aced81e8875cc71da407, original #13220 e9f09f54fabb6408d3e2711b8df10c10112ab00e, and both original #13390 author commits through its exact head 4cf81e1d1d4aebae35b813dd8dc89a118d72beba. This preserves upstream authorship and the existing stream-lifetime/alias logic. It adds #13390's host-output preservation and fixed Windows standard-FILE identity, then restores entry errno when a real keep helper returns a negative result and continues the guest reopen, matching its best-effort failure policy.

Focused Release evidence on the same machine (Windows 11 / WinLibs GCC 15.2.0 r7; Ubuntu 22.04 WSL2 / GCC 11.4, glibc 2.35):

  • Windows control a3cb2a218b8754e930e2df68abab7fb581ca5dea fails both real stdout/stderr keep-return cases specifically because errno leaks into the native-open callback. Candidate b49bb5c9ba74ab6d9d8df6674e10d3f270ff9041 passes ten native cases and one audit-only header check. These runtime pins are retained; Windows was not rerun on the later Linux-only fixture amendments.
  • Linux control 00b952303c9ab2cf320e74c63dbefec795be3f5c passes three native cases. Candidate 0db63ae0011f859a41c04f6d277835f39e1c9938 passes eleven native cases and one audit-only header check, with zero failures/skips. Each arm includes a direct native freopen setup in a fresh process and a real-helper/lease/gate/Reopen consumer in another, requiring identical return/errno for the same closed-stdout state and pathname. This is host-outcome coverage, not a Linux RED discriminator or a hardcoded ENOENT requirement.
  • The planned evidence across these pins totals 28 selections: two expected Windows control failures, 24 native passes and two audit-only passes. It is not 28 candidate passes or a Windows runtime result for the final Linux head. Earlier Linux control failures from an unsupported ENOENT assumption, and its one print-only observation, remain separate. A private inventory-path check also stopped before tests; after correcting that helper alone, the already-compiled exact control was verified and reused. No production/assertion change was made for that helper stop.

The later source amendments affect only Linux fixture/dispatch and Linux CMake registration; production and Windows test branches remain unchanged. The selected cases cover host-log isolation, both platform-specific keep-failure paths, all five guest-standard-stream modes, file_streams and guest_freopen_host_standard. Real production/fixture builds, Release checks, same-arm PE/CTest PATH or ELF/ldd bindings and artifacts were retained; no live CPU PID/module or patched-NID tracing is claimed. Both borrowed workspaces and their prior protected artifacts were restored, and all owned processes ended.

This integrates frozen main badd7cd, not every later main revision. A bounded source check at observed main f1e340be4a6e67440f1d2b2574ede902140cbed4 found the coupled stream implementation/helpers and libc CMake unchanged; two related fixtures switched temporary-file allocation to the shared helper (Linux still uses std::tmpfile, Windows uses its temp-directory path). That later main context was not integrated or runtime-qualified here. All older qualifications above remain at their stated pins.

#10755 remains a functional public-branch integration/final-head qualification prerequisite, with author-order agreement and reviewer acceptance still outstanding. #13220 and #13390 remain open dependencies; preserving their source ancestry is not proof of main landing or author-order agreement. This PR stays draft. New-head hosted CI, current overlap/lifecycle/cancellation obligations, macOS/WebAssembly, full-suite, install/export, console/title/GPU and verified main landing are not cleared by these focused results.

@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label 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