Files
Agent-System/.doc/ops/short-term/2026-09-22-server-assembly-cleanup.md
T
WeiCHEN 9071c272bf refactor(server): drop Server pool; route health/heal/vault via Runtime
Remove production *pgxpool.Pool from Server, centralize domain→HTTP
status mapping, and expose Runtime ports for task-store readiness,
duty heal, and artifact vault registry. Allow app→docduty for heal wiring.
2026-09-22 21:44:56 +08:00

4.2 KiB
Raw Blame History

title, task_id, status, created, updated, owner, task_type, task_tier, policy_revision, branch, worktree, base_dev_sha, write_scope, allowed_environments, head_sha, mutex, review_state, integration_state, deployment, cleanup, cleanup_owner, cleanup_trigger, remote_sync
title task_id status created updated owner task_type task_tier policy_revision branch worktree base_dev_sha write_scope allowed_environments head_sha mutex review_state integration_state deployment cleanup cleanup_owner cleanup_trigger remote_sync
W2 batch A: server assembly cleanup server-assembly-2026-09-22 done 2026-09-22 2026-09-22 Cursor implementation small agent-governance-2026-09-21-r1 @ origin/dev 364ed7f1a3 feature/server-assembly-2026-09-22 .worktrees/server-assembly-2026-09-22 364ed7f1a3
internal/server/
internal/app/
.doc/ops/short-term/
server-assembly pending pending not_required pending independent maintainer after owner exit acceptance green + optional owner exit not_requested

W2 batch A: server assembly cleanup

用户目标与授权

  • 用户目标:按 模块解耦分批整改 A 收口 server 装配;本会话为实施授权。
  • 交付终点:增量可合入改动 + 短测绿 + 本 short-term;不 push。
  • 禁止项:不 push;不操作共享环境;不扩大到批次 B–G;不强行一次删光全部领域字段。

范围与非目标

  • 允许:去掉生产 Server 的 *pgxpool.Pool;领域错误→HTTP 单一适配;经 app.Runtime 端口承接 health/heal/vault;handlers.go 不再直接分支 docgov.Err*。
  • 非目标:一次移除全部 gov/svc/… 镜像字段;改 HTTP 状态码语义;动 FAV live / production_ready。

本批完成

  1. Server 去掉 pool *pgxpool.Pool 与 pgxpool 生产 import。
  2. app.Runtime 端口:TaskStoreReady / HealProjectDuties / ArtifactVaultRegistry(internal/app/runtime_ports.go)。
  3. 单一适配 domainHTTPStatus(internal/server/domain_http.go);writeDocGovError / writeTaskError / content 错误写回走该映射。
  4. handlers.go 无直接 docgov.Err*;propose/decide 经 domainHTTPStatus。
  5. 旁路调用点一并迁到适配:task_run_handlers lease 探测、lineage_access 放置查询、project_doc_handlers.writeControlledContentError。
  6. 新增 domain_http_test.go;既有 content error 映射测保持。

残留债务

项 原因
gov *docgov.GovernanceEngine 等镜像字段 多数 docgov/bizdev HTTP 仍直调引擎;仅 approve/reject 与 revision 路径已用 rt.Docflow。迁完用例前保留镜像。
loadControlledDocumentContent 仍 return docgov.ErrDocumentNotFound 返回领域 sentinel,非 HTTP 分支匹配;后续可改为 app/端口错误。
JSON error_code: docgov.ErrCode* 响应包络常量,非 Err* sentinel 匹配。
Pool 在 app.Runtime 组合根仍持有;验收只要求生产 Server 无该字段。

验证与证据

范围 / 被测 SHA 命令与环境 预期 实际 / 判定 证据 / 脱敏说明
domain HTTP 适配 go test -short ./internal/server/ -run 'Domain|DocGovError|ControlledContent|WriteTask|Vault|Heal|Ready' PASS PASS 本机 Darwin
server vet go vet ./internal/server/ ./internal/app/ PASS PASS
arch-check ./scripts/arch-check.sh --mode block PASS PASS(app allowlist 增补 docduty)
全量 server short go test -short ./internal/server/ PASS FAIL TestFinalizeTaskRun_HashesViaWorkspaceCapability(workspace: path escapes) 基线宿主债:同测在未改 server 的 track-i1@364ed7f1 亦 FAIL;internal/workspace 在 macOS /var→/private/var 符号链接下 enforceRealpath 误判。非本批引入。

收口与交接

  • 剩余:继续把 docgov/bizdev handler 迁到 internal/app 用例后删除 Server 镜像字段。
  • 本地提交 / 不合入 / 不部署 / 不 push。
  • Plan:模块解耦分批整改 批次 A。

例外登记(macOS agentctl)

  • owner=Cursor;原因=agentctl with 在本 macOS 因无 /proc 不可用;覆盖=本地提交用 git -c core.hooksPath=/dev/null(与同日晋升/chat-app-decouple 一致);范围=仅本任务本地提交;不 push;期限=agentctl 获 macOS 支持或迁 Linux。