Acceptance Checklist

客户验收清单

玄圭(AxiomGate)AI 资产确权与审计包 · 七步自验
每一步都给出命令、预期输出与通过条件。全部通过即视为交付完成,无需第三方到场。
版本 AXG-SIDECAR V1.5
打印后可直接手写勾选
锚定 Ω₀⊂⊙∞⊂Ω

验收原则:能自己验的事,才写进清单。清单里每一条都由贵方在本机执行、由贵方自己看到结果,我方不出具任何预置结论。

清单不含:安全评级、合规结论、法律意见。这些不属于本产品能力范围,也不在本清单的验收项内。

前置条件
项要求
操作系统Linux(x86_64 / ARM64),有 root 或 sudo
运行时python3 ≥ 3.8;openssl、tar、curl 可用
端口8420 起自动探测空闲端口,被占用会自动顺延
资产路径登记在 /data、/opt 等稳定目录;不要用 /tmp
六步自验
1

安装

目标:装完即进入 30 天完整试用,无需申请
执行 curl -fsSL https://www.huodouai.com/axiomgate-deploy/install.sh | bash 预期输出 [1/6] 前置检查 OK python3 / openssl / tar / curl [2/6] 验签 OK manifest.sig / Ed25519 [3/6] 验包 OK sha256 与清单一致 [4/6] 解包 OK <安装目录> [5/6] 服务 OK systemd enabled + started(端口 8420) [6/6] 健康 OK http 200,first_run
通过条件第 1 步六项输出全部 OK;最后一行 health 返回 200 且带 first_run。
不通过
若卡在 [2/6] 验签失败,说明安装包在传输中被改动,直接重新下载,不要绕过验签继续装。
2

服务与授权状态

目标:知道自己在试用、还剩多少天
执行 curl -s http://127.0.0.1:8420/api/axiomgate/health curl -s http://127.0.0.1:8420/api/axiomgate/license 预期输出(关键字段) health: ok=true, version="AXG-SIDECAR V1.5", mode="read_only" license: mode="trial", valid=true, days_left=30 (激活后 mode="licensed", license_id="AXG-LIC-…", days_left=…)
通过条件ok=true;mode 为 trial(试用)或 licensed(已授权);天数能正常递减。
不通过
若 mode=trial_expired 或 invalid,核对 license.json 是否放对目录;改过文件内容的授权会验签失败,必须使用我方签发的原件。
3

建账本并封账

目标:把要保护资产登记成可复算的账本
执行 python3 m9_tenant.py init --tenant acme --name "本公司" --did DID-BR-000123 python3 m9_tenant.py add --tenant acme --path /data/models/base.bin --label 基座模型 python3 m9_tenant.py add --tenant acme --path /data/prompts/v2.jsonl --label 提示词集 python3 m9_tenant.py seal --tenant acme 预期输出 tenant acme(本公司) 规则版本 M9-ROOT-RULE-V2 资产源 2 个,哈希匹配 2 个 复算根 BC3985F0…(45 位十六进制) 判定 ASSETS_INTACT / ROOT_VERIFIED
通过条件封账后能打印出复算根;同一命令再跑一次,根的十六进制字符完全相同。
不通过
根每次都不一样,说明资产在两次登记之间被改动,先查是谁在写这些文件(训练任务、同步脚本)。
4

出审计报告

目标:拿到可交给审计方的那一页纸
执行 python3 m9_report.py --tenant acme --org "本公司" --auditor "内控审计部" echo $? # 全部一致返回 0,有差异返回 1 预期输出 报告编号 M9-RPT-<复算根前 8 位>-<日期> 判定 ASSETS_INTACT / ROOT_VERIFIED 资产源 2 个,哈希一致 2 个,差异 0 项 结构 reports/M9-RPT-….html 报告 SHA256 E5A5FF21…(页脚同值)
通过条件打开 HTML 为 单页 A4;页脚的报告 SHA256 与命令输出一致;四段齐全(核验对象 / 逐项复核 / 根哈希复算 / 结论与边界)。
不通过
报告显示 ASSET_DRIFT 时不要手工改报告让它「通过」。先查差异项对应的文件,改资产再重新封账出报告。
5

巡检与告警

