Files
Agent-System/.doc/ops/research/2026-09-23-coordination-db-daemon-research.md
T
WeiCHEN d7e0a683c9 docs(remediation): add coordination db/daemon phased plan and research
Document L1 single-host claim/daemon/doc projection design and L2
cross-host PostgreSQL as planned-only. Register INDEX entries and claim
CURRENT; U1 cites queue subparser fix 63e66c6f.
2026-09-23 13:54:48 +08:00

5.8 KiB
Raw Blame History

title, created, owner, task_id, policy_revision, review_state, integration_state, deployment, cleanup, remote_sync, status, confidence
title created owner task_id policy_revision review_state integration_state deployment cleanup remote_sync status confidence
协调库与 daemon:现状核查与边界核对 2026-09-23 Cursor coordination-db-daemon-2026-09-23 agent-governance-2026-09-21-r1 @ 63e66c6fb3 pending pending not_required pending not_requested done 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 锁方案 §3.2 及 平台深化方案 §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 方案。
  • 任务主记录:short-term。