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:
host committed 2026-10-31 05:50:56 +00:00
1 parent baf26beb78
commit c908a0147a
12 files changed
+725 -239

No files matched your search

+6 -6
View File
@@ -33,7 +33,7 @@ def _dir_total_bytes(path):
return total
def check_disk_quota(rootfs, disk_gb, state_dir=None):
def check_disk_quota(rootfs: str, disk_gb: float, state_dir=None) -> None:
"""磁盘配额门(feat-chv-fix 口径):
- disk_gb 未设时不检查;
@@ -73,7 +73,7 @@ def check_disk_quota(rootfs, disk_gb, state_dir=None):
% (free, size))
def provision_task_disk(state_dir, vm_name, rootfs, disk_mode):
def provision_task_disk(state_dir: str, vm_name: str, rootfs: str, disk_mode: str) -> str:
"""每任务磁盘路径:copy 模式复制到
state_dir/<vm>/disk.raw;reuse 模式直接返回基础镜像路径。
@@ -112,12 +112,12 @@ def provision_task_disk(state_dir, vm_name, rootfs, disk_mode):
return task_disk
def task_disk_path(state_dir, vm_name):
def task_disk_path(state_dir: str, vm_name: str) -> str:
"""该 VM 的任务磁盘路径:state_dir/<vm>/disk.raw。"""
return os.path.join(state_dir, vm_name, "disk.raw")
def delete_task_disk(state_dir, vm_name):
def delete_task_disk(state_dir: str, vm_name: str) -> bool:
"""删任务磁盘(feat-chv-secfix,H3):stop/recycle/
清理路径都调它。返回 True 表示确实删掉了一个文件,
False 表示本来就没有;删失败抛 OSError(调用方记审计,
@@ -188,7 +188,7 @@ def prune_snapshots(state_dir, vm_name, retention_days,
return kept, pruned
def check_snapshot_limits(state_dir, vm_name, max_count,
def check_snapshot_limits(state_dir: str, vm_name: str, max_count: int,
max_total_gb, retention_days):
"""快照上限预检(snapshot_vm 调 ch-remote 之前调):
先按保留期剪枝,再查数量(已有数 + 本次 > 上限即
@@ -218,7 +218,7 @@ def check_snapshot_limits(state_dir, vm_name, max_count,
return kept
def record_snapshot(state_dir, vm_name, snapshot_url, max_total_gb):
def record_snapshot(state_dir: str, vm_name: str, snapshot_url: str, max_total_gb: float) -> dict:
"""快照成功后登记;file:// 目标记实际大小。登记后若
总量超上限,按最旧优先删登记外的旧快照文件(总量硬
帽,删动作由调用方审计——本函数返回被删的旧条目)。