Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

验收矩阵

以下内容与仓库 docs/ACCEPTANCE_MATRIX.md 同步引入。状态列以仓库文件为准。

AlphaBound 验收矩阵

将系统设计 v0.1 的功能需求(FR)、非功能需求(NFR)、上线验收标准(§9.3)、安全边界(§7.3/7.4) 与故障降级矩阵(§7.2)映射为可执行、可勾选的验收条目。

  • 验证方法 对应 §9.2 测试金字塔: Unit / Property / Replay / Integration / Fault / Soak / Shadow / Manual(人工演练或评审)
  • 阶段 指该条目必须通过的最晚阶段闸门(见 ROADMAP.md);进入 Phase 4 实盘前,P0–P3 条目必须全绿
  • 状态: ☐ 未开始 · ◐ 进行中 · ☑ 通过

状态快照(2026-08-13): 核心软件 + shadow/demo/live 主路径已验证(zig build test 全绿; Dashboard 提案/BH/订单; 鉴权+MCP; 本机/生产 OKX 公共行情与私有余额、LLM 提案、market/derivatives 工具落库; 小额 live 下单与 flatten)。 下表 ◐ = 代码+单测/部分实网已落地, 完整 7 日 Soak 与部分实网 Fault 仍缺。

A. 功能需求(FR)

ID需求摘要验收标准验证方法阶段状态
AC-FR01行情与账户接入订阅 OKX 公共+私有 WS;启动与断线后 REST 快照对账一致;序列缺口触发 DEGRADED+reconcileIntegration(OKX Demo)+ Fault(断线注入)P1◐ REST ticker/余额实网 + 周期 REST 对账;公共 WS 帧编解码单测;私有 WS login/push 协议单测;TLS 私有流与断线注入待做
AC-FR02状态引擎内存维护价格/余额/BTC/挂单/净值/HWM/DD;快照带版本;replay 同版本结果逐位一致Unit + ReplayP1☑ core/state.zig 单写者引擎;replay 确定性逐位一致测试通过(state engine: replay determinism)
AC-FR03Agent 决策决策基于一致性快照+检索记忆;可按需调用工具;全程可审计Shadow + IntegrationP2◐ Context+LLM + market 工具 + 记忆/events + LLM reflection + Risk 准入审计(不执行)+ 全审计; 长跑阈值评审仍待
AC-FR04交易提案Proposal 严格 Schema(target/order_policy/confidence/thesis/evidence/invalid_if);坏 JSON/缺字段即作废Unit(Schema)+ FuzzP2☑ agent/proposal.zig 严格解析(单测)+fuzz:随机字节/全前缀截断/4000 轮字节翻转均不 crash,可解析变体保持全部不变量
AC-FR05风险准入校验 snapshot_version、数据新鲜度、压力净值≥HWM×90%+ExitReserve;能输出 APPROVE/REDUCE/REJECTProperty + UnitP3◐ 单测+property 基础; shadow 路径已调用 admit 并落 RISK_ADMISSION; Demo 执行联动仍待
AC-FR06订单执行client_order_id 幂等(decision_id+版本+序号);部分成交重算差额;超时→UNKNOWN→查询后处置Integration + Fault + ReplayP3◐ 单测 + demo 市价/limit place/query/cancel + UNKNOWN 查询 + partial 再规划(≤3腿); Fault/7d soak 待做
AC-FR07长期 Context五层记忆可写入/检索/版本化;Reflection 产出结构化 memory_ops 并生效Shadow + UnitP2◐ store+reflection 单测; Shadow: boot/retrieve/episode/LLM+确定性 reflection ops + Dashboard memories
AC-FR08可选数据工具工具注册含 Schema/时效/成本;返回统一 ToolResult;调用与结果全部落事件日志Unit + IntegrationP2(市场类)/ P5(扩展类)◐ registry + market.ticker/market.candles OKX REST provider 实调落 tool_calls;扩展域 provider 待做
AC-FR09DashboardOverview/Market/Trade Detail/Events/Memory/System 六视图;K 线+交易/风险标记;保留 TradingView attributionManual(UI 走查)+ Integration(API)P1(基础)/ P2(全视图)◐ Overview+提案+BH+Lightweight Charts K线/量/净值HWM+Memories+Events+System+订单/fills API+Tab+TV 归因;提案链路完整 Trade Detail 回放仍待
AC-FR10管理控制pause/resume/reconcile/cancel-all/flatten/safe-shutdown 全部可用且只经本机 CLI/Unix socketIntegration + Manual 演练P3◐ CLI 全套;demo cancel-all 会撤 pending;人工演练/长稳仍待

