Files
Agent-System/.doc/test-reports/2026-09-25-p7-server-image-field-closeout-test-report.md
T
weichen a9c9a9182e refactor(server): remove 24 mirrored Runtime fields via nil-safe accessors; fix Shutdown-vs-background-loop DATA RACE and goose 00071 duplicate version
- Server no longer mirrors app.Runtime services (gov/svc/pwSvc/...): 574 call sites now use accessors in runtime_accessors.go
- backgroundLoop (mutex+sync.Once) stops sweeper/publisher/reminder/wsGC goroutines race-free (baseline 44161d2a reproduced DATA RACE; now green under -race)
- goose 00071 duplicate (dialogue merge 1da17a28 brought two 00071): context-conflict-adjudications renumbered to 00072; dev DB applied only through 00070 so zero data migration
- task_finalize tests build minimal app.Runtime; test injection via serverTestOverrides + setOverride* (explicit-nil markers for fail-closed cases)
2026-09-25 13:17:22 +00:00

4.6 KiB
Raw Blame History

P7 Server 镜像字段增量收口 测试报告

一、 测试背景 (Background)

MATRIX module-batches-ag 行尾注遗留「Server 镜像字段增量收口另立任务」:internal/server.Server 结构镜像了 app.Runtime 的 24 个领域服务字段(gov/svc/pwSvc/instSvc/...),batch A(2026-09-22)时因「多数 docgov/bizdev HTTP 仍直调引擎」保留。现由总控计划 P7 批次授权收口。

二、 测试目标 (Test Objectives)

  1. Server 删除全部 Runtime 镜像字段后编译、vet 干净。
  2. server 包行为不变:short 全量 + race 全量 PASS。
  3. 相邻包(app/chat/intent 链路)无回归。
  4. 全仓 short 无回归(含 goose 迁移可加载)。
  5. 架构门禁 arch-check --mode block PASS。
  6. 附带修复验证:既有 DATA RACE(Shutdown vs 后台循环)消失;goose 00071 版本冲突解除。

三、 测试方案与环境 (Test Plan & Environment)

  • OS:Linux 7.0.0-31-generic;Go 1.27.1(linuxbrew)。
  • 被测 worktree:.worktrees/server-image-field-closeout-2026-09-25(base dev 44161d2a)。
  • 层级:工程工具改动层(Go 单测 + race + 架构门禁 + 工程脚本单测),按验证契约不适用产品 PI 全链路。
  • 用例矩阵:
# 用例 命令
T1 server short go test -short -count=1 ./internal/server/
T2 server race(含修复验证) go test -race -short -count=1 ./internal/server/
T3 相邻包 go test -short -count=1 ./internal/app/... ./internal/chat/... ./internal/intent/...
T4 全仓 short go test -short -count=1 ./...
T5 架构门禁 ./scripts/arch-check.sh --mode block
T6 工程工具 python3 -B -m unittest discover -s scripts/tests -p 'test_*.py'
T7 race 基线对照 dev 44161d2a 临时 worktree 重跑失败用例

四、 预期结果 (Expected Results)

  • T1–T6 全 PASS。
  • T7 基线复现 DATA RACE(证明非本批引入、本批修复有效)。

五、 实际测试结果与判定 (Actual Results & Evaluation)

T1 server short

  • 输入:go test -short -count=1 ./internal/server/
  • 实际输出:ok chat-agent-system/internal/server 19.946s
  • 判定:PASS(首轮曾 FAIL TestCreateFreeformDoc_FailClosedWhenAuthorizerNil——override nil 语义未区分「未设置/置 nil」,补 authorizerNil 位标记后通过)

T2 server race

  • 输入:go test -race -short -count=1 ./internal/server/
  • 实际输出:ok chat-agent-system/internal/server 232.271s
  • 判定:PASS

T3 相邻包

  • 实际输出:ok × 12(internal/app、app/chatflow、app/docadvance、app/docflow、app/docnotify、app/docproject、app/fav、app/intentflow、app/stageflow、app/uow、chat、intent)
  • 判定:PASS

T4 全仓 short

  • 实际输出:仅 ok/no test files,无 FAIL
  • 判定:PASS(基线因 goose 00071 重复 panic TestBizdevCLIListTasks;重编号 00072_2026-09-25-context-conflict-adjudications.sql 后通过。dev 库已应用至 00070、两个 00071 均未应用,重编号零数据迁移)

T5 架构门禁

  • 实际输出:arch-check block: production gate passed
  • 判定:PASS

T6 工程工具

  • 实际输出:Ran 234 tests in 189.907s / OK
  • 判定:PASS

T7 race 基线对照(附带修复证据)

  • 输入:dev 44161d2a 临时 worktree go test -race -short -count=1 -run 'TestAdminSystemSettings_ListAndUpdate' ./internal/server/
  • 实际输出:WARNING: DATA RACE,栈:Shutdown (server.go:471 Write) vs startChatTurnSweeper.func1 (chat_turn_sweeper.go:21 Read)
  • 判定:基线 FAIL 复现(既有债务,非本批引入);本批 backgroundLoop 修复后同域用例(TestAdminSystem* 全组 + T2 全量)PASS。

六、 自动化测试套件汇总 (Test Suite Execution)

套件 结果 通过率
go test -short ./internal/server/ PASS 100%
go test -race -short ./internal/server/ PASS 100%
go test -short ./internal/app/... ./internal/chat/... ./internal/intent/... PASS 100%(12 包)
go test -short ./...(全仓 67 包) PASS 100%
arch-check --mode block PASS —
工程脚本单测 PASS 234/234

七、 测试结论与后续优化建议 (Conclusion & Next Steps)

  • 结论:P7 达到授权交付终点——Server 24 个镜像字段删除、574 处调用点迁访问器、附带修复既有 DATA RACE 与 goose 版本冲突,全部验证绿。
  • 后续:batch-plan 愿景中的「handler 迁 internal/app 用例层」在镜像字段移除后可独立推进,不再受本债务约束;建议列入 backlog 而非本轮。