Add 永期半自动: human arm, machine open/close, then stop.
Settings toggle, Plan panel, Fleet monitor, exit locks and armed TOCTOU gates; docs and dual audits. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
# 审计说明 — 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` |
|
||||
|
||||
## 已修复
|
||||
|
||||
1. 选约后、`opening` 前、以及 `open_group` 直前再次校验 `semi_armed`;取消授权中止开仓。
|
||||
2. `phase=opening` 时禁止取消授权(防 LIVE 落单窗口 TOCTOU)。
|
||||
3. 开仓成功写入 `semi_trade_lock`;盯盘出场读锁;平仓/收尾清理。
|
||||
4. 设置关/开半自动强制 `semi_armed=false`;设置接口不可写入 `semi_armed`。
|
||||
5. 进程启动无仓清 armed。
|
||||
6. `arm_semi` LIVE 先过 `live_ready`。
|
||||
7. 已授权或活跃阶段禁止改本单参数。
|
||||
8. 半自动平仓禁止远虚只平永续;平仓后勿覆盖 `wait_human` phase。
|
||||
|
||||
## 复审
|
||||
|
||||
| 轮次 | 工具 | 结论 |
|
||||
|------|------|------|
|
||||
| 复审 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 后须重新授权。
|
||||
Reference in New Issue
Block a user