B. 非功能需求(NFR)

ID属性验收标准验证方法阶段状态
AC-NFR01延迟行情事件进程内风险计算 p99 < 10ms(不含公网);有持续测量与告警Soak(基准测量)P3◐ observability/latency.zig Histogram(2048 环形窗口,nearest-rank 分位)+主循环 market_tick→engine.apply µs 测量,system JSON latency_us{p50,p99,max,samples} 持续可见;soak-report p99 门限告警已接(samples≥20 且 p99>P99_BUDGET_US 默认 10ms → SOAK FAIL);长窗口基准累积中
AC-NFR02可用性断开 LLM/新闻/链上/Dashboard 后,风险监控、订单对账与退出能力仍工作Fault InjectionP3◐ LLM 断连注入演练 PASS(2026-08-12,scripts/llm-outage-drill.sh:不可达端点→tick/风险循环继续、HOLD 兜底、干净退出、DB verify PASS);新闻/链上无外呼路径;Dashboard 断开注入待做
AC-NFR03一致性提案未绑定当前 snapshot_version 即拒绝;状态变化后旧提案自动失效Property + UnitP2✅ admission 单测 + 随机化 property(1000 例:版本失配在任意快照状态组合下必 REJECT stale_snapshot)
AC-NFR04恢复重启→恢复 DB→OKX 对账→READY;对账完成前不产生增仓提案Integration + Fault(kill -9 注入)P3◐ 生命周期 BOOTING→CONNECTING→RECONCILING→READY 已实现并实网验证;未对账时 fail-closed 起步 exit_only(单测);kill -9 演练 PASS(2026-08-12 生产 SIGKILL→systemd 拉起→10s 恢复 READY,scripts/kill9-drill.sh 可重复执行,soak-report 入账不误报)
AC-NFR05部署发布生产 VM 无 Python/Node/Docker;核心二进制与 Dashboard 均可原子回滚;health fail 自动回滚Manual(发布演练)P3◐ 二进制 musl 静态链接(ldd "not a dynamic executable",daemon 零运行时依赖);releases+current symlink 原子回滚+health fail 自动回滚演练 PASS(2026-08-12);共享 VM 上存在他项目的 docker/python,daemon 不依赖
AC-NFR06审计资源关键事件带 state_version/software_version/config_hash/correlation_id;资源(CPU/RSS/fd/WAL/磁盘)有告警Unit(信封)+ SoakP3◐ core/events.zig 事件信封四字段已单测;daemon 落库事件实测含全部戳;soak-report 资源门限已接(RSS>256MB/fd>256/WAL>64MB → SOAK FAIL;磁盘 statvfs 已在 daemon 内)

C. 上线验收标准(§9.3,Phase 4 实盘闸门)

