Skip to content

fix(ci): 修复必过测试的不稳定问题 - #4

Merged
SMARK2022 merged 1 commit into
dev1-smarkfrom
ci-fixture-lifetime
Nov 11, 2026
Merged

SMARK2022 merged 1 commit into
dev1-smarkfrom
ci-fixture-lifetime

Conversation

@SMARK2022

@SMARK2022 SMARK2022 commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

当前状态

当前 098a5cd1 是用于定位必过 CI 失败的临时诊断版本,不是最终交付版本。相对 61ebd8d 保持单个提交,16 个修改文件、+422/-176,共 598 行,未超过 600 行预算。保留草稿,不自动合并。

保留的 CI 修复

  • CodeMode 仅在实际执行时加载同一 TypeScript 编译器,保留两处转译及原执行边界。
  • 复用现有 Effect 共享组合根,减少重复装配及临时 scope 释放;应用服务共享,listener 认证、CORS 和连接计数仍隔离。
  • FileApi 使用真实必要服务,Web handler 由创建方释放;合并重复 daemon 冷启动,保留计数、存活、退出和清锁断言。
  • 子进程先安装 SIGTERM 处理器再发布 ready。
  • 显式 daemon-stop 包含停止末帧并自然结束 SSE;沿原 HTTP graceful 窗口释放连接与登记的 WebSocket,其他停止原因仍强关,原 5 秒 watchdog 不变。
  • disposal helper 仍为真实 5 秒,测试以原 7 秒竞争保护验证完成;CodeMode 原生任务保持 uncached。

当前 Windows 启动诊断范围

已撤除完成取证的 32 行 macOS 采样,prompt.test.ts 精确恢复原文。仅在原 spawnDaemon 测试 helper 增加 +67/-3 的父侧观察,记录自己的 PID、有效锁与匹配状态、原 health 结果、父等待阶段、快照时间和退出通知。

原命令、环境、ignored stdin/stdout/stderr、健康请求资格与凭证、100ms 轮询、60 秒 helper deadline、15 秒外层测试期限、返回与 kill/throw 均不变。额外 own-PID 存活检查只记录,不影响成功判断。每次 helper 最多 12 条状态变化记录,spawn、ready/timeout 和 exit 单独保留;不记录密码、token、路径或原始子日志。

这些记录不能定位 child 内部 import、listener、DB 或 recovery 阶段。poll gap 包含 I/O、健康请求、sleep 和调度;退出时间是父侧收到通知的时间,退出记录可能带旧快照。新增观察会扰动执行,不计作最终稳定性验收。

为保持每个远端版本不超过 600 行,CodeMode 此前新增的 68 行回归测试仍暂存,原 264 项与生产修复均保留。最终必须撤除全部临时观察并恢复该回归,再执行完整 265 项验收。若没有其他新获审修复,恢复后应精确回到此前 596 行技术源树。

当前版本的本地验证

完整方案与全部实际改动分别通过独立审查。实际源树 14 条正式检查命令全部成功:

  • 352 tests、992 assertions、0 fail。CodeMode 264/752,Core process/cross-spawn 58/141,其余 CI 修复目标 29/88,原 prefix 1/11。
  • 三个包类型检查通过;实际 15 个修改 TS 文件 lint 为 189 warnings、0 errors;diff 检查通过。
  • 原 prefix 无采样标记。真实 Linux daemon-stop 保留 7 个原断言,产生 5 条有界父侧记录,包括 ready 和 exit0;不代表 Windows 已修复。
  • 实际 helper 的受控机制对照覆盖 22 场景、284 检查,3 个缺失标记负控正确失败。虚拟机制验证不等于 Windows 原生复现。

本次精确头自然触发的原生矩阵尚待完成。完整 HTTP/plugin/FileApi、PTY、force-upgrade、hanging-disposer、maintenance 等原生范围不冒充本地通过;没有手动重跑求绿。

已保留的原生失败与 macOS 样本

旧头 20b48c79 的首轮 18 个必过 test job 及 typecheck/generated/scope 均通过,但固定重复验收未通过:macOS 第三次实际执行 的 fullHit 为 307.177ms,阈值 205.629ms,JUnit 确认 1 failure。旧头三个固定目标各仅 2 次成功,不计为 3 次,也不转移到后续版本。此原因仍未知。

前一诊断头 2f42aa38 的 macOS 原生采样 有效:fullHit 94.308ms,rebuild 112.198ms,严格阈值 192.929ms;原例 11 断言通过,整组 5291 pass、45 skip、0 fail。profile 与 timings 各一次、未截断、无诊断错误。14 个样本仅证明该窗存在对象/压缩等工作,不能直接换算 CPU 毫秒、认定 host pause 或解释原 307ms。该次正常执行不是修复证明。

同一 2f42aa38 自然矩阵为 17/18 必过成功,typecheck/generated/scope 通过;唯一 Windows TUI 失败 在 daemon lifecycle 用例外层 15000ms 超时,361 pass、38 skip、1 fail。JUnit 为 0 assertions、15.001544s;原日志随后确认同一调用停在 await spawnDaemon,尚未进入 control status、SSE 或新增断言。Bun 先杀子进程,helper 继续约 45 秒后发出 60 秒拒绝,这不表示未中断启动实际需要 60 秒。旧未合并用例已有相同签名,具体子阶段仍待此次观察。

所有原始失败保留,没有失败后手动重跑。这两个未解决问题继续阻止最终完成。

排除范围

warning-only App E2E 不修改、不计必过:前一诊断头 Linux 100 pass、4 flaky、1 fail;Windows 103 pass、2 flaky。本次新头结果另行记录,不以旧结果代替。

@SMARK2022
SMARK2022 force-pushed the ci-fixture-lifetime branch 16 times, most recently from 3a0c0be to a146eee Compare November 10, 2026 19:55
@SMARK2022
SMARK2022 force-pushed the ci-fixture-lifetime branch 6 times, most recently from 13ef379 to 3262f4c Compare November 11, 2026 09:50
@SMARK2022
SMARK2022 marked this pull request as ready for review November 11, 2026 10:47
Copilot AI balanced review requested due to automatic review settings November 11, 2026 10:47

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota. Try requesting a review at a lower effort level.

@SMARK2022
SMARK2022 force-pushed the ci-fixture-lifetime branch 4 times, most recently from a5b9594 to 4fbbf70 Compare November 11, 2026 14:22
@SMARK2022
SMARK2022 merged commit c613075 into dev1-smark Nov 11, 2026
199 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants