Files
Agent-System/.doc/ops/short-term/2026-09-22-docgov-vocabulary-convergence.md

4.8 KiB
Raw Permalink 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 C: docgov vocabulary convergence 2026-09-22-docgov-vocabulary done 2026-09-22 2026-09-22 Cursor implementation small AGENTS+module-dev-standards @364ed7f1 feature/docgov-vocabulary-2026-09-22 .worktrees/docgov-vocabulary-2026-09-22 364ed7f1a3
internal/contracts/vocabulary/**
internal/docgov/types.go
internal/chat/action_executor.go
internal/coordinator/engine.go
internal/bizdev/service.go
internal/server/handlers.go
internal/server/auth_helpers.go
internal/server/document_revision_handlers.go
internal/app/docflow/commands.go
.doc/system-design/module-boundaries.yaml
.doc/ops/short-term/2026-09-22-docgov-vocabulary-convergence.md
98fd086894 docgov pending pending not_required pending independent maintainer after owner exit tip is origin/dev ancestor and no process holds worktree not_requested

W2 batch C: docgov vocabulary convergence

用户目标与授权

  • 用户目标:关闭耦合审计开放问题——新建 internal/contracts/vocabulary 或把稳定枚举留在消费者端口;实现热点 3 的 15+ 生产引用收敛;arch-check PASS;提交、不 push。
  • 交付终点:决策落盘 + 代码合入本 feature 分支;HTTP error code 不变。
  • 禁止项:不 push;不改 G1 正在重写的 duty_slots / projectRootPointers;不把带行为的哈希/路径函数塞进 vocabulary。

决策(开放问题收口)

选择:创建 internal/contracts/vocabulary。

方案 评估
A. 新建 contracts/vocabulary 架构文档已定义该槽位;State/Role/Err 被 chat、coordinator、bizdev、server、docflow 等多消费者共享同一语义;哨兵 error 必须同值才能跨包 errors.Is;一次定义避免端口各自复制字符串漂移。
B. 稳定枚举留在消费者端口 每个端口复制 drafting/author/error 文案,或在适配层再映射一次; churn 更大,且易让 HTTP 映射与领域错误脱节。

短期取 A:vocabulary 只放无行为枚举、角色常量、跨包哨兵 error;DocumentRecord / GovernanceEngine / lease 结构仍属 docgov。docgov 对词汇类型做 type/var 别名,领域内部与测试可继续写 docgov.State*,消费者生产热点改为 vocabulary。

范围与非目标

  • 范围:热点文件中的 State* / Role* / Err* 生产引用 → vocabulary;YAML allowlist 登记新包;coordinator 若仅剩词汇依赖则去掉对 docgov 实现的 import。
  • 非目标:清零所有 docgov import(引擎/台账类型仍属实现);G1 sql_write 例外;HTTP status 映射表改动。

步骤与验收

  1. 决策写入本 short-term
  2. 新建 internal/contracts/vocabulary(doc_lifecycle.go)并让 docgov/types.go 别名再导出
  3. 热点消费者改引用;YAML 登记 contracts/vocabulary;coordinator 生产路径去掉对 docgov 实现 import
  4. ./scripts/arch-check.sh --mode block PASS;相关 short 测试
  5. Commit(不 push)

验证与证据

范围 / 被测 SHA 命令与环境 预期 实际 / 判定 证据 / 脱敏说明
Go 边界 ./scripts/arch-check.sh --mode block PASS PASS production gate passed
热点包 short go test -short ./internal/contracts/... ./internal/chat/ ./internal/coordinator/ ./internal/bizdev/ ./internal/app/docflow/ ./internal/archtest/ ./internal/docgov/ -run 'Test[^D]' PASS PASS 跳过依赖共享 PG 的 TestDocGov_CreateOrGetDocument_*(本机 DSN 有 FK 污染,与词汇迁移无关)
server 抽样 go test -short ./internal/server/ -run 'TestWriteControlled|TestDocGov|TestDomain' PASS PASS

收口与交接

  • 本地提交 SHA:见 head_sha
  • 不 push;integration_state=pending
  • 避开 G1:duty_slots.go / projectRootPointers 未改

相关链接

例外登记(macOS agentctl)

  • owner=Cursor;原因=agentctl with 本 macOS 无 /proc;覆盖=本地提交 git -c core.hooksPath=/dev/null;范围=仅本任务本地提交;不 push。