ID标准验证方法状态
AC-GO1重启后可从 OKX 对账出正确余额、BTC 数量、开放订单和 HWMIntegration(重启演练×3)◐ 重启演练×3 PASS(2026-08-12 生产,scripts/restart-drill.sh:每轮 HWM 恢复+461 memories 重载+OKX 私有余额对账 ok+READY≤9s);开放订单对账待 demo 挂单场景
AC-GO2Agent 无法直接访问交易凭证或绕过 Risk Kernel(代码层能力缺失,非 prompt 约束)Manual(红队评审)+ Unit(接口不可达)◐ 架构落地:agent/ 仅产出 Proposal 值类型;凭证只在 exchange/okx/auth.zig;security/isolation.zig 源码扫描单测持续强制隔离;红队评审待做
AC-GO3Risk Kernel 核心性质过 property test,覆盖边界/费用/滑点/部分成交Property☑ admission 2000 次随机 + halted/flattening 模式 + 费用/滑点/shock 单调性(stress equity 非增)+ max_drawdown 收紧单调 + planner 部分成交迭代收敛(qty 单调减不翻向) property 全过
AC-GO4断开 LLM、新闻、链上和 Dashboard 后,风险监控与订单对账仍工作Fault Injection◐ LLM 断连演练 PASS(同 AC-NFR02);新闻/链上无外呼路径;Dashboard 进程内无独立断开面
AC-GO5所有订单可追溯到 decision_id、snapshot_version、risk decision 和 config_hashReplay(审计链抽查)◐ --verify-db 审计链:订单→AGENT_PROPOSAL_OK 或 ADMIN_TARGET_WEIGHT + ORDER_* + 无孤儿 fills;单测含 operator 锚点;scripts/audit-go5.sh 远端抽查;2026-08-12 真实 agent REBALANCE 样本已有 exchange_id
AC-GO6未知订单/陈旧数据/数据库异常进入安全状态,不默认继续增仓Fault Injection◐ 未知订单→order_ambiguity→degraded(单测);陈旧数据→admission REJECT stale_data(property);DB 审计写失败→journal_ok=false→exit_only、写恢复自愈(2026-08-12 新增,state 单测锁定;行情新鲜不能单独清除降级);进程级 fault 注入演练待做
AC-GO7Dashboard 可完整回放一笔交易从观察到反思的链路Manual(UI 走查)◐ 决策展开含 admission/exec + 按 decision_id 关联订单/成交; 完整链路 UI 走查待 Demo
AC-GO8交易模式连续稳定 ≥7 天,完成 ≥1 次断线恢复和 ≥1 次版本回滚演练Soak + Manual◐ 版本回滚演练 ≥1 次 PASS(2026-08-12 双向);kill -9/重启恢复演练 PASS;执行场所已就绪(mode=live+小额子账号+OKX_REAL_MONEY_OK=1);7 天滚动 soak 窗口积累中

D. 风险内核专项(§5)

ID验收标准验证方法阶段状态
AC-RK1保守净值 E_t 扣除退出费用/滑点/挂单风险;HWM 单调不减;DD 公式与设计一致Unit + PropertyP3☑ risk/equity.zig:保守估值扣费/滑点、HWM 单调、DD 公式、非负回撤全部单测通过
AC-RK2任意输入下 Risk Kernel 不批准使压力净值 < HWM×90%+ExitReserve 的提案Property / FuzzP3● 压力净值地板单测 + 随机化 property×2(2000+2000 例)+ decimal 极值 fuzz(4000 例:0/1/i64max/1e18 单位级 raw 组合,不 panic、Overflow fail-closed、APPROVE/REDUCE 压力净值 ≥ floor)
AC-RK3风险状态机转换(NORMAL/EXIT_ONLY/FLATTENING/HALTED)与 §5.3 条件表一致;HALTED 不自动恢复交易Unit(状态机)+ FaultP3◐ 转换表全路径单测 + 随机序列 property(500 walk×64 步:HALTED 无 reset 不出、出边仅 EXIT_ONLY、FLATTENING 不被健康信号中止);进程级 Fault 注入待做
AC-RK4FLATTENING 先撤增险挂单,再退出,持续对账至 BTC 可用≈0Integration(Demo 演练)P3☐
AC-RK5边界穿透时如实记录实际穿透幅度与成交成本(不掩饰)Fault(极端行情 replay)P3☐
AC-RK6max_drawdown 与 Risk Kernel 参数不可热加载、Agent 不可修改Unit + Manual(配置评审)P3◐ config 仅启动时解析,allow_runtime_override=false 强制;Agent 模块无 config 写路径;评审待做

E. 故障降级矩阵(§7.2,逐项注入验证)

