From c3c2b39abd3eac8bbd416a979a4df684840fc5b7 Mon Sep 17 00:00:00 2001 From: weichen Date: Sat, 19 Sep 2026 06:02:38 +0000 Subject: [PATCH] docs(ops): record audit batch 1+2 merges and slot release --- .doc/ops/CURRENT.md | 2 +- ...9-audit-b1-data-consistency-test-report.md | 77 +++++++++++++++++++ 2 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 .doc/test-reports/2026-09-19-audit-b1-data-consistency-test-report.md diff --git a/.doc/ops/CURRENT.md b/.doc/ops/CURRENT.md index 413dd295..96ff5fdf 100644 --- a/.doc/ops/CURRENT.md +++ b/.doc/ops/CURRENT.md @@ -144,7 +144,7 @@ | holder | phase | since | scope | queue | |--------|-------|-------|-------|-------| -| - | idle | 2026-09-19 | Control Center 已删除;node_modules 与本地分支已清;dev 健康检查见测试报告 | - | +| - | idle | 2026-09-19 | audit-b1+b2 已合入 dev(b1 merge 844f757、b2 merge 08f4e0b,vet/test 全绿);批3 待开 | - | **phase**: `idle` | `merging` | `smoke` | `e2e` diff --git a/.doc/test-reports/2026-09-19-audit-b1-data-consistency-test-report.md b/.doc/test-reports/2026-09-19-audit-b1-data-consistency-test-report.md new file mode 100644 index 00000000..ed8c66a2 --- /dev/null +++ b/.doc/test-reports/2026-09-19-audit-b1-data-consistency-test-report.md @@ -0,0 +1,77 @@ +# 审计整改批 1(后端数据一致性)测试报告 + +## 一、 测试背景 (Background) + +2026-09-19 系统深度审计([.doc/audit/2026-09-19-system-deep-audit.md](../audit/2026-09-19-system-deep-audit.md))发现 4 项后端数据一致性 critical/high: +- C1 docgov 租约/审计持久化 `_, _ = pool.Exec` 静默吞错 + `lease_fencing_token` 列未读回 +- C2 Session 全字段数据竞态 + ProjectID 跨项目污染 +- C4 工作流 SaveWorkflowPlan upsert/bump 分裂事务竞态 + completed_by 错填为 activated_by +- H10 `context.Background()` 脱离请求生命周期 + +## 二、 测试目标 (Test Objectives) + +- 修复后 `go vet` 零告警、`go test -short ./...` 全量 PASS +- 受影响三包 `go test -race -short` PASS(chat / docgov / projectinstance) +- 不改变既有 API 行为契约(除 completed_by 归属修正) + +## 三、 测试方案与环境 (Test Plan & Environment) + +- 环境:linux 7.0,Go 1.x,分支 `fix/audit-b1-data-consistency` → 合入 `dev`(worktree `.worktrees/dev-rdev-merge`,merge commit `844f757`) +- 层级:单元测试(受影响包)+ 全量回归 + race 检测 +- dev 服务在线 `:8080`(合入前旧二进制,schema 52,health ok) + +## 四、 预期结果 (Expected Results) + +- docgov:租约持久化失败返回 error 并回滚内存状态;审计失败 slog.Error 可观测;重启后 fencing token 从 DB 读回 +- chat:Session 字段访问全部经 mu 保护;`-race` 不报 data race +- projectinstance:SavePlanWithRevision 单事务原子;bump 冲突时 plan 不落库;completed_by = 推进操作者 +- server:getOrCreateSession 内 DB 调用有 5s 超时 + +## 五、 实际测试结果与判定 (Actual Results & Evaluation) + +### 用例 1:go vet 全量 +- 输入:`go vet ./...` +- 输出:(空,零告警) +- 判定:PASS + +### 用例 2:全量短测 +- 输入:`go test -short ./...` +- 输出:55 包 ok,无 FAIL/panic +- 判定:PASS + +### 用例 3:race 检测(受影响包) +- 输入:`go test -race -short ./internal/chat/ ./internal/docgov/ ./internal/projectinstance/` +- 输出: +``` +ok chat-agent-system/internal/chat 1.054s +ok chat-agent-system/internal/docgov 1.038s +ok chat-agent-system/internal/projectinstance 1.015s +``` +- 判定:PASS + +### 用例 4:dev 冒烟(合入后 worktree) +- 输入:`.worktrees/dev-rdev-merge` 上 `go vet ./...` + `go test -short ./...` +- 输出:VET_OK,无 FAIL +- 判定:PASS + +### 用例 5:dev 服务健康 +- 输入:`curl http://127.0.0.1:8080/api/v1/health` +- 输出:`{"status":"ok","env":"dev","schema_version":52,"schema_ready":true,...}` +- 判定:PASS(注:跑的是合入前二进制,容器 rebuild 未执行,见七) + +## 六、 自动化测试套件汇总 (Test Suite Execution) + +- `go vet ./...` 零告警 +- `go test -short ./...` 55 包全 PASS +- `go test -race -short`(chat/docgov/projectinstance)全 PASS + +## 七、 测试结论与后续优化建议 (Conclusion & Next Steps) + +- 批 1 四个子项全部修复并合入 dev(merge `844f757`),质量门禁全绿,达到合入标准。 +- **遗留**:dev 容器二进制仍为合入前版本(health 为旧码);如需真实链路验证 C2 竞态修复,应 `./scripts/env-service.sh dev rebuild` 后复跑。此为长操作,未在本批执行,留给集成槽位下一次 holder 或批 2 合入时一并 rebuild。 +- 批 2(鉴权与越权)继续沿用本槽位流程。 + +## 证据 + +- merge commit:`844f757`(dev worktree) +- 批 1 三个 fix commit:`11f375f`(docgov)、`c7eab1f`(chat race)、`e2b1340`(projectinstance)、`a81db16`(ctx threading)