Files
Agent-System/.doc/archive/ops/2026-09-13-document-revision-reviewer-duty-sync.md
T
weichenandCursor 9345109dca docs(ops): archive completed document-revision session files
Move done DOCREV short-terms, checklists, and handoffs into archive/ops and retarget relative links after Round20 close-out.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-14 00:27:18 +00:00

3.9 KiB
Raw Blame History

title, status, created, updated, owner, branch, worktree, mutex
title status created updated owner branch worktree mutex
项目 reviewer 同步到受控文档职责 done 2026-09-13 2026-09-14 Cursor-Auto fix/document-revision-reviewer-duty-sync - document-revision-reviewer-duty-sync

项目 reviewer 同步到受控文档职责

目标

堵住第17轮 UI-13a:UI-01 已把 USER_B 设为 reviewer,但 doc_proj6145_intake 矩阵为 viewer。项目创建时的 reviewer 必须成为后续每份受控文档的权威 reviewerId。

范围

  • project_members.document_duty 迁移与成员 upsert
  • 任务生成/账本创建解析项目职责;禁止硬编码 2/3
  • 已有文档缺失/非成员占位的服务端自愈
  • 前端立项 persist document_duty + 职责互斥
  • audit / remediation / CURRENT

非目标

  • 不 merge、不启停/重建容器、不跑/声称真实 UI E2E、不 push
  • 不删不改证据目录
  • 不向用户索要 token;不提交账号密码

步骤

  1. 从 dev@639969f 开分支并登记 mutex
  2. RED/GREEN:解析、自愈、成员 duty、前端映射
  3. gofmt / go vet / go test -short / 相关 -race / npm test / npm run build
  4. 原子提交
  5. 独立审查收紧(暂不合入):Heal 以 assigned 为权威;成员变更带 duty 并同步文档;缺 role 不降 owner;写权精确断言;迁移多 owner 确定回填;并发 upsert PG 用例;自愈失败不假成功
  6. 最后一轮:移出成员 sync + 前端刷新;空 assigned 只清失效 holder;显式 revoke 再 heal;账本创建失败不成功
  7. 补充审查:lock + 读旧/冲突 holder + 成员写 + 精确清槽同事务;提交后 heal;失败仍 ERR_DUTY_SYNC
  8. Heal 与成员写共用 pg_advisory_xact_lock(project_id);解析与文档读写同事务;确定性并发 PG 证明旧 reviewer 不复活

验收标准

  • A=author、B=reviewer、C=none;第二文档继承;重复执行幂等;旧文档缺失回填
  • 服务端写操作仍按权限拒绝
  • 前端不按名字提升
  • 现场 UI-13a(未跑)

相关链接

证据 / 备注

  • mutex:document-revision-reviewer-duty-sync(新 mutex,不占用已有 in_progress)
  • 基线:dev@639969f
  • 证据(只读):.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui13a-reviewer-duty-sync-failure/
  • 验证(原子清槽轮):gofmt/go vet PASS;go test -short ./... PASS;相关 -race PASS;npm test/build PASS;隔离 PG PASS
  • 原子性:成员写与 HealProjectDocuments 均先 pg_advisory_xact_lock(project_id),再在同一事务内读成员/文档并更新;旧 heal 不能在转移提交后把 reviewer A 写回
  • PG 集成已写 heal/空 assigned/多 owner 回填/并发 upsert;-short 或无 TEST_DATABASE_URL 时跳过
  • 隔离跑法:scripts/run-isolated-duty-sync-pg-tests.sh(TEST_DATABASE_URL 或 PG_ADMIN_URL 建临时库)。拒绝 agent_system_dev
  • 本轮已在已运行的 context Postgres 上 CREATE DATABASE agent_duty_sync_itest_*,串行跑通后 DROP;未 env-service、未动共享库数据
  • 兼容:旧二进制不读 document_duty 仍可运行;新代码在 assigned 为空时不臆造 reviewer。6145 的 B 仍是空 duty,须再走成员 API
  • 未跑真实 UI-13a,不得标 done;不得 merge / 启停容器 / E2E / push