aps-agent/docs/round-70-approval-database-...

79 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Round 70 多智能体并行实施计划:审批数据库权威 Clock / TTL / CAS
> 日期:2026-08-04
> 状态:`PLAN AUDIT: PASS`
> 原则:写边界互斥;测试智能体不得直接修改实现文件;主 agent 负责最终集成和门禁。
## 1. 依赖图
```text
W70-DISCOVERY
├─ W70-CLOCK
├─ W70-SCHEMA
└─ W70-TEST-DESIGN
↓
Main integration
↓
focused regression
↓
independent audit/fixes
↓
full golden + runtime + detect_changes
```
W70-DISCOVERY 已完成:确认 MySQL DDL 当前为 FLOAT;本机 Docker daemon 不可用且无 mysql client;`DatabaseApprovalStore` LOW impact,`ApprovalRequestRecord` HIGH impact。
## 2. Worker 边界
### W70-CLOCK
- 写:`server/agent_core/approval_db_store.py`
- 不写:models、migration、tests、Harness/API
- 交付:dialect-aware transaction clock;同 session DB now;request CAS expiry;grant consume/expire;fail-closed 错误分类。
- 自检:approval clock/store focused tests、Ruff、compileall。
### W70-SCHEMA
- 写:`server/db/models.py`
- 新建:`server/db/migrations/versions/20260804_01_approval_database_clock.py`
- 不写:approval store 逻辑、tests、API
- 交付:六个 epoch 字段 MySQL DOUBLE variant;upgrade/downgrade;新 revision;InnoDB/索引/FK 不漂移。
- 自检:MySQL/SQLite DDL 编译、migration upgrade/downgrade、Ruff、compileall。
### W70-TEST
- 新建:`tests/golden/test_approval_database_clock.py`
- 必要时写:`tests/golden/test_approval_database_store.py`
- 不写:生产代码、migration、docs
- 交付:TTL 边界、应用时钟偏移无权威性、DB clock 失败关闭、approve/expire、consume/expire、事务回滚、MySQL DOUBLE/SQL 编译。
- 自检:新测试 + 现有 approval database/migration/store/harness 回归。
### Main agent
- 写:Round 70 文档、`plan.md`、完成矩阵、CHANGELOG;必要的窄集成修复需先 impact。
- 负责:合并审阅、全量回归、数据保护、服务健康、GitNexus reindex/detect_changes、独立只读审计。
## 3. 集成策略
1. W70-SCHEMA 先提供 revision/type 合同,W70-CLOCK 只引用新 required revision,不接触 migration。
2. W70-TEST 可先基于约定接口写测试;最终由主 agent 对齐具体私有函数名。
3. Worker 之间不得互相修改对方文件;如发现接口不一致,通过消息交给主 agent 集成。
4. 任何修改 Harness/API/文件 backend 的需求视为扩界,停止并重新 impact。
## 4. 最终验收
- 本地合同全部通过后,结论为 `R67-B2 LOCAL PASS / EXTERNAL MYSQL PENDING`。
- 无真实 MySQL 8、多节点、时钟偏移、网络/HA 故障注入证据时,完成矩阵保持 Partial external。
- 最终审计必须区分 SQLite 合同、MySQL 方言编译和真实 MySQL 环境三种证据层级。
## 5. Pre-target-merge gate
本轮明确不 commit/merge。未来若获授权,主 agent 必须先报告:
- HIGH impact 模型变更和迁移风险;
- 数据库时间、TTL、CAS 与事件原子性证据;
- SQLite 与真实 MySQL 的验收边界;
- 全量回归、detect_changes 和未关闭外部风险;
并等待用户确认后才能进入 target merge。