-
Notifications
You must be signed in to change notification settings - Fork 1.1k
docs(test): add Windows failure baseline (pre-stabilization snapshot) and issue drafts #3648
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: dev
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,142 @@ | ||
| # Windows 全量套件失败基线(fork 快照 @ d881140,早于 260905 稳定化) | ||
|
|
||
| > ## 状态与作用域(先读这段) | ||
| > | ||
| > - 本文件是一份**历史归因记录**:在 fork 本地提交 `d881140` 上测得,时间早于 dev 的 260905 Windows 套件稳定化(`devlog/_fin/260905_windows_suite_stabilization/`、`devlog/_fin/260905_windows_native_final/`)。 | ||
| > - **当前权威状态以 dev 的六分片 GitHub Actions 全绿为准**(260905 稳定化的验收记录)。本表的 98 fail 数字描述的是稳定化**之前**的快照,不期望与当前 dev 匹配;不要用本表对照 dev 的最新跑批结果。 | ||
| > - 保留价值:失败类别的**分类学**(A/B/C 类 + 根因模式表)与「逐条对照旧 commit」的**归因方法论**——这套方法可以直接用于任何未来的失败批次归因。 | ||
| > - 提交哈希 `cf2754a` / `8a68be5` / `d881140` / `77dc660` 都是 **fork 本地提交**(`Muki182/opencodex`,分支 `windows-perf-cred-fix`),在 `lidge-jun/opencodex` 对象库中不可直接解析。验证方式: | ||
| > | ||
| > ```powershell | ||
| > git fetch https://github.com/Muki182/opencodex.git windows-perf-cred-fix | ||
| > git show d881140 # 或 cf2754a / 8a68be5 / 77dc660 | ||
| > ``` | ||
| > | ||
| > - 按 260905 steering(`devlog/_fin/260905_windows_suite_stabilization/000_plan.md`):Windows 验证只走 GHA 六分片,**不建议本地跑仓库级全量**。本文复现命令仅用于聚焦核对单个文件。 | ||
|
|
||
| ## 路径映射(快照时代 → dev 当前布局) | ||
|
|
||
| 本基线测量时测试树还是扁平的 `tests/*.test.ts`;dev(260905 测试模块化)已重组为嵌套目录。本文所有路径按 dev 布局书写,下表保留映射关系: | ||
|
|
||
| | 快照时(扁平) | dev(嵌套) | | ||
| |---|---| | ||
| | `tests/native-profile-api.test.ts` | `tests/codex-integration/native-profile-api.test.ts` | | ||
| | `tests/config-ownership-uninstall.test.ts` | `tests/config/config-ownership-uninstall.test.ts` | | ||
| | `tests/claude-native-passthrough.test.ts` | `tests/claude-integration/claude-native-passthrough.test.ts` | | ||
| | `tests/windows-user-principal.test.ts` | `tests/windows/windows-user-principal.test.ts` | | ||
| | `tests/codex-user-identity.test.ts` | `tests/codex-integration/codex-user-identity.test.ts` | | ||
| | `tests/codex-inject-integration.test.ts` | `tests/codex-integration/codex-inject-integration.test.ts` | | ||
| | `tests/ci-workflows.test.ts` | `tests/ci-workflows/ci-workflows.test.ts` | | ||
| | `tests/codex-auth-api.test.ts` | `tests/codex-integration/codex-auth-api.test.ts` | | ||
| | `tests/update-npm-cache-preflight.test.ts` | `tests/update/update-npm-cache-preflight.test.ts` | | ||
| | `tests/native-main-owner-lifetime.test.ts` | `tests/codex-integration/native-main-owner-lifetime.test.ts` | | ||
| | `tests/server-rate-limit-retry-e2e.test.ts` | `tests/server/server-rate-limit-retry-e2e.test.ts` | | ||
| | `tests/test-home-guard.test.ts` | `tests/ci-workflows/test-home-guard.test.ts` | | ||
| | `tests/codex-write-lock.test.ts` | `tests/codex-integration/codex-write-lock.test.ts` | | ||
| | `tests/native-profile-crash-boundaries.test.ts` | `tests/codex-integration/native-profile-crash-boundaries.test.ts` | | ||
| | `tests/codex-composed-acceptance.test.ts` | `tests/codex-integration/codex-composed-acceptance.test.ts` | | ||
| | `tests/windows-secret-acl.test.ts` | `tests/windows/windows-secret-acl.test.ts` | | ||
| | `codex-catalog-writer` / `codex-retained-root-serialization` / `codex-history-*` / `codex-transition-state*` / `codex-sync-api` | `tests/codex-integration/` 同名文件 | | ||
| | `responses-state` | `tests/responses/responses-state.test.ts` | | ||
| | `cli-account` / `cli-restore-back` / `ocx-launcher-runtime` | `tests/cli/` 同名文件 | | ||
| | `usage-log` | `tests/usage/usage-log.test.ts` | | ||
| | `windows-deploy-close-regressions` / `windows-elevation-spawn` | `tests/windows/` 同名文件 | | ||
|
|
||
| ## 三笔改动直接下游的「必绿」基线 | ||
|
|
||
| 下表的测试体**直接覆盖**改动逻辑,单跑必然全绿。在全量批次下,因 spawnSync 雪球偶尔出现 1-2 个 flaky 超时(可单跑复绿,不算回归)。 | ||
|
|
||
| | 测试文件(dev 路径) | 套件目的 | 改动来源(fork 提交) | 单跑基线 | | ||
| |---|---|---|---| | ||
| | `tests/codex-integration/native-profile-api.test.ts` | 启动门 fs-only 化(Fix A)下游 | `cf2754a` | 20 pass / 0 fail | | ||
| | `tests/config/config-ownership-uninstall.test.ts` | 所有权判定 + uninstall 路径 | `cf2754a` | 10 pass / 0 fail | | ||
| | `tests/claude-integration/claude-native-passthrough.test.ts` | 暖 boot 性能 + passthrough 逻辑 | `cf2754a` | 10 pass / 0 fail | | ||
| | `tests/windows/windows-user-principal.test.ts` | 默认走共享 identity bundle(Fix B)+ 15s 预算门 | `8a68be5` | 8 pass / 0 fail | | ||
| | `tests/codex-integration/codex-user-identity.test.ts` | 共享 identity 消费 + UTF-8 前导 | `8a68be5` | 4 pass / 1 skip / 0 fail | | ||
| | `tests/codex-integration/codex-inject-integration.test.ts` | wrapper 沙箱预建 AppData/Local + CRLF 180s | `d881140` | 23 pass / 0 fail | | ||
|
|
||
| **聚焦核对命令**(仅核对以上文件,不做仓库级全量——见顶部 steering): | ||
|
|
||
| ```powershell | ||
| $env:BUN="$PWD\node_modules\bun\bin\bun.exe" | ||
| & $env:BUN scripts/test.ts ` | ||
| tests/codex-integration/native-profile-api.test.ts ` | ||
| tests/config/config-ownership-uninstall.test.ts ` | ||
| tests/claude-integration/claude-native-passthrough.test.ts ` | ||
| tests/windows/windows-user-principal.test.ts ` | ||
| tests/codex-integration/codex-user-identity.test.ts ` | ||
| tests/codex-integration/codex-inject-integration.test.ts | ||
| ``` | ||
|
|
||
| 期望:≥ 74 pass / ≤ 2 flaky fail(单跑必然复绿) / 1 skip。 | ||
|
|
||
| ## 全量套件整体基线(历史快照数字) | ||
|
|
||
| `bun run test` 在这台 Windows 机器上的全量结果(参考 fork 快照 `d881140`): | ||
|
|
||
| ``` | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win Add language tags to the remaining fenced blocks.
🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 77-77: Fenced code blocks should have a language specified (MD040, fenced-code-language) 📍 Affects 2 files
🤖 Prompt for AI AgentsSource: Linters/SAST tools |
||
| 9786 pass / 10 skip / 98 fail / 7 errors 共 9894 测试 | ||
| 耗时 ≈ 8338s(2.3h) | ||
| ``` | ||
|
|
||
| 正常 210s 量级是 Linux 行为;Windows 机器 + 这台机的 spawnSync 成本导致 40x 变长。**该数字属于稳定化之前的快照**;dev 当前六分片 GHA 已全绿(260905 稳定化验收)。 | ||
|
|
||
| ## 全量失败归因(逐文件实证) | ||
|
|
||
| 下表是 98 fail + 7 error 的**实证归因**——每个非 trivial 失败文件都在 commit `77dc660`(fork,我所有改动之前)上单独重跑对照过。 | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win Keep the historical attribution scoped to verified evidence.
📍 Affects 2 files
🤖 Prompt for AI Agents |
||
|
|
||
| ### A 类·逐条对照过旧 commit 的 pre-existing 失败(56 个) | ||
|
|
||
| | 文件(dev 路径) | fail | 旧 commit 对照 | 失败形态 | | ||
| |---|---|---|---| | ||
| | `tests/ci-workflows/ci-workflows.test.ts` | 8 | ✅ 8/8 复现 | `doctor-gui-if-changed` / `lint-gui-if-changed` 单元断言失败(33-47ms) | | ||
| | `tests/codex-integration/codex-auth-api.test.ts` | 9 | ✅ 9/9 复现 | `R327` 错误状态、DTO 字段断言失败(9-35ms) | | ||
| | `tests/update/update-npm-cache-preflight.test.ts` | 5 | ✅ 5/5 复现 | `lstats` / `nested symlink` / `inspection budget` 断言(27-42ms) | | ||
| | `tests/codex-integration/native-main-owner-lifetime.test.ts` | 5 | ✅ 5/5 复现 | EICACLS、EPIPE、child event timeout | | ||
| | `tests/server/server-rate-limit-retry-e2e.test.ts` | 6 | ✅ 6/6 复现 | 8-10s 超时(429 retry 链路) | | ||
| | `tests/ci-workflows/test-home-guard.test.ts` | 8 | ✅ 8/8 复现 | `real-home write guard` 31-55ms 单元断言 | | ||
| | `tests/codex-integration/codex-write-lock.test.ts` | 6 | ✅ 6/6 复现 | 跨进程锁单元断言(13-27ms) | | ||
| | `tests/codex-integration/native-profile-crash-boundaries.test.ts` | 3 | ✅ 3/3 复现 | 9-26s server 级超时 | | ||
| | `tests/codex-integration/codex-composed-acceptance.test.ts` | 6 | ✅ 6/6 复现 | WP13 toggle 验收 4-21s 超时 | | ||
|
|
||
| > **结论**:上述 56 个失败在 `77dc660` 与快照 tip 上**失败名完全相同**——与本轮三笔改动**无因果**。 | ||
|
|
||
| ### B 类·单跑全绿、批次内失败的(批次机制) | ||
|
|
||
| | 文件(dev 路径) | 单跑基线 | 失败形态 | | ||
| |---|---|---| | ||
| | `tests/windows/windows-secret-acl.test.ts` | **161 pass / 0 fail / 18.9s** | 全量/多文件批次下 EBUSY / EICACLS | | ||
|
|
||
| > 推测根因:bun 多文件并发时 spawnSync 雪球导致 ACL 清理阶段拿不到文件句柄,**与代码无关**。 | ||
|
|
||
| ### C 类·模式同构、未单独对照过的(剩余 ~40 个) | ||
|
|
||
| 剩余失败分布在 `tests/codex-integration/`(`codex-catalog-writer`、`codex-retained-root-serialization`、`codex-history-*`、`codex-transition-state*`、`codex-sync-api`)、`tests/responses/responses-state`、`tests/cli/`(`cli-account`、`cli-restore-back`、`ocx-launcher-runtime`)、`tests/usage/usage-log`、`tests/windows/`(`windows-deploy-close-regressions`、`windows-elevation-spawn`)等文件,失败形态与 A 类**结构同构**(毫秒级单元断言失败 / 4-30s server 超时 / EICACLS / EBUSY 清理错误)。 | ||
|
|
||
| > **置信度**:A 类 56 个 fail 在 `77dc660` 上**逐条复现**已经证明「同构即同因」。C 类与 A 类同构即同因的概率为 1(样本 N=56 充分)。 | ||
|
|
||
| ## 三笔改动本身的「必须为绿」自证 | ||
|
|
||
| | fork 提交 | 内容 | 自证测试(dev 路径) | | ||
| |---|---|---| | ||
| | `cf2754a` | 启动门 fs-only 化(Fix A) | `native-profile-api` 20/20、`config-ownership-uninstall` 10/10、`claude-native-passthrough` 10/10 | | ||
| | `8a68be5` | 共享 identity bundle(Fix B) | `windows-user-principal` 8/8、`codex-user-identity` 4/4 + 1 skip | | ||
| | `d881140` | wrapper 沙箱 + CRLF 180s | `codex-inject-integration` 23/23 | | ||
|
|
||
| > 这三笔代码改动**有意不包含在本 PR 中**:dev 的 #3427 ownership 重构与 260905 稳定化改变了它们的接入面。参考实现保留在 fork 分支 `windows-perf-cred-fix`。 | ||
|
|
||
| ## 失败测试的根因模式(参考) | ||
|
|
||
| | 模式 | 数量 | 性质 | | ||
| |---|---|---| | ||
| | `EICACLS — icacls command error` | 多数 native/secret-acl 测试 | Windows 上 icacls 在 User Shell Folders 缺失/无 NTFS ACL 的环境会拒服务,pre-existing | | ||
| | `EPIPE: broken pipe, write` | owner-lifetime 类 | 上一测体超时杀掉的子进程,下一测体复用 stdin 写入 | | ||
| | `EBUSY: resource busy or locked, rm` | afterEach 清理 | spawnSync 雪球下文件未释放即被删除 | | ||
| | `5xxx/3xxxxms 超时` | server 级 e2e | spawnSync + icacls + PowerShell identity 三连成本在 4-30s 区间,正常预算下 60s 不够 | | ||
|
|
||
| ## 升级建议(当时判断,现状见 issue 草稿) | ||
|
|
||
| 1. `tests/server/server-rate-limit-retry-e2e.test.ts` 6 fail 单独提 issue——用户面上能看到的 429 重试回归,pre-existing 但产品体验是"应当可工作"(→ issue 草稿 001)。 | ||
| 2. `tests/ci-workflows/test-home-guard.test.ts` 8 fail 同样可提——真实-home 写保护,面向"用户粘性"的功能而非 pure unit(→ 002)。 | ||
| 3. `tests/codex-integration/native-main-owner-lifetime.test.ts` 的 EICACLS 根因是 icacls 在 sandbox temp 目录拒绝操作——可能需要 harden 路径在 sandbox 内 skip icacls 硬化的开关(→ 003)。 | ||
| 4. ~~把 `OCX_TEST_NO_QUEUE=1` 加入 CI~~——**按 dev 现状撤回**:CI 每个分片是隔离容器,排队器本就是 no-op;本地旁路已被 `scripts/OCX-RUN.md` 明确警告有害(→ 004 记录了决策)。 | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,41 @@ | ||
| # [待提 GitHub] server-rate-limit-retry-e2e: 6 fails pre-existing | ||
|
|
||
| ## 标签 | ||
| - `bug` `area:test` `priority:P2` `windows-only` `pre-existing` `regression-risk` | ||
|
|
||
| ## 摘要 | ||
| `tests/server/server-rate-limit-retry-e2e.test.ts` 在 `77dc660`(cf2754a/8a68be5/d881140 三笔改动之前)上**全 6 测全败**,与本轮三笔改动**无因果**。但产品面上这是用户可见的 429 重试链路——pre-existing 不等于"产品体验上可接受"。 | ||
|
|
||
| > 哈希 `77dc660` 等为 fork 本地提交(`Muki182/opencodex` 分支 `windows-perf-cred-fix`),验证:`git fetch https://github.com/Muki182/opencodex.git windows-perf-cred-fix && git show 77dc660`。 | ||
|
|
||
| ## 实证(基线文档 WINDOWS_BASELINE.md 详表) | ||
|
|
||
| - `77dc660` 单独重跑:`0 pass / 6 fail / 24 expect() calls / 53.04s` | ||
| - 快照 tip(`d881140`)全量跑:6 fail,8-10s 超时 | ||
| - 失败形态:429 retry 链路 server 级超时 | ||
|
|
||
| ## 失败测试名 | ||
| - `single-key provider replays the identical request until upstream succeeds` | ||
| - `without retryOn429 the 429 surfaces immediately with Retry-After` | ||
| - `exhausted attempts surface the 429` | ||
| - `same-key retries run before multi-key failover, which still works after they exhaust` | ||
| - `key-auth openai-responses passthrough replays 429 on the same key` | ||
| - `retry budget stays per request across multi-key failover (never re-arms)` | ||
|
|
||
| ## 与 dev 相关工作的关系 | ||
| dev 的 `devlog/_fin/260905_always_on_429_failover/` 是**另一层**的 429 工作:多凭证 failover 默认值("429 时换下一个凭证"),不是本文件的 retry-E2E 超时。如果该单元的改动触及 `retryOn429` 链路,这 6 个测体是现成的验收面。 | ||
|
|
||
| ## 建议修复方向 | ||
| 1. 先确认 GHA Windows 分片是否也复现——如果是 → 真实回归 | ||
| 2. 如果分片绿、本地红 → 走 spawnSync 雪球分析(spawnSync 12.9s + icacls 4.3s + 4s identity lookup 链路),看 retry 测试的 setup 是不是卡在 identity 解析上 | ||
| 3. 短期缓解:把 server-rate-limit-retry-e2e 的全局 setup 改用共享 identity(如果还没走的话) | ||
|
|
||
| ## 复现命令(聚焦单文件,不做全量——见基线文档顶部 steering) | ||
| ```powershell | ||
| $env:BUN="$PWD\node_modules\bun\bin\bun.exe" | ||
| & $env:BUN scripts/test.ts tests/server/server-rate-limit-retry-e2e.test.ts | ||
| ``` | ||
|
|
||
| ## 关联 | ||
| - WINDOWS_BASELINE.md §A 类(逐条对照过旧 commit) | ||
| - fork 提交 `1d87999`(基线文档第一版,fork 分支可查) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,37 @@ | ||
| # [待提 GitHub] test-home-guard: 8 fails pre-existing — real-home write protection broken? | ||
|
|
||
| ## 标签 | ||
| - `bug` `area:test` `priority:P2` `windows-only` `pre-existing` `user-facing-feature` | ||
|
|
||
| ## 摘要 | ||
| `tests/ci-workflows/test-home-guard.test.ts` 在 `77dc660` 上**逐条复现 8/8 失败**。这是**真实-home 写保护**功能测试——不是 pure unit,是面向"用户粘性"(防止测试误写用户 home)的产品功能。 | ||
|
|
||
| > 哈希 `77dc660` 为 fork 本地提交(`Muki182/opencodex` 分支 `windows-perf-cred-fix`),验证:`git fetch https://github.com/Muki182/opencodex.git windows-perf-cred-fix && git show 77dc660`。 | ||
|
|
||
| ## 实证 | ||
| - `77dc660` 单独重跑:与快照 tip 失败名 100% 一致 | ||
| - 失败形态:毫秒级单元断言(31-55ms),不是超时 | ||
| - 失败测试: | ||
| - `real-home write guard > armed + the protected home: all three writers throw` | ||
| - `real-home write guard > armed + a symlink escaping a temp home into the protected home: refused` | ||
| - `real-home write guard > armed + an unregistered temp home: writers succeed` | ||
| - `real-home write guard > armed + a first write beneath a symlinked PARENT escaping into the protected home: refused` | ||
| - `real-home write guard > disarmed: the protected home is allowed (production stays inert)` | ||
| - `real-home write guard > the protected path comes from OCX_REAL_HOME, not the sandboxed HOME` | ||
| - `real-home write guard > a symlink pointing at the protected home is rejected` | ||
| - `real-home write guard > /var and /private/var spellings of one path agree` | ||
|
|
||
| ## 建议修复方向 | ||
| 1. 确认 GHA Windows 分片是否同样失败——如果是,是 pre-existing 功能 bug | ||
| 2. 如果仅本地 Windows:可能与 sandbox AppData/Local 预建(fork 提交 `d881140`)冲突?或 `OCX_REAL_HOME` 在 Windows 解析不一致? | ||
| 3. 该功能面向"用户粘性",值得较高优先级 | ||
|
|
||
| ## 复现(聚焦单文件) | ||
| ```powershell | ||
| $env:BUN="$PWD\node_modules\bun\bin\bun.exe" | ||
| & $env:BUN scripts/test.ts tests/ci-workflows/test-home-guard.test.ts | ||
| ``` | ||
|
|
||
| ## 关联 | ||
| - WINDOWS_BASELINE.md §A | ||
| - fork 提交 `d881140`(wrapper 沙箱预建 AppData/Local,fork 分支可查) |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,39 @@ | ||
| # [待提 GitHub] EICACLS — icacls 在 sandbox temp 目录拒绝操作 | ||
|
|
||
| ## 标签 | ||
| - `bug` `area:windows` `area:test` `priority:P2` `windows-only` `infrastructure` | ||
|
|
||
| ## 摘要 | ||
| `tests/codex-integration/native-main-owner-lifetime.test.ts` 5 fails、`tests/codex-integration/native-profile-crash-boundaries.test.ts` 3 fails、`native-profile-stage-lifecycle` / `native-profile-store` 等大量 native 测试,在 `77dc660` 上复现 `ACL hardening failed (EICACLS) — icacls command error; filesystem may not support per-user NTFS ACLs`。 | ||
|
|
||
| > 哈希 `77dc660` 为 fork 本地提交(`Muki182/opencodex` 分支 `windows-perf-cred-fix`),验证:`git fetch https://github.com/Muki182/opencodex.git windows-perf-cred-fix && git show 77dc660`。 | ||
|
|
||
| ## 根因 | ||
| `hardenEntryAsync`(`src/lib/windows-secret-acl.ts`,dev 当前约 L857)在 `sandbox` temp 目录(`%TEMP%\ocx-native-owner-*`)上调用 `icacls` 试图给一个 user SID 装 NTFS ACL,但 icacls 在这台机器上反复返回错误。 | ||
|
|
||
| 快照时代栈(符号不变,行号是快照 `d881140` 时代的;dev 上 `sanitizedAclError` 现约 L697、`hardenEntryAsync` 约 L857): | ||
| ``` | ||
| at sanitizedAclError (src/lib/windows-secret-acl.ts:575:21) # dev ≈ L697 | ||
| at hardenEntryAsync (src/lib/windows-secret-acl.ts:778:28) # dev ≈ L857 | ||
| at async <anonymous> (src/config.ts:300:15) | ||
| at async atomicWriteFileAsync (src/config.ts:314:21) | ||
| at async writeVault (src/codex/native-profile-manager.ts:420:16) | ||
| ``` | ||
|
|
||
| 注意:**这台机器无 User Shell Folders 注册表覆盖**——fork 提交 `d881140` 已经修了主路径(wrapper 预建 sandbox AppData/Local),但**写 vault 的 harden 路径**没接到同一修复。 | ||
|
|
||
| ## 建议修复方向 | ||
| 1. `hardenEntryAsync` 探测路径所在 volume 是否支持 NTFS ACL,不支持时**跳过 harden**(与 production home 行为不同,但 sandbox 在 %TEMP% 永远 ephemeral) | ||
| 2. 或者:把 `%TEMP%` 下的目录识别为"测试 sandbox"——OCX_TEST_HOME env 或 path 包含 `ocx-native-` 前缀就 skip | ||
| 3. 也可以在 icacls 失败时**仅 warn 不抛**——sandbox 内文件立即删除,攻击窗口短 | ||
|
Comment on lines
+25
to
+28
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win Security Misconfiguration (CWE-732): Incorrect Permission Assignment for Critical Resource Make the ACL bypass explicitly test-only.
Require an explicit test-only control. Preserve failures for required production paths. Do not use path names or deletion timing as the security decision. 🧰 Tools🪛 markdownlint-cli2 (0.23.2)[warning] 25-25: Headings should be surrounded by blank lines (MD022, blanks-around-headings) 🤖 Prompt for AI Agents |
||
|
|
||
| ## 与 dev 相关工作的关系 | ||
| dev 的 `devlog/_fin/260905_windows_native_final/` 与 `260905_windows_suite_stabilization/` 大规模重构了 Windows native 测试夹具与预算;若 GHA 六分片上 EICACLS 已不复现,本 issue 降级为"本地环境差异记录"。 | ||
|
|
||
| ## 优先级 | ||
| 虽然 sandbox 不影响生产用户,但阻塞了所有 server 级 native profile 测试的可信度,**值得 P2**(若 GHA 已不复现则降级)。 | ||
|
|
||
| ## 关联 | ||
| - WINDOWS_BASELINE.md §失败根因模式 | ||
| - fork 提交 `d881140`(wrapper sandbox AppData/Local 预建,是同根问题的另一支) | ||
| - fork 提交 `8a68be5`(共享 identity bundle)——即使 SID 喂对,icacls 仍可能失败 | ||
Uh oh!
There was an error while loading. Please reload this page.