feat(chv): 架构与代码质量提升——WarmPool 定案、长函数提取、严格测试替身、Docker 同步守卫、配置统一校验、类型注解与 ADR
堆叠于 #246(feat-chv-secfix),只到 PR OPEN,未合并、未部署。 安全语义不变:egress、key seed 投递、磁盘删除、默认 provisioned、 tap 校验一律保留;前端零改动。 - WarmPool 定案为实验性(ADR-5):dispatch 永远冷启动, wired_to_dispatch 恒 False,acquire/resume 只保留实验接口, worker 仍调 reconcile_orphans 清理残留。 - 长函数提取:preflight 126→31、wake_vm 135→36、__init__ 69→31、 build_chv_config 159→58;错误文案逐字不变。 - 严格测试替身:fake API 校验 VmConfig(任务盘+seed 盘、net 无重复),fake SSH 校验 known_hosts 钉死;新增 5 项测试。 - Docker 同步守卫:8 个真实标记用例下 Docker 内联版与正典 parse_goal_result 状态全等,改分叉即 fail。 - 配置统一校验:preflight 以 config_invalid 统一兜底端口/配额/ 超时/快照/host-key 模式(构造时已校验正常值,preflight 兜底 事后改写);CHV_NET 与 CHV_NET_JSON 双设仍警告不硬拒。 - 类型与 lint:chv 叶子模块公开 API 补类型注解;stdlib 扫描 揪出 executor 内 1 个真死 import(host_key_paths)并删除。 - ADR:docs/chv-architecture.md(ADR-1 至 ADR-7)。 测试:CHV 163 项全过;cloud 全量 1593 项三跑结果为 8 errors (首跑详细日志因 tail 截断丢失)、全过、1 失败(浏览器代理 时序测试,与 CHV 无关),全量本身存在时序偶发,CHV 套件 确定性全过。
This commit is contained in:
1 parent
baf26beb78
commit
c908a0147a
12 files changed
+725
-239
No files matched your search
@@ -71,8 +71,10 @@
|
||||
- ✅🧪 快照/恢复接口:snapshot_vm / restore_vm(restore 后显式
|
||||
resume,见 §3),WarmPool 接口与状态机(cold → prewarming →
|
||||
warm → assigned → running → recycled/destroyed)。
|
||||
- ✅🧪 冷启动回落:池空时 acquire 返回 cold,调用方回落 wake_vm
|
||||
冷启动,绝不降级 Docker/Local。
|
||||
- ⚠️ 定案(feat-chv-arch95,ADR-5):WarmPool 是实验性、非生产
|
||||
路径。dispatch 永远冷启动,_run_with_vm 绝不查池;池空回落
|
||||
冷启动的说法不再作为生产特性宣称,acquire/resume 只保留为
|
||||
实验接口。
|
||||
- ✅🧪 预热条目一次性:acquire 消耗、release 一律销毁,绝不跨
|
||||
任务复用脏 VM。
|
||||
- ✅🧪 预热池 registry 与孤儿清理(优化轨):池状态落
|
||||
@@ -245,14 +247,13 @@
|
||||
未选,理由见 config.py)。
|
||||
- ✅🧪 P1 已修或有结论:网关 extra_env 经 SSH env 前缀注入,
|
||||
worker 守卫收窄到 Local/CHV;取消/清理/看门狗接 CHV 通用
|
||||
路径;WarmPool acquire 内 resume(但 worker dispatch 前查
|
||||
池仍未接线,预热收益仍不是已交付特性);容量门改持久化
|
||||
路径;WarmPool acquire 内 resume(本轨定案为实验性,见 ADR-5,
|
||||
不再是生产特性);容量门改持久化
|
||||
计数(socket 联合计数);磁盘配额改总量+余量、已存在磁盘
|
||||
校验重拷;API 客户端按 Content-Length 验完整性;快照
|
||||
file:// 目标验存在且非空再 shutdown;execute 死端口归类
|
||||
vm_not_running。
|
||||
- ⚠️ 仍未接线/未验证(不得声称已交付):worker dispatch 前查
|
||||
WarmPool;CHV + 网关真实任务;真机 wake/boot/SSH(含 seed
|
||||
- ⚠️ 仍未验证(不得声称已交付):CHV + 网关真实任务;真机 wake/boot/SSH(含 seed
|
||||
注入与 NAT/客机 IP 实测);快照恢复端到端;压测;安全审计;
|
||||
CI 账单恢复。另:P0-2 审计原说法“restore 须把 seed 接入
|
||||
VmConfig”已纠正——restore 不走 vm.create,seed 无从挂盘,
|
||||
@@ -384,8 +385,7 @@
|
||||
(tap/mac/ip/mask),未知字段直接拒绝。
|
||||
- L5 WarmPool 预热盘与任务盘对应关系:定义已写进
|
||||
pool.acquire 文档——预热盘是干净快照盘,不是任务盘;
|
||||
将来接线时任务盘仍须按任务重新供给或校验快照来源与
|
||||
任务的对应关系;接线本身仍未做,不假装已接。
|
||||
本轨定案为实验性(ADR-5),不再作为接线待办。
|
||||
|
||||
### 11.4 宿主防火墙部署清单(代码做不到的部分,缺一不可)
|
||||
|
||||
@@ -424,4 +424,5 @@
|
||||
|
||||
- VM 控制按钮、预热池管理页、成本/配额新页面(前端零改动);
|
||||
- 真机动态渗透、压测(无 KVM,做不了,只列清单);
|
||||
- WarmPool dispatch 前查池接线(仍未接线,见 L5 定义)。
|
||||
- WarmPool dispatch 前查池接线(已定案不做,见 ADR-5;重启须先
|
||||
实现任务盘重供给并补不变量测试)。
|
||||
Reference in new issue
Block a user