merge: feature/coordination-db-daemon-2026-09-23 (plan+research docs)

This commit is contained in:
WeiCHEN
2026-09-23 14:00:21 +08:00
5 changed files with 331 additions and 0 deletions
+1
View File
@@ -18,6 +18,7 @@
| owner | task | branch | worktree | mutex | status |
|---|---|---|---|---|---|
| Cursor | coordination-db-daemon-2026-09-23 | feature/coordination-db-daemon-2026-09-23 | .worktrees/coordination-db-daemon-2026-09-23 | coordination-db-daemon | in_progress |
| Cursor | integrate-pi-runner-response-size-r2-2026-09-23 | feature/integrate-pi-runner-response-size-2026-09-23 | .worktrees/integrate-pi-runner-response-size-2026-09-23 | git:dev | done |
| Cursor | modular-decouple-residual-b-2026-09-23 | feature/modular-decouple-residual-2026-09-23 | .worktrees/modular-decouple-residual-2026-09-23 | modular-decouple-residual | done |
| Cursor | modular-refactor-impl-plan-2026-09-23 | feature/modular-refactor-impl-plan-2026-09-23 | .worktrees/modular-refactor-impl-plan-2026-09-23 | docs-remediation-modular-impl-plan | done |
@@ -0,0 +1,87 @@
---
title: "协调库与 daemon:现状核查与边界核对"
created: 2026-09-23
owner: Cursor
task_id: coordination-db-daemon-2026-09-23
policy_revision: "agent-governance-2026-09-21-r1 @ 63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344"
review_state: pending
integration_state: pending
deployment: not_required
cleanup: pending
remote_sync: not_requested
status: done
confidence: high
---
# 调研:协调库与 daemon 现状核查
## 范围与授权
- 用户目标:在本仓库重新落地「协调库 + daemon」方案与研究记录;L1 保持单宿主机,跨机 PostgreSQL 仅登记为 planned 的 L2(需二次授权与 ADR)。并行授权修掉 `agentctl queue` 子解析器重复注册缺陷。
- 允许写路径(本调研):`.doc`(只读采样代码与 `.locks` 运行态)。
- 交付终点:可审的研究记录 + 配套方案;不实施 daemon/PostgreSQL,不改产品业务代码。
- 非目标:跨机 HA 实施、OS 沙箱、产品容器依赖式协调。
## 结论
1. `.locks/state.sqlite` 已是本机协调权威库(11 表;采样时 tasks≈105、runs≈653、events≈1406),不是「部分状态」;`scripts/agentctl.py` 已 enforced scope / lease / CAS / 收据 / 候选准入 / `--ff-only`。
2. 真正缺口是:显式长期 claim、常驻监管入口、策略外部化、CURRENT/MATRIX 稳定 record id;`queue`/`jobs` 在修复前因 CLI 缺陷恒为 0 行(已由 `63e66c6f` 修复 parser)。
3. 跨机 + 独立 PostgreSQL + systemd 与 [2026-09-21 锁方案](../../remediation/2026-09-21-agent-lock-coordination-plan.md) §3.2 及 [平台深化方案](../../remediation/2026-09-23-platform-deepening-reliability-ha-concurrency-plan.md) §0 冲突,只能作为 L2 planned,开工前另立 ADR。
## 证据
| 项 | 路径/命令 | 结果 |
|----|-----------|------|
| 权威库存在 | `.locks/state.sqlite`(gitignore:33;dockerignore:24) | 存在;`sqlite3 -readonly … ".tables"` → deployments/documents/events/freezes/jobs/projections/queue_items/receipts/runs/tasks/validations |
| 行数采样(2026-09-23) | `sqlite3 -readonly .locks/state.sqlite` 计数 | tasks 105;runs 653;events 1406;queue_items 0;jobs 0 |
| 无 Go agentctl | `cmd/` 列表 | 无 `cmd/agentctl`;协调 100% Python |
| scope/lease | `scripts/agentctl.py:27` `SHARED_DOCS`;`:589` `class Lease`;`:554+` `check_resources` | 已实现;header 声明 cooperative/advisory |
| 文档 CAS | `docs apply` `:856`;收据 `:954`;hook `:1057-1064` | 已 enforced(相对受控入口) |
| 候选准入 | `admit_candidate` `:1066`;`integrate` `--ff-only` | 已 enforced |
| queue 缺陷(修复前) | 曾于 `:1613` 与 `:1629` 双重 `add_parser('queue')` | 后注册覆盖先注册;handler 读 `args.head`/`args.drain`/`args.task` |
| queue 修复 | 合入 `63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344` | 仅保留一处注册(现 `:1613`);回归测试 3 例;全套 unittest 103/2 skipped PASS |
| 策略 YAML | `configs/agent-governance.yaml` | **不存在**;策略硬编码于 `agentctl.py` / `agentctl_w4.py` |
| 常驻服务 | `find` `*.service`/`*.plist`;compose 无 agentctl | **0 个**;`queue schedule`/`deploy run-loop` 均为前台调用 |
| 主机 | `uname -s` | Darwin(macOS);systemd 不能作为本机 L1 默认 |
| 孤儿实现 | `scripts/agentctl_automation.py` | 零导入;schema 含 `operations`/`doc_registry`,活库无这两表 |
| 孤儿文件 | `.locks/state.db` | 0 字节;代码无引用 |
| 既有方案 | `.doc/remediation/2026-09-21-agent-lock-coordination-plan.md` | planned;推荐本机 SQLite,明确拒绝产品 PG/跨机锁服务(本期) |
| INDEX 缺口 | `.doc/remediation/INDEX.md` | 未索引 2026-09-21 锁方案 |
| CURRENT 矛盾 | `.doc/ops/CURRENT.md:5` vs `:15` | 分别写 macOS 租约可用 / 不可用 |
| 操作规范过时 | `.doc/ops/2026-09-21-agent-worktree-workflow.md:3` | 仍写「Linux 本机」;W1-B macOS 已 done |
| 不存在的摘要产物 | `3f14d7fa`;`2026-09-23-coordination-db-daemon-*.md`(合入前) | 对象名无效;路径不存在;本轮为重新落地 |
## 边界冲突核对
| 主张 | 权威来源 | 处置 |
|---|---|---|
| 跨机锁服务 / 产品 PG 协调 | 锁方案 §3.2「当前不采用」 | L2 planned;另立 ADR 前不开工 |
| HA=单宿主机 | 平台深化方案 §0(用户确认) | L1 遵守;跨机不在深化方案范围内 |
| L1 不宣称 OS 沙箱 | 操作规范 `:5`;`agentctl.py:2` | 方案全文保持 advisory |
| systemd 作为非容器运行方式 | 仓库无 unit;主机 Darwin | L1=launchd;systemd 仅 L2 Linux 中央主机 |
## 机制核验(官方语义,推论)
- SQLite 短事务可原子完成多资源冲突检查,但不能装入多小时开发。
- flock 与打开 fd 绑定;TTL 到期不等于进程已停写。
- 两次 Markdown rename + SQLite 不是跨介质原子事务;发布边界仍是 Git 提交。
- argparse 同名子解析器后注册覆盖先注册(本轮缺陷根因)。
## 开放问题
- L2 ADR 的 RPO/RTO、中央主机拓扑与凭证边界待二次授权。
- `agentctl_automation.py` 收敛或删除的独立实施批次尚未认领。
- FEATURE-MATRIX 27 行稳定 record id 迁移策略(additive vs 一次性改表)待 U6 开工前确认。
## 建议动作
1. 合入本调研与配套方案(docs-only)。
2. 按方案 U1–U7 另立实施 short-term;U1 剩余项(automation 归一、state.db 清理)在 queue 修复之后继续。
3. L2 仅登记,不排期。
## 状态与交接
- 被审 SHA:`63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344`(含 queue 修复)。
- 本文件状态 `done` 指调研可审,不代表方案已实施。
- 配套方案:[协调库与 daemon 方案](../../remediation/2026-09-23-coordination-db-daemon-plan.md)。
- 任务主记录:[short-term](../short-term/2026-09-23-coordination-db-daemon.md)。
@@ -0,0 +1,69 @@
---
title: "协调库与 daemon:方案与研究落地"
task_id: coordination-db-daemon-2026-09-23
status: in_progress
created: 2026-09-23
updated: 2026-09-23
owner: Cursor
task_type: research
task_tier: multi_stage
policy_revision: "agent-governance-2026-09-21-r1 @ 63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344"
branch: feature/coordination-db-daemon-2026-09-23
worktree: .worktrees/coordination-db-daemon-2026-09-23
base_dev_sha: "63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344"
write_scope: [".doc"]
allowed_environments: []
head_sha: ""
mutex: coordination-db-daemon
review_state: pending
integration_state: pending
deployment: not_required
cleanup: pending
cleanup_owner: "独立维护者"
cleanup_trigger: "合入 local_dev 且无进程占用后复查"
remote_sync: not_requested
---
# 协调库与 daemon:方案与研究落地
## 用户目标与授权
- 用户目标:统一认领/状态/执行入口;文档状态化;为多主机预留结构;先落地方案文档。
- 授权:docs-only 重新落地方案+研究;L1 单宿主机、L2 跨机仅 planned;并行修掉 queue 子解析器缺陷(已合入 `63e66c6f`)。
- 交付终点:可审的 remediation + research + 本任务文;合入 local_dev;不 push。
- 禁止:实施 daemon/PostgreSQL;改产品代码;操作未授权环境;晋升 test/main。
## 范围与非目标
- 允许写入:`.doc`(remediation / ops/research / ops/short-term / remediation INDEX / CURRENT 本人行)。
- 非目标:U2–U7 代码实施;L2 ADR 以外的跨机工程;FEATURE-MATRIX 状态值变更。
## 步骤与验收
1. [x] 创建 worktree 并登记 — `base_dev_sha=63e66c6f…`
2. [x] CURRENT 认领行 — `docs apply` request `coordination-db-daemon-2026-09-23-claim-1`
3. [x] 写 research — [2026-09-23-coordination-db-daemon-research.md](../research/2026-09-23-coordination-db-daemon-research.md)
4. [x] 写 plan(U1 回填 queue 修复 SHA)— [2026-09-23-coordination-db-daemon-plan.md](../../remediation/2026-09-23-coordination-db-daemon-plan.md)
5. [ ] 更新 remediation INDEX(含补登 2026-09-21 锁方案)
6. [ ] docs-only 验收(链接/taxonomy/frontmatter)
7. [ ] 候选 validate + integrate 合入 local_dev
## 验证与证据
| 范围 / 被测 SHA | 命令与环境 | 预期 | 实际 / 判定 | 证据 / 脱敏说明 |
|---|---|---|---|---|
| queue 修复 `63e66c6f` | `python3 -B -m unittest discover -s scripts/tests -p 'test_*.py' -v` | 全绿 | 103 ran / 2 skipped / OK | 任务 A 候选 validate 收据 |
| 本任务文档 | 相对链接解析 + taxonomy | 全部可解析;落位正确 | pending | 合入前检查 |
## 收口与交接
- 剩余:INDEX、验收、集成、cleanup。
- deployment=not_required;remote_sync=not_requested。
- cleanup_owner=独立维护者;复查触发=合入且无进程占用。
## 相关链接
- [方案](../../remediation/2026-09-23-coordination-db-daemon-plan.md)
- [研究](../research/2026-09-23-coordination-db-daemon-research.md)
- [既有锁方案](../../remediation/2026-09-21-agent-lock-coordination-plan.md)
- queue 修复合入 tip:`63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344`(`merge: fix/agentctl-queue-subparser-2026-09-23`)
@@ -0,0 +1,172 @@
---
title: "协调库与 daemon:分阶段设计与实施方案"
status: planned
created: 2026-09-23
updated: 2026-09-23
owner: Cursor
task_id: coordination-db-daemon-2026-09-23
task_type: research
task_tier: multi_stage
policy_revision: "agent-governance-2026-09-21-r1 @ 63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344"
branch: feature/coordination-db-daemon-2026-09-23
worktree: .worktrees/coordination-db-daemon-2026-09-23
base_dev_sha: "63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344"
write_scope: [".doc"]
allowed_environments: []
mutex: coordination-db-daemon
review_state: pending
integration_state: pending
deployment: not_required
cleanup: pending
cleanup_owner: "独立维护者"
remote_sync: not_requested
---
# 协调库与 daemon:分阶段设计与实施方案
> 本文件是**方案文档(planned)**,不含 daemon/PostgreSQL 实施。配套 [研究依据](../ops/research/2026-09-23-coordination-db-daemon-research.md)。上位约束:[锁协调方案](./2026-09-21-agent-lock-coordination-plan.md)、[操作规范](../ops/2026-09-21-agent-worktree-workflow.md)、[平台深化方案](./2026-09-23-platform-deepening-reliability-ha-concurrency-plan.md) §0。
## 0. 用户目标与授权
- 用户目标:统一认领、状态与执行入口;文档逐步变为状态输出;为多主机协作预留结构。
- 交付形态(已确认):**研究 + 方案**;不实施数据库或 daemon。
- 边界(已确认):**分阶段**——L1 单宿主机内(daemon + 现有 SQLite);跨机 PostgreSQL 仅登记为 planned 的 L2,需二次授权与 ADR。
- 并行授权:修掉 `agentctl queue` 子解析器重复注册(已合入本地 `63e66c6f`)。
## 1. 现状基线(纠正摘要偏差)
| 摘要原说法 | 实测 |
|---|---|
| SQLite 管理「部分」协调状态 | `.locks/state.sqlite` 已是权威库(11 表;采样 tasks≈105 / runs≈653 / events≈1406) |
| 非容器用 systemd | 本机 Darwin;仓库内 systemd/launchd/协调 compose **0 个** |
| 任务注册无长期排他认领 | 属实:缺显式 claim;scope/lease 已有 |
| 文档 `3f14d7fa` 已合入 | **不存在**;本轮重新落地 |
已成立能力(不推倒):`scripts/agentctl.py` 的 scope、flock 租约、三值进程存活、docs CAS+收据、候选准入、`--ff-only`、hooks;`.git/agent-control/dev-integration.lock` 与 `.locks/os/dev-integration.lock` 同 inode。
关键缺口:长期 claim、常驻协调入口、`configs/agent-governance.yaml`、CURRENT/MATRIX 稳定 record id、queue/jobs 运维闭环(parser 已修,行仍为 0)、`agentctl_automation.py` 分叉。
## 2. 目标架构
```mermaid
flowchart TB
subgraph L1 [L1 单宿主机 本方案设计线]
AG1[Agent 与工具调用] --> AC[agentctl CLI 统一入口]
AC --> DB[(.locks/state.sqlite 权威库)]
AC --> OS[.locks/os flock 稳定锁]
CO[常驻协调入口 launchd 本机] --> DB
CO --> PUB[docs apply 收据化发布]
AC --> GI[git:dev 候选验证与 ff-only]
end
subgraph L2 [L2 跨机 仅 planned 需 ADR]
HA[主机 A 执行代理] --> CD[中央协调 daemon]
HB[主机 B 执行代理] --> CD
CD --> PG[(独立 PostgreSQL)]
CD --> EXH[指定主机执行 Git 集成与部署]
end
L1 -.->|L1 验收后另立 ADR| L2
```
### 三种关系(协议核心)
| 机制 | 作用 | 今日状态 |
|---|---|---|
| scope | 智能体允许修改哪些路径/能力 | `tasks.scopes` + `check_resources`,已 enforced |
| claim | 某项工作当前由谁长期负责 | **缺失**;CURRENT 手工行不是原子认领 |
| lease | 谁正在操作某资源 | `Lease` + flock + 存活核验,已 enforced |
认领在短事务中完成:检查权限、冲突、冻结、公平排队、登记归属、写审计——全成或全拒。冲突返回持有者、队列票据与 `retry_after`。
**执行安全不能只靠数据库锁。** TTL/心跳过期只进入 suspect/quarantine,不立即把资源交给下一个智能体;须核验旧进程与外部操作结果后再交接(见 U7)。
## 3. L1 七个实施单元
每单元另建 short-term + mutex + 验收 + 回退;合入 local_dev 串行占 `git:dev`。
### U1 缺陷收敛与实现归一
| 项 | 状态 |
|---|---|
| queue 子解析器重复注册 | **已修复并合入** `63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344`(删后注册块;保留 `--head` / cancel `--task` / schedule `--drain`;回归 3 例;unittest 103/2 skipped PASS) |
| `scripts/agentctl_automation.py` 零导入、schema 分叉 | planned:收敛到 W4 或按记录删除 |
| `.locks/state.db` 0 字节孤儿 | planned:确认无引用后清理(运行态,不入 Git) |
### U2 治理策略外部化
新建 tracked `configs/agent-governance.yaml`(今日不存在),收敛 `SHARED_DOCS`、`PROJECTABLE_DOCS`、`JOB_KINDS`、protocol/policy 版本;fail-closed 加载;旧客户端低于最小协议版本拒写。
### U3 显式长期认领 claim
在 SQLite 增加 claim 表/字段(或等价资源键),与 scope/lease 分离。`BEGIN IMMEDIATE` 短事务内:权限、父子路径重叠、冻结、公平排队、审计。不同资源可并行。不把 Markdown `idle` 当作原子锁。
### U4 常驻协调入口(本机)
- **macOS**:launchd plist(本机默认)。
- **Linux**:systemd unit。
- 单实例:`.locks/os/manager.lock`(2026-09-21 方案已规划、今日不存在)。
- 职责:驱动 `queue schedule`、文档投影发布、心跳过期扫描;**不新增权限**。
- 不可用时:阻止受保护写入,不静默放行。
### U5 CURRENT 状态输出化
- `## 并行认领` / 集成槽位:稳定 record id + `docs project` 生成;人工「焦点 / 受控约束」保留。
- 同批修正:`CURRENT.md:5` 与 `:15` 自相矛盾;操作规范 `:3`「Linux 本机」过时描述。
- 发布仍走 `docs apply` CAS + 收据 + hook。
### U6 FEATURE-MATRIX 分阶段迁移
27 模块行加稳定 record id 与结构化状态字段;保留声明范围、审核与证据。`done` 仍需 `docs:approve` + 已提交证据路径;不因任务结束或锁释放自动升 done。`production_ready` 仍只由发布门禁判定。任务完成 ≠ 能力完成 ≠ 发布就绪。
### U7 执行代理与安全交接
固化:suspect → quarantine → 核验(supervisor/子进程组消失、物理锁可得、外部结果核对)→ 交接。复用并加强 `recover`;补 fencing generation 与 env/git 收据。Git 集成与共享环境部署集中主目录执行入口(`queue_schedule` 已限主 dev);保留 flock、候选准入、`--ff-only`。数据库管记录与授权,执行入口防实际双写。
## 4. L2 登记(planned,不开工)
前置条件:用户二次授权 + ADR 覆盖锁方案 §3.2 与平台深化 §0。
登记内容:中央独立 PostgreSQL(独立配置/数据目录/备份,不依赖产品容器);中央协调 daemon;各主机执行代理;指定执行主机做 Git 集成与部署;systemd 开机启动与异常重启;单中央节点故障时暂停受保护写入。
**待执行验收(不得冒充已测)**:真实双主机并发、断网、旧进程存活、重复 `request_id`、备份恢复。systemd 能恢复进程,不能替代主机容灾与数据库备份。
## 5. 文档与状态模型
| 内容 | 归属 |
|---|---|
| 任务归属、进度、队列、执行状态 | 数据库(权威) |
| CURRENT 运行表格 | 逐步自动生成;人工焦点/约束保留 |
| FEATURE-MATRIX | 分阶段结构化;证据与审核保留 |
| 规范、方案、验收报告正文 | 继续 Git 管理 |
## 6. 全局验收门
1. 每单元:受影响 `unittest` + 负例(冲突认领、旧 generation、daemon 停写)。
2. U3/U5/U6:双任务并行写不丢行、同行 CAS 冲突可见。
3. U4/U7:杀 supervisor 留子进程不得误抢;断心跳后须核验再交接。
4. L2:未授权不得实施;不得把 planned 写成 enforced。
5. 红线:不把 L1 宣称为 OS 沙箱;不依赖产品容器启动协调;不接触业务数据库。
## 7. 风险与回退
| 风险 | 控制 |
|---|---|
| 两套锁各自放行 | 延续 2026-09-21 §10 硬链接/双锁兼容;禁止静默第二锁根 |
| daemon 扩大权限 | 只调度已授权操作;能力仍来自 task register |
| CURRENT 自动覆盖人工焦点 | 仅受控区块机器写;整文需 docs:admin |
| L2 提前开工 | 无 ADR 拒合入跨机代码 |
| 文档与运行态漂移 | CURRENT 标明快照时间;以 doctor/status 核验 |
每单元独立 revert;迁移 additive;部署清单与代码分提交。
## 8. 与既有文档关系
- 本方案 = [2026-09-21 锁方案](./2026-09-21-agent-lock-coordination-plan.md) 的**演进版**:L1 补 claim/常驻入口/文档状态化;不推翻 SQLite 权威与 advisory 边界。
- 不替代 [平台深化方案](./2026-09-23-platform-deepening-reliability-ha-concurrency-plan.md)(产品可靠性/HA);协调跨机另立 ADR。
- gap-matrix / FEATURE-MATRIX 状态不因本方案自动变更。
## 9. 开工准入(第一批实施前)
1. 每批 short-term + CURRENT 认领 + mutex。
2. 从当时 dev tip 建 worktree;重读 policy_revision。
3. L2 / 共享环境须单独授权。
4. 本文件保持 planned;首批实施时回填映射,不代填验收。
+2
View File
@@ -2,6 +2,8 @@
| 文档 | 说明 |
|------|------|
| [2026-09-23-coordination-db-daemon-plan.md](./2026-09-23-coordination-db-daemon-plan.md) | 协调库与 daemon 分阶段方案:L1 单宿主机(复用 `.locks/state.sqlite` + claim/常驻入口/文档状态化);L2 跨机 PostgreSQL 仅 planned(需 ADR)。配套 [研究](../ops/research/2026-09-23-coordination-db-daemon-research.md) · [任务](../ops/short-term/2026-09-23-coordination-db-daemon.md)。U1 queue 子解析器已合入 `63e66c6f`;本文件 planned,不实施 daemon |
| [2026-09-21-agent-lock-coordination-plan.md](./2026-09-21-agent-lock-coordination-plan.md) | Agent `.locks`、共享文档与并行工作流补充方案:本机 SQLite + 会话/租约/CAS;L1a–L1d 设计。配套 [研究](../ops/research/2026-09-21-agent-lock-coordination-research.md)。planned;跨机锁服务本期不采用 |
| [2026-09-23-platform-deepening-reliability-ha-concurrency-plan.md](./2026-09-23-platform-deepening-reliability-ha-concurrency-plan.md) | 平台深度完善方案(解耦·通信·总线·可靠性·高可用·高并发):基于 2026-09-23 四路只读调研,六轨 R1–R6 分批(server 收口/chat 解咬合/bizdev 上收/worker 韧性/并行消费/NOTIFY 唤醒/死信闭环/多副本前置去单点化/PG 本机热备/备份自动化/锁重构/长任务异步化/池调优/app metrics)。planned,不实施代码;HA 边界=单宿主机(用户确认) |
| [2026-09-23-modular-refactor-implementation-undertaking-plan.md](./2026-09-23-modular-refactor-implementation-undertaking-plan.md) | 系统整改与重构方案的**实施承接计划**(框架+映射回填):阶段门禁、工作包模板、防重复施工(对照 A–G/`exceptions=[]`)、产物机器回填与开工准入。配套 [审核清单](../audit/2026-09-23-modular-refactor-plan-review-checklist.md) · [任务](../ops/short-term/2026-09-23-modular-refactor-impl-plan.md)。不代填 17 工作包、不实施业务代码 |
| [../system-design/2026-09-22-t20-hardening-design.md](../system-design/2026-09-22-t20-hardening-design.md) | T20 W4 加固设计决策(XFF、锁拆分、timeout、shutdown、SSE POST、前端 generation/cookie、compose non-root/init、backup 调度文档);F5/I8 见 lowrisk 批。配套 [任务](../ops/short-term/2026-09-22-t20-design-items.md) |