fix(chv): 生产级审核 P1-01~P1-10 修复(堆叠于 #270 之上)

This commit is contained in:
muse-agent committed 2026-11-02 03:25:49 +00:00
1 parent 8c8d62f70d
commit 971e054938
12 files changed
+1545 -120

No files matched your search

+33 -1
View File
@@ -1,6 +1,6 @@
# Cloud Hypervisor 执行器架构决策记录(ADR)
范围:cloud/chv/ 执行器链(#216 → #221 → #230 → #232 → #234 → #239 → #246 → #252 → #254 → 本轨 feat-chv-arch-maint-fe)。
范围:cloud/chv/ 执行器链(#216 → #221 → #230 → #232 → #234 → #239 → #246 → #252 → #254 → feat-chv-arch-maint-fe → feat-chv-closeup → feat-chv-cover100 → 本轨 feat-chv-p1fix)。
本文件只记录已落代码的决策,不记录未验证为已验证;真机、压测、动态安全
仍见 docs/chv-production-readiness.md §11。
@@ -323,3 +323,35 @@
缺 268 → 242);未覆盖大头仍是 executor 深层生命周期
分支(需假 VMM 全链路)与 disk 配额分支,不靠删测试
或改分母凑数。
## ADR-17 P1 修复轨语义收紧(feat-chv-p1fix,生产级审核 §5)
本轨只修审核报告 §5 的 P1 十项(P2 不动),决策均为
“失败可见、猜测收紧、竞态加锁”,不放宽任何既有安全语义:
- 失败不算成功:孤儿清理失败项不进 cleaned、不清库、
落盘保留失败项(P1-01);残留私钥删失败不进 cleaned、
发审计并写脏标记(P1-03);单条超帽快照拒绝记录而不
是悄悄保留(P1-06);快照失败与剪枝删失败均发审计
(P1-08)。“尽力清理、不因单条失败卡住整批”的旧语义
被修正为“尽力清理、失败项留痕可重试”——整批仍不卡,
但失败不再被成功名单掩盖。
- 损坏与非法不静默:registry 损坏与非法条目均发审计并
计数(P1-02);非法条目落盘时丢弃(已审计,不再每次
重启重复审计)。
- 不猜目标:SSH 命令构造删除回环回落,失败即抛
(P1-04);显式回环(CHV_SSH_HOST / CHV_SSH_FORWARD=1)
仍可用,wake/wait 严格路径不受影响。
- 竞态用文件锁:容量/net/磁盘 check→act 持
`state_dir/chv-state.lock` 的 flock 全程(P1-05),
拒绝“只加进程内锁就声称多 worker 已解决”的写法;
串行 wake 是有意的代价,已运行 VM 的任务执行不持锁。
- 非正配置在入口拦:CPU/内存/任务超时非正在构造层与
preflight 层双重校验(P1-07);None 任务超时 = 不限
的旧语义保留。
- 覆盖口径诚实:行覆盖与分支覆盖分开报(P1-09);
`__init__.py` 计入 coverage.py 分母(4 行);长函数
50 行硬门禁靠提取维持,新增 helper 均有命名职责
(`_snapshot_create`、`_tighten_snapshot_cap`、
`_preflight_task_timeout_check`、`_emit_prune_events`、
`_state_lock_ctx`),不是为凑行数而拆。