4585dba3c3
Settings toggle, Plan panel, Fleet monitor, exit locks and armed TOCTOU gates; docs and dual audits. Co-authored-by: Cursor <cursoragent@cursor.com>
1.7 KiB
1.7 KiB
审计说明 — 2026-08-08 永期半自动
范围
半自动:semi_auto.py、引擎授权/出场/wait_human、/api/plan/semi/*、设置与 Fleet 透出、首页与中控 UI。
轮次
| 轮次 | 工具 | 结论 |
|---|---|---|
| 1 | Security Review | 3 项中高:取消授权 TOCTOU、出场参数未锁定、关半自动未清 armed |
| 2 | Bugbot | 2 项高:重启后陈旧 armed、授权绕过 LIVE live_ready |
已修复
- 选约后、
opening前、以及open_group直前再次校验semi_armed;取消授权中止开仓。 phase=opening时禁止取消授权(防 LIVE 落单窗口 TOCTOU)。- 开仓成功写入
semi_trade_lock;盯盘出场读锁;平仓/收尾清理。 - 设置关/开半自动强制
semi_armed=false;设置接口不可写入semi_armed。 - 进程启动无仓清 armed。
arm_semiLIVE 先过live_ready。- 已授权或活跃阶段禁止改本单参数。
- 半自动平仓禁止远虚只平永续;平仓后勿覆盖
wait_humanphase。
复审
| 轮次 | 工具 | 结论 |
|---|---|---|
| 复审 Security | 先验 MEDIUM(opening→open_group 窗口) | 已用 open_group 直前 is_armed + phase=opening 禁止取消授权关闭 |
| 复审 Bugbot | 同窗口 TOCTOU(high) | 同上已修;无其它半自动逻辑 bug |
验证
pytest backend/tests/test_semi_auto.py:通过。- 授权 API 仍
require_user;Fleet 仅只读字段。
残留风险(可接受)
- 授权后至开仓完成前改系统级非半自动参数(如杠杆)仍可能影响定仓;与全自动一致,非半自动独有。
- 有仓重启保留 trade_lock;无仓清 armed 后须重新授权。