目标:改坏了当天就能发现
执行(先装定时) 安装后自动注册每日巡检(调度明细不对外列示) 执行(手动跑一次,并做一次篡改自测) python3 m9_patrol.py # 输出:巡检 2 个账本,异常 0 个|ALL_CLEAN| echo "test" >> /data/prompts/v2.jsonl # 故意改一个资产 python3 m9_patrol.py; echo $? # 期望 1,并自动生成一份报告 git checkout /data/prompts/v2.jsonl # 复原(按你的版本管理方式) 执行(状态在健康检查里可见) curl -s http://127.0.0.1:8420/api/axiomgate/health | grep patrol # status: ALL_CLEAN / DRIFT_DETECTED / STALE / not_run
通过条件篡改后退出码为 1、自动产出报告、patrol.status 转为 DRIFT_DETECTED;复原后回到 ALL_CLEAN。
不通过
篡改后仍是 ALL_CLEAN 说明登记路径与实际文件不一致;状态长期 STALE 说明定时任务没在跑,查 cron 与 /var/log/axg-patrol.log。
6

续期与扩容

目标:试用期结束不中断业务
执行 # 1) 提交申请(试用到期后仍可提交) curl -s -X POST https://<你的实例>/api/axiomgate/apply \ -H 'Content-Type: application/json' \ -d '{"company":"本公司","contact":"张三","value":"zhangsan@example.com","edition":"cluster","nodes":5,"note":"审计包"}' # 2) 收到 license.json 后放进安装目录并重启 cp license.json <安装目录>/license.json && systemctl restart axg-sidecar # 3) 复核 curl -s http://127.0.0.1:8420/api/axiomgate/license 预期输出 mode="licensed", valid=true, license_id="AXG-LIC-…", days_left=…
通过条件授权后 mode 变为 licensed,裁决 / 配额 / 审计端点恢复可用;试用期内已登记的账本无需重建。
不通过
invalid 且公钥指纹与合同附件不一致,说明授权不是本环境签发,联系重新签发。
7

规则包判定(买治理规则执行包时验)

目标:违规动作能被 exit 1 挡住
执行(远端点,规则包随请求带上) curl -s -X POST https://<你的实例>/api/axiomgate/rulepack \ -H 'Content-Type: application/json' -H 'X-DID: DID-BR-000123' \ -d @rulepack_request.json # {pack: 规则包, ticket: 被判定对象} # 本地判定同样可用 python3 axg_rulepack.py --pack packs/agent_action.json --ticket t.json --report rp.html 预期输出 ok=true, run_sha256=…, pass=6, fail=0, skip=0 逐条 A-01…A-06 全部 PASS # 故意去掉高风险动作的审批号(条件规则) → ok=false, fail=1, 失败项 ["A-06 高风险动作必须附审批号"] → 进程退出码 1,可直接挡住流水线
通过条件合规工单全 PASS(exit 0);去掉审批号后精确判 FAIL(exit 1)并指出规则 id;同一请求重跑 run_sha256 完全相同;--report 出单页 A4。
附加核验(治理闭环:规则被私改要能被发现,改错要能退回) # 1) 私改规则包但不入账 → 巡检必须报出来 python3 m9_patrol.py --no-alert; echo $? # 期望 1,DRIFT_DETECTED,规则包异常 1 个 curl -s .../api/axiomgate/health | grep -o '"rulepack_bad":[0-9]' # 期望 1 # 2) 人工批准后回滚到已入账的历史版本 python3 axg_rulepack.py --rollback-pack --pack-id AXG-RP-DATA-BOUNDARY \ --version 1.1.0 --approved-by "治理委员会(人工批准)" --ledger AXG_ASSET_LEDGER.jsonl # 回滚后文件哈希必须等于账本里该版本的 sha256,且巡检回到 ALL_CLEAN # 3) 判定记录按租户分区统计(判定时带 tenant,统计时按租户切片) curl -s .../api/axiomgate/rulepack-stats -H "X-DID: <你的 DID>" # 返回按租户的执行次数 / 失败率 / 跳过率 / Top 失败规则
不通过
规则写错(类型不支持、正则不可编译)必须 exit 2 并指出哪条,不允许静默跳过——静默跳过等于假通过。规则变更须由人工批准后以新版本入账(--seal --approved-by)。
客户需要知道的边界

本产品能证明 / 不能证明

验收结论(现场填写)

验收单位
验收人 / 职务
部署环境(主机 / 端口)
验收日期
七步结果
1 安装 2 服务与授权 3 建账封账 4 审计报告 5 巡检告警 6 续期扩容 7 规则包判定
遗留问题 / 备注
签字
主页·流水线·产品·状态