aps-agent/docs/round-66-solver-isolation-p...

135 lines
6.8 KiB
Markdown
Raw Permalink Normal View History

# Round 66 多智能体并行实施计划
日期:2026-08-03
## 1. 执行策略
采用三条互斥写边界并行,主 agent 负责 GitNexus 门禁、协议集成、全量测试、真实运行和最终审计。共享 dirty 工作区是权威基线;worker 不提交、不清理、不触碰现场数据。
## 2. 依赖图
```text
W66-PROTOCOL(新协议/runner/worker) ─┐
├─ 主 agent 接线与集成
W66-RUNTIME(probe/sidecar/env/lock) ─┤
└─ W66-VERIFY(测试资产)
```
W66-VERIFY 只新增测试/fixture,不修改业务文件;可在协议接口稳定后通过 agent 通信对齐。
## 3. Worker 边界
### W66-PROTOCOL:solver 子进程协议与执行器
独占写:
- `server/engines/solver_process.py`(新增)
- `server/engines/solver_worker.py`(新增)
- 可新增 `shared/schemas/solver-subprocess.schema.json` 与对应生成/契约测试;若新增 schema,必须同步 `server/contracts.py` 和 `apps/web/src/api/types.ts`,否则不新增跨层 schema。
验收:正常、非零退出、fatal marker、timeout、非法响应、协议 mismatch;父进程不死;结构化错误;进程树回收。
验证:`python -m pytest tests/golden/test_solver_subprocess.py -q`(测试文件由 W66-VERIFY 提供时可先用自检脚本)。
### W66-ENGINE:CP/HYBRID 接线与父进程物化
独占写:
- `server/engines/cp_engine.py`
- 必要时 `server/engines/base.py`(仅错误元数据契约,避免改工厂)
测试独占:
- `tests/golden/test_cp_engine.py`
- `tests/golden/test_cp_cumulative.py`
- 可新增 `tests/golden/test_solver_engine_isolation.py`
验收:仅优化在 child;父进程 materialize;健康结果等价;所有失败 world 不变;CP/HYBRID 不伪装成功。
### W66-RUNTIME:Sidecar、探针与环境身份
独占写:
- `server/sidecar.py`
- `scripts/check_solver_runtime.py`
- `apps/desktop/sidecar.cjs`
- `packaging/requirements-runtime.lock`(新增;只锁定,不修改本地环境)
- `tests/golden/test_solver_runtime_probe.py`
- `apps/desktop/test/sidecar.test.cjs` 或对应现有 sidecar 测试文件
验收:probe 内部 timeout;来源/版本/Conda/user-site 报告;fatal+exit0 拒绝;PATH 清理;普通/冻结 solver-child 入口。
### W66-VERIFY:故障注入与存活验收
独占写:
- `tests/golden/test_solver_subprocess.py`(新增)
- `tests/golden/test_solver_failure_world_atomic.py`(新增)
- `tests/e2e/round66_solver_isolation_server.py`(如需)
- `apps/web/e2e/solver-isolation.spec.ts`(如 UI/API 能观察失败)
不得修改业务源码。验收覆盖恶意 child、timeout、协议截断、父进程继续健康、现场 world 不变。
## 4. 主 agent 集成职责
- 对每个现有符号编辑前运行 GitNexus impact;HIGH/CRITICAL 先告警。
- 用 Serena 检查符号体和引用;不修改 `get_engine()`。
- 协调 W66-PROTOCOL 与 W66-ENGINE 的 request/response 契约。
- 运行 focused -> 受影响 -> full golden -> Node/Web -> runtime probes -> browser/API 存活验证。
- 运行 `detect_changes(compare main)`,区分共享基线和本轮切片。
- 回写 `plan.md`、完成矩阵、CHANGELOG、算法/运行时文档和 Round 66 状态。
- 派独立只读 audit agent;blocking finding 修复后再收口。
## 5. 禁止项
- 不修改 `get_engine()`,不在 workflow 单点包裹后声称全入口安全。
- 不让 child 写 parent world、DB、审批、文件或外部系统。
- 不把 fatal 当 `RuntimeError` 后静默 RULE 成功。
- 不重建 `.venv`、不安装/升级依赖、不打包/签名/发布,除非用户另行授权。
- 不使用默认 PATH `python` 作为发布通过证据;它只作为故障探针。
- 不提交、不推送、不合并、不清理用户变更。
## 6. 集成顺序
1. 协议和 worker 自检。
2. CP/HYBRID 接线与健康等价测试。
3. runtime identity、sidecar child 和 PATH 清理。
4. 故障注入、world 原子性和 8003 存活。
5. 全量门禁、文档、独立审计。
## 7. 回传格式
每个 worker 报告 impact、修改文件、测试命令/结果、验收逐项、边界检查、残余风险、未提交/未触碰现场数据声明。
## 8. Pre-target-merge
最终只形成未提交的 pre-target-merge 报告;用户未授权时保留主工作区和所有证据,不执行 target advance、push、merge、release 或 cleanup。
## 9. Worker 执行回传
| Worker | 写入边界 | 结果 | 验收摘要 |
|---|---|---|---|
| W66-PROTOCOL | `solver_process.py`、`solver_worker.py`、协议测试 | Done | 协议 v1、digest/requestId、fatal/exit/timeout/非法响应/mismatch、进程树回收 |
| W66-ENGINE | `cp_engine.py`、引擎隔离测试 | Done | CP/HYBRID child 优化、父物化;失败 `UNAVAILABLE`、0 PO/WO、无 RULE 静默降级 |
| W66-RUNTIME | Sidecar、runtime probe、desktop env、runtime lock | Done (source) | Anaconda 稳定拒绝;两个 venv 各 5 次通过;源码 `--solver-child -I` trusted root bootstrap 后真实通过 |
| W66-VERIFY / 主 agent | focused/full/Node/Web、故障注入、服务与浏览器 | Done (local) | focused 80;full golden 1029/2 warnings;Node 60、Web/质量门禁与真实运行通过 |
| W66-DOCS | 本轮指定的 8 个 docs 文件 | Done | 同步真实运行、数据边界、构建后验收与下一 P0;不改代码/测试/数据 |
### 集成事实
- 正向复制 `world.json`:CP/HYBRID 均 `OPTIMAL`,1 PO / 10 WO / 10 operationSlots,协议 v1,`runtimeSafe=true`。
- 源码 Sidecar `--solver-child -I` 初次真实冒烟暴露 import root 问题;GitNexus LOW impact 修复后 CP 同样 `OPTIMAL`、1/10/10。
- MOM 复制数据:CP/HYBRID 求解 `OPTIMAL`,但现有主数据阻断导致 0 PO/WO、1 slot/1 conflict,不作为现场完整主数据证明。
- fatal/timeout 均失败关闭;timeout 15.633 秒并回收 grandchild;父进程和 8003 存活,业务世界原子。
- 8003 PID `21576`、5173 PID `9808` healthy;浏览器 title/root 正常、无 warning/error。
### Pre-target-merge 状态
- 现有冻结 Sidecar EXE 仅旧 `--probe-child` 通过;新 `--solver-child` 尚未随冻结产物重建验证。
- 全量黄金最终为 1029 passed / 2 warnings;首轮审计假绿阻断已修复,最终独立复审 `AUDIT: PASS`。
- 没有 commit、push、merge、release、cleanup 或现场业务数据写入。
### 审计补强
- 首轮审计发现成功响应摘要与条目业务语义未验证;已补父进程摘要重算、完整排列/字段守恒、status/pipeline 和可行槽位一致性门禁。
- 源码冻结自举已接通;旧冻结 EXE 未重建,保留构建后验收。
- 最终复审补强:临时文件 stdin 消除 Windows 管道背压;operationSlots 严格索引域与订单/产品绑定;补 pipeline/status 负向测试。