ID故障场景期望自动动作验证方法状态
AC-FD1LLM 超时/报错本轮 HOLD,无订单;风险与对账继续Fault◐ shadow HOLD + fault/matrix 分类/坏 JSON 单测;实网断连注入 PASS(scripts/llm-outage-drill.sh)
AC-FD2外部工具不可用ToolResult=UNAVAILABLE;不得把缺失数据编造成零值Fault + Unit◐ UNAVAILABLE/null data 单测(fault/matrix)+ market HTTP 路径
AC-FD3公共行情过期进入 EXIT_ONLY;重连 + REST 校验;不增险Fault◐ stale→EXIT_ONLY + admission 拒增仓(fault/matrix); 实网断线待做
AC-FD4私有账户 WS 断开EXIT_ONLY + REST 对账;未知期间不自主开仓Fault◐ unresolved/stale account 拒增仓单测; WS 断线注入待做
AC-FD5下单超时订单 UNKNOWN→查询后处置;禁止直接重发Fault + Integration◐ UNKNOWN 禁止 submit 单测 + demo query 路径; 实网超时注入待做
AC-FD6SQLite busy短暂重试+降采样遥测;关键事件优先落库Fault◐ stepCritical 对 events/orders/fills/… 写路径重试 + busy_timeout; 注入待做
AC-FD7磁盘接近满停新交易,清理可重建缓存;严重时 HALTEDFault◐ storage/disk statvfs + disk_ok 进健康检查; low→EXIT_ONLY critical→HALTED; 缓存清理待做
AC-FD8数据库损坏仅保留退出能力+应急文本日志;禁止静默新建空库继续交易Fault◐ boot:已存在文件 open 失败 → FATAL refuse recreate; 应急文本日志/只退能力待扩
AC-FD9回撤边界触发FLATTENING → HALTED;记录穿透与成本Fault + Replay◐ FLATTENING→HALTED + 无自动恢复(fault/matrix);极端行情 replay 待做
AC-FD10进程崩溃systemd 重启→重新对账→READY;重启前状态不被假定正确Fault(kill -9)☑ 生产 kill -9 演练 PASS(2026-08-12) + fault/matrix 单测:fresh engine EXIT_ONLY/未 reconcile 拒增仓,对账后才 NORMAL

F. 安全边界(§7.3 / §7.4)

ID验收标准验证方法阶段状态
AC-SEC1OKX API Key 仅 Read+Trade(无 Withdraw),绑定 Azure 固定出口 IP 白名单Manual(配置审查)P4◐ boot 代码门禁:实盘授权时探测 /account/config,withdraw 权限直接拒绝启动;生产验证 read=true trade=true withdraw=false(2026-08-12);IP 白名单绑定为 OKX 侧人工配置
AC-SEC2密钥文件 root 管理 0600;服务进程只读;密钥不进备份Manual + 脚本检查P4✅ check-remote.sh SEC2 段自动检查:600 root:alphabound + 数据目录无密钥泄漏 + DB/备份/WAL 字节级抽查真实密钥值不存在,生产 PASS(2026-08-12)
AC-SEC3LLM Context/日志/错误栈/Dashboard 响应中无 secret/passphrase/签名材料(redaction 生效)Unit(redaction)+ Manual 抽查P2◐ redaction.redact 单测 + logEventPayload 落库前 redact/looksLeaky 拦截;check-remote SEC3 段抽查全部 Dashboard API(system/state/events/decisions/orders/memories/shadow)不含真实密钥值,生产 PASS(2026-08-12);LLM context 出站抽查待做
AC-SEC4systemd 加固: NoNewPrivileges/PrivateTmp/ProtectSystem/受限写目录Manual(unit 审查)P1✅ 生产核验(2026-08-12 systemctl show):NoNewPrivileges=yes PrivateTmp=yes ProtectSystem=strict ProtectHome=yes ReadWritePaths=/var/lib/alphabound User=alphabound
AC-SEC5外部 HTTP 响应有大小/解压/超时/JSON 深度限制Unit + FuzzP2◐ security/limits.zig 上限常量+jsonStructureSane 结构扫描(单测含深度炸弹/breakout/截断);OKX REST 512KB、LLM 1MB、egress 探针 4KB 固定容量 sink 接线,超限→记录并拒绝;解压炸弹面(gzip)待评审
AC-SEC6Agent 禁止项全部不可达: 读环境变量/密钥/DB 文件、执行 shell、任意 URL、直接获得 OKX client、修改风险配置/Prompt/二进制Manual(红队)+ UnitP2◐ security/isolation.zig @embedFile 源码扫描测试:agent 纯逻辑禁 std.http/net/fs/process/getenv/Child/exchange/execution/storage/risk-admission/凭证 token,openai.zig 仅白名单 std.http;人工红队评审待做
AC-SEC7工具返回视为不可信数据,只进 data 字段;第三方文字不得成为系统指令(注入测试)Fault(工具污染注入)P2☑ formatObservation 对 data_json 结构扫描,失败→null;fault/matrix.zig 注入测试:提示注入文本仅存于 data.note 字符串值内,risk_rules 不可变,breakout/深度炸弹 payload 全部中和
AC-SEC8Dashboard 默认仅绑定 127.0.0.1;管理命令仅本机 CLI/Unix socketIntegration(端口扫描)P1◐ 默认 bind 127.0.0.1;生产为私网 VM 上 0.0.0.0(局域网 Dashboard),互联网侧探测出口 IP:8080 不可达(NAT 无端口映射,2026-08-12 实测);管理仅本地控制文件 CLI;完整端口扫描(nmap 全端口)待做

