fix(windows): let W1 Glob skip nested junctions - #3955
Draft
sunrioa wants to merge 4 commits into
Draft
Conversation
Generated-by: OpenAI Codex
Generated-by: OpenAI Codex
Generated-by: OpenAI Codex
Generated-by: OpenAI Codex
sunrioa
force-pushed
the
codex/fix-windows-glob-junctions
branch
from
August 27, 2026 03:04
cf968e3 to
31f2292
Compare
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Globenumerate ordinary files beside nested NTFS junctions without traversing the junctions.nonFollowingReadRootpolicy and partition the approved root into bounded physical-directory ACL grants. Nested reparse entries receive no grants, and their targets are not traversed or granted access through the link.brace-expansionto5.0.9and regenerate the Desktop and CLI third-party notices.Refs #3938
Alternative to #3952. Default recursive-read admission remains unchanged; only explicitly marked, read-only W1 Glob plans use the new behavior. Junction entries themselves remain outside the ACL grant plan.
Security boundary
Verification
Current head and hosted verification
31f22927f922f84e9339bab2be0dde8e8ca1a70eThis commit only adds the missing
Generated-by: OpenAI Codextrailer to the preceding commit. Its source tree is identical tocf968e3e10e5e9452f9171637198f454b92bb6a4;git diffbetween the two commits is empty.Seven of the eight hosted workflows for the current head passed, including Release Windows check. Main CI failed in
graceful Host shutdown stops and drains an active Turn before releasing ownershipwithauthority_draining; subsequent Desktop E2E steps in that run were skipped. A passing main CI result for the current head is still pending.All eight hosted workflows reviewed on the preceding, tree-identical commit
cf968e3e10e5e9452f9171637198f454b92bb6a4passed, including:These earlier results are supporting evidence, not a substitute for passing CI on the current PR revision and merge base.
Local macOS verification
npm run lint,npm run format:check,npm run build, andnpm run typecheckapps/desktopandpackages/uinpm --workspace @maka/runtime test: 3,048 passed, 13 skipped, 0 failednpm run check:releasenpm run check:asf-source: 67 passedEarlier local Windows 11 x64 verification
The implementation was verified locally before the dependency-only follow-up:
npm run buildGlob(main.go)returned["main.go"]Glob(node_modules/@sunrioa/rin-sdk/**/*)returned[]The local
package:windows-x64wrapper encountered a missing/bin/bashin an unrelated standalone launcher check. Packaging was completed with the same Electron Builder configuration, and the resulting artifact passedverify:windows-x64.The dependency-only follow-up was not repackaged locally on Windows. Hosted Windows packaging and release verification have passed for the current head
31f22927f922f84e9339bab2be0dde8e8ca1a70e.AI use
Select exactly one:
Tool(s) and scope: OpenAI Codex analyzed the Windows ACL and filesystem-worker boundaries, implemented the policy, traversal, documentation, dependency, and regression-test changes, ran local verification, and reviewed the diff. I reviewed the implementation, Windows validation results, and PR text.
Checklist
Does this PR entail a change in behavior?
简体中文
摘要
Glob在目录树中存在嵌套 NTFS junction 时,仍能枚举旁边的普通文件,同时不遍历 junction。nonFollowingReadRoot策略,将批准的搜索根拆分为有界的物理目录 ACL 授权。嵌套 reparse 节点不获得授权,也不会通过链接遍历或授权其目标。brace-expansion更新为5.0.9,并重新生成 Desktop 和 CLI 的第三方许可证清单。关联 #3938。
这是 #3952 的替代实现。默认的递归只读准入规则保持不变,只有显式标记的 W1 Glob 只读计划才采用新行为;junction 节点本身也不会进入 ACL 授权计划。
安全边界
验证
当前提交与远程验证
31f22927f922f84e9339bab2be0dde8e8ca1a70e该提交仅为前一个提交补齐缺失的
Generated-by: OpenAI Codex标记。源码树与cf968e3e10e5e9452f9171637198f454b92bb6a4完全相同,两个提交之间的git diff为空。当前提交对应的 8 个远程工作流中有 7 个通过,包括 Windows 发布检查。主 CI 在
graceful Host shutdown stops and drains an active Turn before releasing ownership测试中因authority_draining失败,该次运行后续的 Desktop E2E 步骤被跳过。当前提交尚缺少通过的主 CI 结果。此前源码树相同的提交
cf968e3e10e5e9452f9171637198f454b92bb6a4中,已核对的 8 个远程工作流全部通过,包括:这些此前的结果仅作为补充证据,不能替代当前 PR 修订及合并基线上的 CI 通过结果。
本地 macOS 验证
check:release此前本地 Windows 11 x64 验证
在最后一次仅更新依赖的提交之前,已完成:
Glob(main.go)返回["main.go"]Glob(node_modules/@sunrioa/rin-sdk/**/*)返回[]本地
package:windows-x64包装脚本在无关的 standalone launcher 检查处遇到缺少/bin/bash的环境问题。随后使用同一 Electron Builder 配置完成打包,产物通过了verify:windows-x64。仅更新依赖的提交没有在本机 Windows 重新打包;当前提交
31f22927f922f84e9339bab2be0dde8e8ca1a70e已通过远程 Windows 打包和发布验证。