症状
.github/workflows/ci.yml 内没有任何 cargo 构建缓存,且同一次 CI 触发在 Windows 上跑两遍全量测试。
只读证据
缓存缺失:ci.yml 全文无 actions/cache,无 Swatinem/rust-cache 之类的 Rust 缓存 action,也无手写的 cargo target 复用。.github/workflows/ 下 5 个工作流均未命中任何缓存配置。
Windows 重复:
| 位置 |
内容 |
ci.yml:14-16 |
windows-build-test-package 固定 job,runs-on: windows-latest |
ci.yml:72 |
cargo test -p code-intel --locked |
ci.yml:355-358 |
矩阵 os: [windows-latest, macos-latest, ...] |
ci.yml:445 |
cargo test -p code-intel --locked |
矩阵含 windows-latest,所以每次触发 Windows 全量测试执行两遍。另有两处重复的 release build:ci.yml:80 与 ci.yml:449。
成本规模(静态计数,2026-09-30 快照):
- 229 个
.rs,3,298,590 字节
- 69 个集成测试文件;其中 28 个直接用
#[path = "../src/…"] 引入生产模块(121 次直接声明),48 个经 tests/common/mod.rs:7-8 再引入 src/env_contract.rs,合计 169 次生产模块引入实例
- 最密的
tests/decision_record.rs 直接引入 12 个生产模块(:10-33),加 common 后 13 个
- 最深的重入链 4 层:
decision_record → run_commit → staged_artifact → stable_artifact
[profile.release]: opt-level 3 / lto thin / codegen-units 1 / strip;无显式 dev profile 设置
- 仓库无
.cargo/config.toml
target/ 本地 14,997 文件 / 5,657 MB
未执行任何编译或测试,全部为静态读取。
为何不在现有 issue 下处理
已核对全部 open 与 closed issue,无一条覆盖 CI 基建成本:
上游自有的修复与验收
第一步必须先建立基线,不能直接改矩阵。 目前没有任何实测耗时数据(原因见下),无基线时改矩阵是猜测。
- 在
ci.yml 引入 cargo target 缓存(Swatinem/rust-cache 或 actions/cache + ~/.cargo/registry),保持 --locked 不变,不改动任何测试选择或闸门语义。
- 在启用缓存的同一次触发上记录
cargo test -p code-intel --locked 与 cargo build -p code-intel --release --locked 的耗时,形成"改前/改后"两个数字。
- 报告这两个数字,再决定
ci.yml:14-16 固定 Windows job 与矩阵中 windows-latest 的职责如何切分。若两个 job 覆盖的步骤实为重复,应合并或让固定 job 只跑矩阵不覆盖的那部分;若职责确有差异,需在 issue 里写明差异后再动。
- 缓存不得放宽任何既有断言:
cargo test --locked 的选择集、--ignored --nocapture 的 packaged install smoke 步骤(ci.yml:698,707,711)与 orchestration/sentrux-capability-matrix.v1.json 的 closure 校验(ci.yml:771-807)必须原样保留。
阻塞:无法在本机取得耗时基线
本 checkout 所在 Windows 主机被 docs/decisions/DR-0013-affected-host-compilation-isolation.md 隔离(issue #403 未结期间禁止 cargo build / cargo test / cargo check / cargo clippy / cargo run / cargo nextest / cargo clean)。因此基线必须在其他主机或 CI 上取。
DR-0013 的 Why 段落已记录本机 32 逻辑核 / 93.7 GB RAM / 页文件分配 68 GB 峰值 1.4 GB / 四盘 Healthy / 近 7 天零 WHEA 记录——本机不是被资源耗尽压垮的,所以"CI 慢"与"主机崩溃"是两件事,不要混为一谈。
严重度
P1。不是故障:CI 仍能通过且闸门语义完整。但每次 PR 都付双倍 Windows 全量测试代价,在 69 个测试二进制 / 169 次生产模块引入实例的规模下这是可测的持续成本。
症状
.github/workflows/ci.yml内没有任何 cargo 构建缓存,且同一次 CI 触发在 Windows 上跑两遍全量测试。只读证据
缓存缺失:
ci.yml全文无actions/cache,无 Swatinem/rust-cache 之类的 Rust 缓存 action,也无手写的 cargo target 复用。.github/workflows/下 5 个工作流均未命中任何缓存配置。Windows 重复:
ci.yml:14-16windows-build-test-package固定 job,runs-on: windows-latestci.yml:72cargo test -p code-intel --lockedci.yml:355-358os: [windows-latest, macos-latest, ...]ci.yml:445cargo test -p code-intel --locked矩阵含
windows-latest,所以每次触发 Windows 全量测试执行两遍。另有两处重复的 release build:ci.yml:80与ci.yml:449。成本规模(静态计数,2026-09-30 快照):
.rs,3,298,590 字节#[path = "../src/…"]引入生产模块(121 次直接声明),48 个经tests/common/mod.rs:7-8再引入src/env_contract.rs,合计 169 次生产模块引入实例tests/decision_record.rs直接引入 12 个生产模块(:10-33),加 common 后 13 个decision_record → run_commit → staged_artifact → stable_artifact[profile.release]: opt-level 3 / lto thin / codegen-units 1 / strip;无显式 dev profile 设置.cargo/config.tomltarget/本地 14,997 文件 / 5,657 MB未执行任何编译或测试,全部为静态读取。
为何不在现有 issue 下处理
已核对全部 open 与 closed issue,无一条覆盖 CI 基建成本:
feat(perf): benchmark 驱动的迭代性能优化闭环—— 产品功能面,不是 CI 成本feat(perf): 候选安全门禁 + 自动开 PR—— 认领于 2026-08-21,其分支issue-302-perf-safety-gate在本地 heads 与 origin 跟踪 refs 中均不存在,属僵尸认领,应单独清理而非复用ci: keep Sentrux gate from hanging on ripgrep bootstrap—— 已关闭,针对 ripgrep bootstrap 挂起,与缓存无关上游自有的修复与验收
第一步必须先建立基线,不能直接改矩阵。 目前没有任何实测耗时数据(原因见下),无基线时改矩阵是猜测。
ci.yml引入 cargo target 缓存(Swatinem/rust-cache或actions/cache+~/.cargo/registry),保持--locked不变,不改动任何测试选择或闸门语义。cargo test -p code-intel --locked与cargo build -p code-intel --release --locked的耗时,形成"改前/改后"两个数字。ci.yml:14-16固定 Windows job 与矩阵中windows-latest的职责如何切分。若两个 job 覆盖的步骤实为重复,应合并或让固定 job 只跑矩阵不覆盖的那部分;若职责确有差异,需在 issue 里写明差异后再动。cargo test --locked的选择集、--ignored --nocapture的 packaged install smoke 步骤(ci.yml:698,707,711)与orchestration/sentrux-capability-matrix.v1.json的 closure 校验(ci.yml:771-807)必须原样保留。阻塞:无法在本机取得耗时基线
本 checkout 所在 Windows 主机被
docs/decisions/DR-0013-affected-host-compilation-isolation.md隔离(issue #403 未结期间禁止cargo build/cargo test/cargo check/cargo clippy/cargo run/cargo nextest/cargo clean)。因此基线必须在其他主机或 CI 上取。DR-0013 的 Why 段落已记录本机 32 逻辑核 / 93.7 GB RAM / 页文件分配 68 GB 峰值 1.4 GB / 四盘 Healthy / 近 7 天零 WHEA 记录——本机不是被资源耗尽压垮的,所以"CI 慢"与"主机崩溃"是两件事,不要混为一谈。
严重度
P1。不是故障:CI 仍能通过且闸门语义完整。但每次 PR 都付双倍 Windows 全量测试代价,在 69 个测试二进制 / 169 次生产模块引入实例的规模下这是可测的持续成本。