控制面安全验证与发布门槛¶
控制面沿用阶段门禁的对抗标准,信任前提是服务端进程、门禁目录与客户端工作区隔离。 每次增加写能力,先验证是否引入跳过阶段的路径。
可重复的对抗验证¶
benchmarks/control_red_team/ 独立管理案例,复用现有框架的结果与过期豁免判定,
也能通过旧入口的 --techniques 选择。五类共 36 个案例:
| 技术 | 数量 | 验证边界 |
|---|---|---|
break_glass_reuse |
7 | 其他文件/会话、过期、复用、失败仍消费、门禁目录、阶段 |
task_state_skip |
6 | 跳步、并发唯一认领、人工所有权、回主流程、stale |
goal_binding_escape |
10 | 阶段 2–5 绑定、未完成 next、最后证据、abandon、第二目标、暂停、篡改 |
control_bypass |
6 | 无令牌、过期、撤销、observer 复核、worker 建 Goal、Agent 复核;真实 HTTP |
policy_fail_open |
7 | 策略损坏/缺失、空角色、非法/拼错范围、限流、授权下策略损坏 |
python -m pip install -e '.[dev,tui]'
python -m pytest tests/test_control_plane.py tests/test_control_security.py tests/test_control_security_gates.py -q
python benchmarks/control_red_team/run_control_red_team.py --workspace .pytest_tmp/control-rt --output .pytest_tmp/control-report --json
Goal 完整循环运行真实 pytest 子进程,通过公开接口提交真实输出,没有伪造绿测记录。
故障注入只用于到期、持久化中断、写盘失败等边界。断言不成立报告 escaped,
运行异常报告 inconclusive,二者均使控制面运行失败;不会将故障冒充拦截。
本地没有 LLM/TLC 验证,不能据此宣称实时语义或模型检查通过。
独立入口默认账本 benchmarks/control_red_team/known_residual.yaml 当前为 entries: []。
逃逸默认非零;豁免须登记 technique、case_id、reason、expires_at,
配置损坏或任何豁免过期均失败。案例自身的 expectation 不能让 CI 变绿。
覆盖率与 CI¶
测量行与分支之和,保留原始百分比,不用四舍五入跨越门槛:
python -m coverage run --branch -m pytest tests/ -q -s
python -m coverage json -o .pytest_tmp/control-coverage.json
python scripts/check_control_coverage.py .pytest_tmp/control-coverage.json
Windows 控制台可设 PYTHONIOENCODING=utf-8。-s 避免 pytest 的终端捕获干扰
Textual 无头交互;CI 安装 dev,tui 依赖,缺少可选界面依赖的跳过不算界面验证完成。
- 核心包至少 90%;control 至少 90% 且不得低于同一报告的核心包覆盖率。
permissions.py与包含 Task/Goal 状态机的service.py各至少 95%。- 缺分支数据、核心包数据或关键文件数据直接失败。
- red-team 工作流含 control-security job 和快速技术子集,覆盖 main push、相关 PR、
每周定时和手动执行,无
|| true放行路径。
本轮核对与发布状态¶
2026-10-20 的发布准备先从无控制面的 db235f7 提取 API 冻结基线,
在独立 codex/release-v1.0.0 分支修复工作流语法并整理真实日期,再经 CI 验证后发布 1.0;
主分支通过同样的发布门槛后发布 1.1。CHANGELOG 的 2026-09-12 是原里程碑说明日期,
不是正式发布日期。README 使用版本线描述,实际标签及 Release 才是发布证明。
本轮验证记录 保存 36/36 对抗报告、精确行/分支计数和远程控制面安全 CI 链接。 本地核心覆盖率 93.65%,control 97.21%,权限 99.15%,Task/Goal 服务 98.79%。
本轮复现非法路径模式被接受,已增加更新校验和落盘非法策略拒绝测试; 紧急授权的策略检查前移到消费之前。原实现已有后续策略拒绝,未据此宣称可绕过落盘。 未初始化时不再生成 Diff/任务写产物,保证显式启用;界面渲染加锁防止 widget 操作交错。
发布依次要求安全测试、同版本覆盖率、严格文档构建和远程 CI 全绿。 先为可核对的 1.0 里程碑源码建立真实标签,再发布包含控制面的 v1.1.0; 不得把控制面混入假装历史发布的 v1.0.0。标签会触发 PyPI 发布,前置条件不满足时保持待发布。
观察与扩样¶
write_audit 保持检测模式。本地回归验证 Diff 缓存、SQLite 和 Goal 报告被门禁目录 排除规则排除,不误记为 Agent 写入;这不能代替未来 2–4 周真实使用观测。 保留未经授权写事件的路径、来源、阶段与误报归因,不自动放宽策略。
Scale-50 已启动,固定 50 样本(12 仓库)、deepseek-v4-flash、每组 60 轮、并发 2;
gold 自检通过。首轮仅有 20/50 镜像缓存,镜像站对其余镜像返回 403,须补齐后续跑,
不按镜像可用性换样本。协议与固定清单见 benchmarks/swebench/manifests/。
未得到 50 个完成配对前,
不得复用 Scale-20 成功率作为新结果。技术博客待安全门槛完成后再写。