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.
5.8 KiB
5.8 KiB
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 沙箱、产品容器依赖式协调。
结论
.locks/state.sqlite已是本机协调权威库(11 表;采样时 tasks≈105、runs≈653、events≈1406),不是「部分状态」;scripts/agentctl.py已 enforced scope / lease / CAS / 收据 / 候选准入 /--ff-only。- 真正缺口是:显式长期 claim、常驻监管入口、策略外部化、CURRENT/MATRIX 稳定 record id;
queue/jobs在修复前因 CLI 缺陷恒为 0 行(已由63e66c6f修复 parser)。 - 跨机 + 独立 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 开工前确认。
建议动作
- 合入本调研与配套方案(docs-only)。
- 按方案 U1–U7 另立实施 short-term;U1 剩余项(automation 归一、state.db 清理)在 queue 修复之后继续。
- L2 仅登记,不排期。
状态与交接
- 被审 SHA:
63e66c6fb35d6b4dd9f3ed92e15acc9933aeb344(含 queue 修复)。 - 本文件状态
done指调研可审,不代表方案已实施。 - 配套方案:协调库与 daemon 方案。
- 任务主记录:short-term。