docs(ops): record independent-review duty-sync tighten
Document assigned-authoritative heal, member-change sync, owner non-demotion, isolated PG command, compatibility, and remaining 6145 risk. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -52,7 +52,16 @@ severity: critical
|
||||
- `phase-state.json`:`controlledDocId=doc_proj6145_intake`,项目 `UI验收-超声微创系统-mu0bvnp8`
|
||||
- Playwright:`expected_duty:reviewer;got:viewer`
|
||||
|
||||
## 独立审查收紧(同一分支,暂不合入)
|
||||
|
||||
独立审查指出首轮 Heal「已是任意在任成员则保留」会让批准人串位:6145 类场景 `approver=3`(李主管也是成员)而 assigned=`4` 时不应保留 3。项目 `document_duty` 才是权威。
|
||||
|
||||
立项后成员增改/恢复若只发 `project_role`,`document_duty` 会静默失效。更新成员时若省略 `project_role` 且带 `document_duty`,默认 `member` 会把 owner 降级。
|
||||
|
||||
生成/列表路径若吞掉自愈错误,会带着 `reviewer_id=2` 假成功。
|
||||
|
||||
## 开放问题
|
||||
|
||||
- 本轮不重跑真实 UI-13a;不得标 E2E 通过或任务 `done`
|
||||
- 6145 历史行不手写测试数据;靠服务端自愈(占位/非成员职责 + 项目 document_duty)在下次读/生成时回填
|
||||
- **6145 剩余风险**:迁移后 owner 会补 `author`;B(171)当时只落成 `member` 且 `document_duty=''`。服务端不能臆造 reviewer。须再次经成员 API 写入 `document_duty=reviewer` 后,自愈才会把文档从占位 `2` 对齐到 B。
|
||||
- 隔离 PG 集成须用临时库 + `TEST_DATABASE_URL`,见 `scripts/run-isolated-duty-sync-pg-tests.sh`;禁止默认连 `agent_system_dev`
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
|
||||
## 焦点
|
||||
|
||||
1. **DOCREV-RT**: [项目 reviewer 同步到受控文档职责](short-term/2026-09-13-document-revision-reviewer-duty-sync.md)(`fix/document-revision-reviewer-duty-sync`;第17轮 UI-01 已分配 B=reviewer,矩阵实际 viewer;不声称 E2E 通过)
|
||||
1. **DOCREV-RT**: [项目 reviewer 同步到受控文档职责](short-term/2026-09-13-document-revision-reviewer-duty-sync.md)(`fix/document-revision-reviewer-duty-sync`;独立审查收紧已追加提交,暂不合入;不声称 E2E 通过)
|
||||
2. **DOCREV-RT**: [质量修复子工作区契约](short-term/2026-09-13-document-revision-quality-repair-workspace-contract.md)(已合入 `dev@339e871`;仍 `in_progress`,待占槽重跑 UI-03)
|
||||
3. **DOCREV-RT**: [编辑弹窗 hydration 竞态](short-term/2026-09-13-document-revision-editor-hydration-race.md)(已合入 `dev@8b1a531`;仍 `in_progress`,待占槽重跑 UI-06)
|
||||
|
||||
|
||||
@@ -35,6 +35,7 @@ mutex: document-revision-reviewer-duty-sync
|
||||
2. [x] RED/GREEN:解析、自愈、成员 duty、前端映射
|
||||
3. [x] `gofmt` / `go vet` / `go test -short` / 相关 `-race` / `npm test` / `npm run build`
|
||||
4. [x] 原子提交
|
||||
5. [x] 独立审查收紧(暂不合入):Heal 以 assigned 为权威;成员变更带 duty 并同步文档;缺 role 不降 owner;写权精确断言;迁移多 owner 确定回填;并发 upsert PG 用例;自愈失败不假成功
|
||||
|
||||
## 验收标准
|
||||
|
||||
@@ -54,5 +55,8 @@ mutex: document-revision-reviewer-duty-sync
|
||||
- 基线:`dev@639969f`
|
||||
- 证据(只读):`.doc/test-reports/assets/2026-09-13-document-revision-runtime-ui/schema30-ui13a-reviewer-duty-sync-failure/`
|
||||
- 验证:`go test -short ./...` PASS;`go test -short -race ./internal/docduty/ ./internal/authz/ ./internal/bizdev/` PASS;`cd web && npm test` PASS;`npm run build` PASS
|
||||
- PG 集成 `TestProjectReviewerDutySync_PG` 已写,`-short` / 无 `TEST_DATABASE_URL` 时跳过(未连共享库、未迁共享容器)
|
||||
- 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**
|
||||
|
||||
@@ -29,16 +29,26 @@ updated: 2026-09-13
|
||||
|
||||
1. 访问角色仍是 `owner/member/viewer`;文档职责另存 `document_duty`(`author`/`reviewer`/`approver`/空),同一项目同一职责仅一名在任成员。
|
||||
2. `Resolve`:author=指定编制人或创建者;reviewer/approver=指定职责,否则仅当请求 id 是在任成员才采用;**禁止**默认 2/3。
|
||||
3. `Heal`:当前职责 id≤0 或不是在任成员时,用项目绑定回填;已是在任成员则不覆盖。
|
||||
4. 列表/创建账本走自愈。前端 persist `document_duty`;改审核人时互斥,避免 seed 李主管抢走 B。
|
||||
3. `Heal`:项目 `document_duty` 为权威。assigned 非零则对齐(错 ID——即使对方也是在任成员——或同 ID 旧名称);assigned 为空才保留当前值,避免臆造/清空。禁止「任意 active member 就放过」。
|
||||
4. 列表/生成走自愈;**失败必须返回可诊断错误**,生成路径不得假成功。成员增改/恢复后服务端再 heal 已有受控文档。
|
||||
5. 前端立项与立项后增改/恢复都发 `document_dutyFromMemberRole`。更新成员省略 `project_role` 时保留现有访问角色,禁止默认 `member` 把 owner 降级。
|
||||
6. 迁移 owner 回填:创建者优先,否则最低 `user_id`,单行 UPDATE,避免部分唯一索引冲突。
|
||||
|
||||
## 验收标准
|
||||
|
||||
- [x] 服务端解析与自愈单测(含第二文档、幂等、占位回填)
|
||||
- [x] 前端映射不按名字提权;B 的 `reviewer_id` 原样采用
|
||||
- [x] 服务端解析与自愈单测(含错 ID 恰为成员、同 ID 旧名称、assigned 空、第二文档、幂等)
|
||||
- [x] 前端立项与成员增改/恢复 payload 带 `document_duty`;不按名字提权
|
||||
- [x] 更新成员缺 `project_role` 保留 owner;写权测试 author `err==nil`,reviewer/outsider 精确 forbidden
|
||||
- [x] `go test -short ./...`、相关 `-race`、`npm test`/`build`
|
||||
- [x] 隔离 PG(临时库 `agent_duty_sync_itest_*`,测完删除;未连 `agent_system_dev`、未启停容器)
|
||||
- [ ] 真实 UI-13a(本轮不做)
|
||||
|
||||
## 兼容与剩余风险
|
||||
|
||||
- **兼容**:未应用 00031 的环境不读 `document_duty`;应用后旧成员空 duty 不会被臆造为 reviewer。assigned 为空时自愈不清空已有在任成员。
|
||||
- **6145**:B 仍是 `member` + 空 duty。新 heal 会把错误成员 approver 对齐到 assigned(若有);B 的文档 reviewer 仍是占位 `2`,直到成员 API 写入 `document_duty=reviewer`。
|
||||
- **隔离 PG**:`TEST_DATABASE_URL` 指向临时库,或 `PG_ADMIN_URL` + `scripts/run-isolated-duty-sync-pg-tests.sh`。禁止默认连 `agent_system_dev`。本轮不启停共享容器。
|
||||
|
||||
## 相关链接
|
||||
|
||||
- Audit: [../audit/2026-09-13-document-revision-reviewer-duty-sync.md](../audit/2026-09-13-document-revision-reviewer-duty-sync.md)
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
| 前端工作台 | 三栏 + 块文档 + SSE | partial | [test workbench](../test-reports/2026-09-08-three-column-workbench-and-block-document-test-report.md);[现场专项审计](../audit/2026-09-13-conversation-intent-runtime-state.md) | 错误卡片/任务进度/文档 busy 状态刷新恢复与人工抽检待完成 | `web` |
|
||||
| PI Runner / 配置链 | pi-agent + MiniMax 真实链路 | done | [test piagent](../test-reports/2026-09-13-codex-audit-p0-remediation-test-report.md);[container-env](../test-reports/2026-09-13-container-env-configuration-test-report.md) | — | `pi-agent` |
|
||||
| 三环境运维 | dev/test/main + 共享 KB | done | [PROJECT.md](../../PROJECT.md) §4;四环境 healthy | — | `infra` |
|
||||
| CI / E2E | PG 集成 + 真实 PI E2E | partial | [gap-matrix BUG-08](../remediation/gap-matrix.md);[test pg-ci](../test-reports/2026-09-12-pg-ci-soak-e2e-test-report.md);[UI-13a reviewer 职责同步](../audit/2026-09-13-document-revision-reviewer-duty-sync.md) | CI `TEST_DATABASE_URL` + 真实 PI E2E 实录;立项 reviewer 必须成为受控文档 `reviewer_id` | `ci` |
|
||||
| CI / E2E | PG 集成 + 真实 PI E2E | partial | [gap-matrix BUG-08](../remediation/gap-matrix.md);[test pg-ci](../test-reports/2026-09-12-pg-ci-soak-e2e-test-report.md);[UI-13a reviewer 职责同步](../audit/2026-09-13-document-revision-reviewer-duty-sync.md) | CI `TEST_DATABASE_URL` 隔离库;立项/改职责后 reviewer 必须成为受控文档 `reviewer_id`;Heal 以 assigned 为权威 | `ci` |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user