G. 数据与运维(§6 / §7.5 / §8)

ID验收标准验证方法阶段状态
AC-OPS1SQLite WAL 位于本地磁盘(非网络 FS);Journal Writer 唯一写者;关键事件限时提交Unit + SoakP1◐ WAL+单写者已落地;小时 Backup API→.bak;Soak 待做
AC-OPS2事件信封顶层含 type/correlation_id/state_version/software_version/config_hashUnitP1☐
AC-OPS3每小时备份快照(留 24)+ 每日(留 30);备份失败不影响交易关键路径Fault + ManualP1◐ storage/retention.zig 命名/轮换/selectDoomed 纯函数(property 测试)+rotateBackups 接线:hourly(留24)/daily(留30)快照+latest .bak,全部 best-effort 只记日志不阻断主循环;生产恢复演练待做
AC-OPS4每周 restore drill: 备份启动只读实例,校验 schema/事件序列/HWM/订单投影Manual(演练记录)P3 起◐ --verify-db PATH(只读打开,integrity_check/user_version/7 表行数/seq 连续/HWM 可解析)+scripts/restore-drill.sh(最新快照→scratch→校验→新鲜度<2h);生产演练 PASS(2026-08-12,hourly 快照 9s 新);周期化排程待做
AC-OPS5发布 8 步流程可执行;dashboard-only 更新不重启 daemon;核心更新 pause→checkpoint→切换→重启Manual(发布演练)P3◐ 版本化部署上线:/opt/alphabound/releases/<sha>-<ts>/+current 原子 symlink 切换(ln+mv -T),保留 5 版;dashboard-only 免重启路径待做
AC-OPS6ready health check 失败自动回滚上一 symlink 并重新对账Fault(坏版本注入)P3◐ install-remote.sh health 门禁(15×2s 探测 /health/ready)失败自动回滚上一 release+记录 deploys.log;scripts/rollback-remote.sh 手动回滚演练 PASS(2026-08-12,双向);真实坏版本注入已发生一次(health grep bug 触发 auto-rollback 路径)
AC-OPS7配置热加载规则符合 §8.5 表(Prompt 可热载;max_drawdown 不可)Unit + ManualP2☐
AC-OPS8模型调用成本、基础设施成本可见可统计(成本 vs 本金一级指标)Manual(Dashboard 走查)P2◐ system JSON 暴露 llm_calls/prompt_tokens/completion_tokens/total_tokens 会话累计;USD 折算与基础设施成本项待做
AC-OPS9equity_samples 保留策略生效(1s 保 7 天,1min 永久);tool_calls 原始 30 天Unit(保留任务)P3◐ retention.zig cutoff/prune SQL(单测)+每小时 runRetentionSweep 接线:tool_calls>30d、equity '1s'>7d 清理,'1m' 永久保留;长跑验证待做

H. 阶段闸门汇总

闸门必须全绿的条目
Gate 0(P0 退出)依赖决议 + 24h 长稳(见 ROADMAP,无正式 AC,产出决议记录)
Gate 1(P1 退出)AC-FR01/02、AC-FR09(基础)、AC-SEC4/8、AC-OPS1/2/3
Gate 2(P2 退出)AC-FR03/04/07/08(市场类)、AC-NFR03、AC-SEC3/5/6/7、AC-OPS7/8
Gate 3(P3 退出)AC-FR05/06/10、AC-NFR01/02/04/05/06、AC-RK1..6、AC-FD1..10、AC-OPS4/5/6/9
Gate 4(MVP 运维判定)AC-GO1..8 + AC-SEC1/2 + 以上全部;小额 live 已在 Gate3 解锁

维护约定: 每次闸门评审更新状态列并附证据链接(CI run / 演练记录 / 评审纪要); 新增需求先补矩阵行再写代码。