fix(chv-muse-r12fix-4): detect_checkout 接进 CDP broker(P10)

R12 真机:detect_checkout 在 chv-guest/、host.py、
executor.py 里零引用,结账页无任何拦截。按 P10 gap §4.1
接线:broker 加载 cloud/chv/checkout_detect.py(同目录
优先,仓库路径兜底;缺失时降级关闭检测、写警告,绝不
crash-loop);snapshot() 每次重算 verdict(aria 行拼伪节点,
与 _form_risk 同形),open() 导航前后两道门——落点是结账
页时返回 form_submit ask 并暂停,上一页是结账页时下一次
导航先审批;ask 批过后同 URL 不再重复 ask(批准即放行,
与 form_risk 同口径);verdict 进 snapshot()/status() 回包。
build.sh:checkout_detect.py 条件拷入 /usr/local/bin/(0644,
P3/P6 同款只警告口径,M4 不硬要求 cloud/),
extra_contents 与两处 lockfile 登记补齐。钱包三腿不在本轮
范围,未动。
This commit is contained in:
host committed 2026-11-08 04:31:36 +00:00
1 parent 1da0d86159
commit 0ebcdfb2a7
7 files changed
+258 -8

No files matched your search

+41
View File
@@ -6,7 +6,10 @@
- 中英文特征;节点为空;页面金额只作展示信号。
"""
import importlib.util
import os
import sys
import tempfile
import unittest
from pathlib import Path
@@ -129,5 +132,43 @@ class CheckoutNodesTest(unittest.TestCase):
self.assertIsNone(verdict.amount_text)
class BuildInfoContentsTest(unittest.TestCase):
"""round-12 修复轮(项 4,P10):checkout_detect 是条件拷入
件——存在时经 extra_contents 登记进 BUILDINFO contents
(不在 BASE_CONTENTS 里,缺失的构建绝不谎称已进镜像,
与 P3 叶子模块同款口径)。"""
def test_extra_contents_include_checkout_detect(self):
root = Path(__file__).resolve().parents[2]
path = root / "chv-guest" / "buildinfo.py"
spec = importlib.util.spec_from_file_location(
"chv_guest_p10_buildinfo", str(path))
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
self.assertNotIn("checkout_detect",
module.BASE_CONTENTS)
with tempfile.TemporaryDirectory() as tmp:
out = os.path.join(tmp, "out")
os.makedirs(out)
for name, content in (("disk.raw", b"D"),
("vmlinux", b"K")):
with open(os.path.join(out, name), "wb") as fh:
fh.write(content)
for name, lines in (
("guest-versions-dpkg.txt", ["git 9.9.9-9ubuntu9"]),
("guest-versions-pip.txt", ["playwright==9.9.9"]),
("guest-versions-gt.txt", ["gt version 1.0.0"]),
("guest-versions-chromium.txt",
["chromium_headless_shell-1248"])):
with open(os.path.join(out, name), "w") as fh:
fh.write("\n".join(lines) + "\n")
info = module.build(
out, "chv-guest-24.04-0.164.0-alpha.9-abc1234", "24.04",
"0.164.0-alpha.9", "abc1234", "0" * 64, True, "1248",
["cloud/chv/checkout_detect.py"])
self.assertIn("cloud/chv/checkout_detect.py",
info["contents"])
if __name__ == "__main__":
unittest.main()