Skip to content

fix(ci): #1495 测试稳定性门禁识别搬动的既有代码,并在 CI 中运行门禁自测 - #1793

Merged
xiaoyumuxi merged 1 commit into
previewfrom
fix/1495-ci-stability-gate
Nov 7, 2026
Merged

xiaoyumuxi merged 1 commit into
previewfrom
fix/1495-ci-stability-gate

Conversation

@xiaoyumuxi

Copy link
Copy Markdown
Collaborator

关联 Issue / Linked issue

PR 类型 / Type

  • feat:新功能或用户可见的改进
  • fix:缺陷修复
  • docs:文档、Agent Note、Skill 等规则文件
  • release:稳定版发布准备

改动说明 / What changes

背景 / Why

#1791 把 Java 逻辑搬出 Core 时,#1495 的测试稳定性门禁把搬动的测试当成新写的慢测试,CI 因此失败。为让 #1791 通过,当时在 3 处 sleep 上加了 test-stability: allow 例外;这些 sleep 本身是既有代码,只是跟着测试换了位置。这个提交是在 #1791 合并之后才推上分支的,没有进入那次合并,所以单独提交。它撤回那 3 条例外,改为让门禁自己识别搬动,并让门禁的自测在 CI 里运行。

改动 / Changes

  • scripts/verify-test-stability.mjs(Skill 脚本):以 base 修订建立“规则 + 所属测试声明 + 语句文本”的基线多重集。head 新增行能在基线中认领同一条目的算搬动;未改动行先认领基线,避免在同一测试里复制一条 sleep 混过去。有 --base 时文件内容从 git 修订读取,结果不再依赖工作区;diff 固定 --no-renames 和 a/ b/ 前缀,不受用户 diff 配置影响;删除文件也进基线;--head 必须与 --base 同时给出。
  • scripts/verify-test-stability.sh:不再注入 --platform macos,由调用方显式给出平台。
  • scripts/test-verify-test-stability.mjs:自测补齐跨文件搬动、换测试、复制语句、去掉例外注释、平台过滤和真实 git 仓库的用例。
  • .github/workflows/ci-macos.yml:Classify changes 作业新增一步,运行门禁自测(只需 Node.js,几秒完成)。
  • .agents/skills/write-stable-tests/SKILL.md:写明门禁的判定方式与两种比对模式。
  • rust/lithe-core/src/lsp/interface/engine.rs:撤回上一提交为通过门禁加的 3 条 test-stability: allow 例外(该文件删除一个测试辅助函数的改动已随 fix(epic,core,macos): 把 Java 专属逻辑全部移出 Core 与 macOS 宿主,改走通用插件 API #1791 合入,本 PR cherry-pick 后只保留例外的撤回)。

不在本 PR 范围内 / Out of scope

  • 无。

类型专属:fix

复现与根因

检查项

  • 已先写回归测试,确认它在修复前失败、修复后通过;测试路径与修复前的失败输出:.agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs 的跨文件搬动用例在旧版门禁上失败
  • [N/A] 无法自动化时,已写明手动复现与验证步骤:已自动化
  • 已搜索被修改函数、类型、契约字段的全部调用方(含另一平台、插件、SDK、脚本和按字符串分发的调用):verify-test-stability.sh 是唯一包装,CI 与 test-macos.sh 均经它调用
  • [N/A] 已检查另一平台是否有同类缺陷:门禁与平台无关
  • 只改了修复所需的代码,没有夹带重构;修复过程中发现的其他问题已提交 Issue:无
  • 修复改变了行为约束或容易复发,已在 .agents/notes/implemented/bug-fix/ 记录:判定方式已写进 SKILL.md(规则真源)

范围检查 / Scope checks

功能矩阵 / Feature matrix

N/A:不改产品能力。

统一日志系统 / Structured logging

N/A:不改日志。

界面文案 / i18n

N/A:不改界面文案。

逻辑归属 / Logic placement

  • 可共享的逻辑在 Rust Core:本条不涉及产品逻辑,门禁脚本属于仓库工具
  • [N/A] 修改平台层已有的可共享逻辑时已迁入 Core:不涉及
  • 工具或运行时专属的知识放在插件或成熟上游:不涉及

性能与内存 / Performance and memory

N/A:CI 新增自测只需 Node.js,几秒完成。

设置 / Settings

N/A:不涉及设置。

插件与共享契约 / Plugin and shared contracts

N/A:不改契约。

发行包与资源 / Bundle and resources

N/A:不改运行时资源。

无用代码与重构 / Dead code and refactoring

  • 本次改动导致变成无用的代码已在本 PR 删除
  • [N/A] 本次之前就存在的无用代码或可重构之处:无

验证 / Verification

命令或操作 平台 结果
node .agents/skills/write-stable-tests/scripts/test-verify-test-stability.mjs macOS 通过(含真实 git 仓库与平台过滤用例)
./.agents/skills/write-stable-tests/scripts/verify-test-stability.sh --platform all --base origin/preview --head HEAD macOS 通过
actionlint .github/workflows/ci-macos.yml macOS 无报错

未能执行的检查和原因: Windows 侧 CI 由仓库工作流运行,本机未执行。

提交前确认 / Final checks

  • 分支从最新的 preview 创建;目标分支:preview
  • 以 Draft 提交,本地验证通过后才标记 ready
  • 没有无关改动,没有提交 .build/、target/、dist/、.artifacts/ 等产物,没有凭据、个人路径和未脱敏的日志或截图
  • 本次构建、测试或预览启动的 Lithe 应用和子进程已全部关闭,没有进程残留

- verify-test-stability.mjs 以 base 修订建立“规则 + 所属测试声明 + 语句文本”的基线多重集,head 新增行能在基线中认领到同样条目的算搬动,不再当作新增;未改动行先认领基线,避免同一测试里复制一条 sleep 躲过门禁
- 有 --base 时文件内容从 git 修订读取,结果不再依赖工作区;diff 固定 --no-renames 与 a/ b/ 前缀,不受用户 diff 配置影响
- 删除文件也进入基线;--head 必须与 --base 同时给出;shell 包装不再偷偷注入 --platform macos
- 自测补齐跨文件搬动、换测试、复制语句、去掉例外注释、平台过滤和真实 git 仓库的用例;macOS CI 的 Classify changes 作业运行该自测
- 撤回上一提交为通过门禁加的 3 条 test-stability: allow 例外,这 3 处 sleep 是搬动的既有代码,由门禁自行识别
- Skill 写明门禁判定方式与两种比对模式
@ghfind-review ghfind-review Bot added the review: high ghfind author score; see https://ghfind.com label Nov 7, 2026
@xiaoyumuxi
xiaoyumuxi marked this pull request as ready for review November 7, 2026 11:11
@xiaoyumuxi
xiaoyumuxi merged commit 7ef4ec6 into preview Nov 7, 2026
13 of 21 checks passed
@xiaoyumuxi
xiaoyumuxi deleted the fix/1495-ci-stability-gate branch November 9, 2026 05:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

review: high ghfind author score; see https://ghfind.com

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant