diff --git a/WINDOWS_BASELINE.md b/WINDOWS_BASELINE.md new file mode 100644 index 0000000000..30f6ea0395 --- /dev/null +++ b/WINDOWS_BASELINE.md @@ -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`): + +``` +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,我所有改动之前)上单独重跑对照过。 + +### 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 记录了决策)。 diff --git a/docs/issues/001-server-rate-limit-retry-e2e-pre-existing.md b/docs/issues/001-server-rate-limit-retry-e2e-pre-existing.md new file mode 100644 index 0000000000..c98ba06719 --- /dev/null +++ b/docs/issues/001-server-rate-limit-retry-e2e-pre-existing.md @@ -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 分支可查) diff --git a/docs/issues/002-test-home-guard-real-home-write-protection.md b/docs/issues/002-test-home-guard-real-home-write-protection.md new file mode 100644 index 0000000000..cbd05a912e --- /dev/null +++ b/docs/issues/002-test-home-guard-real-home-write-protection.md @@ -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 分支可查) diff --git a/docs/issues/003-windows-icacls-fails-on-sandbox-temp.md b/docs/issues/003-windows-icacls-fails-on-sandbox-temp.md new file mode 100644 index 0000000000..2ddc37ff7e --- /dev/null +++ b/docs/issues/003-windows-icacls-fails-on-sandbox-temp.md @@ -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 (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 内文件立即删除,攻击窗口短 + +## 与 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 仍可能失败 diff --git a/docs/issues/004-ci-ocx-test-no-queue-default.md b/docs/issues/004-ci-ocx-test-no-queue-default.md new file mode 100644 index 0000000000..952645a468 --- /dev/null +++ b/docs/issues/004-ci-ocx-test-no-queue-default.md @@ -0,0 +1,30 @@ +# [决策记录] CI `OCX_TEST_NO_QUEUE=1` 建议 — 已按 dev 现状撤回 + +## 标签 +- `chore` `area:test` `area:ci` `priority:P3` `infra` `resolved-by-upstream-evidence` + +## 原始建议(已撤回) +快照时代曾建议:在 CI 给所有 `bun run test` 步骤加 `OCX_TEST_NO_QUEUE=1`,跳过 `scripts/test.ts` 的本机排队器(当时 `waitForExclusiveRun`,93-126 行)——理由是"CI 跑在隔离容器里不存在多 agent 互踩,排队无谓阻塞"。 + +## 按 dev 现状复查后:不改动 + +1. **排队器已迁移**:快照时 `scripts/test.ts` 内联的 `waitForExclusiveRun` 现在位于 `scripts/test-run-lock.ts` 的 `acquireTestRunLock`(约 L468),由 `scripts/test.ts`(约 L530)调用;环境变量 opt-out 仍是 `OCX_TEST_NO_QUEUE`。 + +2. **本地旁路已被上游明确警告**:`scripts/OCX-RUN.md` 写道—— + > "Do not set `OCX_TEST_NO_QUEUE=1` to 'go faster' — that bypass is what let four suites stack locally and turn a 210s run into 13 minutes." + + 排队器正是防本地多套件叠加的机制,旁路有害。 + +3. **CI 侧本就无需设置**:dev 的六分片 GHA 工作流未设置 `OCX_TEST_NO_QUEUE`,且每个分片是独立隔离容器——锁文件永远空闲,`acquireTestRunLock` 在 CI 里是 no-op,不存在"排队阻塞 CI"的问题。 + +4. **260905 steering**:Windows 验证只走 GHA 六分片(`devlog/_fin/260905_windows_suite_stabilization/000_plan.md`),本机不再跑仓库级全量。 + +## 结论 +- CI:无需任何改动(排队器在隔离容器里不产生等待) +- 本地:维持 `OCX-RUN.md` 的警告——不要旁路 +- 本 issue 保留为决策记录,避免后人重复提出同一建议 + +## 关联 +- `scripts/test-run-lock.ts`(`acquireTestRunLock` / `TEST_RUN_NO_QUEUE_ENV`) +- `scripts/OCX-RUN.md`(本地排队警告) +- WINDOWS_BASELINE.md §升级建议 #4(原建议出处,已划掉) diff --git a/docs/issues/README.md b/docs/issues/README.md new file mode 100644 index 0000000000..225ceb4c23 --- /dev/null +++ b/docs/issues/README.md @@ -0,0 +1,20 @@ +# Windows pre-existing 失败的 Issue 草稿 + +> 这四份草稿源自 [WINDOWS_BASELINE.md](../../WINDOWS_BASELINE.md) 的实证归因(98 fail 全部 pre-existing)。 +> 每份草稿按 dev 当前布局标注了测试路径,并注明与 260905 稳定化工作的关系;可直接贴进 GitHub issue, +> 或作为后续修复工作的需求底稿。 + +## 待提清单 + +| # | 文件 | 摘要 | 状态 | +|---|---|---|---| +| 001 | [server-rate-limit-retry-e2e-pre-existing.md](001-server-rate-limit-retry-e2e-pre-existing.md) | 429 retry 链路 6 fails(pre-existing,`tests/server/`) | 待提 | +| 002 | [test-home-guard-real-home-write-protection.md](002-test-home-guard-real-home-write-protection.md) | 真实-home 写保护 8 fails(pre-existing,用户可见功能,`tests/ci-workflows/`) | 待提 | +| 003 | [windows-icacls-fails-on-sandbox-temp.md](003-windows-icacls-fails-on-sandbox-temp.md) | EICACLS — icacls 在 sandbox temp 拒绝操作(`tests/codex-integration/` native 系列) | 待提(若 GHA 分片已不复现则降级为本地环境记录) | +| 004 | [ci-ocx-test-no-queue-default.md](004-ci-ocx-test-no-queue-default.md) | CI `OCX_TEST_NO_QUEUE=1` 建议 — **已按 dev 现状撤回**,保留为决策记录 | 关闭(决策记录) | + +## 来源 +这些失败均已在 [WINDOWS_BASELINE.md](../../WINDOWS_BASELINE.md) 中实证为 **pre-existing**(在 fork 提交 `77dc660` 上逐条对照复现),与本轮 `cf2754a` / `8a68be5` / `d881140` 三笔 fork 改动**无因果**。 + +> 哈希均为 fork 本地提交(`Muki182/opencodex`,分支 `windows-perf-cred-fix`): +> `git fetch https://github.com/Muki182/opencodex.git windows-perf-cred-fix && git show `